Основные возможности
- Отображение различий объектов метаданных/модулей конфигураций с помощью отчетов на СКД со всеми возможностями кастомизации. Возможность просмотра различий текстов запросов динамических списков, наборов данных СКД.
- Полуавтоматическая настройка объединения модулей, позволяющая уменьшить количество монотонной работы по расставлению флажков у процедур/функций в объединяемых модулях
- Отображение доработок, "потерянных" в процессе обновления
Анализируемые объекты
Подробный анализ доработок предусмотрен для большинства объектов метаданных. Анализируются все открытые модули, управляемые формы, реквизиты, табличные части, команды, роли, подсистемы, схемы компоновки данных, в общем все что выгружается в файлы *.xml или *.bsl в пригодном для анализа виде.
Объекты, исключаемые из подробного анализа (помечены флажком "Неподдерживаемый"): табличные документы, бинарные объекты (в т.ч. обычные, неуправляемые формы), текстовые макеты, содержимое справки, картинки, архивы и т.п. Для таких объектов фиксируется только факт отличия от типового объекта, без подробностей. Если такой объект будет полностью заменен типовым при обновлении релиза, это будет отображено в отчете "Потерянные изменения объектов метаданных", но при частичной потере доработок объекта отчет его не покажет, так как он будет по прежнему отличаться от типового.
Терминология
Маркером в данной разработке называются отметки в комментариях (обычно это фамилия или инициалы), которыми разработчики отмечают изменения в текстах модулей при доработке типовых конфигураций.
Например для такого куска кода
...
Запрос = Новый Запрос;
//Иванов 20.03.2019
Запрос.УстановитьПараметр("ДокументРасчета", ДокументРасчета)
//Иванов 20.03.2019
Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент);
...
маркером является строка "Иванов".
Соответственно набором маркеров является все такие отметки, которые встречаются в конкретной доработанной конфигурации.
Для улучшения качества анализа доработок нужно заполнить набор маркеров и привязать его к обновляемой базе
Запуск базы "Контроль доработок конфигураций"
Данная конфигурация работает только в режиме "Управляемое приложение толстый клиент". Поэтому перед первым запуском ставим основной режим запуска "Толстый клиент".
Если вы забудете сделать это, программа не запустится
Подготовка к обновлению релиза типовой конфигурации
Для обеспечения возможности фиксации различий необходимо выгрузить конфигурации в файлы, каждую в отдельный каталог. Выгружаем:
- Типовую конфигурацию старого релиза
- Типовую конфигурацию нового релиза
- Доработанную конфигурацию
Например мы обновляем доработанную конфигурацию ЗУП 3.1.9.207 на 3.1.10.223. Нам понадобятся выгруженные в каталоги конфигурации:
- ЗУП 3.1.9.207 типовая
- ЗУП 3.1.10.223 типовая
- ЗУП 3.1.9.207 доработанная
Для выгрузки используем пункт меню "Конфигурация - Выгрузить конфигурацию в файлы". В каталоге должны появиться папки и файлы с объектами конфигурации.
ВНИМАНИЕ! Выгрузка конфигураций в файлы должна проводиться на одной и той же версии платформы!
При несоблюдении этого требования добавляемая при выгрузке в файлы служебная информация может различаться для разных релизов платформы, что приведет к значительному увеличению времени, требуемого для поиска различий в файлах а также может привести к ложным различиям. Чаще всего это может случиться если база с доработанной конфигурацией - клиент-серверная, а базы с типовыми конфигурациями - файловые. Если на компьютере разработчика установлены разные релизы платформы и есть более новый релиз, чем релиз сервера 1С, файловая база запустится на более новом релизе. В этом случае лучше запускать бинарный файл прямо из каталога с нужным релизом при выгрузке обоих конфигураций.
После выгрузки конфигураций в файлы открываем базу "Контроль доработок конфигураций".
Создаем или выбираем обновляемую базу из списка баз. При создании базы можно сразу указать набор маркеров, используемый в этой базе. Справочник "Конфигурации" заполняется автоматически при создании документа "Фиксация различий", ручное заполнение его не предусмотрено, поэтому если в справочнике нет нужной вам конфигурации, ничего не указываем, она заполнится потом автоматически.
После выбора базы создаем документ "Фиксация различий типовых релизов". Создаем новый документ и выбираем путь к ранее выгруженным файлам конфигураций. Программа сразу определяет наименования конфигураций и их релизы.
Записываем документ, после этого нажимаем "Заполнить". Поиск различий типовых релизов может занять достаточно продолжительное время, для указанных конфигураций на моем i3/16Gb это примерно полчаса. Если меняется не 3 разряд релиза, а только 4, например обновление с ЗУП 3.1.10.223 на 3.1.10.253, то заполнение различий происходит значительно быстрее, за 5-10 минут.
После заполнения различий сохраняем документ и выбираем его.
Затем создаем фиксацию различий доработанной конфигурации до обновления. В ней сразу заполнится каталог файлов типовой конфигурации (из документа фиксации различий типовых релизов), нужно указать только каталог с выгруженными файлами доработанной конфигурации. Записываем документ и нажимаем "Заполнить". Длительность заполнения зависит от количества различий между доработанной и типовой конфигурациями.
После сохранения выбираем документ из списка.
Просмотр различий конфигураций
При заполнении документ "Фиксация различий" сравнивает выгруженные файлы конфигураций. Если файлы различаются, то программа пытается определить в чем именно заключаются различия и сохранить эту информацию. Кроме того сохраняется текст отличающихся файлов, а для текстов модулей - отдельно сохраняется текст каждой процедуры/функции. Всю эту информацию можно затем увидеть в самом документе или в отчетах.
Пример определения различий в модулях:
Для каждого модуля определяются добавление/изменение/удаление процедур и функций, а также количество маркеров в каждой процедуре/функции. Нажав на гиперссылку "Сравнить тексты" можно увидеть чем конкретно отличаются тексты модулей.
Также можно просмотреть отличия всего модуля целиком:
Пример определения различий в метаданных ("Внутренний путь" - это иерархия в xml-файле):
Для удобства отображения в документе "Фиксация различий" есть фильтры по виду метаданных, виду различий (Добавлен/Изменен/Переименован/Удален) и типу объектов (равно как и Ctrl+F по любой колонке). Это может быть полезно если мы хотим увидеть например сразу все формы, которые были изменены интерактивно (не модули форм, а именно сами формы). Такой возможности Конфигуратор не предоставляет.
Различия конфигураций можно посмотреть также в отчетах "Различия в модулях" и "Различия в метаданных", которые можно открыть из рабочего стола (отчеты открываются с уже заполненными параметрами). Эти отчеты созданы на СКД, позволяют менять настройки, сохранять новые варианты. Сохраненные варианты отчетов можно открывать сразу с рабочего стола (на скриншоте выше это "Проверка соответствия стандартам разработки" и "Отклонения от стандартов разработки").
Пример сформированного отчета "Различия в метаданных":
Ещё одна уникальная функция, которой нет в Конфигураторе - просмотр различий текстов запросов динамических списков и наборов данных СКД (открывается при щелчке по гиперссылке "Сравнить"):
Пример сформированного отчета "Различия в модулях конфигураций" (щелчком по гиперссылке можно открыть сравнение текстов как отдельных процедур, так и модуля целиком):
Полуавтоматическая настройка объединения модулей
Ещё одна уникальная функция, которой лишён Конфигуратор. Данная конфигурация может сформировать xml-файл с настройками объединения модулей, который можно загрузить при обновлении релиза, значительно уменьшив тем самым количество вручную расставляемых флажков в модулях.
Если процедура/функция изменена только в новой типовой конфигурации или только в доработанной, для неё в файл записывается состояние флажка.
Для процедур/функций измененных дважды состояние флажка не записывается и нажав на переключатель "Отображать строки: Не записанные в файл" можно увидеть только такие процедуры/функции и при объединении заниматься только ими, не тратя времени на остальные. Также можно увидеть доработанные процедуры/функции, которые были удалены в новом типовом релизе и доработки из которых нужно переносить в другие процедуры/функции.
Полученный xml-файл я рекомендую загружать через "Добавить настройки из файла".
При загрузке xml-файла с настройками объединения могут выходить сообщения "Методы не найденные в модулях обеих конфигураций". Виной этому формат файла сохранения настроек, в нем есть только имя процедуры/функции, но нет признака того, процедура это или функция, и если в новой типовой конфигурации процедура была переделана в одноименную функцию (или наоборот), выходит такое сообщение.
Но флажки при этом загружаются верно.
Отображение потерянных доработок
После обновления релиза выгружаем полученную конфигурацию в файлы и создаем документ "Различия доработанной конфигурации после обновления". После этого запускаем отчеты "Потерянные изменения объектов метаданных" и "Потерянные изменения модулей", которые выводят доработки метаданных/модулей, исчезнувшие после обновления релиза.
Для модулей сравнивается кроме самого факта наличия изменений также и количество маркеров, если оно уменьшилось, то считается что часть доработок процедуры/функции была утрачена. Поэтому при ручной настройке объединения процедур/функций лучше не менять количество маркеров доработок, чтобы исключить ложные срабатывания.
Поддержка английского языка
Конфигурация создана полностью на английском языке, все объекты метаданных и все программные модули написаны на английском. Если в конфигурации сделать основным языком английский, весь интерфейс тоже будет на английском.
Условия работоспособности
Для корректной работы программе требуется возможность создания COM-объекта "VBScript.RegExp", поэтому беспроблемная работа возможна только при запуске на Windows.
Тестовое окружение
Тестирование происходило на платформе 8.3.12.1790, запуск в режиме толстый клиент, файловая база. Операционная система: Windows 10.
Анализ изменений отрабатывался на конфигурациях ЗУП 3.1.9/3.1.10 и БП 3.0.57/3.0.71. Анализировать можно любую конфигурацию с открытыми модулями, но для конфигураций на обычных формах подробный анализ изменений форм недоступен, определяется только факт отличия от типовой формы.
Версия 1.1 от 13.04.2021
- Адаптация для работы в режиме клиент-сервер (толстый клиент).
- Оптимизация быстродействия
- Исправление ошибок
- Новая функция: "Поиск ссылок на удаленные в новом типовом релизе процедуры/функции".
Указываем документ фиксации различий типовых релизов (документ должен быть заполнен уже после обновления на версию 1.1, т.к. в ней появился признак "Экспортная" у процедур и функций) и документ фиксации различий доработанной конфигурации после обновления.
При нажатии на кнопку "Заполнить" программа ищет все экспортные процедуры/функции общих модулей и модулей менеджеров, которые были удалены в новом типовом релизе, затем ищет ссылки на них в измененных и добавленных модулях доработанной конфигурации (если был добавлен объект метаданных, поиск производится во всех его модулях). Все найденные вхождения в текстах выводятся в виде дерева.