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

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С:ERP. Управление холдингом Абонемент ($m)

Описан практический пример обновления через копию конфигурации 1С:ERP. Управление холдингом с версии 3.2.6.6 на версию 3.2.6.7, который можно применять на других конфигурациях и версиях.

10 стартмани

18.02.2025    255    PetrovAnton    1    

1

Обновление 1С Программист Платформа 1С v8.3 Абонемент ($m)

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

10 стартмани

18.02.2025    357    1    kalyaka    0    

5

Обновление 1С Программист Платформа 1С v8.3 Абонемент ($m)

При длительном обновлении из конфигуратора следим за процентом загрузки ПК и отправляем письмо на почту при завершении.

1 стартмани

17.02.2025    179    0    slavik27    0    

3

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

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

2 стартмани

06.02.2025    1511    8    XilDen    24    

34

Групповая разработка (Git, хранилище) Обновление 1С Программист Платформа 1С v8.3 Россия Бесплатно (free)

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

05.02.2025    1179    Nonik    10    

17

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

Обновление для конфигурации Управление торговлей 10.3.88.3 добавляет поддержку ставок НДС 5% и 7%, обеспечивает корректную печать этих ставок на актуальных моделях торгового оборудования (АТОЛ, ШТРИХ, ревизия 4004), содержит актуальные правила обмена с конфигурацией "Бухгалтерия предприятия 3.0" для передачи новых ставок. Новые ставки НДС поддерживается в печатных формах УПД, ТТН и т.д. В состав дистрибутива включены обработки для обслуживания торгового оборудования ККТ нового формата (Штрих-М и АТОЛ)

5 стартмани

31.01.2025    1828    29    karpik666    28    

21
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 2010 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 2010 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 157 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 101 02.06.24 11:27 Сейчас в теме
(22)
в качестве альтернативы есть бесплатная обработка https://infostart.ru/1c/articles/1779546/

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