Гайд 1С: Переход на формат EnterpriseData и разработка правил в КД 3.0
При переходе с КД 2.0 на КД 3.0 и EnterpriseData возникают следующие сложности:
- Ошибки XDTO-валидации XML/JSON пакетов по схеме
EnterpriseData.xsd. - Сложности с маппингом нетиповых реквизитов конфигурации в стандартные типы XDTO-пакета.
- Несовместимость версий формата (например, отправка EnterpriseData 1.8 в базу, поддерживающую только 1.5).
- Медленная работа механизмов XDTO-сериализации на больших пакетах данных.
1. Архитектурный принцип КД 3.0 (EnterpriseData)
В отличие от КД 2.0 («база в базу»), Конвертация данных 3.0 использует формат-посредник (каноническую модель):
- Конфигурация-источник: конвертирует свои объекты метаданных в объекты формата XDTO (EnterpriseData) с помощью менеджера обмена
РегионОбмена. - Конфигурация-приемник: считывает XDTO-объект и транслирует его в свои прикладные объекты.
2. Разработка правил конвертации объектов (ПКО) в КД 3.0
Создайте правила для кастомного документа в конфигурации Конвертация данных, ред. 3.0:
// Обработчик ПКО: ПриОтправкеДанных (в модуле МенеджераОбменаЧерезУниверсальныйФормат)
Процедура ПКО_Документ_ЗаказКлиента_ПриОтправкеДанных(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, Стек)
// Заполнение кастомных XDTO-свойств
ДанныеXDTO.Вставить("Номер", ДанныеИБ.Номер);
ДанныеXDTO.Вставить("Дата", ДанныеИБ.Дата);
Если ЗначениеЗаполнено(ДанныеИБ.Комментарий) Тогда
ДанныеXDTO.Вставить("ДополнительнаяИнформация", ДанныеИБ.Комментарий);
КонецЕсли;
КонецПроцедуры3. Расширение XDTO-пакета EnterpriseData
Для передачи кастомных полей создайте собственное XDTO-расширение в конфигураторе, добавив новые свойства в тип объекта, не ломая обратную совместимость базовой схемы.
Частые вопросы (FAQ)
В чем ключевое преимущество EnterpriseData перед правилами КД 2.0?
При изменении метаданных в одной конфигурации не требуется обновлять правила для всех остальных баз сети — достаточно обновить правила конвертации только в изменившейся базе до нужной версии формата.
Где физически располагаются правила конвертации КД 3.0 в типовых конфигурациях?
Правила встроены непосредственно в код конфигурации — в общий модуль 'МенеджерОбменаЧерезУниверсальныйФормат' (или его версии 1_x_x).
Как проверить соответствие XML-сообщения XDTO-схеме EnterpriseData?
Используйте метод ФабрикаXDTO.Создать().Проверить() или выполните валидацию через внешнюю утилиту xmllint с указанием файла EnterpriseData.xsd.
Что делать, если база-приемник поддерживает версию формата ниже, чем база-источник?
В настройках интеграции в базе-источнике укажите целевую поддерживаемую версию формата (например, 1.6 вместо 1.11) — менеджер обмена автоматически выполнит конвертацию в младшую версию.