Как отключить автоматическое формирование правил в конфигурации Конвертация данных 2.1

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

В процессе разработки сложных правил обмена в конфигурации «Конвертация данных 2.1» часто возникает ситуация, когда при случайном подтверждении диалогового окна или механическом нажатии кнопок автосопоставления система начинает автоматически генерировать десятки или сотни лишних правил конвертации объектов (ПКО) и свойств (ПКС). Особенно остро проблема проявляется при работе с составными типами данных, субконто или документами со множеством ссылочных реквизитов. Разберем причины такого поведения и способы предотвращения нежелательной генерации правил.

Причина массового создания нежелательных правил

Проанализируем механику работы конфигурации. При создании нового правила конвертации объекта система предлагает автоматически сформировать правила конвертации свойств. В открывающемся окне синхронизации по умолчанию установлен признак рекурсивного создания правил для всех связанных объектов.

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

Способ 1. Точечная доработка конфигурации в Конфигураторе

Рассмотрим наиболее надежный способ избавления от случайных срабатываний — внесение минимальных изменений в код конфигурации «Конвертация данных»:

  1. Снятие признака рекурсивного создания по умолчанию: Откроем обработку СинхронизацияСвойств (а также форму элемента справочника ПравилаКонвертацииОбъектов) в Конфигураторе. В процедуре ПриОткрытии жестко переопределим значение реквизита рекурсии, чтобы каскадное создание зависимых правил не запускалось автоматически:
    
    Процедура ПриОткрытии()
        // Отключаем рекурсивное создание правил по умолчанию
        Рекурсивно = Ложь;
    КонецПроцедуры
    
  2. Отключение навязчивого диалога автоматической генерации: В форме элемента справочника ПравилаКонвертацииОбъектов найдем процедуру, которая инициирует диалог с вопросом Создать правила конвертации свойств автоматически? (срабатывает при выборе объектов или после первой записи), и заменим интерактивный вызов отказом от автоматического действия.
  3. Ограничение доступности кнопок: Если автосопоставление не требуется вовсе, можно в свойствах соответствующих кнопок на формах (Автоматически сопоставить, Синхронизировать свойства) установить свойство Доступность в значение Ложь либо скрыть их с командной панели.

Способ 2. Защита от потерь данных с помощью версионирования

Разберем практический подход к разработке, который позволяет мгновенно восстановить структуру правил без необходимости вносить правки в саму конфигурацию КД:

  1. Промежуточная выгрузка правил: Перед выполнением объемных или однотипных операций всегда выполняем выгрузку правил обмена в файл XML.
  2. Контроль версий: Поместим выгруженный файл XML в систему контроля версий (Git, SVN) или сохраним резервную копию файла на диске.
  3. Быстрый откат: Если правила были испорчены ошибочным каскадным созданием сотен объектов, достаточно выполнить повторную загрузку сохраненного XML-файла в базу КД, что полностью вернет исходное состояние правил за несколько секунд.

Способ 3. Групповая очистка ошибочно созданных ПКО

Если нежелательные правила уже сгенерировались, рассмотрим, как быстро вернуть базу в рабочее состояние:

  1. Перейдем в дерево правил или список справочника Правила конвертации объектов.
  2. Настроим отбор или отсортируем список по дате создания/изменения объектов.
  3. Выделим ошибочно созданные элементы и установим на них пометку на удаление, после чего выполним стандартное удаление помеченных объектов.

Альтернатива: переход на Конвертацию данных 3.0

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

← На главную