Слезы разработчиков
До недавнего времени специалистам, дорабатывающим правила обмена, приходилось буквально вручную отслеживать изменения, которые были внесены в типовые правила, и при актуализации последних переносить в них свои доработки. Такая методика поддержки правил в актуальном состоянии занимает большое количество времени и сил специалистов, отвлекая их от решения других задач.
Но сейчас все изменилось. Появилась возможность значительно облегчить себе жизнь.
Итак, Вы профессиональный разработчик и сопровождаете (разрабатываете) правила обмена. Предлагаю Вам методику работы, используя которую, сопровождение правил обмена не будет представлять для Вас сложность. Вы сэкономите время и избежите многих ошибок. Хотите узнать, что для этого нужно?
Немного терминологии
Далее по тексту я буду часто пользоваться сокращениями, поэтому сразу определимся с терминами.
ПКО — правило конвертации объекта
ПКС — правило конвертации свойства
ПКГС — правило конвертации группы свойств
ПКЗ — правило конвертации значения
ПВД — правило выгрузки данных
ПОД — правило очистки данных
Подготовка справочника «Конвертации»
Прежде всего придется выполнить реорганизацию справочника «Конвертации». Дело в том, что нам придется хранить версии правил поставщика. Рекомендую для этого создать на каждое правило отдельную папку, с названием, например — «УТ → БП». Будет лучше, если в наименовании каждой версии правил будут указаны релизы используемых конфигураций (а если нужно — и номер версии) — например, «УТ-БП (11.0.9, 2.0.44, v.1)».
После выхода новых релизов конфигураций, участвующих в обмене, нам понадобится загрузить новую версию правил поставщика. Найти обновленные версии правил можно в каталоге шаблонов (папка «Правила обмена»), в общих макетах конфигураций или в макетах планов обмена (их нужно сохранить как файл *.xml). При загрузке обязательно укажите «Загрузить правила в новую конвертацию данных» (см. рис.1).
Рисунок 1: Обработка "Загрузка правил обмена".
Структура справочника «Конвертации» после этого примет имеет следующий вид:
Рисунок 2: Справочник "Конвертации"
Рекомендуется загрузить историю версий, как минимум, с того релиза, на котором была начата модификация правил обмена. |
Версии правил поставщика лучше не изменять — в дальнейшем они нам понадобятся как эталон для сравнения с разрабатываемыми правилами.
Сейчас у нас все готово для того чтобы начать разработку. Продолжим?
Создаем свои правила
Создаем свои правила — пока еще копию правил поставщика. Рекомендую загрузить правила поставщика в новый элемент справочника «Конвертации» с помощью обработки «Загрузка правил обмена». Иногда бывает удобно воспользоваться кнопкой «Скопировать правила» из формы списка справочника. Рекомендуется организовать хранение собственных версий правил точно так же, как это было выполнено для хранения версий правил поставщика. Создаем новую папку («УТ → БП (разработка)») и загружаем в нее правила поставщика с названием, например, «УТ-БП (11.0.9, 2.0.44, v.1) — разработка». Теперь можно приступать непосредственно к модификации правил поставщика.
Обычно, требования клиентов к доработке правил обмена сводятся к настройке отдельных ПКС, ПВД, алгоритмов и запросов. Значительно реже приходится выполнять настройку существующих ПКО и создание новых.
Итак, что мы имеем? У нас есть некие правила обмена, в которые мы внесли изменения по требованию клиента. Есть текущая и новая версии правил обмена поставщика. Нужно выполнить обновление модифицированных нами правил до актуальной версии правил поставщика. Как это сделать?
Сравниваем свои правила с текущей версией правил поставщика
Этот этап можно пропустить, если Вы точно знаете, в какие именно элементы правил вносились изменения. Но если это не так — лучше подстраховаться.
Давайте попробуем найти обработку «Сравнение и объединение правил обмена».
А это довольно непросто - вызывается она из формы «Настройка правил обмена» (подменю «Сервис» - «Сравнение и объединение правил обмена») и при открытии предлагает выбрать один из элементов справочника «Правила обмена», который и будет сравниваться с текущим.
Рисунок 3: Вызов обработки "Сравнение и объединение правил обмена".
Выберем в справочнике текущую версию правил поставщика. Через некоторое время, которое необходимо обработке для того, чтобы выполнить анализ различий, откроется главное окно с дерево сравнения правил (см. рис.4).
Рисунок 4: Результат сравнения
Обычно обработка показывает различия 2 правил обмена, но это ограничение можно обойти, заставить ее выполнять сравнение неограниченного количества правил. О том, как это сделать, читайте далее. |
Итак, мы видим, что наши правила и правила поставщика различаются. Для упрощения будем рассматривать только следующие отличия - «Последовательность полей поиска» ПКО «Контрагенты», добавленные ПКС «Код» и «Комментарий» ПКО «ФизическиеЛица» и обработчик события «Перед выгрузкой объекта» ПВД «Договоры с контрагентами».
Новые ПКС «Код»и «Комментарий» ПКО «ФизическиеЛица» примем во внимание — они должны остаться в новой версии правил неизменными.
Выделим ячейку обработчика событий «Последовательность полей поиска» и с помощью контекстного меню «Показать различия» вызовем диалог показа различий между обработчиками (см. рис.5).
Рисунок 5: Различия в обработчике "Последовательность полей поиска" ПКО "Контрагенты"
Рисунок 6: Различия в обработчике "Перед выгрузкой объекта" ПВД "Договоры с контрагентами"
Для того, чтобы быстро просмотреть различия в обработчиках не обязательно вызывать диалог сравнения. Можно воспользоваться сравнением в подвале - «Действия» → «Использовать подвал для анализа различий». После выбора этого режима будет доступен ползунок «Высота подвала». Отрегулировав высоту подвала, Вы увидите в подвале дерева сравнения различия значений в текущей строке дерева (см. рис. 7). |
Мы выяснили, какие изменения были внесены в наши правила. Запишем (запомним) и переходим к сравнению разрабатываемых правил с новой версией правил поставщика.
Сравниваем и объединяем свои правила с новой версией правил поставщика
Вернемся в окно настройки правил обмена и запустим сравнение разрабатываемых правил с новыми правилами поставщика.
Сразу же после того, как будет открыто основное окно обработки, снимите все флажки — это избавит Вас от случайного объединения правил. |
Рисунок 7: Результат сравнения с новыми правилами поставщика.
На представленном рисунке можно заметить, что некоторые ПКС, существующие в наших правилах и правилах поставщика не были сопоставлены. Дело в том, что обработка предоставляет 2 варианта сопоставления ПКС - «По коду» и «По наименованию» (см. рис.8). В данном случае используется сопоставление по коду. Например, ПКС «ЭтоГруппа» в наших правилах имеет код 15, а в правилах поставщика — 20.
Если обработке не удается выполнить корректное сопоставление правил конвертации свойств, попробуйте сменить режим с помощью формы «Настройка». В этом случае можно выполнить и поочередное объединение ПКС. |
Установим пометки для тех элементов ПКС «ФизическиеЛица», которые были изменены поставщиком и корректно сопоставлены, нажмем кнопку «Выполнить».
ВНИМАНИЕ!!! Обработка вносит необратимые изменения в информационную базу. Поэтому, перед тем, как выполнять объединение, обязательно сделайте резервную копию. |
Если нужно — сменим режим сопоставления ПКС, выполним сравнения еще раз и объединим сопоставленные и измененные правила.
Точно так же можно поступить и с обработчиком «Поля поиска» ПКО «Контрагенты», т. к. изменения в правила обмена вносились только нами.
С обработчиком «Перед выгрузкой объекта» ПВД «Договоры с контрагентами» придется повозиться дольше. Дело в том, что изменения в него были внесены не только нами, но и разработчиками. Наши изменения нужно учесть и в новой версии правил. Каким же образом можно перенести наши доработки в новую версию правил?
Рисунок 8: Настройка сопоставления ПКС
Система 1С:Предприятие 8 не предоставляет стандартных средств объединения текстовых файлов (в отличие от сравнения), поэтому можно либо вручную перенести изменения поставщика в наши правила, либо воспользоваться сторонними программами.
Для объединения обработчиков Вы можете воспользоваться программами KDiff3 или WinMerge. И та и другая могут помочь выполнить частичное слияние обработчиков. Установите одну из этих программ. Откройте форму «Настройка сравнения правил обмена» (рис. 8) и укажите путь к исполняемому файлу. После перехода в главное окно обработки, в контекстном меню появится новый пункт - «Объединить правила с помощью KDiff3» («Объединить правила с помощью WinMerge»).
Установим курсор над обработчиком «Перед выгрузкой объекта» ПВД «Договоры с контрагентами» и выберем пункт «Объединить правила с помощью KDiff3».
Обработка сохранит левое и правое значение обработчиков во временные файлы и запустит внешнюю программу сравнения. Работать с ней просто, слева правило — приемник, справа правило — источник, внизу — результат объединения. С помощью кнопок «А» и «В» командной панели, можно указать, какие фрагменты будут перенесены в результирующий текст. После нажатия кнопки «Сохранить» и закрытия окна программы, результирующий текст будет перенесен в соответствующий обработчик правила — источника.
Рисунок 9: Окно программы KDiff3
На этом работа по обновлению наших правил завершена. Их можно сохранить на диск, протестировать и отправить клиенту.
Что Вы получили в результате? Главное — мы сохранили свои изменения и учли изменения, которые внесли разработчики. Не главное, но важное — сэкономили время и избежали лишних ошибок.
Конечно, предложенный пример довольно прост, однако, на практике никого не удивишь обработчиком событий на несколько сотен строк, в котором имеются собственные вставки (или модифицированные фрагменты), несколькими десятками добавленных (или удаленных) ПКС и ПКЗ и т. п. И вот тогда поддержка измененных правил становится уже не такой простой. Как раз в таких случаях предложенная методика может стать тем спасательным кругом, которого так не хватало ранее.
Но это еще не все.
Обработка «Сравнение и объединение правил обмена» имеет некоторые настройки, используя которые можно существенно расширить ее функционал.
Мелкие (и не очень) хитрости
Предложенная фирмой «1С» методика сравнения позволяет сравнивать текущие разрабатываемые правила обмена с какими — либо другими. А если нужно сравнить с тем, что было и с тем, что будет?
Очень просто — нажмите кнопку «Настройка» и перейдите по гиперссылке «Перейти к настройке правил обмена».
Рисунок 10: Настройка состава сравнения правил обмена
В табличной части «Правила обмена» добавьте старую версию правил поставщика и расположите ее так, чтобы сначала шла она, затем текущие правила, и только после этого — новая версия правил поставщика.
После закрытия формы настройки и нажатия кнопки «Обновить» будет построено новое дерево сравнения, уже с учетом трех правил (см. рис. 11).
Теперь можно выполнять объединение правил как с новой версией правил, так и со старой (используя контекстное меню). Этот прием может пригодиться, когда разрабатываемые правила сильно отличаются как от старой, так и от новой версии правил поставщика.
Рисунок 11: Сравнение 3-х правил
В некоторых случаях не требуется выполнять сравнение всех объектов, составляющих правила (это значительно дольше), а только части из них. Для того, чтобы сэкономить время, Вы можете снять флажки с ненужных в данный момент элементов правил (параметров, общих реквизитов и обработчиков, ПКЗ, ПКС, ПКО, ПВД, ПОД, Алгоритмов, Запросов). Формирование дерева сравнения станет, в этом случае, значительно более быстрым.
Вы можете отключить некоторые реквизиты и обработчики. Для этого можно воспользоваться соответствующими настройками обработки. Сравнение этих реквизитов производится не будет, в дерево сравнения они не попадут.
Кроме этого, Вы можете управлять выводом дерева сравнения с помощью поля «Фильтр». Он содержит 3 элемента:
- Показывать все. Выводятся все строки дерева сравнения. Строки в которых найдены отличия выводятся жирным шрифтом
- Показывать измененные. Выводятся все строки, в которых выявлены различия, в том числе добавленные и удаленные.
- Показывать добавленные и удаленные. Выводятся только строки, которые были добавлены или удалены.
P.S. Используйте эти несложные рекомендации и обработку «Сравнение и объединение правил обмена», и Вы станете незаменимым для своих клиентов. Клиенты получат качественные правила, а Вы — экономию времени, которого всегда так не хватает...