В процессе разработки сложных правил обмена в конфигурации «Конвертация данных 2.1» часто возникает ситуация, когда при случайном подтверждении диалогового окна или механическом нажатии кнопок автосопоставления система начинает автоматически генерировать десятки или сотни лишних правил конвертации объектов (ПКО) и свойств (ПКС). Особенно остро проблема проявляется при работе с составными типами данных, субконто или документами со множеством ссылочных реквизитов. Разберем причины такого поведения и способы предотвращения нежелательной генерации правил.
Проанализируем механику работы конфигурации. При создании нового правила конвертации объекта система предлагает автоматически сформировать правила конвертации свойств. В открывающемся окне синхронизации по умолчанию установлен признак рекурсивного создания правил для всех связанных объектов.
Если разработчик нажимает кнопку подтверждения, конфигурация начинает каскадно перебирать типы всех ссылочных реквизитов источника и приемника. В результате формируется огромное количество лишних ПКО, которые загромождают структуру правил и требуют долгой ручной очистки. Штатных пользовательских настроек (констант или опций в профиле пользователя), позволяющих полностью отключить данные вопросы через интерфейс, в КД 2.1 не предусмотрено.
Рассмотрим наиболее надежный способ избавления от случайных срабатываний — внесение минимальных изменений в код конфигурации «Конвертация данных»:
СинхронизацияСвойств (а также форму элемента справочника ПравилаКонвертацииОбъектов) в Конфигураторе. В процедуре ПриОткрытии жестко переопределим значение реквизита рекурсии, чтобы каскадное создание зависимых правил не запускалось автоматически:
Процедура ПриОткрытии()
// Отключаем рекурсивное создание правил по умолчанию
Рекурсивно = Ложь;
КонецПроцедуры
ПравилаКонвертацииОбъектов найдем процедуру, которая инициирует диалог с вопросом Создать правила конвертации свойств автоматически? (срабатывает при выборе объектов или после первой записи), и заменим интерактивный вызов отказом от автоматического действия.Автоматически сопоставить, Синхронизировать свойства) установить свойство Доступность в значение Ложь либо скрыть их с командной панели.Разберем практический подход к разработке, который позволяет мгновенно восстановить структуру правил без необходимости вносить правки в саму конфигурацию КД:
Если нежелательные правила уже сгенерировались, рассмотрим, как быстро вернуть базу в рабочее состояние:
Правила конвертации объектов.Посмотрим на более современную альтернативу. В редакции «Конвертация данных 3.0» используется формат обмена EnterpriseData на базе XDTO-пакетов. В этой архитектуре обмен данными происходит через промежуточный формат, благодаря чему проблема прямого рекурсивного создания зависимых правил между двумя прикладными конфигурациями полностью исключена.