Дабы появилась возможность добавлять из типовой УПП актуальные версии общих модулей, было принято решение написать обработку, которая уберёт у лишних модулей признак глобальности, переименует их, а везде, где использовались процедуры и функции из этих модулей, поправит пути к ним.
Принцип работы обработки получился следующим: мы загружаем требуемую конфигурацию в пустую файловую базу, указываем в обработке путь к этой базе и запускаем. Далее обработка выгружает конфигурацию в файлы, ищутся глобальные модули, а в них экспортные функции. Далее ищутся модули в которых используются данные процедуры и функции и исправляются пути. В файлах интерфейса так-же происходит исправление. Общие модули переименовываются (добавляется префикс "old"). Из указанной базы данных выгружаются внешние отчёты и обработки, распаковываются "v8unpack.exe", так же обрабатываются и загружаются обратно.
Для работы обработки потребуется: Платформа 8.3.7.1759 или 8.3.8.1652 или выше (тестировалось на 8.3.10.2580), "VBScript.RegExp", "v8unpack.exe" (использована версия 2.0), "Scripting.FileSystemObject" (для переименовывания каталогов).
Интерфейс обработки достаточно аскетичный. В процедуре "ПриОткрытии" расположены необходимые параметры с описанием, а в "КнопкаВыполнитьНажатие" список исполняемых процедур.
Регулярные выражения
для поиска экспортных процедур: #k8SjZc9Dxk(( | )*([Пп]роцедура|[Фф]ункция))s.*(([#k8SjZc9Dxk)]*))s*([Ээ]кспорт)+
для поиска и замены функций:
шаблон ([#k8SjZc9Dxk._[а-яА-ЯёЁa-zA-Z0-9])(ЭтоЭкспортнаяФункция|ИЭтоЭкспортнаяФункция|ВсеЭкспортныеФункцииОдногоОбщегоМодуля)(s*)(?=()
строка замены "$1" + НовоеНаименованиеБывшегоГлобальногоМодуля + "." + "$2" + "$3"
для поиска и замены функций в файлах интерфейса:
см. в обработке.