Инструмент для обновления расширения конфигурации

16.10.24

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Инструмент для обновления расширения конфигурации (доб. ИзменениеИКонтроль):
.epf 12,70Kb ver:2.0.2
13
13 Скачать (1 SM) Купить за 1 850 руб.

Инструмент позволяет создать файл слияния, с помощью которого можно быстро и надёжно объединить модули расширения с модулями конфигурации.

Для правильной работы инструмента необходимо выполнить всего 2 условия:

    после аннотации ("&Вместо" или "&ИзменениеИКонтроль"), расположенной в строке модуля, и скобкой не должно быть пробелов;
    после аннотации ("Вместо" или "ИзменениеИКонтроль"), расположенной в имени модуля, и скобкой не должно быть пробелов; 

   на-пример, "&Вместо("ИмяМетода")", "&ИзменениеИКонтроль("ИмяМетода")", "Процедура НК_ИмяМетодаВместо(...)", "Функция НК_ИмяМетодаИзменениеИКонтроль(...)".

При выполнении этих условий будет правильно определено имя метода.

Использование инструмента производится в следующем порядке.

В любой папке создайте 3 пустых текстовых файла:  файл расширения, файл конфигурации и файл слияния.

Далее выберите любой  объект расширения, имеющий модуль.  Это может быть общий модуль,  или форма справочника,  его модуль объекта или модуль менеджера - повторяю, любой объект.
Текст выбранного модуля копируйте в файл расширения.

Далее выбираете модуль соответствующего ему объекта основной конфигурации.Текст выбранного модуля копируйте в файл конфигурации.

Далее на соответствующих закладках инструмента выбирайте эти файлы и загружайте их в инструмент.

 

   

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

На закладке "Файл расширения" введите "Префикс расширения" с нижним дефисом "_".
на закладке список модулей нажмите кнопку "Определить методы".

 

 

На закладке "Файл слияния" нажмите кнопку "Создать файл слияния".

 

 

Все! В полученный файл слияния попадут все строки файла расширения, существующие только в файле расширения,  в том числе строки методов с аннотациями "Перед" и "После"
и директивы компиляции модулей формы "&НаКлиенте" или "&НаСервере" и т.п. 

А после строк с аннотацией "&Вместо("ИмяМетода")", или "Метод НК_ИмяМетодаВместо(...)", или "&ИзменениеИКонтроль("ИмяМетода")", или НК_ИмяМетодаИзменениеИКонтроль(...)" будут вставлены строки из файла конфигурации  до включительно строки &КонецМетода.

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

Теперь полученные файл расширения и файл слияния загружайте в бесплатное приложение "KDiff3" или аналогичное ему.

 

 

Здесь анализируйте "конфликты", вставляйте в результирующий файл требуемые различия. Текст результата копируйте в буфер обмена и замените на него текст модуля объекта.

Этот процесс уже значительно легче и быстрее, чем сравнивать построчно каждую процедуру или функцию в расширении и конфигурации.

Реально я обновил УНФ на версию 3.0.7.122 с громадным количеством изменений за один день. Без этого инструмента этот процесс занимал от нескольких дней, до недели.

Файл можно открыть в пользовательском режиме через меню "Открыть файл" или загрузить в "Печатные формы, отчеты и обработки".

Использовать можно на любой версии платформы 1С в любой конфигурации 1С.

Код открыт.

Проверено на следующих конфигурациях и релизах:

  • Управление нашей фирмой, редакция 3.0, релизы 3.0.8.40

обновление конфигурации подготовка

См. также

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

При обновлении релиза конфигурации УТ появилась ошибка "Ошибка формата потока".

21.03.2025    829    Gummi_pr    10    

6

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

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

10 стартмани

18.02.2025    844    PetrovAnton    6    

5

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

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

10 стартмани

18.02.2025    732    5    kalyaka    0    

7

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

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

1 стартмани

17.02.2025    356    0    slavik27    0    

3

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

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

2 стартмани

06.02.2025    2001    16    XilDen    26    

35

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

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

05.02.2025    2125    Nonik    10    

