Почему не выгружаются правила синхронизации из ЗУП 3.1 и как это исправить?

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

При попытке использовать стандартную обработку Выгрузка правил синхронизации из комплекта поставки Конвертации данных 3.0 для современных конфигураций, таких как ЗУП 3.1, разработчики часто сталкиваются с ошибками. Обработка либо не находит доступные версии формата, либо завершается аварийно с сообщением о том, что метод объекта не обнаружен. Давайте разберемся, в чем кроется причина этих проблем и как заставить инструмент работать корректно.

Анализ причин ошибки

Основная причина заключается в несовпадении ожиданий универсальной обработки КД 3.0 и структуры метаданных актуальных типовых конфигураций. Обработка пытается программно обратиться ко всем планам обмена, присутствующим в конфигурации, и ожидает наличия определенных экспортных процедур (например, ПриПолученииНастроек). Если в конфигурации план обмена не содержит нужной процедуры или структура данных версий формата отличается от ожидаемой, обработка «падает».

Шаг 1: Проверка и доработка модулей менеджера планов обмена

Первым делом необходимо убедиться, что планы обмена в вашей конфигурации содержат необходимые для обмена данными процедуры. Если вы получаете ошибку о том, что метод ПриПолученииНастроек не обнаружен, выполните следующие действия в Конфигураторе:

  1. Откройте нужный план обмена (например, АвтономнаяРабота).
  2. Перейдите в Модуль менеджера.
  3. Проверьте наличие процедуры ПриПолученииНастроек. Если её нет, добавьте следующий код:

Процедура ПриПолученииНастроек(Настройки) Экспорт
    // Заполняет настройки, влияющие на использование плана обмена.
КонецПроцедуры

Обратите внимание, что добавлять эту процедуру следует только в том случае, если она действительно отсутствует, так как в типовых конфигурациях логика работы с обменами может быть распределена по нескольким общим модулям.

Шаг 2: Модификация кода обработки выгрузки правил

Даже после исправления модулей планов обмена, стандартная обработка часто выдает ошибку: Значение не является значением объектного типа (Получить). Это происходит потому, что обработка не учитывает, что не у всех планов обмена реализована поддержка форматов XDTO, и попытка обращения к ним вызывает сбой.

Нам необходимо изменить процедуру ПриСозданииНаСервере в форме обработки. Проанализируем, как правильно переписать этот блок кода, чтобы добавить защиту от ошибок:


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

Важное примечание: Использование конструкции Попытка...Исключение при переборе метаданных — это критически важный момент. Она позволяет обработке корректно пропустить те планы обмена, в которых механизмы КД 3.0 не реализованы или имеют нестандартную структуру.

Практические советы по работе

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

← На главную