Почему не работает синхронизация данных УТ - БП через универсальный формат и как восстановить выгрузку объектов?

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

С выходом обновлений для конфигураций «Управление торговлей 11» (релизы ветки 11.4.13.х) многие пользователи столкнулись с критической проблемой: синхронизация с «Бухгалтерией предприятия 3.0» формально проходит без ошибок, но данные фактически не передаются. В журнале регистрации УТ мы видим отчет об отправке десятков объектов, но в БП загрузка показывает «0 объектов». При этом файл обмена (если использовать выгрузку в файл) оказывается практически пустым или содержит только заголовок сообщения.

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

Выясним причину: ловушка формата EnterpriseData 1.10

Проанализируем ситуацию с технической точки зрения. В последних релизах УТ 11.4.13 разработчики 1С начали внедрять поддержку новой версии универсального формата обмена — EnterpriseData 1.10. Однако возникла программная коллизия: в модулях обмена (например, ОбменДаннымиУТ) код уже настроен на использование версии 1.10 как приоритетной, но соответствующий XDTO-пакет EnterpriseData_1_10_2 в метаданных конфигурации УТ либо отсутствует, либо реализован некорректно.

В результате система попадает в логический тупик: она «видит», что доступна версия 1.10, пытается сформировать XML-сообщение по этой схеме, но, не находя описания структуры пакета, выгружает пустой файл. При этом механизмы регистрации изменений считают объекты «отправленными», что вводит пользователя в заблуждение.

Способ 1: Принудительное изменение версии формата через интерфейс

Если нам не требуется функционал версии 1.10 (а для стабильной работы БП 3.0 версии 1.8 вполне достаточно), мы можем вручную переключить версию формата в настройках синхронизации. Проблема в том, что по умолчанию это поле скрыто. Разберем по шагам, как его активировать:

  1. Перейдем в раздел НСИ и администрирование — Синхронизация данных — Настройки синхронизации данных.
  2. Откроем нашу настройку обмена двойным щелчком.
  3. В открывшемся окне нажмем кнопку Еще и выберем пункт Изменить форму.
  4. В дереве элементов формы найдем группу Служебная информация (или аналогичную группу, содержащую технические параметры). Нам нужно установить галочку напротив этого элемента, чтобы вкладка или группа полей стала видимой.
  5. После применения настроек в форме появится закладка Служебная информация. Перейдем на нее.
  6. Найдем поле Версия формата обмена. Скорее всего, там будет пусто или стоять значение 1.10. Нам нужно вручную выбрать значение 1.8.
  7. Нажмем Записать и закрыть.

Важно: Подобную операцию желательно выполнить в обеих информационных базах (и в УТ, и в БП), чтобы исключить автоматическое согласование версий, которое может снова «поднять» формат до 1.10.

Способ 2: Использование расширения для блокировки формата 1.10

Зачастую ручная смена версии в настройках не помогает, так как программный код УТ при каждом обмене динамически определяет доступные версии и сбрасывает настройку. В этом случае эффективным решением будет создание небольшого расширения, которое исключит версию 1.10 из списка доступных. Рассмотрим пример кода, который необходимо разместить в расширении в модуле ОбменДаннымиУТ:


&Вместо("ДоступныеВерсииУниверсальногоФормата")
Процедура Расш1_ДоступныеВерсииУниверсальногоФормата(ВерсииФормата)
    // Мы явно прописываем поддерживаемые версии, исключая 1.10
    ВерсииФормата.Вставить("1.3", МенеджерОбменаЧерезУниверсальныйФормат);
    ВерсииФормата.Вставить("1.4", МенечникОбменаЧерезУниверсальныйФормат);
    ВерсииФормата.Вставить("1.5", МенеджерОбменаЧерезУниверсальныйФормат);
    ВерсииФормата.Вставить("1.6", МенеджерОбменаЧерезУниверсальныйФормат);
    ВерсииФормата.Вставить("1.7", МенеджерОбменаЧерезУниверсальныйФормат);
    ВерсииФормата.Вставить("1.8", МенеджерОбменаЧерезУниверсальныйФормат);
    
    // Строку с версией 1.10 намеренно комментируем или удаляем
    // ВерсииФормата.Вставить("1.10", МенеджерОбменаЧерезУниверсальныйФормат);