17
Отзывы
24. chkurs 101 21.05.24 17:55 Сейчас в теме
21 мая 2024 г. добавил в код обработки аннотацию "ИзменениеИКонтроль".
Кто уже скачал обработку пришлите, пожалуйста, мне в "личку" ваш e-mail.
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. DrZombi 303 03.05.24 12:01 Сейчас в теме
Спасибо, и сомнительно.
У нас в расширении, почти полноценная конфигурация... просто время идет, а доработки требуют :)))


Так, что не всем удобен ваш линейный интерфейс
2. savant 57 03.05.24 13:09 Сейчас в теме
kdiff3 привязывается в настройках и не надо ничего городить и придумывать.
Рамзес; vv2; RocKeR_13; kauksi; Dali; _Ramzes; ubnkfl; baracuda; +8 Ответить
3. Xershi 1535 03.05.24 19:05 Сейчас в теме
(2) вот недавно активно обновлял расширение, подумывал может кдиф бы помог? Слишком много рутины было.
Пока не использую его. Его получается нужно на сервере 1с поставить? И прописать в настройках. Может видели обзор инструмента?
Сам пользуюсь винмердж, для сравнения текстов модулей.
4. maloi3390 04.05.24 10:04 Сейчас в теме
(3) он ставится на той машине, на которой запускается конфигуратор.
vv2; gamletspb; SuhoffGV; +3 Ответить
21. savant 57 15.05.24 11:13 Сейчас в теме
(3)Очень помогает при обновлении. Только иногда подвисает, нужно грохать его через диспетчер и перезапускать конфигуратор. А так он 90% работы делает за тебя.
5. корум 288 05.05.24 13:58 Сейчас в теме
(0) так понимаю, в расширении с методами ИзменениеИконтроль, Перед и После такой задачи не возникает по определению.

Повод пересмотреть архитектуру, а не героически преодолевать самостоятельно созданные трудности.
Рамзес; Vaskin; Dali; +3 Ответить
7. de0nis 509 06.05.24 10:14 Сейчас в теме
(5) Перед и после - да, но они не всегда применимы. А ИзменениеИКонтроль всё равно требует актуализации и сравнения модулей, если процедура поменялась. Но как понял, обработка из публикации для ИзменениеИКонтроль не работает, только для вместо.
6. quazare 3893 06.05.24 07:08 Сейчас в теме
тема называется "инструмент для обновления расширения конфигурации", затем написано "обновление конфигурации, содержащей расширение", далее по тексту - "объединить модули расширения с модулями конфигурации"...

в итоге то что?

а вообще - это не длительный и не кропотливый процесс - залог корректности - это правильно спроектированное расширение - "не лезь" в регистры накоплений расширением.... и т.п....

изначально, я должен понимать, что будет, если это расширение у меня отвалится или у кого-то не хватит прав на него.....
Serg O.; RustIG; +2 Ответить
9. chkurs 101 06.05.24 10:47 Сейчас в теме
(6) Как бы изначально правильно не было спроектировано расширение, почти обязательно наступит момент, когда оно вступит в конфликт с текущим вариантом конфигурации. Программисты 1С "любят" изменять наименования общих модулей, их методов и состав общих модулей. Они изменяют иногда наименование и/или тип реквизита объекта конфигурации. И с этип приходится периодически длительно и кропотливо "бороться", внося изменения в конфликтующие методы расширения.
(5) Аннотацию "ИзменениеИконтроль" я стараюсь не использовать, т.к. бывает из-за совершенно не значительных изменений в методе конфигурации (добавления в текст пробела, исправления грамматических ошибок и т.п.) метод расширения конфликтует. Поэтому она и не попала в обработку, и я думаю, что ее следует добавить.
А аннотации "Перед" и "После" используются изначально для внесения в текст метода изменений, необходимых только в данном конкретном расширении. Если эти методы вступят в конфликт с конфигурацией из-за внесенных 1С изменений, то платформа обязательно выдаст ошибку с подробным ее описанием, и эту ошибку легко исправить, не используя Kdiff и ему подобные.
12. корум 288 06.05.24 12:15 Сейчас в теме
(9)
Аннотацию "ИзменениеИконтроль" я стараюсь не использовать

