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