КонецПроцедуры

При подключении расширения обязательно обратите внимание на следующие моменты:

Способ 3: Официальное исправление (патч) от 1С

Фирма 1С признала данную проблему и выпустила официальный патч под номером EF_00_00385576. Рассмотрим, как его применить:

  1. Если у вас настроена автоматическая загрузка исправлений, проверьте раздел Обслуживание — Обновление программы — Установленные исправления (патчи).
  2. Если патча нет, его можно скачать вручную с портала техподдержки 1С в разделе обновлений для вашего релиза УТ.
  3. Патч исправляет логику определения версии формата в плане обмена СинхронизацияДанныхЧерезУниверсальныйФормат.

Проанализируем ситуацию: даже после установки патча иногда требуется «толкнуть» обмен. Для этого рекомендуется зайти в Состав отправляемых данных, вручную зарегистрировать один документ и попробовать выполнить синхронизацию. Если объекты начали уходить, значит, проблема решена.

Особенности платформы 8.3.18.1483 и COM-соединения

В обсуждениях часто упоминается платформа 8.3.18.1483. Данная версия платформы имеет специфические проблемы с работой comcntr.dll (COM-соединителя) при прямом подключении между базами. Если вы используете прямое подключение и вышеописанные способы с форматом не помогли, попробуйте следующее:

  1. Перерегистрация компоненты: Запустите командную строку от имени администратора и выполните команду regsvr32 "C:\Program Files\1cv8\8.3.18.1483\bin\comcntr.dll".
  2. Проверка разрядности: Убедитесь, что базы запускаются на платформе одинаковой разрядности. Конфликт x32 и x64 приложений часто приводит к «тихому» падению обмена, когда возвращается 0 объектов без текста ошибки.
  3. Временный переход на файловый обмен: Чтобы точно понять, в формате ли дело, настройте синхронизацию через локальный каталог (XML-файл). Если в файле вы увидите заполненные узлы <Body>, значит, проблема была в COM-соединении, а не в версии EnterpriseData.

Решение проблемы «пустых документов»

Бывают случаи, когда документы загружаются в Бухгалтерию, но у них заполнены только дата и номер, а табличные части и реквизиты пусты. Это происходит из-за несоответствия пространств имен (Namespace). Если УТ выгружает данные в формате 1.10 (даже если вы пытались поставить 1.8, но код проигнорировал это), а БП ожидает строго 1.8, то загрузчик БП не сможет сопоставить поля XML и просто их пропустит.

Посмотрим на решение: в таких случаях помогает только жесткое прописывание версии формата в модуле объекта плана обмена через расширение. Добавим в расширение процедуру ПередЗаписью для плана обмена СинхронизацияДанныхЧерезУниверсальныйФормат:


&После("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ)
    // Принудительно фиксируем версию формата перед сохранением настроек узла
    ЭтотОбъект.ВерсияФорматаОбмена = "1.8";
КонецПроцедуры

Этот «костыль» гарантирует, что при выполнении обмена система всегда будет использовать стабильную версию 1.8, независимо от того, что пытается навязать программный код конфигурации.

Резюме

Подводя итог, можно сказать, что основная причина сбоя — временное отсутствие XDTO-пакетов для версии 1.10 в релизах УТ 11.4.13.х. Для исправления ситуации мы рекомендуем сначала попробовать установить патч EF_00_00385576. Если это не помогает — применить расширение для фиксации формата 1.8 и обязательно проверить работоспособность COM-соединения. Помните, что после любых манипуляций с версиями формата полезно очистить кэш регистрации изменений и зарегистрировать данные заново, чтобы убедиться в чистоте эксперимента.

← На главную