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


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

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

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

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

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

17 Comments

  1. TSSV

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

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

    Reply
  2. djvu

    {Форма.Форма.Форма(188)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)

    Если СтрТзВызовов.НомерСтроки < НомСтрКон И СтрТзВызовов.НомерСтроки > НомСтрНач Тогда

    Reply
  3. German

    А можно еще так

    http://infostart.ru/catalog/14635/

    Reply
  4. TSSV

    (1) djvu, такая ошибка возникает, когда в тексте модуля есть нераскрытые группы. Выделите текст модуля, меню Текст — Группировка — Развернуть все группы. Сейчас исправлю…

    Reply
  5. pumbaE
    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) Не увидел у вас определения контекста компиляции НаКлиенте, НаСервере …

    Reply
  6. TSSV

    (2) German, Спасибо! Вещь похожая, но не совсем. Насколько я понял, в приведенном инструменте анализируется каждая процедура/функция отдельно, а в моей разработке строится единое дерево вызовов модуля в целом. На первом уровне находятся не вызываемые в модуле процедуры/функции и дальше вглубь все остальные. Таким образом можно сразу найти «точки входа» и от них уже разбирать модуль «вглубь». Оценил качество проработки деталей — есть к чему стремиться )

    Reply
  7. TSSV

    (4) pumbaE, Согласен, но код открытый! Для типовых и им подобных по стилю срабатывает — я сам пользуюсь 🙂

    Reply
  8. German

    (5) нет анализируется весь модуль, упор на взаимосвязь процедур

    Reply
  9. TSSV

    (7) German, Но единого дерева нету на картинке — на первом уровне все процедуры списком , как и в исходном модуле, а внутри что вызывает и откуда вызывается…

    Reply
  10. stal76

    Вот еще вариант:

    http://infostart.ru/catalog/78976/

    Reply
  11. TSSV

    (9) stal76, впечатляет! Но чтобы начать ей пользоваться, нужно пройти курс обучения наверное… «Просто скопируйте текст модуля в обработку и нажмите «Сформировать» — через несколько секунд структура модуля предстанет перед Вашим взором.» — это все руководство пользователя ))

    Reply
  12. 1Cynep4eJIoBek

    поюзай плаг для тоталкома, он раскрывает конфигу как архив, откуда можно вытянуть модули )) попробуй сделать, обработку не копипастом, а просто при указании cf-ки, скачать не могу у меня денег на счету нет ((( так бы протестил подсказал, вобще вещь нужная! +

    Reply
  13. headMade

    (11) alevi,

    а где можно взять этот плагин для Total Comm?

    Reply
  14. DimaP

    Подожду, когда рюшечки появятся )))

    Reply
  15. so-quest

    Странная штука. Не понятно зачем нужна. Анализа модуля толком нет. Но плюс все же дам. Ибо всяко лучше печатной формы счета-фактуры

    Функция А() экспорт

    Выполнить(«Б»);

    КонецФункции

    Функция Б() экспорт

    Выполнить(«С»);

    КонецФункции

    Функция С() экспорт

    Выполнить(«А»);

    КонецФункции

    Ну и над таким стоит подумать. Хотя бы просто сообщать что в тексте функции есть «Выполнить»

    Reply
  16. Psylocibine

    Думаю, может быть полезно при освоении нетиповых, плюс.

    Reply
  17. andpyxa

    Отказывается показывать процедуру ОбработкаПроведения из модуля документа,проверял на нескольких типовых ?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *