При организации обмена данными между типом типовых конфигураций «1С:Управление торговлей 11» (УТ 11) и «1С:Бухгалтерия предприятия 3.0» (БП 3.0) специалисты часто ищут внешние XML-файлы правил конвертации, привычные по работе с «1С:Конвертацией данных 2.1». Однако в современных типовых решениях механизм синхронизации построен на базе универсального формата EnterpriseData. Разберем по шагам, где физически находятся правила обмена, как устроен этот механизм и как правильно доработать передачу документов и их аналитики.
В типовых решениях УТ 11 и БП 3.0 привычные XML-файлы правил конвертации объектов отсутствуют. Обмен выполняется через универсальный формат данных XDTO (EnterpriseData). Вся логика выгрузки и загрузки объектов описана программно на языке 1С и расположена внутри базовых объектов конфигурации:
МенеджерОбменаЧерезУниверсальныйФормат (а также в специализированных модулях конкретных версий формата).EnterpriseData_1_8 (или соответствующей версии, используемой вашей базой).СинхронизацияДанныхЧерезУниверсальныйФормат.Поскольку вся логика выгрузки и конвертации перенесена в программный код общего модуля, отладка выполняется стандартными средствами конфигуратора платформы «1С:Предприятие 8.3». Разберем, как проанализировать работу обмена:
МенеджерОбменаЧерезУниверсальныйФормат.ПКО_Документ_СписаниеСРасчетногоСчета_Отправка_ПриОтправкеДанных или ПКО_Документ_СписаниеСРасчетногоСчета_Получение_ПриОбработкеДанныхXDTO.В отличие от устаревших правил в XML-файлах, отладка чистого кода 1С позволяет оперативно смотреть значения переменных и структуру выгружаемого XDTO-объекта прямо в табло отладчика.
Для модификации правил обмена (например, чтобы при выгрузке документа «Списание с расчетного счета» передавать дополнительную аналитику) крайне не рекомендуется снимать типовую конфигурацию с поддержки. Проанализируем способы внесения изменений через механизмы расширений и БСП:
Создадим расширение конфигурации и заимствуем в него модуль МенеджерОбменаЧерезУниверсальныйФормат. Добавим аннотацию &После или &Перед к нужному обработчику ПКО:
&После("ПКО_Документ_СписаниеСРасчетногоСчета_Отправка_ПриОтправкеДанных")
Процедура Расш_ПКО_Документ_СписаниеСРасчетногоСчета_Отправка_ПриОтправкеДанных(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена)
// Извлечем нужные данные из документа источника
Если ДанныеИБ.Операция = Перечисления.ВидыОперацийСписаниеСРасчетногоСчета.ОплатаПоставщику Тогда
// Заполним дополнительное свойство XDTO
ДанныеXDTO.AdditionalInfo = Строка(ДанныеИБ.Подразделение);
КонецЕсли;
КонецПроцедуры
Схема EnterpriseData содержит универсальное поле AdditionalInfo в типе Object. Это позволяет передать произвольную текстовую информацию, JSON или XML-структуру без изменения схемы XDTO-пакета.
При получении данных на стороне приемника в аналогичной процедуре обработчика загрузки считываем значение из AdditionalInfo и заполняем соответствующие реквизиты документа или таблицы ИБ.
В Библиотеке Стандартных Подсистем предусмотрены специальные точки входа для общей обработки выгрузки. В общем модуле ОбменДаннымиПереопределяемый можно использовать процедуры ПриОтправкеДанныхПоУниверсальномуФормату и ПриПолученииДанныхПоУниверсальномуФормату, чтобы перехватывать обмен для любых типов объектов.
Чтобы не писать структуры XDTO и условия конвертации вручную в коде, разберем подход с использованием специализированного инструмента — «1С:Конвертация данных 3.1» (КД 3.1):
МенеджерОбменаЧерезУниверсальныйФормат_1_8).СинхронизацияДанныхЧерезУниверсальныйФормат. Если логика зависит от реквизитов связанных справочников, регистрацию документа нужно выполнять программно при изменении этих справочников.