diff --git a/1C Functin to yEd.gif b/1C Functin to yEd.gif new file mode 100644 index 0000000..ecc16fa Binary files /dev/null and b/1C Functin to yEd.gif differ diff --git a/README.md b/README.md index e04f89f..3f36c44 100644 --- a/README.md +++ b/README.md @@ -1,67 +1,108 @@ -# Обработка "Граф вызовов для модулей 1С". +Обработка "Граф вызовов для модулей 1С". +======================================== +![Работа с обработкой](1C%20Functin%20to%20yEd.gif) -Обработка позволяет по тексту модуля 1С 8.1/8.2 построить граф вызовов. В отличии от отчета "Анализ модуля" в АК, обработка обладает большим числом настроек и не требует загрузки всех текстов модулей в специальную базу. +Обработка позволяет по тексту модуля 1С 8.1/8.2 построить граф вызовов. В +отличии от отчета "Анализ модуля" в АК, обработка обладает большим числом +настроек и не требует загрузки всех текстов модулей в специальную базу. Граф вызовов модуля позволяет: +============================== Произвести оптимизацию числа серверных вызовов из управляемых форм 8.2. -Проследить цепочку вызовов, идущих из выбранной процедуры или наоборот, приводящих к процедуре. -Оценить степень запутанности программного кода и пр. -Обработка реализована для 8.1 и 8.2 в управляемом и обычном режиме, загрузить ее можно здесь. В версии обработки для 8.1 часть функционала недоступна. +Проследить цепочку вызовов, идущих из выбранной процедуры или наоборот, +приводящих к процедуре. Оценить степень запутанности программного кода и пр. +Обработка реализована для 8.1 и 8.2 в управляемом и обычном режиме, загрузить ее +можно здесь. В версии обработки для 8.1 часть функционала недоступна. -Перед использованием обработки необходимо установить программу Graphviz и выполнить настройку построения графов -Основные настройки обработки: +Перед использованием обработки необходимо установить программу Graphviz и +выполнить настройку построения графов Основные настройки обработки: Тип отчета: +=========== -Общий список. -По секциям. -Управляемая форма. -Управляемая форма (только приводящие к вызову на сервер). -Тип отчета "Общий список" предназначен для простого вывода графа вызовов без каких-либо дополнительных группировок. Для остальных типов отчетов описание приведено ниже. +Общий список. По секциям. Управляемая форма. Управляемая форма (только +приводящие к вызову на сервер). Тип отчета "Общий список" предназначен для +простого вывода графа вызовов без каких-либо дополнительных группировок. Для +остальных типов отчетов описание приведено ниже. -"По компонентам связности" - разделяет граф на независимые друг с другом части (компоненты связности). В этом случае, функции отображаются в виде дерева и для построения графа необходимо выбрать одну из компонент. -Флажки в табличном поле позволяют исключать некоторые функции и процедуры из графа. Например, некоторая универсальная функция в модуле может использоваться большинством других функций и процедур, из-за этого, граф вызовов модуля может быть запутанным. Исключив несколько таких процедур и функций граф вызовов может распасться на несколько небольших компонент связности и анализ модуля значительно упростится. -Только идентификаторы" - вместо имен функций и процедур выводить идентификаторы в вершинах графа. При включенном значений вместе с картинкой открывается текстовый документ с расшифровкой имен. +"По компонентам связности" - разделяет граф на независимые друг с другом части +(компоненты связности). В этом случае, функции отображаются в виде дерева и для +построения графа необходимо выбрать одну из компонент. Флажки в табличном поле +позволяют исключать некоторые функции и процедуры из графа. Например, некоторая +универсальная функция в модуле может использоваться большинством других функций +и процедур, из-за этого, граф вызовов модуля может быть запутанным. Исключив +несколько таких процедур и функций граф вызовов может распасться на несколько +небольших компонент связности и анализ модуля значительно упростится. Только +идентификаторы" - вместо имен функций и процедур выводить идентификаторы в +вершинах графа. При включенном значений вместе с картинкой открывается текстовый +документ с расшифровкой имен. Отчет по секциям. +================= Под секциями понимаются части модуля разделенные комментариями вида: //////////////////////////////////////////////////////////////////////////////// + // ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ -Для этого типа отчета доступны три разных способа формирования графа -Все секции - все функции и процедуры модуля группируются в кластеры по имени секции. -Обращения между секциями - выводятся сводные данные о количестве вызовов между функциями и процедурами из различных секций. -Только выбранная секция - выводится только кластер для выбранной секции. Дополнительно, можно задать вывод вызовов к функциям и процедурам секции из других секций, а также, вызовы из функций и процедур секции в другие секции. +Для этого типа отчета доступны три разных способа формирования графа Все секции +- все функции и процедуры модуля группируются в кластеры по имени секции. +Обращения между секциями - выводятся сводные данные о количестве вызовов между +функциями и процедурами из различных секций. Только выбранная секция - выводится +только кластер для выбранной секции. Дополнительно, можно задать вывод вызовов к +функциям и процедурам секции из других секций, а также, вызовы из функций и +процедур секции в другие секции. Для отчета по секциям не доступна настройка "По компонентам связности". Отчет по управляемым формам. (только для версии обработки под 8.2) +================================================================== -Основное назначение этого типа отчета - отследить все вызовы из процедур и функций управляемых форм с директивой компиляции &НаКлиенте, приводящие к обращению на сервер. Эта информация может помочь провести оптимизацию числа серверных вызовов в управляемых форм. +Основное назначение этого типа отчета - отследить все вызовы из процедур и +функций управляемых форм с директивой компиляции &НаКлиенте, приводящие к +обращению на сервер. Эта информация может помочь провести оптимизацию числа +серверных вызовов в управляемых форм. -В табличном поле отображаются только функции и процедуры с директивой компиляции - &НаКлиенте. +В табличном поле отображаются только функции и процедуры с директивой компиляции +- &НаКлиенте. -Все функции и процедуры модуля разбиваются на кластеры, в зависимости от стоящей перед ними директивы компиляции - &НаКлиенте, &НаСервере, &НаСервереБезКонтекста, &НаКлиентеНаСервереБезКонтекста, &НаКлиентеНаСервере. Параметр "На клиенте в одном кластере" позволяет включать или выключать группировку функций и процедур с директивой компиляции &НаКлиенте в отдельный кластер. +Все функции и процедуры модуля разбиваются на кластеры, в зависимости от стоящей +перед ними директивы компиляции - &НаКлиенте, &НаСервере, +&НаСервереБезКонтекста, &НаКлиентеНаСервереБезКонтекста, &НаКлиентеНаСервере. +Параметр "На клиенте в одном кластере" позволяет включать или выключать +группировку функций и процедур с директивой компиляции &НаКлиенте в отдельный +кластер. Кроме функций и процедур в отдельные кластеры графа могут попасть: -Функции и процедуры платформы приводящие к вызову на сервер, например - ПредопределенноеЗначение. -Серверные общие модули без флага "Клиент (управляемое приложение)". -На приведенном ниже рисунке все функции и процедуры входят в одну компоненту связности, но для этого типа отчета, группы составляются только с учетом вызовов между клиентскими функциями и процедурами. Таким образом, при включении флажка "По компонентам связности", каждая процедура будет образовывать свою группу. +Функции и процедуры платформы приводящие к вызову на сервер, например - +ПредопределенноеЗначение. Серверные общие модули без флага "Клиент (управляемое +приложение)". На приведенном ниже рисунке все функции и процедуры входят в одну +компоненту связности, но для этого типа отчета, группы составляются только с +учетом вызовов между клиентскими функциями и процедурами. Таким образом, при +включении флажка "По компонентам связности", каждая процедура будет образовывать +свою группу. -Параметр "Первые вызовы на сервере" позволяет не отображать серверные процедуры и функции, которые не вызываются из клиентских. Например, на рисунке выше, при включенном параметре не отображалась бы процедура N018. +Параметр "Первые вызовы на сервере" позволяет не отображать серверные процедуры +и функции, которые не вызываются из клиентских. Например, на рисунке выше, при +включенном параметре не отображалась бы процедура N018. -В табличном поле красным цветом выделяются процедуры и функции которые могут привести более чем к одному серверному вызову. -Ввод текста модуля. +В табличном поле красным цветом выделяются процедуры и функции которые могут +привести более чем к одному серверному вызову. Ввод текста модуля. -Для построения графа необходимо в форме ввода текста скопировать содержимое анализируемого программного модуля и указать тип модуля. +Для построения графа необходимо в форме ввода текста скопировать содержимое +анализируемого программного модуля и указать тип модуля. -Обычный модуль - модуль не содержащий директивы компиляции. -Управляемая форма - модуль, который должен содержать директивы компиляции. -Автоопределение - тип модуля будет определен автоматически по наличию в нем директив компиляции. -Поиск управляемых форм в конфигурации. +Обычный модуль - модуль не содержащий директивы компиляции. Управляемая форма - +модуль, который должен содержать директивы компиляции. Автоопределение - тип +модуля будет определен автоматически по наличию в нем директив компиляции. Поиск +управляемых форм в конфигурации. -При выборе пункта меню "Все действия / Найти управляемые формы" открывается текстовый документ со списком всех найденных управляемых форм в конфигурации. Доступно только в управляемой форме обработки под 8.2. \ No newline at end of file +При выборе пункта меню "Все действия / Найти управляемые формы" открывается +текстовый документ со списком всех найденных управляемых форм в конфигурации. +Доступно только в управляемой форме обработки под 8.2. + +P.S. Для установки Graphviz и yEd можно использовать скрипт +`./tools/windows/env-install.cmd` \ No newline at end of file