Как восстановить синхронизацию данных между УТ и БП при несовместимости версий универсального формата EnterpriseData?

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

При регулярном обновлении типовых баз данных (например, 1С:Бухгалтерия предприятия) разработчики периодически прекращают поддержку устаревших версий формата обмена EnterpriseData. В результате возникает типовая коллизия: база-приемник переходит на версии формата 1.3 и выше, исключая из поддержки формат 1.1, в то время как сильно доработанная база-источник (например, 1С:Управление торговлей 11.2) отстает на много релизов и умеет формировать выгрузку только по формату 1.1. В такой ситуации процесс синхронизации аварийно прерывается еще на этапе согласования заголовка сообщения.

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

Механика согласования версий формата EnterpriseData

В основе механизма обмена через универсальный формат лежит библиотека стандартных подсистем (БСП). Во время старта сеанса обмена информационные базы выполняют следующие действия:

  1. Базы обмениваются служебными заголовками пакетов, содержащими перечень всех поддерживаемых версий формата EnterpriseData.
  2. Программа автоматически выбирает максимальную общую версию из двух списков.
  3. Если пересечение версий пустое (например, источник предлагает только 1.1, а приемник принимает версии от 1.3 до 1.6), платформа генерирует исключение о несовместимости форматов, и разбор данных отменяется.

В типовых конфигурациях при обновлении БСП устаревшие обработчики и алгоритмы из общего модуля МенеджерОбменаЧерезУниверсальныйФормат удаляются для оптимизации кода, а устаревшие XSD-пакеты исключаются из общих макетов конфигурации.

Вариант 1. Доработка подсистемы обмена в нетиповой УТ 11

Если обновлять конфигурацию целиком нецелесообразно из-за обилия доработок, можно точечно внедрить поддержку нужного формата (например, 1.3) непосредственно в конфигурацию-источник. Разберем этот процесс по шагам:

  1. Добавление XSD-схемы: Экспортируем схему формата EnterpriseData требуемой версии из актуального релиза конфигурации или сайта 1С и загружаем её в общие макеты или пакеты XDTO базы-источника.
  2. Регистрация поддерживаемой версии: Открываем модуль плана обмена СинхронизацияДанныхЧерезУниверсальныйФормат. Находим экспортную процедуру ПолучитьВерсииФорматаОбмена и добавляем новую версию формата в массив поддерживаемых версий:
    
    Процедура ПолучитьВерсииФорматаОбмена(ВерсииФормата) Экспорт
        ВерсииФормата.Добавить("1.1");
        ВерсииФормата.Добавить("1.2");
        ВерсииФормата.Добавить("1.3");
    КонецПроцедуры
    
  3. Адаптация правил конвертации: Основная логика сопоставления реквизитов объектов метаданных и тегов формата XDTO сосредоточена в общем модуле МенеджерОбменаЧерезУниверсальныйФормат. Необходимо дописать или перенести алгоритмы формирования узлов XML для новой версии формата, обращая особое внимание на обязательные поля и новые структуры справочников и документов.
  4. Использование переопределяемых модулей: Для минимизации изменений основной конфигурации можно использовать процедуру переопределения логики выгрузки в общем модуле ОбменДаннымиПереопределяемый, вынеся отладку нестандартных правил во внешние обработки.

Вариант 2. Возврат поддержки старого формата в БП через расширение (CFE)

Чтобы не трогать сложную доработанную УТ 11 и одновременно оставить БП 3.0 на полной поддержке без снятия с замка, вернем обработку формата 1.1 в базу-приемник с помощью механизма расширений:

  1. Создаем расширение конфигурации в базе 1С:Бухгалтерия предприятия.
  2. Добавляем в расширение план обмена СинхронизацияДанныхЧерезУниверсальныйФормат и переопределяем процедуру ПолучитьВерсииФорматаОбмена с помощью аннотации &Вместо или &После, добавляя версию "1.1" в возвращаемый массив.
  3. Переносим из предыдущего релиза БП макет схемы XSD нужной версии.
  4. В расширении дополняем логику модуля МенеджерОбменаЧерезУниверсальныйФормат недостающими ветками для разбора старых тегов XML.

Вариант 3. Переход на обмен через правила конвертации (КД 2.0)

Если доработка кода обмена EnterpriseData представляется слишком трудоемкой, можно использовать альтернативный транспорт, не зависящий от версий формата XSD:

  1. Настраиваем синхронизацию по правилам конвертации данных (КД 2.0).
  2. Вся логика сопоставления объектов и реквизитов описывается в конфигурации 1С:Конвертация данных 2.1 и выгружается в виде внешних XML-файлов (ПравилаОбмена и ПравилаРегистрации).
  3. Правила загружаются через пользовательский интерфейс в узлы планов обмена обеих баз. Изменение типового кода конфигураций при этом не требуется.

Вариант 4. Комплексное обновление конфигурации источника

Наиболее надежный в долгосрочной перспективе, но ресурсоемкий способ — последовательное обновление доработанной УТ 11.2 до актуальной версии УТ 11.4 или УТ 11.5. Это устранит разрыв в архитектуре метаданных, обеспечит поддержку современных версий форматов обмена «из коробки» и позволит штатно использовать механизмы прослеживаемости, маркировки и актуальных алгоритмов НДС.

← На главную