Вот она, фундаментальная ошибка.

Платформа сама по кнопочке "проверить возможность применения" показывает ВСЕ различия, выводит в список, только кдифф пропиши и пользуйся.

Старайся не использовать "вместо" и будет тебе счастье.
maloi3390; Рамзес; user1978635; +3 Ответить
8. RocKeR_13 1400 06.05.24 10:16 Сейчас в теме
Кто-то использует &Вместо? С кучей расширений - это просто ад, не завидую...
Рамзес; корум; +2 Ответить
10. chkurs 101 06.05.24 11:10 Сейчас в теме
(8) Если выполнение текущей задачи обязательно требует применения этой аннотации и вам за это платят, то это не "ад", а обычная работа программиста. И далеко не все заменяемые методы состоят из тысяч строк и "трудно-перевариваемых" алгоритмов. Для таковых можно разделить метод на три части:
с аннотацией "Перед" повторить весь код до изменяемой части метода;
с аннотацией "Вместо" внести свои изменения и добавить в него строку со ссылкой на
отдельный свой метод, состоящий из оставшихся строк исходного метода.
11. RocKeR_13 1400 06.05.24 11:51 Сейчас в теме
(10) Не встречал еще такой задачи, где вместо &Вместо нельзя было бы использовать &ИзменениеИКонтроль.
Рамзес; корум; +2 Ответить
14. oldcopy 174 06.05.24 13:21 Сейчас в теме
(11) Там где вам нужно практически полностью переписать метод своим или серьезно поменять его логику. Мы так делали на условном оформлении, где проще заменить метод полностью, чем добавлять в него в десяток мест &ИзменениеИКонтроль
15. ovasiliev 6 11.05.24 10:59 Сейчас в теме
(11) Вместо &Вместо всегда можно использовать &ИзменениеИКонтроль. Только смысл? Радоваться, что расширение в пользовательском сеансе отваливается, когда компилируется модуль с такой процедурой, а пользователь не обращает внимания на предупреждение и продолжает работать на неактуальном коде?
16. RocKeR_13 1400 13.05.24 09:16 Сейчас в теме
(15) Проще контролировать со стороны разработчика наличие изменений. Уже у нескольких клиентов были случаи, когда горе-разработчики использовали &Вместо, не следили за изменениями исходного кода и после обновления в проводках получалась такая ересь, что бизнес за голову хватался. Когда в базе 5-7 крупных расширений и кто-то от лени начинает в коде постоянно использовать &Вместо - при обновлении конфигурации поддержка таких расширений выливается в значительные затраты времени.
17. ovasiliev 6 13.05.24 12:54 Сейчас в теме
(16) "... при обновлении конфигурации поддержка таких расширений выливается в значительные затраты времени" - но это единственный кошерный выход.
"... кто-то от лени начинает в коде постоянно использовать &Вместо" - от лени надо избавляться. Как и от ленивых. Только если нельзя обойтись &Перед или &После - то только тогда &Вместо. От ленивых не помогут директивы &ИзменениеИКонтроль, от них помогает только директива &ПинкаПодЗад.
Халявы в нашем деле нет. Надо работать, и работать как надо, а не как хотелось бы.
18. RocKeR_13 1400 13.05.24 13:01 Сейчас в теме
(17) Лень бывает разной: одна позволяет найти оптимальные подходы к решению проблем, а другая - к куче ошибок) В любом случае, если у вас 1/2/3 использования &Вместо в одном расширении - это одно дело. Если у вас таких мест более 50 в нескольких расширениях и в разработке задействовано несколько разных обслуживающих организаций - один только поиск таких процедур/функций уже выливается в отдельный вид мазохизма, когда можно нажать одну кнопку для проверки применения всех расширений.
19. ovasiliev 6 13.05.24 13:21 Сейчас в теме
(18) "... когда можно нажать одну кнопку для проверки применения всех расширений." - и что, работает?
20. RocKeR_13 1400 13.05.24 13:22 Сейчас в теме
(19) А не должна? Работает
13. корум 288 06.05.24 12:24 Сейчас в теме
(10)
можно разделить метод на три части

