gifts2017

Визуальное отображение структуры программного модуля 1С 8.*

Опубликовал Сергей (TSSV) в раздел Программирование - Инструментарий

Довольно часто возникает необходимость анализа незнакомого программного модуля (речь идет об 1С 8.*) и чтобы разобраться в его структуре, нужно потратить некоторое время, которого как всегда не хватает. Обработка позволяет быстрее разобраться в структуре модуля, формируя дерево вызовов процедур и функций модуля.

Просто скопируйте текст модуля в обработку и нажмите "Сформировать" - через несколько секунд структура модуля предстанет перед Вашим взором! При нажатии на строки дерева происходит позиционирование на соответствующей строке текста модуля.

Для корректной работы необходимо развернуть все группировки модуля (меню Текст - Группировка - Развернуть все группы).

Алгоритм устойчив к зацикливанию при перекрестных и рекурсивных вызовах.

Обработка конечно же не учитывает всех возможных стилей написания текста модулей (по английски например), но на типовых и им подобных по стилю написания работает. В процессе разбора текста могут возникать ошибки с сообщением номера строки (в обработке доступен переход к строке текста), в этом случае прямо в окне обработки закомментируйте или поправьте текст модуля (обычно необходимые правки очевидны) и перезапустите формирование структуры .

Скачать файлы

Наименование Файл Версия Размер
Анализ структуры модуля 140
.epf 9,22Kb
22.01.13
140
.epf 9,22Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
0. Сергей (TSSV) 26.04.12 07:37
Довольно часто возникает необходимость анализа незнакомого программного модуля (речь идет об 1С 8.*) и чтобы разобраться в его структуре, нужно потратить некоторое время, которого как всегда не хватает. Обработка позволяет быстрее разобраться в структуре модуля, формируя дерево вызовов процедур и функций модуля.

Перейти к публикации

1. djvu (djvu) 26.04.12 09:14
{Форма.Форма.Форма(188)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)
Если СтрТзВызовов.НомерСтроки < НомСтрКон И СтрТзВызовов.НомерСтроки > НомСтрНач Тогда
3. sergey_ts@list.ru (TSSV) 26.04.12 12:23
(1) djvu, такая ошибка возникает, когда в тексте модуля есть нераскрытые группы. Выделите текст модуля, меню Текст - Группировка - Развернуть все группы. Сейчас исправлю...
4. Евгений Сосна (pumbaE) 26.04.12 12:26
Procedure Тест()
EndProcedure
Не отработает.
Процедура 
       Тест()
КонецПроцедуры

Не отработает.

(2) а как отреагирует на такой код?
Procedure BeforeWrite(Cancellation)
	
	If DataExchange.Load Then 
		Return;
	EndIf;
	
	
EndProcedure

Procedure OnWrite()
	
	If DataExchange.Load Then
		Return;
	EndIf;
	
	If ValueIsFilled(Parent) Then
		MainObject = Parent.GetObject();
		LockDataForEdit(MainObject.Ref);
		MainObject.Write();
	EndIf;
	
EndProcedure
...Показать Скрыть

(2) еще:
Процедура ВвестиТекст(Перем1) 
	//ааа
КонецПроцедуры

Процедура ВвестиТекстНажатие(Элемент, Элемент2,  //// (Версия №) Начало Добавил сюда еще один параметр
	Элемент3
	//Комметарий
	)
	ВвестиТекст(Текст1С);
КонецПроцедуры
...Показать Скрыть
Для ВвестиТекстНажатие будет 3 параметра и третий будет Элемент3 ?
(2) Не увидел у вас определения контекста компиляции НаКлиенте, НаСервере ...
5. sergey_ts@list.ru (TSSV) 26.04.12 12:37
(2) German, Спасибо! Вещь похожая, но не совсем. Насколько я понял, в приведенном инструменте анализируется каждая процедура/функция отдельно, а в моей разработке строится единое дерево вызовов модуля в целом. На первом уровне находятся не вызываемые в модуле процедуры/функции и дальше вглубь все остальные. Таким образом можно сразу найти "точки входа" и от них уже разбирать модуль "вглубь". Оценил качество проработки деталей - есть к чему стремиться )
6. sergey_ts@list.ru (TSSV) 26.04.12 12:40
(4) pumbaE, Согласен, но код открытый! Для типовых и им подобных по стилю срабатывает - я сам пользуюсь :)
7. Герман (German) 26.04.12 12:41
(5) нет анализируется весь модуль, упор на взаимосвязь процедур
8. sergey_ts@list.ru (TSSV) 26.04.12 12:44
(7) German, Но единого дерева нету на картинке - на первом уровне все процедуры списком , как и в исходном модуле, а внутри что вызывает и откуда вызывается...
9. Александр Степанов (stal76) 26.04.12 13:43
10. sergey_ts@list.ru (TSSV) 26.04.12 18:11
(9) stal76, впечатляет! Но чтобы начать ей пользоваться, нужно пройти курс обучения наверное... "Просто скопируйте текст модуля в обработку и нажмите "Сформировать" - через несколько секунд структура модуля предстанет перед Вашим взором." - это все руководство пользователя ))
11. alevi (1Cynep4eJIoBek) 28.04.12 11:27
поюзай плаг для тоталкома, он раскрывает конфигу как архив, откуда можно вытянуть модули )) попробуй сделать, обработку не копипастом, а просто при указании cf-ки, скачать не могу у меня денег на счету нет ((( так бы протестил подсказал, вобще вещь нужная! +
12. Анатолий Бритько (headMade) 02.05.12 22:56
(11) alevi,
а где можно взять этот плагин для Total Comm?
13. Дмитрий Павлик (DimaP) 04.05.12 09:39
Подожду, когда рюшечки появятся )))
14. Валентин Бомбин (so-quest) 04.05.12 15:20
Странная штука. Не понятно зачем нужна. Анализа модуля толком нет. Но плюс все же дам. Ибо всяко лучше печатной формы счета-фактуры


Функция А() экспорт
Выполнить("Б");
КонецФункции


Функция Б() экспорт
Выполнить("С");
КонецФункции


Функция С() экспорт
Выполнить("А");
КонецФункции

Ну и над таким стоит подумать. Хотя бы просто сообщать что в тексте функции есть "Выполнить"
15. Дмитрий Леонов (Psylocibine) 20.05.12 22:51
Думаю, может быть полезно при освоении нетиповых, плюс.
16. andpyxa (andpyxa) 29.08.13 13:32
Отказывается показывать процедуру ОбработкаПроведения из модуля документа,проверял на нескольких типовых ?