При доработке конфигураций, находящихся на поддержке через расширения возникают проблемы при выпуске вендором новых версий основной конфигурации. Часть проблем можно решить, используя директиву &ИзменениеиКонтроль
, однако при использовании директив &Вместо
,&После
и &Перед
нет типовых средств, позволяющих понять, а не потеряло ли расширение актуальность, не требуется ли доработка переопределенных методов.
Также типовая проверка применимости не учитывает переопределение событий форм и их реквизитов (вместо переопределения методов модуля).
Предлагаемое решение представляет собой внешнюю обработку (CfeUpdater.epf), позволяющую увидеть и исправить все проблемные и потенциально проблемные места в расширении, связанном с основной конфигурацией при обновлении последней на новый релиз. Обработка сравнивает методы, а не модули целиком. Также обработка при помощи утилиты git (git-merge) пытается автоматически применить изменения из новой версии конфигурации если не были обнаружены конфликты.
Для работы обработки необходимо наличие на компьютере программы, позволяющей выполнять трехстороннее сравнение текстов. Примером таких программ может быть KDiff3 или P4Merge.
Для автоматического объединения необходимо наличие консольного git клиента, например https://git-scm.com/
Обработка использует для разбора текстов с помощью регулярных выражений внешнюю компоненту https://github.com/alexkmbk/RegEx1CAddin и работает как Windows, так и в Linux системах.
Как пользоваться:
1. Подготовить исходные коды
Выгрузить основную конфигурацию до обновления в файлы (через конфигуратор или при помощи автономного сервера), аналогичным образом необходимо поступить с новой конфигурацией (новый релиз обновляемой конфигурации) и собственно с самим расширением.
2. Открыть обработку
В любой конфигурации, содержащей БСП в режиме 1С: Предприятия обработку CfeUpdater.epf
3. При первом запуске возникнет запрос на разрешение подключения внешней компоненты RegEx
Отвечаем "Да"
4. При первом запуске настраиваем программы объединения
При первом запуске автоматически откроется окно настроек, предлагающее выбрать какую программу использовать для просмотра изменений, указать ее место расположение, а также указать расположение стандартного клиента git.
Рекомендуется выбрать Kdiff3 (более богатые возможности по просмотру изменений) и стандартный консольный git клиент
5. Указываем каталоги с исходниками
После закрытия настроек в основной форме указать путь к каталогам с выгруженными конфигурациями и расширением, созданным на этапе 1.
6. Указываем каталог с результатом обновления
Результат обновления расширения сохраняются в виде xml файлов. Для этого необходимо указать пустой каталог, в который будут автоматически скопированы исходные файл расширения и произведены необходимые изменения.
7. Выполняем анализ изменений
Нажимаем кнопку Анализ и дождаться его завершения ( несколько секунд)
8. Обрабатываем все проблемы на закладке "Проблемы"
На вкладке "Проблемы" показаны критические проблемы, из-за которых расширение не будет применено или будет работать некорректно
Результат представлен в виде дерева, строки которого указывают на проблемные методы. Часть проблем могут быть разрешены автоматически при помощи git, они отмечены в колонке "Авто", остальные требуют запуска программы сравнения. Это можно сделать либо двойным щелчком или выбрав команду "Объединить".
После этого запустится настроенная программа просмотра изменений (на скрине Kdiff3), в которой необходимо будет разрешить конфликт обновления.
Результат внесенных изменений автоматически записывается в каталог с результатами объединения, указанный в п.6
9. При необходимости просмотреть изменения на закладке "Информация"
Вкладка "Информация" отображает методы, которые были переопределены при помощи директив "После" или "Перед" и позволяет просмотреть не повлияли ли изменения в конфигурации на логику в расширении
Тут при показ отличий открывается программа просмотра изменений без возможности объединения, она носит информационный характер. Все изменения в расширении необходимо будет сделать в среде разработки.
10. Загрузить расширение из исходников
Перед загрузкой проверяем что все конфликты разрешены. Удобно помечать их флагом в колонке "Отм."
Сама обработка и исходный код выложены доступны тут: https://github.com/xnd1124/CfeUpdater