Последний год я плотно занимался интеграцией в EnterpriseData и хочу поделиться основами и нюансами.
Во-первых я замечу, что дорабатывать типовые обмены в отдельном расширении довольно удобно. Во-вторых, удобно передавать новые табличные части или дополнять реквизитный состав табличных частей уже настроенных обменов, что при иных способах реализации –довольно громоздкая реализация.
Итак. Решаем следующую практическую задачу. Есть две конфигурации на поддержке между которыми уже есть настроенный обмена Синхронизация данных на основе универсального формата EnterpriseData. Возьмем, к примеру, последние конфигурации УТ11 и БП3 Демо По возможности, пытаемся всё оставить на поддержке.
Для целей иллюстрации выбрал документ «Встреча», который есть и в УТ11 и в БП3 и который мы и будем передавать из УТ11 в БП3. Важно, что во встрече есть табличная часть "Участники", которую мы и передадим из УТ11 в БП3.
Практического смысла в этой задаче особенно нет, а вот для демонстрации технологии- отличный пример. Объекта формата для данного документа Фирмой 1С для него не разработано на текущий момент. Это нам и нужно.
Разработаем синхронизацию данного документа в расширении
Регистрация объекта в плане обмена «СинхронизацияДанныхЧерезУниверсальныйФормат»
Несмотря на то, что в расширении потенциально есть возможность добавлять новые объекты регистрации- в коде типовой это не поддержано. Поэтому в данном случае, исключительно для регистрации нового документа в плане обмена – придется это сделать в основной конфигурации. Но это единственное место, где пришлось снять с поддержки и править основную конфигурацию (но только Источника).

Далее добавим расширение, в расширении нам понадобится расширить метод «ИнициализацияПравилРегистрации» модуля МенеджерРегистрации" (под спойлером)
Заимствуем также подписку на событие СинхронизацияДанныхЧерезУниверсальныйФорматРегистрацияДокумента
С регистрацией «Встречи» собственно все. Теперь можем видеть в дереве объектов для регистрации


Конфигурирование XDTO пакетов
На ИТС и на ИС уже есть несколько хороших статей по Конфигурированию настройке XDTO пакетов – например, https://its.1c.ru/db/metod8dev/content/6013/hdoc и //infostart.ru/1c/articles/944359/. Довольно подробные. Поэтому я вкратце пробегусь в начальных настройках расширения. Эта часть у всех одинаковая.
- Сначала заимствуем ExchangeMessage. Заимствуем Ref и Object

- Далее заимствуем тот формат, который планируем использовать в качестве основы обмена. Пусть это будет самый последний формат EnterpriseData_1_20_2

- Далее нам понадобится добавить XDTO пакет и указать произвольный (можно выдуманный)адрес для пространства имен. Этот адрес будет использоваться впоследствии в нашем пакете как адрес расширяемого пространства

- Для документа Встреча понадобится тип значений ДокументСсылка.Встреча типа ExchangeMessage и данная ссылка будет использоваться в объектах

- Далее делаем все по аналогии с типовыми форматами: Ключевые свойства, Реквизиты, Табличная часть, строки табличной части. Тут главное не торопиться и не путать ссылки и объекты или еще что-то.


- Ну это вкратце. Нюансы все-таки придется в отдельных статьях рассказать
Инициализация XDTO пакета расширения
Тут главное просто не забыть. В наследуемом модуле ОбменДаннымиПереопределяемый добавляем(под спойлером)
Доработка правил на стороне Источника
Доработку ведем с наследуемом модуле МенеджерОбменаЧерезУниверсальныйФормат
1.Тут все стандартно:Добавляем Правило ПОД, ПКО, дополнительные обработчики при обработке или выгрузке
2.Обратите внимание, по сравнению со стандартным методом Описания ПКО дополнительно вызывается инициализация расширения с «нашим» пространством имен ОбменДаннымиXDTOСервер.ИнициализироватьРасширениеПравилаКонвертацииОбъекта(ПравилоКонвертации,EDПространствоИмен());
Под спойлером весь текст модуля(он небольшой)
XDTO –пакет и инициализация XDTO пакета расширения в Приёмнике
Тут очень важно: нужна полная идентичность пакетов Источника и Приемника: ExchangeMessage, Наследуемомого EnterpriseData_1_20_2 и добавленного EDEnterpriseData_1_20_2_Ext. Сделать это проще всего через сравнение объединение выгруженного расширения Источника . И делать надо так каждый раз при любом изменении пакетов

Опять –таки не забываем в наследуемом модуле ОбменДаннымиПереопределяемый добавляем
EDПространствоИмен()- просто отдает выдуманный адрес нашего пространства имен(писал выше)
Доработка правил на стороне Приемника
1.Тут все стандартно:Добавляем Правило ПОД, ПКО, дополнительные обработчики при конвертации XDTO и при записи объекта
Полный текст - под спойлером(он компактный)
Проверка формата. Тестовый обмен.
Перед первой выгрузкой нужно провести тестовый обмен в обоих базах, чтобы базы инициализировали метаданные объектов Приемника и Источника. Если предыдущие шаги были сделаны правильно, то зайдя в регистр сведений НастройкиОбменаДаннымиXDTO в Источнике мы увидим наш новый объект как в текущей базе, так и в базе корреспонденте


Выгрузка.
Зарегистрируем и выгрузим документ «Встреча» и посмотрим на файл выгрузки
Так выглядит файл формата с основным и расширяемым форматом(я только Body оставил для компактности). Часть объектов типа, Все реквизиты добавленные в дополнительном расширении – идет с префиксом «ext1» , но сами объекты типа Контрагенты и Физлица – основного пакета, наследуемого основного пакета EnterpriseData_1_20_2
Результат загрузки
Как выглядит исходный и загруженный объект

И в БП3

К сожалению, форма объекта в БП3 не доделана и не видит ТЧ «Участники»- Посмотрим ТЧ редактором объекта

Выводы и планы
- Собственно, задача решена, вся доработка в расширении(кроме модификации в плане обмена Источника для целей регистрации)
- Можете скачать архив с расширениями для УТ11(11.5.22.149) БП3.0.191.41 и использовать его как шаблон. Там все полностью рабочее
- В отдельной публикации планирую остановиться на реквизитах составного типа и на передаче объекта "УдалениеОбъекта", а там есть нюансы
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.22.149
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.191.41
Вступайте в нашу телеграмм-группу Инфостарт
