При работе в конфигурации «Конвертация данных 2.1» (КД 2.1) разработчики часто сталкиваются с необходимостью внести одинаковые изменения в десятки или даже сотни правил конвертации объектов (ПКО). Например, если нужно добавить проверку или вызов алгоритма в обработчик Перед выгрузкой для всех справочников, связанных с присоединенными файлами. Делать это вручную — трудозатратно и чревато ошибками. Рассмотрим подробнее, как автоматизировать этот процесс с помощью штатных и альтернативных инструментов.
В конфигурации «Конвертация данных» предусмотрен встроенный инструмент для массового изменения реквизитов. Разберем по шагам, как им воспользоваться для редактирования программного кода в правилах.
Правила конвертации объектов.Перед выгрузкой, При загрузке и др.) скрыты, так как они являются служебными строковыми реквизитами неограниченной длины. Чтобы они стали доступны для выбора, перейдем в настройки обработки и установим флажок «Показывать служебные реквизиты» (или «Все реквизиты»).Внимание: Нужно помнить, что штатная обработка выполняет полную замену текста в реквизите. Если в обработчике уже был написан какой-то код, он будет безвозвратно удален и заменен на новый. Поэтому перед массовыми изменениями всегда делайте резервную копию информационной базы КД или выгружайте правила в XML.
Проанализируем ситуацию: вставлять портянки кода во все правила через групповую обработку — не самая лучшая практика с точки зрения поддержки. Если логику кода потребуется изменить, нам придется снова запускать групповую обработку для всех правил. Профессиональный подход заключается в использовании механизма Алгоритмов.
Рассмотрим, как это реализовать правильно:
ОбработкаПрисоединенныхФайлов.
Выполнить(Алгоритмы.ОбработкаПрисоединенныхФайлов);
Преимущество этого метода очевидно: при необходимости изменить логику работы нам достаточно отредактировать один объект (алгоритм), и изменения мгновенно вступят в силу для всех правил, где он вызывается.
Если штатная обработка кажется неудобной или требуется сложная замена (например, добавить строку в начало существующего кода, не затирая его), проанализируем «хакерский», но эффективный способ редактирования через текстовый редактор.
Алгоритм действий следующий:
Rules.xml).Перед выгрузкой хранится внутри тегов <ПередВыгрузкой>...</ПередВыгрузкой>.<ПередВыгрузкой/> и заменить их на теги с вызовом нашего алгоритма.Этот способ позволяет избежать дублей и дает полный контроль над структурой файла, но требует внимательности при работе с XML-разметкой.
Иногда пользователи жалуются, что в списке групповой обработки одни и те же справочники или правила отображаются несколько раз. Проанализируем, почему это происходит:
Правила конвертации объектов (ПКО) выбрать Правила конвертации свойств (ПКС), то в списке отобразится столько строк для одного справочника, сколько свойств (реквизитов) у него переносится. Проверьте, что в поле «Тип объекта» выбрано именно ПКО.ПометкаУдаления = Ложь.При выполнении массовых операций с обработчиками ПКС (свойств) или ПВД (выгрузки данных) логика остается такой же, но нужно внимательно следить за контекстом. Например, в ПКС доступен объект Значение, а в ПКО его нет. Если вы используете общий алгоритм для разных типов правил, обязательно делайте проверку на наличие необходимых параметров внутри самого алгоритма, чтобы избежать ошибок при выполнении обмена.
Посмотрим на пример универсального кода внутри алгоритма:
// Проверяем наличие контекста ПКО
Если ТипЗнч(Источник) = Тип("СправочникСсылка.ПрисоединенныеФайлы") Тогда
// Ваша логика
КонецЕсли;
Используя предложенные методы, мы можем значительно сократить время на разработку сложных схем обмена данными и минимизировать риск ошибок при ручном вводе кода.