Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 17:35

Создание вложенных групп справочника

Автор Dinyt, 23 июл 2014, 12:18

0 Пользователей и 1 гость просматривают эту тему.

Dinyt

Всем доброго времени суток.
Собрался перенести из одной конфигурации в другую номенклатуру товаров. Конфигурации разные. Выгрузил из 1-ой конфигурации номенклатуру в файл в формате:
Код;Наименование;Путь;Признак группы
Поле "Путь" представляет собой полный адрес до элемента от корня справочника.
Теперь все эти данные планирую загрузить во 2-ую конфигурацию.
Но у меня возник ряд вопросов, в которые я уткнулся. Помогите мне их преодолеть.
Сначала пример выгрузки:
1;Товар1;Группа1/Группа11;1
2;Товар2;Группа1/Группа11;0
3;Товар3;Группа1/Группа11;0
4;Товар4;Группа1/Группа12;1
5;Товар5;Группа1/Группа12;0
6;Товар6;Группа1/Группа12;0

Как проверить, начиная с корневой группы "/", что используемый путь уже существует? Т.е. сам путь я разберу на части и нужно последовательно (в данном примере это 2 уровня) проверить на существование групп и подгрупп. В случае, если какой элемент не существует, то как его создать на нужном уровне вложенности?

Благодарю за внимание.

Herby

Цитата: Dinyt от 23 июл 2014, 12:18Конфигурации разные.

Конфигурации разные или базы разные?

если конфигурации разные, то и наверняка структура справочников разная - и тут будет проблемно прописывать эти правила выгрузки/загрузки.

Цитата: Dinyt от 23 июл 2014, 12:18В случае, если какой элемент не существует, то как его создать на нужном уровне вложенности?

ну если вы такой вопрос задаете, то лучше вам и не браться за эту работу, а поручить ее квалифицированным спецам.

Кошки рулят

Цитата: Dinyt от 23 июл 2014, 12:18Благодарю за внимание.

Справочник пустой?
Групп много?
Перегрузка одноразовая?

Dinyt

2Кошки рулят:
Справочник пустой
Групп, ну может, порядка 100-150.
Что значит перегрузка?

2Herby: 1-ая конфигурация "Предприятие", 2-ая конфигурация ТиС.
По поводу того, чтобы доверить это задание профессионалам - если следовать Вашему совету, то тогда форумы будут и не нужны. У каждого человека свой уровень подготовки и свои трудности, с которыми ему приходится сталкиваться. Если следовать Вашему совету, то не нужно развиваться самому, ну и т.д.

Herby

Цитата: Dinyt от 23 июл 2014, 14:04По поводу того, чтобы доверить это задание профессионалам - если следовать Вашему совету, то тогда форумы будут и не нужны.

неправильные выводы делаете..

форумы нужны чтобы люди учились/узнавали что-то новое.. но это не в вашем случае.
объясню почему: вам нужна обработка которая выполняет выгрузку справочника, так вот для новичка это слишком сложная задача и тем более, насколько я понял, вы собираетесь делать эту обработку не для "самообразования", а для реальной выгрузки/загрузки в рабочих базах.

Программное создание элемента/группы справочника - это элементарное действие для программиста 1с, но вы не знаете как это сделать, следовательно уровень ваш очень низок, и вам будет нереально написать такую обработку со всеми ее нюансами (а если и будет написана, то очень криво со всеми вытекающими последствиями).  А учиться я вам не запрещаю, учитесь, задавайте вопросы.


Цитата: Dinyt от 23 июл 2014, 14:04Если следовать Вашему совету, то не нужно развиваться самому, ну и т.д.

мой совет не запрещает вам развиваться, мой совет говорит о том, что действия над рабочими базами 1С нужно доверять специалистам.
И следуя вашей логике, если у меня что-то заболит, то я должен пойти не к готовому специалисту-доктору, а к студенту мед.института, который только учится и толком даже уколы делать не умеет...



Кошки рулят

Формат поменять:
КодТовара;КодГруппы(полный);ПризнакГруппы; ...
При загрузке:
Спр=СоздатьОбъект("Справочник.Номенклатура");
....
Если КодГруппы=0 Тогда
Спр=СоздатьОбъект("Справочник.Номенклатура");
Иначе
Спр.НайтиПоКоду(КодГруппы,2);
Спр.ИспользоватьРодителя(Спр.ТекущийЭлемент());
КонецЕсли;
Если ПризнакГруппы=1 Тогда
Спр.НоваяГруппа();
Спр.Код=КодТовара;
...
Спр.Записать();
Иначе
Спр.Новый();
Спр.Код=КодТовара;
...
Спр.Записать();
КонецЕсли;

Dinyt

2Кошки рулят:
Благодарю друг за полезный ответ.
Прошу прощения за молчание - не всегда есть возможность ответить.
Я изменил формат, и вместо пути я выгружаю полный код группы, как ты и посоветовал.
Только у меня код даже немного упростился:
Спр = Создатьобьект(...);
Спр.НайтиПоКоду(..., 2);
Спр.ИспользоватьРодителя(Спр.ТекущийЭлемент());
Если ПризнакГруппы = 1 Тогда
   <создаем группу>
Иначе
   <создаем элемент>
КонецЕсли

Еще раз, благодарю за помощь! :)

Кошки рулят

Цитата: Dinyt от 24 июл 2014, 15:23Только у меня код даже немного упростился:

Твоя простотА хуже воровства - вот из-за таких как ты у нас булавы не летают, курски тонут и мирами топят мировой океан ...
Ненавижу!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск