Сравнение процедур/функций с директивой &Вместо с типовыми процедурами

1. 22.06.22 10:26 Сейчас в теме
Коллеги, привет!

В конфигурации есть расширение с большим количеством процедур/функций с директивой &Вместо. При обновлении конфигурации такие процедуры/функции необходимо сравнивать с обновленной конфигурацией.
Вопрос, может быть есть инструменты как можно быстро сравнить и выявить изменение? В ручную сравнивать долго и не удобно.
Найденные решения
3. comptr 3 22.06.22 20:42 Сейчас в теме
https://github.com/bia-technologies/diff3cf на 1Script (или https://github.com/oscript-library/diff3cf)
Нужно три конфы в виде XML-файлов:
1. Старая конфигурация поставщика
2. Новая конфигурация поставщика
3. Конфигурация расширения

Натравливаете скрипт на них и получаете отчет о функциях, которые были перехвачены с &Вместо и изменились в новом релизе.
Есть один косяк - утилита давно не дорабатывалась и не умеет анализировать процедуры с &ИзменениеИКонтроль, нужно немного поправить скрипт после установки.
mark_oilbass; +1 Ответить
20. comptr 3 23.06.22 16:04 Сейчас в теме
(17)
1. Ставишь 1Script: https://oscript.io , потом надо убедиться, что установилось правильно, выполнив команду "oscript -v", возможно нужно будет перезагрузить комп.
2. Ставишь плагин diif3cf: opm install diff3cf (запускать консоль "от имени администратора")
3. Идешь в папку с установленной либой и добавляешь поддержку дерективы ИзменениеИКонтроль (C:\Program Files\OneScript\lib\diff3cf\src\Классы\ПарсерМодулейРасширен­ия.os, Функция ПолучитьДирективыМетодов и Функция ПрочитатьМетодыМодуля, там просто по аналогии с остальными дерективами пара строк кода)
4. Дальше как расписал ранее - выгрузить в XML-файлы старую конфу поставщика, новую конфу поставщика и конфу расширения, натравить на них утилиту и получить отчет в виде HTML:
diff3cf diff E:\old_cfg E:\new_cfu E:\ext_cfg E:\result2.html
mark_oilbass; +1 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. collider 23.06.22 05:25 Сейчас в теме
(1) У меня ответа нет, но есть вопрос не по теме.
Зачем функции, которые "вместо", всовывать в расширение? Почему не вставить прямо в конфигурацию?
5. mark_oilbass 23.06.22 05:32 Сейчас в теме
(4)потому что она на замке и снимать с замка не планируется.
trickster; +1 Ответить
14. collider 23.06.22 10:40 Сейчас в теме
(5)
Ну и что, что на замке? Почему вы так за него держитесь?
Хоть вы и запихали всё в расширение, но по факту конфигурация у вас доработана и при обновлении вы испытываете ровно те же трудности, как если бы вы меняли саму конфу.

На самом деле, трудностей даже больше. Ведь, вы создали этот пост именно потому что не можете нормально обновить нетиповую конфигурацию.
2. TokarevV 15 22.06.22 14:47 Сейчас в теме
Создать тестовую базу. Выгрузить новую конфигурацию и сравнить с текущей через Конфигурация/ Сравнить конфигурации в конфигураторе не предлагать?
6. mark_oilbass 23.06.22 05:32 Сейчас в теме
(2)сравнить с расширением?
8. TokarevV 15 23.06.22 06:35 Сейчас в теме
(6) Вы умеете автоматически сравнивать расширение и основную конфигурацию?
Старую конфигурацию поставщика с новой конфигурацией поставщика, если изменений в подменяемой процедуре нет, то и расширение править не надо. В этом случае надо иметь список подменённых процедур и функций.
11. mark_oilbass 23.06.22 08:44 Сейчас в теме
(8)я сейчас так и делаю, но этот метод тоже не удобен, так как заранее должен быть заготовлен список заимствованных процедур/функций
12. EVKash 13 23.06.22 09:22 Сейчас в теме
(11)
так как заранее должен быть заготовлен список заимствованных процедур/функций
Это совсем не проблема. Глобальным поиском ищется "&Вместо". Если расширений много, то выгружаете в файлы cfe и глобальный поиск по файлам.
(3) А если расширение не одно? Т.е. отдельные задачи в разных расширениях. Для каждого расширения сравнение делать?
13. Sashares 20 23.06.22 09:31 Сейчас в теме
(11)Так то кажется не очень сложным:
1) Выгрузить расширение в файлы, распарсить файлы модулей и получить список заимствованных процедур/функций - сохранить каждую в отдельный файл txt, в папку 1.
2) Выгрузить текущую конфигурацию в файлы - найти в файлах модулей соответствующие процедуры/функции - сохранить в папку 2.
3) Пункт 2 повторить для предыдущего релиза, сохранить в папку 3.
4) Сравнить каталоги с процедурами в kdiff3.

