Выполняя переход с Бухгалтерии 7.7 (Предприниматель 7.7) на Бухгалтерию 8.2 иногда возникает ситуация, когда требуется выполнить перенос из нескольких баз на семерке (например две бухгалтерии и одна предприниматель), плюс уже ведется учет по магазину в рознице 1.0.
Допустим, нам нужно перенести данные из семерок в одну Бухгалтерию 8.2 и настроить обмен с розницей.
Все было бы ничего, но возникает вопрос, как переносить номенклатуру, если в каждой из баз ее несколько тысяч, причем вся номенклатура сходна по наименованиям, имеет сложную иерархию групп. Перенос 1с 8 версии стандартным методом привел бы к полной неразберихе в справочнике.
Одним из вариантов решения, в таком случае, будет перенос номенклатуры каждой базы 7.7 в отдельную группу номенклатуры. Это можно сделать и вручную, но тогда возникают проблемы при повторном переносе, так как из-за изменившейся структуры групп в справочнике появляются элементы и группы, дублирующие уже существующие. Повторный же перенос может понадобиться, если например, остатки были перенесены на начало года, а закрытия еще доделывались в базах семерок, для переноса изменившихся остатков. При этом не забудем, что в нашем случае есть база розницы также имеющая номенклатуру, которую требуется закачать.
Для решения этой проблемы потребуется немного изменить стандартные правила конвертации. Стандартные правила и выгрузку можно взять из конфигурации бухгалтерии 8.2: макеты справочника КонвертацииИзИнформационныхБазПредыдущихВерсий.
Для конфигурации Предприниматель по этим правилам справочник номенклатуры переносится без изменения структуры групп, для Бухгалтерии – автоматически создаются группы Материалы, Продукция, Товары, Услуги, Полуфабрикаты и номенклатура распределяется в зависимости от ее типа по этим группам.
Внести нужные изменения несложно с помощью конфигурации «КонвертацияДанных». Порядок действий следующий:
В обработчике прописано, что если элемент находится в корне справочника, то конвертация его родителя выполняется с помощью правила «ГруппаНоменклатуры».
Код передающий обработку родителя правилу «ГруппаНоменклатуры»:
ИсходящиеДанные = СоздатьОбъект("СписокЗначений"); ИсходящиеДанные.Установить("Наименование", ИмяГруппы); ИмяПКО = "ГруппаНоменклатуры"; Значение = "1";
Это правило находим в разделе «ДополнительныеСведения», нас интересует только правило для реквизита «Родитель». Для выполнения нашей задачи (перенести в итоге все в одну группу) нам понадобится в обработчике «Перед выгрузкой» родителя в правиле «ГруппаНоменклатуры» прописать следующий код и создать соответствующее (я назвал его «КорневаяГруппаНоменклатуры») правило конвертации:
Новое правило конвертации:
Для наименования ставим флаг «Получить из входящих данных», родитель – пустое значение, это группа равно единица.
Результат конвертации будет выглядеть следующим образом:
Аналогично меняем конвертацию для базы Предприниматель, отличие лишь в том, что там нет автоматически создаваемых групп и правила «ГруппаНоменклатуры», а обработчик вызова ПКО «КорневаяГруппаНоменклатуры» прописывается для родителя в правиле переноса самой номенклатуры. В результате, после переноса из двух баз, в Бухгалтерии 8.2 создадутся две группы в справочнике номенклатуры, для каждой фирмы своя и при повторных выгрузках, при условии, что данная структура групп не будет меняться вручную, элементы не задвоятся, и пользователи не будут путаться с номенклатурой.
В заключении, хочу добавить, что в моем случае, когда есть еще и обмен с розницей, сначала для пустой базы Бухгалтерии 8.2 нужно настроить и выполнить первый обмен с ней (при этом для обоих баз настроить префиксы), а уже после этого загружать данные из баз семерки, иначе, ранее перенесенная структура номенклатуры в базе бухгалтерии будет изменена.