Переход с конфигурации «1С:Бухгалтерия предприятия 3.0» на «1С:ERP Управление предприятием» — частая задача при масштабировании бизнеса и автоматизации производственного или торгового контура. Однако архитектура этих решений существенно различается. Попытка перенести справочники «один в один» через универсальную выгрузку или простые правила конвертации часто приводит к ошибкам: не заполняются единицы измерения, договоры не привязываются к партнерам, а документы не формируют проводки из-за отсутствия настроек финансового учета.
Разберем основные архитектурные отличия систем и подробно рассмотрим три способа переноса данных: типовую обработку перехода из комплекта поставки, выборочный обмен через универсальный формат и разработку собственных правил конвертации данных.
Прежде чем приступать к переносу, выясним ключевые различия в структуре метаданных обеих конфигураций:
ЕдиницаИзмерения справочника Номенклатура и ссылается на общероссийский классификатор КлассификаторЕдиницИзмерения. В «1С:ERP» базовая единица хранения также ссылается на КлассификаторЕдиницИзмерения, но для учета коэффициентов пересчета, фасовок и упаковок используется подчиненный справочник УпаковкиЕдиницыИзмерения (владельцем которого выступает либо конкретная номенклатура, либо справочник НаборыУпаковок). При переносе важно не путать базовую единицу хранения и подчиненные упаковки.Партнеры) отделена от юридической (справочник Контрагенты). Договоры в ERP привязываются одновременно и к партнеру, и к контрагенту. Если перенести договоры без создания партнеров, они окажутся некорректными для оформления документов.ГруппаФинансовогоУчетаНоменклатуры и ГруппаФинансовогоУчетаРасчетов.Фирма «1С» включает в дистрибутив поставки конфигурации ERP специализированный комплект для перехода с «1С:Бухгалтерии предприятия». Это наиболее надежный способ переноса нормативно-справочной информации и начальных остатков.
Разберем по шагам, как найти и применить эту обработку:
tmplts\1c\Enterprise20\[Номер_Релиза]\ConvAcc3_0\.Выгрузка данных из БП 3.0.epf.Если требуется перенести не всю базу, а только часть справочников, можно воспользоваться механизмом синхронизации данных через универсальный формат.
Рассмотрим порядок настройки выборочного обмена:
Регистрация изменений для обмена.Когда условия выгрузки нестандартны (требуется программно менять реквизиты, подставлять статусы договоров, автоматически создавать группы финансового учета или формировать подчиненные единицы измерения), оптимальным решением становится написание собственных правил конвертации.
Проанализируем пример настройки конвертации номенклатуры и единиц измерения в «Конвертации данных 2.0»:
Номенклатура.ЕдиницаИзмерения приемника настроим сопоставление с реквизитом ЕдиницаИзмерения источника через ПКО классификатора КлассификаторЕдиницИзмерения.ПослеЗагрузки номенклатуры опишем программное создание и проверку индивидуальной единицы измерения или упаковки в справочнике УпаковкиЕдиницыИзмерения, если для номенклатуры ведется учет упаковок.Посмотрим на пример программного заполнения параметров договора в обработчике ПередВыгрузкой или ПослеЗагрузки для корректной интеграции в ERP:
// Пример заполнения обязательных реквизитов договора ERP при загрузке
Объект.Статус = Перечисления.СтатусыДоговоровКонтрагентов.Действует;
Объект.ПорядокОплаты = Перечисления.ПорядокОплатыПоДоговорам.ПоДоговоруВЦелом;
Объект.ВключатьВГрафикОплат = Истина;
// Если партнер не был заполнен, связываем его с основным партнером контрагента
Если НЕ ЗначениеЗаполнено(Объект.Партнер) И ЗначениеЗаполнено(Объект.Контрагент) Тогда
Объект.Партнер = Объект.Контрагент.Партнер;
КонецЕсли;
Для выборочной выгрузки договоров по сложному условию в Правиле выгрузки данных (ПВД) переключим способ выборки на Произвольный алгоритм и используем запрос к базе-источнику:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Договоры.Ссылка КАК Ссылка
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК Договоры
|ГДЕ
| Договоры.Дата >= &ДатаСреза
| И Договоры.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПоставщиком)
| И НЕ Договоры.ПометкаУдаления";
Запрос.УстановитьПараметр("ДатаСреза", Дата("20240101"));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ВыгрузитьПоПравилу(Выборка.Ссылка, , , , "ДоговорыКонтрагентов");
КонецЦикла;
Чтобы избежать логических ошибок при переносе данных, выполним следующие подготовительные действия: