Последнее время приходилось решать много задач посредством конвертации данных 2.1. Часто возникали задачи, когда требовалось использовать конвертации для похожих конфигураций, например сначала надо было конвертировать данные из УПП1.3 в ЗУП2.5, а через некоторое время из БП2.0 в ЗУП2.5. Либо требовалось писать правила для более новых релизов конфигураций, для которых правила уже имелись.
Просто так "подсунуть" работающей конвертации другие источники не получится — получим такую красоту(а точнее "красноту"):
Для того, чтобы избавиться от "красноты" заходим в каждое ПКО и перевыбираем источник и приемник. Согласитесь, что это, мягко говоря, не очень удобно и очень медленно. Одной кнопки которая сделает это автоматически за меня, к сожалению, в конвертации я не нашел(если знаете как это сделать средствами самой КД или есть какая-нибудь другая обработка для этого пожалуйста напишите в комментариях к публикации — буду очень Вам признателен!).
Другой случай — это когда надо перенести настройки со старой на совершенно новую конвертацию. В КД есть инструмент для этого(объединение правил), но я не смог корректно заставить его работать — тоже получал в итоге красноту и притом что объединение занимало полдня на конвертации УПП->ЗУП (если есть подробное описание, как пользоваться им — напишите, пожалуйста, в комментарии).
Из вышеописанного у меня возникла потребность сделать так, что все свойства старой, проверенной конвертации перенести на новую, только что созданную. Так и появилась данная обработка.
Как это работает:
Перебираем последовательно ПКО конвертации-источника и ищем ПКО в конвертации-приемнике с таким же кодом. Если находит, то заполняет значениями свойств ПКО источника, иначе(если включен поиск по источнику-приемнику) пытается найти ПКО по совпадающим Источнику и Приемнику. Если не найдено, то пытается создать такое ПКО(если включена галка "Создавать ПКО если не найдено") и автоматически генерирует для него ПКС(если включена галка "Автоматическая генерация ПКС"). Для ПВД реализован только поиск(то есть, если не найдено, то не создает).
Теперь на примере:
Дано: имеется рабочая конвертация(например, такая: УПП 1.3.93.1=> ЗУП КОРП 2.5.121.1) из неё нам требуется получить конвертацию для переноса из БП в ЗУП(БП 2.0.66.23—> ЗУП_КОРП_2.5.114.1).
Решение: На первом шаге мы создаем новую конвертацию с соответствующими конфигурациями источником и приемником(БП 2.0.66.23—> ЗУП_КОРП_2.5.114.1). Автоматически генерируем ПКО и ПВД. Далее пользуемся обработкой "Копирование конвертации" из данной публикации — выбираем конвертацию-источник(УПП 1.3.93.1=> ЗУП КОРП 2.5.121.1) и конвертацию-приемник (БП 2.0.66.23—> ЗУП_КОРП_2.5.114.1), ставим необходимые галки и нажимаем "Копировать". В результате свойства, обработчики событий из конвертации-источника, ПВД, ПКО, обработки, алгоритмы, запросы будут перенесены в приемник. Посредством флажков в обработке можно создать новые ПКО по аналогии с ПКО конвертации источника. Сопоставление элементов конвертации-источника и конвертации-приемника выполняется по коду.
Данную обработку писал, что называется, "на коленке" в условиях ограниченного времени. Есть несколько замечаний по её работе, которые для меня были не критичны, потому и не устранял:
1. Иногда "поромахивается" и в ПВД может взять ПКО от объекта другого типа, если в конфигурации имеются объекты разных типов но с одинаковым наименованием(например "Значения свойств").
2. Если в конвертации присутствуют несколько ПКО из одного объекта в разные, то лучше не ставить галки по автоматической генерации ПКС, а перенести свойства и события для таких объектов вручную.
Копирование настроек происходит довольно быстро(несколько минут). Внизу выводится примитивный лог того, что не удалось сделать.
После копирования вручную правим то, что не удалось скопировать.
P.S. Успешно применял данную обработку для подготовки правил при выходе свежих релизов для конфигураций из своей предыдущей публикации, посвященной конвертации в ЗУП2.5 из УПП1.3, КА1.1 и БП2.0 на протяжении полугода.
Для борьбы с «краснотой» уже были обработки:
https://infostart.ru/public/105676/
https://infostart.ru/public/105972/
Чем Ваша обработка отличается от них?
(1) Не могу сказать, так как данные обработки раньше не встречал. Гугл тоже не помог в своё время.
Видимо, моя публикация — очередное сочинение на тему…
Принцип подготовки правил немного другой.