При настройке регулярного обмена между конфигурациями «1С:Управление торговлей 11.4» и «1С:Бухгалтерия предприятия 3.0» разработчики часто сталкиваются с ситуацией: правила конвертации, созданные в конфигурации «Конвертация данных 2.0», успешно отрабатывают при ручном запуске через обработку УниверсальныйОбменДаннымиXML, но при попытке загрузить этот же XML-файл в штатную подсистему синхронизации данных программа выдает ошибку о неверном формате правил.
Разберем подробнее, почему возникает эта ошибка, в чем заключается фундаментальная разница между технологиями обмена и как правильно автоматизировать регулярную выгрузку данных.
Проанализируем архитектуру подсистемы синхронизации в современных типовых конфигурациях на базе БСП (Библиотеки стандартных подсистем). В конфигурации «Управление торговлей 11.4» штатный механизм обмена с «Бухгалтерией предприятия 3.0» построен на технологии EnterpriseData (универсальный формат обмена на основе XDTO-схем), которая разрабатывается с использованием «Конвертации данных 3.0».
Штатная синхронизация ожидает на входе специальный ZIP-архив комплекта правил, включающий в себя:
ПравилаКонвертацииXDTO.xml) — сопоставление объектов конфигурации с универсальным форматом.ПравилаРегистрации.xml) — условия постановки объектов на узлы планов обмена.Когда мы пытаемся загрузить в типовую синхронизацию плоский XML-файл классических правил из «Конвертации данных 2.0», механизм БСП не находит структуры XDTO и сообщает о неверном формате правил. Подсистема синхронизации УТ 11.4 не предназначена для прямой загрузки правил КД 2.0 для обмена с БП 3.0.
Рассмотрим основной и рекомендуемый способ интеграции — настройку штатной синхронизации через универсальный формат. Данный механизм изначально поддерживает автоматический обмен по расписанию через регламентные задания.
Для реализации этого подхода выполним следующие шаги:
Если требуется скорректировать правила формирования данных в формате EnterpriseData, снимать конфигурацию с поддержки не нужно. Вся логика конвертации объектов в формат XDTO сосредоточена в общем модуле МенеджерОбменаЧерезУниверсальныйФормат (или версионированных модулях формата).
Разберем, как переопределить выгрузку реквизитов номенклатуры с помощью расширения конфигурации:
&Вместо или &После перехватим процедуру заполнения реквизитов объекта, например ПКО_Справочник_Номенклатура_Реквизиты.Посмотрим на пример переопределения обработчика выгрузки в расширении:
&После("ПКО_Справочник_Номенклатура_Реквизиты")
Процедура Расш1_ПКО_Справочник_Номенклатура_Реквизиты(Источник, Приемник, КомпонентыОбмена)
// Дополнительная обработка реквизитов при выгрузке в формат EnterpriseData
Если Источник.Услуга Тогда
Приемник.ТипНоменклатуры = "Услуга";
Иначе
Приемник.ТипНоменклатуры = "Товар";
КонецЕсли;
КонецПроцедуры
Если переписывать правила под Конвертацию данных 3.0 нецелесообразно и необходимо оставить отлаженные правила КД 2.0, автоматизируем работу типовой обработки УниверсальныйОбменДаннымиXML с помощью регламентного задания БСП.
Для этого создадим внешнюю обработку, подключаемую в справочник «Дополнительные отчеты и обработки», которая программно инициализирует объект обмена и выполняет выгрузку по расписанию.
Разберем программный код модуля внешней обработки для автоматической выгрузки:
Процедура ВыполнитьВыгрузкуПоПравилам() Экспорт
ПутьКФайлуПравил = "C:\Exchange\Rules_UT_BP.xml";
ПутьКФайлуДанных = "C:\Exchange\Message_UT_BP.xml";
ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
ОбработкаОбмена.РежимОбмена = "Выгрузка";
ОбработкаОбмена.ИмяФайлаПравил = ПутьКФайлуПравил;
ОбработкаОбмена.ИмяФайлаВходящихДанных = ПутьКФайлуДанных;
// Загрузка правил обмена в память
ОбработкаОбмена.ЗагрузитьПравилаОбмена();
// Выполнение выгрузки данных
ОбработкаОбмена.ВыполнитьВыгрузку();
КонецПроцедуры
После подключения обработки в базу назначим ей расписание выполнения в интерфейсе «Дополнительные отчеты и обработки». В приемнике (БП 3.0) настраивается аналогичная внешняя обработка, которая в режиме загрузки считывает сформированный файл данных.
Выбор способа интеграции зависит от архитектурных требований проекта:
Обработки.УниверсальныйОбменДаннымиXML внутри дополнительной обработки по расписанию.