При переходе с конфигурации «Конвертация данных 2.0» на версию 3.0 многие разработчики сталкиваются с трудностями в понимании логики сопоставления объектов. В КД 2.0 связь была прямой: «Объект источника — Объект приемника». В КД 3.0 архитектура изменилась — теперь обмен происходит через промежуточный слой в виде универсального формата EnterpriseData (XDTO). В этой статье мы разберем, как именно определить, в какой объект попадают данные в базе-приемнике, и почему возникают сложности с переносом спецификаций из Бухгалтерии предприятия 3.0 в ERP.
Для того чтобы понять, куда «приземляются» данные при загрузке, нам необходимо проанализировать правила в конфигурации «Конвертация данных 3.0». Давайте разберем этот процесс по шагам:
_Получение (например, Справочник_СпецификацииНоменклатуры_Получение).Важный нюанс: если поле Объект конфигурации осталось пустым, это означает, что прямого сопоставления нет. В таком случае логика получения данных реализована программно через «Алгоритмы» или специализированные обработчики событий (например, При поиске или После загрузки). Проанализируем эти обработчики, чтобы найти код, отвечающий за создание или поиск объекта в базе.
Рассмотрим конкретную ситуацию: перенос спецификаций номенклатуры. Проблема часто заключается не в самой КД 3, а в архитектурной пропасти между системами. Выясним причину, почему данные могут «пропадать» при переносе:
СпецификацииНоменклатуры представляет собой простой линейный список материалов.РесурсныеСпецификации. Это сложнейший объект, включающий в себя этапы производства, дерево состава, операции, трудозатраты и статусы.Из-за этой разницы в типовом формате EnterpriseData (тип Справочник.СпецификацииНоменклатуры) данные из БП могут просто не проходить валидацию в ERP. Например, если в ERP ресурсная спецификация требует обязательного заполнения статуса «В разработке» или указания производственного подразделения, а этих данных нет в БП, объект может быть проигнорирован системой загрузки или создан некорректно.
Иногда настройки в самой конфигурации КД 3.0 не дают полной картины, так как правила могут инициализироваться программно. Разберем, как проверить это внутри самой ERP:
Проанализируем модуль менеджера обмена. Для этого в конфигураторе ERP найдем общий модуль (или модуль менеджера), отвечающий за обмен через универсальный формат. Нас интересует процедура ДополнитьПравилаКонвертацииОбъектов.
// Пример того, как программно описывается ПКО в модуле менеджера
Процедура ДополнитьПравилаКонвертацииОбъектов(ПравилаКонвертации) Экспорт
Правило = ПравилаКонвертации.Добавить();
Правило.Имя = "СпецификацииНоменклатуры";
Правило.ОбъектДанных = "Справочник.РесурсныеСпецификации"; // Здесь указывается приемник
Правило.ОбъектФормата = "Справочник.СпецификацииНоменклатуры";
КонецПроцедуры
Если вы видите, что в правилах указан ОбъектДанных, отличный от ожидаемого, значит, система выполняет трансформацию «на лету». Если же в коде или в КД 3 связь не прописана, значит, спецификации в данной версии обмена просто не поддерживаются как входящий объект.
Если стандартная синхронизация не закрывает вашу потребность, мы рекомендуем использовать один из следующих подходов:
В ERP можно создать расширение, в котором переопределить обработку входящего XDTO-пакета Справочник.СпецификацииНоменклатуры. Мы можем программно заполнить недостающие реквизиты (например, назначить основной статус или заполнить фиктивный этап производства), чтобы объект стал валидным для ERP.
Если вы используете собственную поставку правил обмена, разберем алгоритм доработки:
Справочник.РесурсныеСпецификации.МатериалыИУслуги в ERP.Если синхронизация нужна разово для запуска системы, иногда проще выгрузить данные из БП 3.0 в Excel и воспользоваться типовой обработкой «Загрузка данных из файла» в ERP, предварительно подготовив структуру под требования ресурсных спецификаций.
Резюме: Чтобы увидеть, куда переносятся данные в КД 3.0, всегда проверяйте поле Объект конфигурации в ПКО_Получение. Если спецификации не переносятся из БП в ERP, это обусловлено не ошибкой в программе, а фундаментальным различием в структуре производственных данных этих систем. Для решения задачи потребуется либо программная доработка модуля менеджера обмена, либо использование специализированных правил конвертации.