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