При попытке использовать стандартную обработку Выгрузка правил синхронизации из комплекта поставки Конвертации данных 3.0 для современных конфигураций, таких как ЗУП 3.1, разработчики часто сталкиваются с ошибками. Обработка либо не находит доступные версии формата, либо завершается аварийно с сообщением о том, что метод объекта не обнаружен. Давайте разберемся, в чем кроется причина этих проблем и как заставить инструмент работать корректно.
Основная причина заключается в несовпадении ожиданий универсальной обработки КД 3.0 и структуры метаданных актуальных типовых конфигураций. Обработка пытается программно обратиться ко всем планам обмена, присутствующим в конфигурации, и ожидает наличия определенных экспортных процедур (например, ПриПолученииНастроек). Если в конфигурации план обмена не содержит нужной процедуры или структура данных версий формата отличается от ожидаемой, обработка «падает».
Первым делом необходимо убедиться, что планы обмена в вашей конфигурации содержат необходимые для обмена данными процедуры. Если вы получаете ошибку о том, что метод ПриПолученииНастроек не обнаружен, выполните следующие действия в Конфигураторе:
АвтономнаяРабота).Модуль менеджера.ПриПолученииНастроек. Если её нет, добавьте следующий код:
Процедура ПриПолученииНастроек(Настройки) Экспорт
// Заполняет настройки, влияющие на использование плана обмена.
КонецПроцедуры
Обратите внимание, что добавлять эту процедуру следует только в том случае, если она действительно отсутствует, так как в типовых конфигурациях логика работы с обменами может быть распределена по нескольким общим модулям.
Даже после исправления модулей планов обмена, стандартная обработка часто выдает ошибку: Значение не является значением объектного типа (Получить). Это происходит потому, что обработка не учитывает, что не у всех планов обмена реализована поддержка форматов XDTO, и попытка обращения к ним вызывает сбой.
Нам необходимо изменить процедуру ПриСозданииНаСервере в форме обработки. Проанализируем, как правильно переписать этот блок кода, чтобы добавить защиту от ошибок:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Список выбора версий формата.
ВерсииФормата = Новый Соответствие;
ОбменДаннымиПереопределяемый.ПриПолученииДоступныхВерсийФормата(ВерсииФормата);
Для Каждого ПланОбмена Из Метаданные.ПланыОбмена Цикл
Попытка
// Используем проверку на существование метода, чтобы избежать ошибок
Если ОбменДаннымиСервер.ЭтоПланОбменаXDTO(ПланОбмена.Имя) Тогда
ВерсииФорматаПланаОбмена = Новый Соответствие;
ПланыОбмена[ПланОбмена.Имя].ПолучитьВерсииФорматаОбмена(ВерсииФорматаПланаОбмена);
Для Каждого ВерсияПланаОбмена Из ВерсииФорматаПланаОбмена Цикл
МодульМенеджера = ВерсииФормата.Получить(ВерсияПланаОбмена.Ключ);
Если МодульМенеджера = Неопределено Или МодульМенеджера <> ВерсияПланаОбмена.Значение Тогда
ВерсииФормата.Вставить(ВерсияПланаОбмена.Ключ, ВерсияПланаОбмена.Значение);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Исключение
// Игнорируем планы обмена, не поддерживающие стандартные механизмы КД 3.0
Продолжить;
КонецПопытки;
КонецЦикла;
Для Каждого ВерсияФормата ИЗ ВерсииФормата Цикл
Элементы.НомерВерсииФормата.СписокВыбора.Добавить(ВерсияФормата.Ключ);
КонецЦикла;
АдресХранилищаВерсииФормата = ПоместитьВоВременноеХранилище(ВерсииФормата, ЭтаФорма.УникальныйИдентификатор);
КонецПроцедуры
Важное примечание: Использование конструкции Попытка...Исключение при переборе метаданных — это критически важный момент. Она позволяет обработке корректно пропустить те планы обмена, в которых механизмы КД 3.0 не реализованы или имеют нестандартную структуру.
ПриСозданииНаСервере и проверьте состояние переменной ВерсииФормата перед тем, как она попадает в хранилище. Если она содержит Неопределено или пуста, значит, ваш план обмена не прошел проверку в блоке ЭтоПланОбменаXDTO.Конвертации данных 3.0 часто требуют адаптации под конкретный релиз конфигурации, так как Библиотека стандартных подсистем (БСП) постоянно обновляется.Применяя данные подходы, вы сможете успешно выгрузить правила синхронизации даже в тех случаях, когда стандартная обработка отказывается работать. Работа с типовыми механизмами обмена 1С требует внимательности к деталям и готовности к небольшому «тюнингу» поставляемых инструментов.