Можно сделать обработку для этого - для первых 3х пунктов так уж точно.
18. mark_oilbass 23.06.22 15:19 Сейчас в теме
(13)Обработку можно запилить, но вдруг мы делаем велосипед. Я думал может есть готовые инструменты.
19. Sashares 20 23.06.22 15:44 Сейчас в теме
(18)Если сделаете обработку и выложите в публикацию, кажется, будет не бесполезно =)
3. comptr 3 22.06.22 20:42 Сейчас в теме
https://github.com/bia-technologies/diff3cf на 1Script (или https://github.com/oscript-library/diff3cf)
Нужно три конфы в виде XML-файлов:
1. Старая конфигурация поставщика
2. Новая конфигурация поставщика
3. Конфигурация расширения

Натравливаете скрипт на них и получаете отчет о функциях, которые были перехвачены с &Вместо и изменились в новом релизе.
Есть один косяк - утилита давно не дорабатывалась и не умеет анализировать процедуры с &ИзменениеИКонтроль, нужно немного поправить скрипт после установки.
mark_oilbass; +1 Ответить
7. mark_oilbass 23.06.22 05:35 Сейчас в теме
(3)я эту утилиту находил но что то не разобрался как она работает( Как скрипт настроить? Какой файл нужно исправлять?
16. comptr 3 23.06.22 12:40 Сейчас в теме
(7) ставите на комп 1Script, потом opm install diff3c, потом внимательно читаете, как его применять.
Часов через 5-6 смогу расписать подробнее
mark_oilbass; +1 Ответить
17. mark_oilbass 23.06.22 15:02 Сейчас в теме
(16)о, супер, было бы очень здорово) буду ждать)
20. comptr 3 23.06.22 16:04 Сейчас в теме
(17)
1. Ставишь 1Script: https://oscript.io , потом надо убедиться, что установилось правильно, выполнив команду "oscript -v", возможно нужно будет перезагрузить комп.
2. Ставишь плагин diif3cf: opm install diff3cf (запускать консоль "от имени администратора")
3. Идешь в папку с установленной либой и добавляешь поддержку дерективы ИзменениеИКонтроль (C:\Program Files\OneScript\lib\diff3cf\src\Классы\ПарсерМодулейРасширен­ия.os, Функция ПолучитьДирективыМетодов и Функция ПрочитатьМетодыМодуля, там просто по аналогии с остальными дерективами пара строк кода)
4. Дальше как расписал ранее - выгрузить в XML-файлы старую конфу поставщика, новую конфу поставщика и конфу расширения, натравить на них утилиту и получить отчет в виде HTML:
diff3cf diff E:\old_cfg E:\new_cfu E:\ext_cfg E:\result2.html
mark_oilbass; +1 Ответить
23. mark_oilbass 24.06.22 14:26 Сейчас в теме
(20) Спасибо большое) Будем пользоваться этим чудом инструментом)
9. puzo50 23.06.22 07:14 Сейчас в теме
а так разве не помогает?
Прикрепленные файлы:
10. mark_oilbass 23.06.22 08:43 Сейчас в теме
15. EVKash 13 23.06.22 11:06 Сейчас в теме
(14) да, но!
Если конфигурация на замке, то можно обновляться на сколько угодно релизов, а работоспособность проверять/восстанавливать только на последнем.
mark_oilbass; +1 Ответить
21. mixa4 23.06.22 16:34 Сейчас в теме
Что с чем сравнивать? Если вы в расширение под &Вместо копируете-вставляете код исходной функции и правите его там - то не надо так делать, специально для этого случая существует &ИзменениеИКонтроль (потом удобно сравнивается KDiff3 или TortoiseMerge).
22. mark_oilbass 23.06.22 16:40 Сейчас в теме
(21)режим совместимости не дает использовать &ИзменениеИКонтроль
Оставьте свое сообщение
Вакансии
Программист 1С
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Консультант-аналитик 1С
Санкт-Петербург
По совместительству

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Архитектор 1С
Москва
зарплата от 260 000 руб.
Полный день

Начальник отдела архитектуры
Москва
зарплата от 300 000 руб.
Полный день