Синхронизация данных между конфигурациями 1С:Управление торговлей (редакция 11) и 1С:Бухгалтерия предприятия (редакция 3.0) через универсальный формат EnterpriseData (XDTO) — один из наиболее частых сценариев обмена. Однако при обновлении одного из узлов обмена пользователи часто сталкиваются с ситуацией, когда второй шаг синхронизации бесконечно зависает, выгружаемый XML-файл содержит только заголовок (Header), либо система выдает ошибки сопоставления XDTO-схем.
Рассмотрим детально причины возникновения таких неполадок, разберем по шагам способы их устранения, а также проанализируем конкретную ошибку в исходном коде конфигурации.
Проанализируем основные технические причины, по которым процесс синхронизации останавливается без вывода явных сообщений об ошибках в интерфейсе:
Не определен Менеджер конвертации для версии формата обмена.Посмотрим на решение проблемы с точки зрения версий конфигураций. Если синхронизация зависает на втором шаге обмена, первым делом необходимо проверить текущие релизы 1С:БП и 1С:УТ.
В релизах 1С:Бухгалтерии предприятия 3.0.43.213 и 3.0.43.214 проблема носит системный характер. Для ее устранения следует обновить 1С:Бухгалтерию до релиза 3.0.43.215 или более свежего. Также рекомендуется обновить 1С:Управление торговлей до соответствующего парного релиза (например, 11.2.3.135 и выше).
Если при обмене возникает ошибка вида:
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(2697)}: Не определен Менеджер конвертации для версии формата обмена...
Это означает, что конфигурация-источник выгружает данные в версии формата, правила для которой были удалены из обновленной конфигурации-приемника. В такой ситуации необходимо обновить базу 1С:Управление торговлей до актуального релиза, в котором поддерживаются новые версии формата EnterpriseData.
Выясним причину, по которой выгрузка данных из 1С:Управление торговлей останавливается при наличии договоров с длинным наименованием (более 50 символов). Ошибка находится в процедуре выгрузки справочника договоров.
Для исправления ошибки откроем Конфигуратор 1С:Управление торговлей и перейдем в общий модуль МенеджерОбменаЧерезУниверсальныйФормат.
Разберем код в процедуре ПКО_Справочник_ДоговорыКонтрагентов_ПриОтправкеДанных.
Исходный ошибочный код:
ДанныеXDTO.Наименование = Лев(СокрЛП(ДанныеИБ.Наименование), 50);
При таком обращении значение присваивается напрямую свойству структуры XDTO, что приводит к ошибке сериализации. Правильный путь — запись значения в ключевые свойства структуры XDTO.
Исправленный вариант кода:
ДанныеXDTO.КлючевыеСвойства.Наименование = Лев(СокрЛП(ДанныеИБ.Наименование), 50);
Также эту строку можно полностью закомментировать, если конфигурация-приемник (например, 1С:Бухгалтерия предприятия 3.0) позволяет хранить наименования договоров длинее 50 символов без обрезки.
Выполнять подобные правки рекомендуется с использованием Расширений конфигурации (через аннотацию &Вместо или &ИзменениеИКонтроль), чтобы не снимать конфигурацию с поддержки.
Рассмотрим последовательность действий для успешного завершения синхронизации после внесения исправлений:
Обмен данными с уровнем Ошибка для получения подробного стека вызовов.