В конфигурации есть расширение с большим количеством процедур/функций с директивой &Вместо. При обновлении конфигурации такие процедуры/функции необходимо сравнивать с обновленной конфигурацией.
Вопрос, может быть есть инструменты как можно быстро сравнить и выявить изменение? В ручную сравнивать долго и не удобно.
Натравливаете скрипт на них и получаете отчет о функциях, которые были перехвачены с &Вместо и изменились в новом релизе.
Есть один косяк - утилита давно не дорабатывалась и не умеет анализировать процедуры с &ИзменениеИКонтроль, нужно немного поправить скрипт после установки.
(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
(5)
Ну и что, что на замке? Почему вы так за него держитесь?
Хоть вы и запихали всё в расширение, но по факту конфигурация у вас доработана и при обновлении вы испытываете ровно те же трудности, как если бы вы меняли саму конфу.
На самом деле, трудностей даже больше. Ведь, вы создали этот пост именно потому что не можете нормально обновить нетиповую конфигурацию.
(6) Вы умеете автоматически сравнивать расширение и основную конфигурацию?
Старую конфигурацию поставщика с новой конфигурацией поставщика, если изменений в подменяемой процедуре нет, то и расширение править не надо. В этом случае надо иметь список подменённых процедур и функций.
так как заранее должен быть заготовлен список заимствованных процедур/функций
Это совсем не проблема. Глобальным поиском ищется "&Вместо". Если расширений много, то выгружаете в файлы cfe и глобальный поиск по файлам.
(3) А если расширение не одно? Т.е. отдельные задачи в разных расширениях. Для каждого расширения сравнение делать?
(11)Так то кажется не очень сложным:
1) Выгрузить расширение в файлы, распарсить файлы модулей и получить список заимствованных процедур/функций - сохранить каждую в отдельный файл txt, в папку 1.
2) Выгрузить текущую конфигурацию в файлы - найти в файлах модулей соответствующие процедуры/функции - сохранить в папку 2.
3) Пункт 2 повторить для предыдущего релиза, сохранить в папку 3.
4) Сравнить каталоги с процедурами в kdiff3.
Можно сделать обработку для этого - для первых 3х пунктов так уж точно.
Натравливаете скрипт на них и получаете отчет о функциях, которые были перехвачены с &Вместо и изменились в новом релизе.
Есть один косяк - утилита давно не дорабатывалась и не умеет анализировать процедуры с &ИзменениеИКонтроль, нужно немного поправить скрипт после установки.
(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
(14) да, но!
Если конфигурация на замке, то можно обновляться на сколько угодно релизов, а работоспособность проверять/восстанавливать только на последнем.
Что с чем сравнивать? Если вы в расширение под &Вместо копируете-вставляете код исходной функции и правите его там - то не надо так делать, специально для этого случая существует &ИзменениеИКонтроль (потом удобно сравнивается KDiff3 или TortoiseMerge).