Настройка обмена данными между современными конфигурациями, такими как Бухгалтерия предприятия 3.0 и ERP Управление предприятием 2, часто вызывает сложности, даже если используются привычные правила, созданные в Конвертации данных 2.1. Одной из самых коварных проблем является ошибка вида Ошибка преобразования данных XML: [22,4], возникающая в самый момент начала синхронизации. Разберем по шагам, как диагностировать причины сбоя, правильно подготовить комплект файлов и запустить обмен.
Когда система выдает ошибку с указанием координат (например, [22,4]), это означает, что парсер XML споткнулся на определенной строке и позиции символа. В контексте обмена через библиотеку стандартных подсистем (БСП) это чаще всего происходит на этапе вызова метода ПрочитатьXML(ЧтениеXML) в общем модуле ОбменДаннымиСервер. Рассмотрим основные причины возникновения этой ситуации:
sfile:// воспринимает как ошибку в начале файла.Для детальной диагностики рекомендуется найти временный файл в папке AppData/Local/Temp/Exchange82.... Проанализируем содержимое строки, указанной в ошибке, с помощью текстового редактора (например, Notepad++), включив отображение всех символов.
Для работы штатного механизма «Синхронизация данных» в конфигурациях на базе БСП необходимо подготовить и загрузить три типа файлов. Выясним роль каждого из них:
Важный нюанс: Если вы планируете строго односторонний обмен (например, только из БП в ERP), файл CorrespondentExchangeRules.xml все равно должен существовать и иметь корректную XML-структуру. Рассмотрим пример «минимально необходимых» пустых правил, которые не вызовут ошибку парсера:
<?xml version="1.0" encoding="UTF-8"?>
<ПравилаОбмена>
<ВерсияФормата РежимСовместимости="РежимСовместимостиСБСП20">2.01</ВерсияФормата>
<Ид>00000000-0000-0000-0000-000000000000</Ид>
<Наименование>Пустые правила для синхронизации</Наименование>
<ДатаВремяСоздания>2023-10-27T12:00:00</ДатаВремяСоздания>
<Источник ВерсияПлатформы="8.0" ВерсияКонфигурации="" СинонимКонфигурации="">Источник</Источник>
<Приемник ВерсияПлатформы="8.0" ВерсияКонфигурации="" СинонимКонфигурации="">Приемник</Приемник>
<ПравилаКонвертацииОбъектов/>
<ПравилаВыгрузкиДанных/>
<ПравилаОчисткиДанных/>
</ПравилаОбмена>
Если вы используете не типовой, а созданный вручную план обмена, просто добавить его в дерево объектов метаданных недостаточно. Разберем, что необходимо сделать в коде, чтобы БСП «увидела» ваш обмен:
ОбменДаннымиПереопределяемый и процедуру ПолучитьПланыОбмена. Добавьте ваш план обмена в массив планов обмена, поддерживаемых подсистемой.СинхронизацияДанных или добавлены соответствующие формы узла, чтобы пользователь мог загрузить правила через интерфейс.Когда синхронизация не запускается из-за ошибок XML, проанализируем ситуацию, упростив задачу до минимума. Это позволит исключить ошибки в самих правилах и сосредоточиться на инфраструктуре обмена.
Рассмотрим алгоритм проверочного обмена на примере справочника Организации:
Организации, сопоставив его по реквизиту ИНН.ПередВыгрузкой или ПриЗагрузке).Если синхронизация проходит без ошибок, но данные не передаются, проанализируем настройки регистрации. В современных планах обмена часто добавляются дополнительные реквизиты-фильтры, такие как ДатаНачалаВыгрузкиДокументов или Организация.
Важно: Если вы добавили такие реквизиты в план обмена, они должны быть заполнены в конкретном узле обмена. Если реквизит Организация в узле пуст, стандартный механизм БСП может заблокировать регистрацию любого документа, так как он не будет соответствовать фильтру «пустая организация».
Проверим код в правилах регистрации. Если вы используете стандартную выборку, убедитесь, что в XML-файле правил регистрации корректно прописаны узлы <ОбъектВыборки> для каждого типа метаданных. Пример структуры правила регистрации для КД 2.1:
<Правило Отключить="false">
<Код>Организации</Код>
<Наименование>Организации</Наименование>
<Порядок>50</Порядок>
<ОбъектВыборки>СправочникСсылка.Организации</ОбъектВыборки>
<СпособОтбораДанных>СтандартнаяВыборка</СпособОтбораДанных>
</Правило>
Соблюдение этих структурных правил и использование методики последовательного усложнения позволит вам успешно запустить синхронизацию между БП 3.0 и ERP 2.4, минуя ошибки XML-преобразования.