Обновление расширений. Автоматизация процесса

11.12.24

База данных - Обновление 1С

Обработка, помогающая выполнить обновление расширения, в случае выхода обновления конфигурации, связанной с этим расширением.

    При доработке конфигураций, находящихся на поддержке через расширения возникают проблемы при выпуске вендором новых версий основной конфигурации. Часть проблем можно решить, используя директиву &ИзменениеиКонтроль, однако при использовании директив &Вместо,&После и &Перед нет типовых средств, позволяющих понять, а не потеряло ли расширение актуальность, не требуется ли доработка переопределенных методов.
    Также типовая проверка применимости не учитывает переопределение событий форм и их реквизитов (вместо переопределения методов модуля).

    Предлагаемое решение представляет собой внешнюю обработку (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

Ограничения

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

Расширения обновление cfe.

См. также

Работа с интерфейсом Обновление 1С Программист Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Бесплатно (free)

После обновления УНФ до 3.0.10.178 у ряда клиентов исчезла часть функционала: отчёт "Движение товаров", кнопка "Глаз" в Расходной накладной, часть документов складских перемещений. Для решения проблемы надо установить константы, чьё название подпадает под шаблон "Использовать подсистему NNN (Константы)" и соответствует "пропавшему" функционалу по смыслу.

16.01.2025    410    dime2    0    

3

Обновление 1С Программист Платформа 1С v8.3 1С:Управление торговлей 10 Россия Бухгалтерский учет Налоговый учет Управленческий учет ИП, ПБОЮЛ, КФХ НДС УСН Абонемент ($m)

Обновление, доработка для 1С: Управление торговлей 10.3 (УТ 10.3) организаций на упрощенной системе с 2025 года для использования ставок НДС 5 и 7 % в документах и печатных формах документов. Начиная с релиза 10.3.40.

4 стартмани

10.01.2025    1847    41    zhuravlev_as    37    

6

Обновление 1С Программист Платформа 1С v8.3 Бесплатно (free)

В статье рассматривается использование WinMerge для сравнения, объединения и обновления конфигураций 1С. Отдельно рассматривается методика трехстороннего сравнения при обновлении конфигурации

21.10.2024    3345    mixaeel    18    

17

Обновление 1С Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Те кто объединял конфигурации находящиеся на поддержке, обновлял подсистемы БСП прекрасно помнят упражнение «10000 тысяч кликов мышкой» или, непонятное словесное заклинание, после которого конфигурация снимается с поддержки целиком.

1 стартмани

26.09.2024    671    7    milkers    2    

7

Обновление 1С Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 Россия Бесплатно (free)

Вышел новый релиз для УТ11 5.19.63. На копии базы было выполнено обновление и вылезли проблемы с номенклатурой, подлежащей маркировке. В публикации описаны проблемы, обнаруженные в копии базы конкретной организации.

24.09.2024    1297    gull22    2    

9

Обновление 1С Программист Платформа 1С v8.3 Бесплатно (free)

Как исправить медленное сравнение конфигурации с файлом cf, сохраненным из хранилища.

17.09.2024    4696    vatkir    15    

10
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TrinitronOTV 16 31.12.22 08:14 Сейчас в теме
А где файлы, чтобы пользоваться вашей обработкой по анализу изменений в расширении?
2. minarenko 31.12.22 10:17 Сейчас в теме
(1) зачем пользоваться? картинки посмотрел и хватит
обработка тут https://github.com/xnd1124/CfeUpdater
6. TrinitronOTV 16 01.01.23 17:26 Сейчас в теме
(2) Спасибо, не обратил внимание на ссылку на GitHub
3. SergeyMordvin 1996 01.01.23 15:19 Сейчас в теме
А в чем плюсы по сравнению с платформенным подключением KDiff3?
4. xnd 94 01.01.23 15:43 Сейчас в теме
(3)
1. Платформа не отслеживает изменения в методах, расширенных при помощи аннотаций после, перед, вместо
2. Платформа не отслеживает расширение обработчиков событий формы и ее реквизитов через расширение самого обработчика, а не его метода (хотя сама рекомендует расширить обработчик)
3. До 8.3.22 платформа не отслеживала удаление расширяемого метода или изменение количества аргументов.
Kolunya; Светлый ум; cleaner_it; +3 Ответить
5. SergeyMordvin 1996 01.01.23 15:46 Сейчас в теме
(4) спасибо, теперь понятнее
7. JohnyDeath 302 04.01.23 12:38 Сейчас в теме
Может пойти чуть дальше и сделать так, чтобы обработка сама выгружала нужные файлы cf и cfe на исходники?
Т.е. наверное надо будет в настройках указать:
1. Путь к базе, откуда будет выгружаться cf и там же храниться нужное расширение
2. Имя нужного расширения
3. Путь к базе с новым cf. Или сам новый cf
35. teller 16.01.23 07:02 Сейчас в теме
(7) кнопку сделать фсе красиво пропустил :)
8. nagaitseff 179 09.01.23 08:35 Сейчас в теме
А что означает? Ошибка поиска метода "ИмяМетода" найдено более одного определения.
9. xnd 94 09.01.23 08:44 Сейчас в теме
(8) Это значит что регулярка, ищущая дополненный в расширении метод в основной/расширенной конфигурации нашла более одной процедуры/метода.
Не могли бы вы выслать текст модуля в расширении, в старой конфигурации и в новой, я проверю не является ли это ошибкой.
10. nagaitseff 179 09.01.23 08:47 Сейчас в теме
(9) в старой и новой конфигурации этот метод не менялся, так как объект создан нами в конфигурации, вызов методов тоже в конфигурации, а сам код написан в расширении.
11. xnd 94 09.01.23 08:48 Сейчас в теме
(10) ну что то же заставило алгоритм начать его искать
12. nagaitseff 179 09.01.23 08:49 Сейчас в теме
(11) дайте адрес электронной почты, вышлю код.
13. пользователь 09.01.23 08:50
Сообщение было скрыто модератором.
...
14. nagaitseff 179 09.01.23 08:51 Сейчас в теме
(11) сюда скину, сообщение скрыто.
15. nagaitseff 179 09.01.23 08:56 Сейчас в теме
16. nagaitseff 179 09.01.23 08:57 Сейчас в теме
единственно бизнес процессов много и может одинаковые названия методов
17. xnd 94 09.01.23 09:14 Сейчас в теме
(16) в модуле расширения нет ни одного метода, расширенного при помощи директив Перед|Вместо|После|ИзменениеИКонтроль
сравнение даже не запускается - возможно приведен не весь текст?
18. nagaitseff 179 09.01.23 09:17 Сейчас в теме
(17) упс, забыл скопировать директиву
Прикрепленные файлы:
Расширение.txt
19. xnd 94 09.01.23 09:22 Сейчас в теме
(18) в расширении присутствует метод ПриСозданииЗадач с точно таким же названием как и в основной конфигурации, мне кажется он должен иметь префикс, иначе будет ошибка двойного определения процедуры?
20. nagaitseff 179 09.01.23 09:23 Сейчас в теме
(19) да, есть префикс с названием организации, я его убрал здесь
21. xnd 94 09.01.23 09:38 Сейчас в теме
(20) воспроизвел - да в основной конфигурации есть несколько похожих методов - надо искать именно переопределенный - выпущу исправительный релиз
22. nagaitseff 179 09.01.23 09:51 Сейчас в теме
(21) спасибо, буду ждать Вашего релиза.
23. xnd 94 09.01.23 10:01 Сейчас в теме
(22) выложил новый релиз на github
nagaitseff; +1 Ответить
24. nagaitseff 179 09.01.23 10:02 Сейчас в теме
(23) ничего себе как быстро, спасибо
25. nagaitseff 179 09.01.23 11:19 Сейчас в теме
(23) ругается теперь на другой метод ((
26. xnd 94 09.01.23 11:20 Сейчас в теме
(25) посмотрите мой профиль на github, перешлите модули в телегу
27. xnd 94 09.01.23 15:58 Сейчас в теме
(25) сегодня будет еще один релиз где данная ошибка даже если будет возникать не будет прерывать выполнение и будет поправлена
29. xnd 94 09.01.23 16:43 Сейчас в теме
30. nagaitseff 179 10.01.23 06:42 Сейчас в теме
(29)
Значение не является значением объектного типа (ТелоМетода)
{ВнешняяОбработка.АнализРасширенияПриОбновлении.Форма.Форма.Форма(538)}:Возврат ТекстСПечатаемымиСимволами(Метод.ТелоМетода);
{ВнешняяОбработка.АнализРасширенияПриОбновлении.Форма.Форма.Форма(512)}:ИначеЕсли ТелоМодуля(ПервыйМетод) <> ТелоМодуля(ВторойМетод) Тогда
{ВнешняяОбработка.АнализРасширенияПриОбновлении.Форма.Форма.Форма(501)}:Строка.РезультатСравненияМетодов =
{ВнешняяОбработка.АнализРасширенияПриОбновлении.Форма.Форма.Форма(148)}:СравнитьМетоды();
31. xnd 94 10.01.23 09:21 Сейчас в теме
32. xnd 94 10.01.23 09:26 Сейчас в теме
(30) проверьте тестовый релиз 1.0.1.4 (тут ссылки проходят модерацию)
33. xnd 94 10.01.23 12:36 Сейчас в теме
Выпустил релиз 1.0.1.5

Исправлены ошибки:

- Значение не является значением объектного типа (ТелоМетода)
- Некорректный поиск переопределенных методов в расширении
nagaitseff; +1 Ответить
34. SoF1uffy 14 11.01.23 13:50 Сейчас в теме
Что-то подобное тоже писал "на коленке" для работы, т.к. возможностей платформы не хватает...
Тут работа весьма внушительнее, автору респект! 👍
36. nagaitseff 179 17.01.23 06:55 Сейчас в теме
(33)
Теперь все просто супер, спасибо.
37. balakin 02.02.23 20:17 Сейчас в теме
Уважаемый автор, может ли обработка анализировать изменения в расширении элементов форм и разных свойств? Или только процедуры и функции?
38. xnd 94 02.02.23 20:20 Сейчас в теме
(37) анализируются в том числе и расширения методов форм и элементов, а не только модулей
39. PerlAmutor 155 07.03.23 07:09 Сейчас в теме
В качестве развития идеи предлагаю оформить обработку в виде .os (onescript) или python скрипта для внедрения в автоматизированные сборки проектов на git.
Дмитрий74Чел; +1 Ответить
40. Lancelot-2M 115 16.03.23 16:39 Сейчас в теме
Функция ЭтоСобственныйОбъектРасширения(ИмяФайла) не срабатывает корректно. В xml файлах объекта и расширения нет строк "<Ob jectBelonging>". Версия обработки 1.0.1.10, хотя заголовок формы 1.0.1.9, платформа 8.3.21.1622
41. xnd 94 22.05.24 17:52 Сейчас в теме
(40) тег ObjectBelonging присутствует только в заимствованных объектах , если его нет в файле, значит это собственный объект расширения и нет смысла его анализировать. В этой логике есть какая то ошибка?
42. chkurs 100 02.06.24 11:27 Сейчас в теме
(22)
в качестве альтернативы есть бесплатная обработка https://infostart.ru/1c/articles/1779546/

Очень интересная обработка. При подготовке данных для нее формируется громадное количество файлов общим объемом в несколько гигабайт.
я попробовал с ее помощью обновить УНФ 3.0.6.100 до 3.0.8.40 подготовил все необходимые данные,
43. chkurs 100 02.06.24 15:35 Сейчас в теме
При обновлении УНФ 3.0.8.40 до 3.0.8.56 на версии 1.0.1.13
после кнопки "Анализ" при щелчке по строке с конфликтом, в котором аннотации "Перед" или "Вместо"
и проблема "Метод отсутствует в новой конфигурации" проявляется ошибка "Значение не является значением объектного типа (ШапкаМетода)" (возможно, так и надо?!), а при аннотации "Вместо" и при проблемах "Отличаются тексты методов" работает нормально - запускается Kdiff и отрабатываются конфликты.
Оставьте свое сообщение