Рассмотрим достаточно распространенную и неприятную ситуацию: после обновления конфигурации «Управление торговлей» (УТ) до нового релиза внезапно прекращается перенос документов в «Бухгалтерию предприятия» (БП). Самое коварное в этой проблеме то, что механизм синхронизации данных отчитывается об успешном завершении, не показывая никаких ошибок. Однако при проверке в базе-приемнике (БП) мы обнаруживаем, что новые документы так и не появились. Разберем по шагам, как диагностировать и исправить эту проблему.
Ситуация, описанная на форуме, выглядит так:
Первая мысль — проблема в способе подключения (COM-соединение). Чтобы исключить этот фактор и точно локализовать проблему, проведем простой тест. Переключим способ синхронизации на файловый обмен. Это позволит нам «увидеть» физический результат выгрузки из УТ.
Вывод: Проблема не в канале передачи данных, а в самом механизме формирования данных для выгрузки на стороне «Управления торговлей». Система по какой-то причине не может корректно подготовить объекты для отправки, при этом ошибочно считает, что выгрузка прошла успешно, и снимает регистрацию изменений. Это и создает иллюзию успешного обмена.
Основная причина такого поведения кроется в версиях универсального формата обмена данными EnterpriseData. После обновления конфигурация УТ 11.4.13.227 начинает по умолчанию использовать более новый формат обмена (в данном случае — 1.10), который не поддерживается старой версией БП 3.0.105.40.
Из-за этого несоответствия возникает сбой на этапе формирования пакета данных. УТ «видит», что должна выгрузить данные в новом формате, но что-то идет не так (возможно, из-за ошибки в самом релизе), и данные просто не попадают в исходящее сообщение. Поскольку критической ошибки не возникает, механизм обмена считает задачу выполненной.
Разработчики 1С знают о подобных проблемах и часто выпускают исправления в виде патчей. Для описанной ситуации существует официальный патч, который решает проблему.
Код исправления: EF_00_00385576
Название патча, как правило, говорит само за себя — «Отсутствует EnterpriseData 1.10», что прямо указывает на корень проблемы. Установка этого патча добавляет в конфигурацию необходимые компоненты для корректной работы с указанной версией формата.
Как установить патч:
Это самый правильный и безопасный способ решения, так как он предложен самим вендором.
Если по каким-то причинам установка патча или обновление конфигурации невозможны, а обмен нужен «здесь и сейчас», можно применить обходной путь — заставить УТ использовать более старую, но совместимую с БП версию формата обмена. Сделать это можно с помощью расширения.
Порядок действий:
ОбменДаннымиСервер и добавьте его в расширение.ДоступныеВерсииУниверсальногоФормата.&Вместо. Это позволит полностью переопределить поведение стандартной процедуры.Пример кода для расширения:
&Вместо("ДоступныеВерсииУниверсальногоФормата")
Процедура yz_РасшДоступныеВерсииУниверсальногоФормата(ВерсииФормата)
// Этот код принудительно регистрирует старые версии формата,
// которые поддерживаются вашей версией Бухгалтерии.
// Стандартный вызов процедуры закомментирован, чтобы он не выполнялся.
// ПродолжитьВызов(ВерсииФормата);
ВерсииФормата.Вставить("1.3", МенеджерОбменаЧерезУниверсальныйФормат);
ВерсииФормата.Вставить("1.4", МенеджерОбменаЧерезУниверсальныйФормат);
ВерсииФормата.Вставить("1.5", МенеджерОбменаЧерезУниверсальныйФормат);
ВерсииФормата.Вставить("1.6", МенеджерОбменаЧерезУниверсальныйФормат);
ВерсииФормата.Вставить("1.7", МенеджерОбменаЧерезУниверсальныйФормат);
ВерсииФормата.Вставить("1.8", МeneджерОбменаЧерезУниверсальныйФормат);
// Версию 1.10, которая вызывает проблему, мы не добавляем.
// ВерсииФормата.Вставить("1.10", МенеджерОбменаЧерезУниверсальныйФормат);
КонецПроцедуры
После добавления этого кода и подключения расширения:
Теперь обе базы будут «договариваться» об обмене на старом, совместимом формате, и выгрузка данных должна возобновиться. Важно помнить, что это временное решение («костыль»), и при дальнейших обновлениях его нужно будет пересматривать.
Наиболее очевидный, хотя и не всегда быстрый, способ — привести конфигурации к версиям, которые гарантированно совместимы друг с другом. В данном случае проблема вызвана тем, что версия УТ (от июля 2021 г.) значительно «оторвалась» от версии БП (ноябрь 2021 г. — но, возможно, основана на более ранней платформе обмена).
Рекомендуется обновить конфигурацию УТ до более свежего релиза, который вышел примерно в то же время или позже, чем используемый релиз БП. Как правило, в более новых версиях разработчики исправляют подобные ошибки совместимости.
Подводя итог, можно сказать, что «молчаливая» ошибка синхронизации после обновления — это почти всегда проблема несовместимости форматов. Начинать диагностику стоит с проверки файлового обмена, а для решения использовать официальный патч или, в крайнем случае, временное исправление через расширение.