При настройке обмена данными между конфигурациями 1С с использованием конфигурации «Конвертация данных 2.1» нередко возникает ситуация: объект (например, документ ПоступлениеТоваровУслуг) успешно фиксируется в таблице регистрации изменений плана обмена, однако в итоговом файле сообщения обмена данные отсутствуют. При этом ручная выгрузка через обработку Универсальный обмен данными в формате XML может отрабатывать без единой ошибки. Разберем причины такого поведения и пошаговый алгоритм исправления проблемы.
Частая ошибка при разработке правил обмена — создание Правила конвертации объектов (ПКО) без создания соответствующего Правила выгрузки данных (ПВД). Выгрузка по плану обмена инициируется правилами выгрузки. Если ПВД отсутствует или отключено, механизм обмена БСП не знает, как именно обрабатывать зарегистрированный объект метаданных.
Проанализируем структуру XML-файла правил. Для каждого выгружаемого документа должна присутствовать секция в блоке ПравилаВыгрузкиДанных:
<Группа Отключить="false">
<Код>Документы</Код>
<Наименование>Документы</Наименование>
<Порядок>100</Порядок>
<Правило Отключить="false">
<Код>ПоступлениеТоваровУслуг</Код>
<Наименование>ПоступлениеТоваровУслуг</Наименование>
<Порядок>200</Порядок>
<КодПравилаКонвертации>ПоступлениеТоваровУслуг</КодПравилаКонвертации>
<СпособОтбораДанных>СтандартнаяВыборка</СпособОтбораДанных>
<ОбъектВыборки>ДокументСсылка.ПоступлениеТоваровУслуг</ОбъектВыборки>
</Правило>
</Группа>
Убедимся, что для правила выгрузки указан способ отбора «Стандартная выборка», а реквизит КодПравилаКонвертации точно соответствует имени созданного ПКО.
Когда выгрузка запускается через Универсальный обмен данными в формате XML, обработка выполняет прямую выборку всех объектов по метаданным. Штатный обмен на базе Библиотеки стандартных подсистем (включая конфигурацию 1С:Управление торговлей 11) работает принципиально иначе:
ПланыОбмена.ВыбратьИзменения().В типовых решениях правила конвертации и регистрации хранятся в скомпилированном виде в служебном регистре сведений Правила для обмена данными. Если правила были изменены в конфигурации «Конвертация данных 2.1», но не были повторно перезаписаны в настройках синхронизации узла, система продолжает использовать устаревший кэш.
Выполним следующие действия по шагам:
Проанализируем события Перед выгрузкой и При выгрузке в ПКО и ПВД. Если в коде обработчика при определенных условиях устанавливается флаг Отказ = Истина, объект не попадает в итоговый XML-файл обмена:
Если Источник.Проведен = Ложь Тогда
Отказ = Истина;
КонецЕсли;
Проверим состояние очереди регистрации изменений с помощью обработки Регистрация изменений для обмена данными непосредственно до и после сеанса синхронизации. Это позволит точно определить, на каком этапе отсекается документ.