При настройке и выполнении синхронизации данных между конфигурациями «1С:Управление торговлей» (редакции 11.2/11.3/11.4) и «1С:Бухгалтерия предприятия» (редакции 3.0) через универсальный формат EnterpriseData разработчики и администраторы нередко сталкиваются с аварийным завершением обмена.
В журнале регистрации или в окне сообщений об ошибках появляется исключительная ситуация следующего вида:
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(2697)}: Не определен Менеджер конвертации для версии формата обмена <1.0>.
ВызватьИсключение(ТекстОшибки);
Проанализируем механику работы обмена через формат EnterpriseData, разберем причины возникновения этой ошибки и рассмотрим способы ее устранения.
Универсальный формат обмена данными EnterpriseData развивается параллельно с выходом новых релизов конфигураций. Каждой версии формата (например, 1.0, 1.1, 1.2, 1.3, 1.5, 1.6 и т. д.) в конфигурации соответствуют свои пакеты XDTO и специальный общий модуль — менеджер конвертации, например МенеджерОбменаЧерезУниверсальныйФормат_1_2.
В процессе инициализации синхронизации происходит согласование версий:
ОбменДаннымиXDTOПереопределяемый.Не определен Менеджер конвертации.Самый простой и правильный путь — перевести синхронизацию на поддерживаемую обеими базами версию формата EnterpriseData без модификации конфигурации.
Разберем по шагам порядок действий:
Если обновление устаревшей базы УТ 11 до актуального релиза невозможно из-за доработок, а свежая версия БП 3.0 уже не содержит старый менеджер формата, можно вернуть модуль конвертации в конфигурацию.
Рассмотрим порядок доработки конфигурации:
МенеджерОбменаЧерезУниверсальныйФормат_1_0 в целевую базу.ОбменДаннымиXDTOПереопределяемый найдем процедуру регистрации версий формата и добавим строку регистрации возвращенной версии:
Процедура ПриЗаполненииВерсийФормата(ВерсииФормата) Экспорт
ВерсииФормата.Добавить("1.0");
ВерсииФормата.Добавить("1.2");
// Другие версии формата
КонецПроцедуры
При использовании прямого COM-подключения ошибки контекста серверных процедур могут маскироваться. Чтобы точно понять, на каком этапе происходит сбой, разберем переход на обмен через каталог:
FormatVersion должен соответствовать версиям, поддерживаемым приемником.После успешного запуска обмена и синхронизации справочников иногда возникает сопутствующая ошибка при перемещении элементов номенклатуры между группами: Поле объекта не обнаружено.
Выясним причину проблемы: при изменении родителя срабатывают типовые подписки на события синхронизации (например, ПередЗаписьюНоменклатурыДляОбмена), которые регистрируют изменения в планах обмена. Код обработчика может обращаться к реквизитам, характерным только для элементов номенклатуры (ставка НДС, единица измерения, тип номенклатуры), не выполняя проверку на группу.
Для исправления в модуле обработчика подписки необходимо добавить проверку на иерархию:
Если НЕ Источник.ЭтоГруппа Тогда
// Обработка реквизитов, доступных только для элементов
СтавкаНДС = Источник.СтавкаНДС;
Иначе
// Логика обработки для папок (групп) номенклатуры
КонецЕсли;
Если требуется выполнить массовое перемещение номенклатуры в рабочей базе без остановки пользователей, можно временно отключить регистрацию изменений для узлов обмена с помощью установки свойства ОбменДанными.Загрузка = Истина в обработке группового изменения реквизитов, а затем зарегистрировать измененные группы вручную через обработку «Регистрация изменений для обмена данными».