# CfeUpdater — обновление расширений 1С

> CfeUpdater — обновление расширений 1С

- GitHub: https://github.com/xnd1124/CfeUpdater
- Gitsell page: https://gitsell.ru/xnd1124/CfeUpdater
- Visibility: public/free
- GitHub stars: 107
- Gitsell views: 0
- Gitsell downloads: 0

## 1C Configurations

Not specified.

## Pricing

Free or price is not specified.

## README

# Для чего создан проект и какие проблемы решает
При доработке конфигураций через расширения каждый новый релиз дорабатываемой конфигурации несёт в себе следующие проблемы, которые платформа не выявляет или не решает автоматически.
<br>
* Директивы ```&Вместо```, ```&После``` и ```&Перед```. Когда вендор изменяет логику метода, расширение продолжает применяться без каких-либо предупреждений — даже если переопределённый метод полностью потерял актуальность. Понять, требует ли он доработки, штатными средствами невозможно.
* Переопределённые обработчики событий форм и реквизитов. Типовая проверка применимости расширения принципиально не охватывает эти обработчики. Хотя по умолчанию и предлагает переопределить обработчик, а не метод модуля.
<div align="center">
<img width="466" height="135" alt="image" src="https://github.com/user-attachments/assets/91a6c4c7-ecbd-4002-a573-a146a83afbd8" />
</div>

* Отслеживание изменений заимствованных схем компоновки данных. Если вендор изменяет СКД например в заимствованном отчёте, расширение продолжает работать со старой структурой макета переопределенной в расширении. Выявить такое расхождение можно только вручную
* Отсутствие возможности автоматического разрешения конфликтов.  Если вендор изменил метод или макет СКД в отличном от расширения месте, то платформа не может решить его автоматически и потребует запуск программы трехстороннего объединения в каждом случае.

Предлагаемое решение представляет собой внешнюю обработку (**CfeUpdater.epf**), позволяющую увидеть и исправить все проблемные и потенциально проблемные места в расширении, связанном с основной конфигурацией при обновлении последней на новый релиз.
<br>

Обработка использует для разбора текстов с помощью регулярных выражений внешнюю компоненту https://github.com/alexkmbk/RegEx1CAddin и работает как Windows, так и в Linux системах.
# Как пользоваться
1. Выгрузить основную конфигурацию до обновления в файлы (через конфигуратор или при помощи автономного сервера), аналогичным образом необходимо поступить с новой конфигурацией (новый релиз обновляемой конфигурации) и собственно с самим расширением.
2. Открыть в любой конфигурации, содержащей БСП в режиме 1С: Предприятия обработку CfeUpdater.epf
3. При первом запуске возникнет запрос на разрешение подключения внешней компоненты RegEx, отвечаем "Да"
<div align="center">

![image](https://github.com/user-attachments/assets/f5048657-4065-4e3a-bf9e-18784ebef71f)

</div>

4. Так же при первом запуске автоматически откроется окно настроек, предлагающее выбрать какую программу использовать для трехстороннего объединения и указать ее место расположение
<img width="1029" height="143" alt="image" src="https://github.com/user-attachments/assets/64b3e539-1173-4b0f-add3-81194db34d74" />

Поддерживается Kdiff3 и P4Merge. Рекомендуется выбрать Kdiff3 https://download.kde.org/stable/kdiff3/ (более богатые возможности по фильтрации изменений, хотя у P4Merge более приятный интерфейс)
<div align="center">
<img width="1029" height="144" alt="image" src="https://github.com/user-attachments/assets/9755478d-661d-4d31-9c74-f7e348b3d3d2" />
</div>

5. После закрытия настроек в основной форме указать путь к каталогам с выгруженными конфигурациями и расширением, созданным на этапе 1.
![image](https://github.com/user-attachments/assets/39c119ec-8f72-46cb-8dc8-a2b498c7ad25)


6. Результат обновления расширения сохраняются в виде xml файлов. Для этого необходимо указать пустой каталог, в который будут автоматически скопированны исходные файл расширения и произведены необходимые изменения.
![image](https://github.com/user-attachments/assets/7f62c142-9f02-4175-bb07-fdf98ca8b63f)
После выполнения всех объединений из этого каталога необходимо загрузить обновленную версию расширения.

7. Нажать кнопку Анализ и дождаться его завершения ( несколько секунд)
<div align="center">
   
![image](https://github.com/user-attachments/assets/e8b76368-0ebe-46a4-a671-eeae46f5a92f)

</div>

8. Результат анализа выводится на разных вкладках. На вкладке "Проблемы" показаны критические проблемы, из-за которых расширение не будет применено или будет работать некорректно
   ![image](https://github.com/user-attachments/assets/88f0d6f6-a395-46a0-9200-a48b14a8bfd6)
Результат представлен в виде дерева, строки которого указывают на проблемные методы.
   </br>
Часть проблем (конфликтов) могут быть разрешены автоматически, они отмечены в колонке "Авто", остальные требуют запуска программы сравнения. Это можно сделать либо двойным щелчком или выбрав команду "Объединить"
<div align="center">
   
![image](https://github.com/user-attachments/assets/a47866ca-9e91-4fc7-8cf3-e3f77ed9b68f).
   
</div>   

  После этого запустится настроенная программа просмотра изменений (на  скрине Kdiff3), в которой необходимо будет разрешить конфликт обновления.
![image](https://github.com/user-attachments/assets/218145a6-6609-4bf9-ae68-235ce15ae162)
Результат внесенных изменений автоматически записывается в каталог с результатами объединения, указанный в п.6

 P.S. Просмотреть результат объединения можно по команде "Показать результат объединения" 
 <div align="center">
    
 ![image](https://github.com/user-attachments/assets/9db7bb75-e664-4797-9386-9971af4ec583). 
    
 </div>
 
 Т.к. повторное нажатие "Объединить" сбрасывает результаты прошлого объединения и производит его заново.

9. Вкладка "Информация" отображает методы, которые были переопределены при помощи директив "После" или "Перед" и позволяет просмотреть не повлияли ли изменения в конфигурации на логику в расширении.
![image](https://github.com/user-attachments/assets/ce7e1298-5439-4e32-ab29-c0d628b960da)
Тут при показе отличий открывается программа просмотра изменений без возможности объединения. Выводимые данные носят информационный характер. Все изменения в расширении при необходимости необходимо сделать в среде разработки в зависимости от того насколько поменялась логика переопределяемого метода.
![image](https://github.com/user-attachments/assets/7c73659c-2567-4ef3-9c42-e14401c8480f)

10. После разрешения вопросов по проблемным методам  их рекомендуется помечать  флажком в колонке "Отм."
 <div align="center">
    
 ![image](https://github.com/user-attachments/assets/6516da9d-7251-491c-aecf-eaedecba4869)
    
 </div>
 
11. Необходимо в конфигураторе загрузить конфигурацию из файлов, выбрав каталог с результатами, указанный в п.6



# Ограничения
1. Анализируются исходники в формате конфигуратора 
2. Для просмотра изменений поддерживаются только Kdiff3, P4Merge