... не встречал конфигурацию с 20+ расширениями?
Именно расширениями, без патчей.

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

Истинно говорю тебе - не используй "вместо", береги свой разум.
RocKeR_13; Рамзес; user1978635; +3 Ответить
22. xnd 93 21.05.24 10:32 Сейчас в теме
в качестве альтернативы есть бесплатная обработка https://infostart.ru/1c/articles/1779546/
где анализируется вся конфигурация сразу без ограничений на скобки и пробелы
23. chkurs 101 21.05.24 17:50 Сейчас в теме
(22)
в качестве альтернативы есть бесплатная обработка https://infostart.ru/1c/articles/1779546/

Очень интересная обработка. При подготовке данных для нее формируется громадное количество файлов общим объемом в несколько гигабайт.
я попробовал с ее помощью обновить УНФ 3.0.6.100 до 3.0.8.40, подготовил все необходимые данные, но после "Анализа" на экран ничего не вышло. Отладчиком проанализировал код, вроде-бы работает, но в результат разбора ничего не попадает. Нет пока времени проанализировать глубже, обязательно попробую на других данных...
24. chkurs 101 21.05.24 17:55 Сейчас в теме
21 мая 2024 г. добавил в код обработки аннотацию "ИзменениеИКонтроль".
Кто уже скачал обработку пришлите, пожалуйста, мне в "личку" ваш e-mail.
25. xnd 93 21.05.24 23:33 Сейчас в теме
(23) возможно некорректно были выбраны каталоги - добавил в новую версию вывод описания конфигурации в каталоге ( если каталог выбран некорректно - появится расшифровочное сообщение)
https://github.com/xnd1124/CfeUpdater/releases/tag/1.0.1.11
26. xnd 93 23.05.24 14:52 Сейчас в теме
(23) нашел ошибку по которой у вас скорее всего не осуществлялся разбор (путь к каталогу оканчивался на слеш) она исправлена в 1.0.1.13
27. chkurs 101 01.06.24 15:25 Сейчас в теме
xnd
При обновлении УНФ 3.0.8.40 до 3.0.8.56 на версии 1.0.1.13
Значение не является значением объектного типа (ШапкаМетода)
{ВнешняяОбработкаАнализРасширенияПриОбновпении.Форма.Форма.Форма(81б)}:ТекстовыйФайп‚ДобавитьСтроку(МетодШапкаМетода);
{ВнешняяОбработка.АнализРасширенияПриОбновпении‚Форма.Форма.Форма(775)}:СоэдатьФайпСМетодом(ИмяОсновная, СтрокаРазбора.МетодОсновнаяКонфигурация);
{ВнешняяОбработка.АнапизРасширенияПриОбновпении.Форма.Форма.Форма(757)}:ПоказатьОтпичия(СтрокаРазбора);
[ОшибкаВоВремяВыпопненияВстроенногоЯзыка, ОшибкаИспопьзованияВстроенногоЯзыка]
28. chkurs 101 02.06.24 15:32 Сейчас в теме
(27) При обновлении УНФ 3.0.8.40 до 3.0.8.56 на версии 1.0.1.13
после кнопки "Анализ" при щелчке по строке с конфликтом, в котором аннотации "Перед" или "Вместо"
и проблема "Метод отсутствует в новой конфигурации" проявляется ошибка "Значение не является значением объектного типа (ШапкаМетода)" (возможно, так и надо?!), а при аннотации "Вместо" и при проблемах "Отличаются тексты методов" работает нормально - запускается Kdiff и отрабатываются конфликты.
29. xnd 93 03.06.24 09:18 Сейчас в теме
(28) если метод отсутствует - то хотелось бы все таки посмотреть а что там написано в расширении метода - поэтому открыть было бы полезно - поправлю
30. volkov-mv 10.09.24 11:54 Сейчас в теме
(3) попробовал в качестве теста использовать vscode, работает, на рабочей еще пока что не приходилось применять
https://github.com/zeegin/vscode-merge-tool-adapter-cli
Оставьте свое сообщение