При регулярном обновлении типовых баз данных (например, 1С:Бухгалтерия предприятия) разработчики периодически прекращают поддержку устаревших версий формата обмена EnterpriseData. В результате возникает типовая коллизия: база-приемник переходит на версии формата 1.3 и выше, исключая из поддержки формат 1.1, в то время как сильно доработанная база-источник (например, 1С:Управление торговлей 11.2) отстает на много релизов и умеет формировать выгрузку только по формату 1.1. В такой ситуации процесс синхронизации аварийно прерывается еще на этапе согласования заголовка сообщения.
Проанализируем механику возникновения этой ошибки, разберем архитектуру подсистемы синхронизации и рассмотрим варианты восстановления работоспособности обмена без обязательного дорогостоящего обновления всей нетиповой конфигурации.
В основе механизма обмена через универсальный формат лежит библиотека стандартных подсистем (БСП). Во время старта сеанса обмена информационные базы выполняют следующие действия:
EnterpriseData.В типовых конфигурациях при обновлении БСП устаревшие обработчики и алгоритмы из общего модуля МенеджерОбменаЧерезУниверсальныйФормат удаляются для оптимизации кода, а устаревшие XSD-пакеты исключаются из общих макетов конфигурации.
Если обновлять конфигурацию целиком нецелесообразно из-за обилия доработок, можно точечно внедрить поддержку нужного формата (например, 1.3) непосредственно в конфигурацию-источник. Разберем этот процесс по шагам:
СинхронизацияДанныхЧерезУниверсальныйФормат. Находим экспортную процедуру ПолучитьВерсииФорматаОбмена и добавляем новую версию формата в массив поддерживаемых версий:
Процедура ПолучитьВерсииФорматаОбмена(ВерсииФормата) Экспорт
ВерсииФормата.Добавить("1.1");
ВерсииФормата.Добавить("1.2");
ВерсииФормата.Добавить("1.3");
КонецПроцедуры
МенеджерОбменаЧерезУниверсальныйФормат. Необходимо дописать или перенести алгоритмы формирования узлов XML для новой версии формата, обращая особое внимание на обязательные поля и новые структуры справочников и документов.ОбменДаннымиПереопределяемый, вынеся отладку нестандартных правил во внешние обработки.Чтобы не трогать сложную доработанную УТ 11 и одновременно оставить БП 3.0 на полной поддержке без снятия с замка, вернем обработку формата 1.1 в базу-приемник с помощью механизма расширений:
1С:Бухгалтерия предприятия.СинхронизацияДанныхЧерезУниверсальныйФормат и переопределяем процедуру ПолучитьВерсииФорматаОбмена с помощью аннотации &Вместо или &После, добавляя версию "1.1" в возвращаемый массив.МенеджерОбменаЧерезУниверсальныйФормат недостающими ветками для разбора старых тегов XML.Если доработка кода обмена EnterpriseData представляется слишком трудоемкой, можно использовать альтернативный транспорт, не зависящий от версий формата XSD:
1С:Конвертация данных 2.1 и выгружается в виде внешних XML-файлов (ПравилаОбмена и ПравилаРегистрации).Наиболее надежный в долгосрочной перспективе, но ресурсоемкий способ — последовательное обновление доработанной УТ 11.2 до актуальной версии УТ 11.4 или УТ 11.5. Это устранит разрыв в архитектуре метаданных, обеспечит поддержку современных версий форматов обмена «из коробки» и позволит штатно использовать механизмы прослеживаемости, маркировки и актуальных алгоритмов НДС.