Как исправить проблемы и зависания при синхронизации 1С:УТ 11 и 1С:БП 3.0?

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

Синхронизация данных между конфигурациями 1С:Управление торговлей (редакция 11) и 1С:Бухгалтерия предприятия (редакция 3.0) через универсальный формат EnterpriseData (XDTO) — один из наиболее частых сценариев обмена. Однако при обновлении одного из узлов обмена пользователи часто сталкиваются с ситуацией, когда второй шаг синхронизации бесконечно зависает, выгружаемый XML-файл содержит только заголовок (Header), либо система выдает ошибки сопоставления XDTO-схем.

Рассмотрим детально причины возникновения таких неполадок, разберем по шагам способы их устранения, а также проанализируем конкретную ошибку в исходном коде конфигурации.

Причины зависания обмена и формирования пустых XML-файлов

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

  1. Ошибка в релизе конфигурации-приемника: В некоторых релизах 1С:Бухгалтерии предприятия (в частности, 3.0.43.213 и 3.0.43.214) присутствовали внутренние ошибки обработки данных при приеме пакетов через EnterpriseData. В результате процесс приемки зависал на этапе обработки данных.
  2. Ошибка доступа к свойствам XDTO в модуле конвертации: При формировании данных выгрузки в 1С:Управление торговлей обращение к наименованию договора контрагента выполнено к корню XDTO-объекта вместо его ключевых свойств. Если длина наименования договора превышает 50 символов, выгрузка завершается сбоем.
  3. Рассинхронизация версий формата EnterpriseData: При обновлении одной из баз на значительно более свежий релиз изменяются поддерживаемые версии формата обмена. В этом случае приемник выдает ошибку: Не определен Менеджер конвертации для версии формата обмена.

Шаг 1. Обновление релизов конфигураций

Посмотрим на решение проблемы с точки зрения версий конфигураций. Если синхронизация зависает на втором шаге обмена, первым делом необходимо проверить текущие релизы 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.

Шаг 2. Исправление ошибки выгрузки договоров контрагентов в коде 1С

Выясним причину, по которой выгрузка данных из 1С:Управление торговлей останавливается при наличии договоров с длинным наименованием (более 50 символов). Ошибка находится в процедуре выгрузки справочника договоров.

Для исправления ошибки откроем Конфигуратор 1С:Управление торговлей и перейдем в общий модуль МенеджерОбменаЧерезУниверсальныйФормат.

Разберем код в процедуре ПКО_Справочник_ДоговорыКонтрагентов_ПриОтправкеДанных.

Исходный ошибочный код:

ДанныеXDTO.Наименование = Лев(СокрЛП(ДанныеИБ.Наименование), 50);

При таком обращении значение присваивается напрямую свойству структуры XDTO, что приводит к ошибке сериализации. Правильный путь — запись значения в ключевые свойства структуры XDTO.

Исправленный вариант кода:


ДанныеXDTO.КлючевыеСвойства.Наименование = Лев(СокрЛП(ДанныеИБ.Наименование), 50);

Также эту строку можно полностью закомментировать, если конфигурация-приемник (например, 1С:Бухгалтерия предприятия 3.0) позволяет хранить наименования договоров длинее 50 символов без обрезки.

Выполнять подобные правки рекомендуется с использованием Расширений конфигурации (через аннотацию &Вместо или &ИзменениеИКонтроль), чтобы не снимать конфигурацию с поддержки.

Шаг 3. Проверка настроек и отладка процесса обмена

Рассмотрим последовательность действий для успешного завершения синхронизации после внесения исправлений:

  1. Перейдем в 1С:Управление торговлей в раздел Администрирование — Синхронизация данных.
  2. В настройках состава отправляемых данных убедимся, что правила регистрации объектов настроены корректно (при необходимости перерегистрируем документы).
  3. Выполним выгрузку сообщения обмена из 1С:УТ в файл.
  4. Перейдем в 1С:Бухгалтерию предприятия и укажем полученный файл обмена вручную при выполнении загрузки.
  5. В случае повторного зависания откроем Журнал регистрации в обоих узлах и установим отбор по отбору событий Обмен данными с уровнем Ошибка для получения подробного стека вызовов.
← На главную