Коллеги, привет!

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

Натравливаете скрипт на них и получаете отчет о функциях, которые были перехвачены с &Вместо и изменились в новом релизе.
Есть один косяк - утилита давно не дорабатывалась и не умеет анализировать процедуры с &ИзменениеИКонтроль, нужно немного поправить скрипт после установки.
---
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
---
У меня ответа нет, но есть вопрос не по теме.
Зачем функции, которые "вместо", всовывать в расширение? Почему не вставить прямо в конфигурацию?
---
потому что она на замке и снимать с замка не планируется.
---
Ну и что, что на замке? Почему вы так за него держитесь?
Хоть вы и запихали всё в расширение, но по факту конфигурация у вас доработана и при обновлении вы испытываете ровно те же трудности, как если бы вы меняли саму конфу.

На самом деле, трудностей даже больше. Ведь, вы создали этот пост именно потому что не можете нормально обновить нетиповую конфигурацию.
---
Создать тестовую базу. Выгрузить новую конфигурацию и сравнить с текущей через Конфигурация/ Сравнить конфигурации в конфигураторе не предлагать?
---
сравнить с расширением?
---
Вы умеете автоматически сравнивать расширение и основную конфигурацию?
Старую конфигурацию поставщика с новой конфигурацией поставщика, если изменений в подменяемой процедуре нет, то и расширение править не надо. В этом случае надо иметь список подменённых процедур и функций.
---
я сейчас так и делаю, но этот метод тоже не удобен, так как заранее должен быть заготовлен список заимствованных процедур/функций
---
так как заранее должен быть заготовлен список заимствованных процедур/функцийЭто совсем не проблема. Глобальным поиском ищется "&Вместо". Если расширений много, то выгружаете в файлы cfe и глобальный поиск по файлам.
(3) А если расширение не одно? Т.е. отдельные задачи в разных расширениях. Для каждого расширения сравнение делать?
---
Так то кажется не очень сложным:
1) Выгрузить расширение в файлы, распарсить файлы модулей и получить список заимствованных процедур/функций - сохранить каждую в отдельный файл txt, в папку 1.
2) Выгрузить текущую конфигурацию в файлы - найти в файлах модулей соответствующие процедуры/функции - сохранить в папку 2.
3) Пункт 2 повторить для предыдущего релиза, сохранить в папку 3.
4) Сравнить каталоги с процедурами в kdiff3.

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

Натравливаете скрипт на них и получаете отчет о функциях, которые были перехвачены с &Вместо и изменились в новом релизе.
Есть один косяк - утилита давно не дорабатывалась и не умеет анализировать процедуры с &ИзменениеИКонтроль, нужно немного поправить скрипт после установки.
---
я эту утилиту находил но что то не разобрался как она работает( Как скрипт настроить? Какой файл нужно исправлять?
---
ставите на комп 1Script, потом opm install diff3c, потом внимательно читаете, как его применять.
Часов через 5-6 смогу расписать подробнее
---
о, супер, было бы очень здорово) буду ждать)
---
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
---
Спасибо большое) Будем пользоваться этим чудом инструментом)
---
а так разве не помогает?
---
не помогает
---
да, но!
Если конфигурация на замке, то можно обновляться на сколько угодно релизов, а работоспособность проверять/восстанавливать только на последнем.
---
Что с чем сравнивать? Если вы в расширение под &Вместо копируете-вставляете код исходной функции и правите его там - то не надо так делать, специально для этого случая существует &ИзменениеИКонтроль (потом удобно сравнивается KDiff3 или TortoiseMerge).
---
режим совместимости не дает использовать &ИзменениеИКонтроль