Почему возникает ошибка «Неверный формат правил» при настройке синхронизации из УТ 11.4 в БП 3 и как автоматизировать обмен

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При настройке регулярного обмена между конфигурациями «1С:Управление торговлей 11.4» и «1С:Бухгалтерия предприятия 3.0» разработчики часто сталкиваются с ситуацией: правила конвертации, созданные в конфигурации «Конвертация данных 2.0», успешно отрабатывают при ручном запуске через обработку УниверсальныйОбменДаннымиXML, но при попытке загрузить этот же XML-файл в штатную подсистему синхронизации данных программа выдает ошибку о неверном формате правил.

Разберем подробнее, почему возникает эта ошибка, в чем заключается фундаментальная разница между технологиями обмена и как правильно автоматизировать регулярную выгрузку данных.

Причина ошибки: КД 2.0 против универсального формата EnterpriseData

Проанализируем архитектуру подсистемы синхронизации в современных типовых конфигурациях на базе БСП (Библиотеки стандартных подсистем). В конфигурации «Управление торговлей 11.4» штатный механизм обмена с «Бухгалтерией предприятия 3.0» построен на технологии EnterpriseData (универсальный формат обмена на основе XDTO-схем), которая разрабатывается с использованием «Конвертации данных 3.0».

Штатная синхронизация ожидает на входе специальный ZIP-архив комплекта правил, включающий в себя:

  1. Правила конвертации XDTO (ПравилаКонвертацииXDTO.xml) — сопоставление объектов конфигурации с универсальным форматом.
  2. Правила регистрации (ПравилаРегистрации.xml) — условия постановки объектов на узлы планов обмена.
  3. Описание формата и сопутствующие метаданные.

Когда мы пытаемся загрузить в типовую синхронизацию плоский XML-файл классических правил из «Конвертации данных 2.0», механизм БСП не находит структуры XDTO и сообщает о неверном формате правил. Подсистема синхронизации УТ 11.4 не предназначена для прямой загрузки правил КД 2.0 для обмена с БП 3.0.

Вариант 1. Использование штатного обмена через формат EnterpriseData

Рассмотрим основной и рекомендуемый способ интеграции — настройку штатной синхронизации через универсальный формат. Данный механизм изначально поддерживает автоматический обмен по расписанию через регламентные задания.

Для реализации этого подхода выполним следующие шаги:

  1. Проверка совместимости версий формата: выясним, какую версию схемы EnterpriseData поддерживает старая база БП 3.0 (например, версии 1.0–1.2) и УТ 11.4. Обе конфигурации должны поддерживать общую версию формата.
  2. Создание или доработка правил в КД 3.0: если типовой выгрузки номенклатуры недостаточно и требуются специфические алгоритмы, правила разрабатываются в конфигурации «Конвертация данных 3.0». Результатом выгрузки из КД 3.0 будет ZIP-архив с правилами.
  3. Загрузка внешнего комплекта правил: в настройке синхронизации данных перейдем в раздел загрузки правил и выберем полученный архив через команду подключения внешних правил.
  4. Настройка расписания: в форме сценариев синхронизации данных зададим периодичность запуска регламентного задания выгрузки и загрузки.

Вариант 2. Переопределение логики обмена через расширение без снятия с поддержки

Если требуется скорректировать правила формирования данных в формате EnterpriseData, снимать конфигурацию с поддержки не нужно. Вся логика конвертации объектов в формат XDTO сосредоточена в общем модуле МенеджерОбменаЧерезУниверсальныйФормат (или версионированных модулях формата).

Разберем, как переопределить выгрузку реквизитов номенклатуры с помощью расширения конфигурации:

  1. Создадим новое расширение с назначением «Адаптация» или «Дополнение».
  2. Добавим в расширение общий модуль менеджера обмена.
  3. С помощью аннотации &Вместо или &После перехватим процедуру заполнения реквизитов объекта, например ПКО_Справочник_Номенклатура_Реквизиты.

Посмотрим на пример переопределения обработчика выгрузки в расширении:


&После("ПКО_Справочник_Номенклатура_Реквизиты")
Процедура Расш1_ПКО_Справочник_Номенклатура_Реквизиты(Источник, Приемник, КомпонентыОбмена)
    // Дополнительная обработка реквизитов при выгрузке в формат EnterpriseData
    Если Источник.Услуга Тогда
        Приемник.ТипНоменклатуры = "Услуга";
    Иначе
        Приемник.ТипНоменклатуры = "Товар";
    КонецЕсли;
КонецПроцедуры

Вариант 3. Автоматизация выгрузки по правилам КД 2.0 через внешнюю обработку

Если переписывать правила под Конвертацию данных 3.0 нецелесообразно и необходимо оставить отлаженные правила КД 2.0, автоматизируем работу типовой обработки УниверсальныйОбменДаннымиXML с помощью регламентного задания БСП.

Для этого создадим внешнюю обработку, подключаемую в справочник «Дополнительные отчеты и обработки», которая программно инициализирует объект обмена и выполняет выгрузку по расписанию.

Разберем программный код модуля внешней обработки для автоматической выгрузки:


Процедура ВыполнитьВыгрузкуПоПравилам() Экспорт
    
    ПутьКФайлуПравил = "C:\Exchange\Rules_UT_BP.xml";
    ПутьКФайлуДанных = "C:\Exchange\Message_UT_BP.xml";
    
    ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
    ОбработкаОбмена.РежимОбмена = "Выгрузка";
    ОбработкаОбмена.ИмяФайлаПравил = ПутьКФайлуПравил;
    ОбработкаОбмена.ИмяФайлаВходящихДанных = ПутьКФайлуДанных;
    
    // Загрузка правил обмена в память
    ОбработкаОбмена.ЗагрузитьПравилаОбмена();
    
    // Выполнение выгрузки данных
    ОбработкаОбмена.ВыполнитьВыгрузку();
    
КонецПроцедуры

После подключения обработки в базу назначим ей расписание выполнения в интерфейсе «Дополнительные отчеты и обработки». В приемнике (БП 3.0) настраивается аналогичная внешняя обработка, которая в режиме загрузки считывает сформированный файл данных.

Итоги

Выбор способа интеграции зависит от архитектурных требований проекта:

  1. Для типовой и поддерживаемой архитектуры 1С используем штатный обмен EnterpriseData с правилами КД 3.0 или переопределением логики в расширениях конфигурации.
  2. Для сохранения существующих правил КД 2.0 используем вызов объекта Обработки.УниверсальныйОбменДаннымиXML внутри дополнительной обработки по расписанию.
← На главную