Обработка анализирует код общих модулей конфигурации (выгруженный в текстовые файлы с помощью ключа командной строки /DumpConfigFiles) и позволяет получать следующие отчёты:
- Процедуры и функции общих модулей по количеству их вызовов из других общих модулей конфигурации. Показатель можно применять для выявления потенциально наиболее востребованных процедур и функций с целью оптимизации их работы в системах критичных к производительности. Полезно, например, при крупном внедрении с заранее неизвестными и неотлаженными бизнес-процессами (когда мы не можем определить реально наиболее востребованные процедуры и функции), либо при создании типового тиражируемого решения.
- Количество вызовов других общих модулей из данного общего модуля. Большое количество вызовов других модулей — один из показателей сложности модуля (Высокий коэффициен разделения по выходу — более 7-ми в примере С. Макконела (Совершенный код, С. Макконнелл, Code Complete, 2-ое издание, 2005) по взаимодействию классов), возможно следует разделить функционал модуля на несколько модулей.
- Схема взаимодействия общих модулей. Схема (карта) вызовов строится как расшифровка к двум отчётам обработки двойным щелчком по названию модуля. Карта строится в MS Excel. Карта представляет из себя схему взаимодействия расшифровываемого модуля с другими общими модулями: модули, которые вызывают данный модуль, модули, которые вызывает данный модуль и связи между этими модулями.
Деление кода между общими модулями носит, как правило, функционально-прикладной (деление на модули с флагами Клиент, Сервер, ВнешнееСоединение и т.п.) и логический характер. При этом модули разделённые по функциональным причинам (например АдресныйКлассификатор, АдресныйКлассификаторКлиент, АдресныйКлассификаторКлиентСервер) образуют единый логический блок. Логическое деление производится для эффективного управления сложностью исходного кода конфигурации.
Если модуль взаимодействует с логически (но не функционально) связанными с ним модулями по принципу "все вызывают всех", то выгода от их деления исчезает (подробнее см. Совершенный код, С. Макконнелл, Code Complete, 2-ое издание, 2005, стр. 80 на примере подсистем). Энтропия в таких системах только возрастает, что приводит к сложностям в сопровождении. Нормальная схема взаимодействия логически разделённых модулей должна быть ациклическим графом.
Особенности и ограничения работы
1. Исходные коды модулей выгружаются с помощью команды системы:
ПутьКПрограмме+"1cv8.exe DESIGNER /F """+ПутьКБазе+""""+СтрокаПользователя+" /DumpConfigFiles """+ПутьККаталогуДляВыгрузки+""" -Module"
Можно выгрузить самому, либо с помощью кнопки "Выгрузить" в обработке. Использование команды системы влечёт за собой соответствующие ограничения, остающиеся на совести пользователя обработки: у пользователя должны быть права на запись в каталог выгрузки, на чтение в каталоге базы. У пользователя 1С, под которым запускается обработка, должны быть права на запуск Конфигуратора анализируемой базы и т.п.
Ограничение: На данный момент выгрузка исходных кодов работает с файловыми базами и пользователем без пароля.
По кнопке "Полная карта вызовов" можно постросить полную схему взаимодействия общих модулей конфигурации. Практической ценности данная функция не несёт ввиду большого количества модулей в типовых конфигурациях и сложности их взаимодействия. Ценность исключительно "эстетическая".
Nota bene: Обработка писалась для себя, также тестировал на УТ 11, БП 3.0 (ознакомительной). Пока на правах бета версии. Если что-либо из моих рассуждений покажется неоднозначным — всегда готов к дискуссии в комментариях.