Построение дерева вызовов проведения реализации в демо-базе "Бухгалтерия предприятия, редакция 3.0 (3.0.70.39)"
Порядок подготовки конфигурации к исследованиям
1. Выгрузите файлы исследуемой конфигурации;
2. Вставьте в программные модули исследуемой конфигурации служебные механизмы построения дерева вызовов, для этого запустите базу Построение дерева вызовов в пользовательском режиме, меню Построение дерева вызовов - Вставить процедуры построения дерева вызовов, укажите каталог с выгруженными файлами конфигурации и нажмите Вставить процедуры дерева вызовов;
3. Загрузите обработанные файлы в исследуемую конфигурацию;
4. Вставьте объекты подсистемы "Построение дерева вызовов" в исследуемую конфигурацию;
5. В начало процедуры УстановкаПараметровСеанса модуля сеанса исследуемой конфигурации добавьте содержимое одноименной процедуры конфигурации Построение дерева вызовов.
Решение может быть полезным для
- Изучения новых механизмов конфигураций
- Выявления "узких" мест, которые можно найти при анализе продолжительности вызовов - продолжительность вызова в микросекундах выводится в колонке "Время" дерева (при этом следует учитывать, что это время включает и затраченное на само построение дерева)
- В образовательных целях - для изучения порядка следования стандартных процедур
- Общего повышения производительности труда программиста благодаря эффекту визуализации сложных алгоритмов
Как это работает
Принцип построения дерева предельно прост. В каждую процедуру и функцию, в начало и конец, а так же в точки возможных возвратов из них вставляются строки с вызовами процедур подсистемы построения дерева, используя возможности выгрузки / загрузки файлов конфигурации. Результаты между вызовами хранятся в параметрах сеанса.
Дополнительные возможности и особенности
Если необходимо построить дерево вызовов процесса начала работы с базой, установите константу "Строить дерево вызовов", перезайдите в базу, запустите обработку построения дерева вызовов и нажмите "Закончить".
Дерево вызовов можно сохранить в файл, для этого нужно в меню "Все действия" обработки нажать "Печать" - будет сформирован табличный документ.
Для того чтобы выполняемые по расписанию алгоритмы не оказывали влияния на исследуемый процесс, вклиниваясь в него в произвольных местах, программный код, выполняемый в фоновых заданиях не учитывается (соответствующие вызовы не попадают в формируемое дерево). В случае необходимости, изменить это поведение можно в функции ЭтоФоновоеЗадание.
Для того, чтобы избежать выполнения исследуемых алгоритмов типовых конфигураций в фоновых заданиях, запускайте базу в режиме отладки (запуск с параметром \РежимОтладки).
В связи с недопустимостью серверных вызовов при завершении работы системы, построение дерева вызовов процесса завершения работы не предусмотрено.
Отдельная обработка циклов и условий пока не поддерживается.
О возможных ошибках
Решение не претендует на охват всех возможных вариантов синтаксиса, которые могут встретиться в исследуемых алгоритмах. Критерием для меня являлось отсутствие ошибок при формировании деревьев исследованных операций. То есть, основная масса используемых конструкций корректно отрабатывается подсистемой. Но наверняка ошибки встретятся и тогда их исправление как правило не составляет большого труда - исправления вносятся непосредственно в код исследуемой конфигурации и далее учитываются в алгоритме обработки текстов модулей.
Все значимые синтаксические конструкции помещены в подсистему "Тест" конфигурации Построение дерева вызовов. Если вам встретится конструкция, не отрабатываемая подсистемой и заслуживающая отдельного описания в алгоритме вставки служебных вызовов построения дерева, присылайте ее мне и я постараюсь включить ее обработку в подсистему.
Тестирование проводилось на версии платформы 8.3.14.1565.