Трассировка кода V8

04.12.12

Разработка - Инструментарий разработчика

Трассировка запусков процедур и функций V8

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

Наименование Файл Версия Размер
traceV8.zip
.zip 90,17Kb
76
.zip 90,17Kb 76 Скачать

Некоторое время назад возникла необходимость окинуть с высоты птичьего полёта БП3.0.

Прежде всего какие модули когда и как задействуются.

 

Немного цифр к размышлению.

Количество задействованных модулей при проведении ПТУ:

БП2.0 - 21 шт.

БП3.0 - 122 шт.

Уровней вложенности запускаемых процедур или функций при проведении ПТУ:

БП2.0 - 6

БП3.0 - 12

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

Что есть эта публикация. Это простой и немудрёный способ оттрейсить запускаемые процедуры через вписку во все процедуры и функции соответственно. Результат вызовов скидывается в иерархический справочник в правильном порядке. Через простой запрос на выходе мы получаем корректное дерево вызовов.

Нет никаких ВК. Т.е. нет проблем с операционкой, памятью, совместимостью и прочим.  Только 1С, только хардкор :) Регулярок тож, кстати, нет. Хотя были первоначальные варианты с ними.

  

В архиве лежат:

- файл mxl - это пример конечного результата. Дерево вызовов процедур и функций при проведении ПТУ. Обычные формы.

- обработка для конвертации файлов текстов модулей. 

- файлы клипборда - это файлы-копии буфера обмена в которые сохранены метаданные, которые необходимо вставить в соответствующие ветки конфигурации.

- сама программа clipbrd.exe, для тех, кто работает в Vista и Win7. Для XP - она лежит в /system32

--- 

Инструкция к применению:

1. Выгружаем всю конфу - меню "Конфигурация/Выгрузить файлы конфигурации.."

2. Через замер производительности определяем только те модули, которые нам интересны. Например, модули проведения ПТУ. Во всей БП3.0 2982 файла модулей, поэтому все их курочить - это долго и бессмысленно.

3. Копируем в отдельную папку нужные модули и называем её "Образец"

4. Копируем папку "Образец" в папку "Образец - копия". Именно файлы этой папки будет менять.

5. Открываем обработку. Для любопытства и теста можно сперва просто поконвертить файлы не записывая. Для режима записи ставим галку "Записывать".

6. Сконвертированные файлы заливаем обратно в конфу  "Конфигурация/Загрузить файлы конфигурации.." 

7. Вставляем через буфер обмена и программу clipbrd.exe нужные метаданные.

 

8. Грустный пункт! В некоторых процедурах и функциях программисты не ставили последнюю ";". Обработка не проставляет их, к сожалению. Если кто докодит - пожалуйста. Т.е. все такие ";" нужно будет ставить руками. По опыту, на проведении ПТУ потребовалось примерно 10 запусков, чтобы полностью отладить эти места.

 

9. После удачного запуска работаем через справочник "Трассировка".

В нем в панели есть две кнопки "Очистить все" - очищаем сам справочник и обнуляет константу "НомерТрассировки" (уровень трассировки) и кнопка "Включить трассировку" - включает/выключает режим трассировки и записи результата в справочник.

По результам работы получаем записанное дерево. Можно писать запросы :)

 

--- 

Что хотелось бы отметить отдельно:

1. Это работает небыстро. Запись, очистка и т.п. - всё это работает весьма небыстро. Задачи сделать красиво, быстро и круто - не было. Реализована прежде всего задача получения дерево вызовов модулей, процедур и функций.

2. Для обычного приложения. В УФ вроде тоже работает, но особо не тестил. 

3. Это не коммерческая версия. Т.е. as is, никаких гарантий :). Не могу сказать, что я сам её активно использую. И буду ли вообще использовать постоянно. Можно считать это просто информацией к размышлению.

4. Для чего это вообще? Например:

- подобная аналитика нужна, когда есть необходимость плотно вписаться в существующую незнакомую конфу. Вплоть до своего решения на основе типовой

- для анализа узких мест своих процессов. К примеру, излишних вызовов одних и тех же штук в разных местах по сто раз.

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

и т.п.

5. Кто захочет докодить, накодить, перекодить. 1С-ом, через ВК, через регулярные выражения - буду рад! Кто захочет прикрутить визуализацию - пожалуйста! Вообще, буду рад любому развитию темы.

 

тема форума http://forum.infostart.ru/forum26/topic47900

от О-Планет для 7.7 //infostart.ru/public/16676/

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    121569    670    389    

710

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7257    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3492    11    1    

33

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177720    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99336    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18097    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28089    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

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

2400 руб.

24.09.2019    23592    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 7136 05.12.12 01:34 Сейчас в теме
Если запись выполняется сразу (в реальном времени), то это должно ОЧЕНЬ сильно замедлять работу программы. Думаю замедление будет зачастую такое, что никто даже не захочет этим пользоваться. Поэтому если сделано именно так, то рекомендую все таки рассмотреть вариант без записи в бд, а просто строить дерево в памяти.
romansun; +1 Ответить
2. DrAku1a 1679 05.12.12 02:35 Сейчас в теме
А стандартный механизм трассировки от 1С чем плох то?
5. BorisMor 310 05.12.12 07:08 Сейчас в теме
(2) DrAku1a, а под стандартными вы что подразумеваете ?
Мне вообще грустно, что нет в 1С нормальной системы логрования (с разбиением сообщений на типы, указанием временем, запись в отдельную базу). На C# пользуюсь библиотекой NLog – любо дорого.

ps
Вот моя поделка по этой же теме
http://infostart.ru/public/127171/
user1487303; +1 Ответить
8. DrAku1a 1679 05.12.12 10:18 Сейчас в теме
11. BorisMor 310 05.12.12 11:08 Сейчас в теме
(8) DrAku1a, это не совсем трассировка.
Последовательности вызова не вижу.
20. bk-81 50 06.12.12 17:23 Сейчас в теме
(5) BorisMor, а что из перечисленного не умеет ЗаписьЖурналаРегистрации?
12. romansun 193 05.12.12 11:15 Сейчас в теме
(2)

Есть два инструмента - замер производительности и стек вызовов.
В замере всё хорошо, только нет одной единственной чертовой колонки... Номера вызова строк по порядку.

Ну, а стек тоже хорош, но он немного не про то. Попробуйте отрассировать проведение дока, увидите.


(1) +1, да, надо что-то такое делать, в ДЗ, в xml или еще как-нить. В справочник медленно.
15. DrAku1a 1679 05.12.12 13:00 Сейчас в теме
(12) в регистр сведений попробуй. быстро вроде бы...
16. romansun 193 05.12.12 14:12 Сейчас в теме
(15)
иеархический справочник хорош и мощен прежде всего своим

"УПОРЯДОЧИТЬ ПО Ссылка ИЕРАРХИЯ "

Собственно, это единственная причина использования справочника. В РС такую штуку сделать нельзя. В принципе, и просто в ДЗ выводить не слишком удобно - удобно иметь иерархическую таблицу, к которой можно писать всякие разные хитрые запросы.

В данном решении есть еще колонка с временем, но она ни о чем, ибо оно 1С-ное в пределах секунды. Допилить до тысячных, и можно свой замер производительности делать, с блэкджеком и с возможностями снимать производительность попроцедурно, помодульно, "поветочно" и кто как еще придумает.
3. VNSh 05.12.12 05:40 Сейчас в теме
Спасибо, может очень пригодиться.
В ссылке на тему форума нужен завершающий слэш, иначе она не работает.
romansun; +1 Ответить
4. mr.Kot 05.12.12 07:02 Сейчас в теме
Грусно как-то от того, что усложняется БП от версии к версии.
6. vec435 15 05.12.12 09:29 Сейчас в теме
если построить дерево вызовов только на основе выгруженных модулей то это сократит время при отладке
Прикрепленные файлы:
10. BorisMor 310 05.12.12 11:05 Сейчас в теме
(6) vec435, а как вызвать данное окно?
Я только стеком пользуюсь.
14. vec435 15 05.12.12 11:30 Сейчас в теме
(10) BorisMor, это моя обработка. но по сайту можно найти что-то вроде "анализ кода"
7. vec435 15 05.12.12 09:58 Сейчас в теме
9. DoctorRoza 05.12.12 10:55 Сейчас в теме
Отмечусь, чтобы запомнить, на всякий случай!!
13. romansun 193 05.12.12 11:19 Сейчас в теме
Я вообще надеюсь на 1С. Весьма непросто разбираться в чем-то новом, в частности на УФ, без мощного набора инструментов.

У них же модулей теперь немерено, к примеру:
УчетНДС
УчетНДСБП
УчетНДСВызовСервера
УчетНДСВызовСервераПовтИсп
УчетНДСКлиентСервер
УчетНДСПереопределяемый
17. iceflash 4 05.12.12 17:25 Сейчас в теме
Хм, вспомнил подобное (не по механике, но по смыслу, правда так и не удалось протестировать), из плюсов:
- без изменения конфы,
- без тормозов
из минусов - это именно анализ, "без трассирования прохождения кода на лету при нажатии вот этой кнопоньки" Кстати как насчет стандартного стека вызовов в конфигураторе 1с?
только анализ кода, и даже более лучше графическое представление:
http://infostart.ru/public/78976/
BorisMor; +1 Ответить
18. Yashazz 4709 06.12.12 13:25 Сейчас в теме
За предложение массово менять код типовой конфы как-то очень хочется минуснуть. Или вы потом будете поддержку ручками согласовывать, отслеживать изменения каждого модуля?

Идея стара как мир, разве что с появлением возможности грузить туда-сюда исходники её реализация упростилась...
19. romansun 193 06.12.12 14:06 Сейчас в теме
(18)
поддержку?

Это инструмент получения данных для изучения конфигурации. По сути, делается это один раз - получается дерево вызовов нужного процесса и отдается системным аналитикам.

После этого "отработанный материал выбрасывается". Либо база с накопленной статистикой остаётся для дополнительного анализа.
21. адуырщдв 28 07.12.12 08:45 Сейчас в теме
Где то я уже видел такое. Может конечно ошибаюсь.
22. NoRazum 29 07.12.12 15:48 Сейчас в теме
";" Не единственная проблема
Еще когда в начале функции определяются переменные.

Разные контору пишут одну и туже конфу ))
23. romansun 193 07.12.12 18:50 Сейчас в теме
(22)

вычищал вроде все варианты с "перем"... все, да не все :)

если не сложно, скиньте пример такой функции
24. NoRazum 29 10.12.12 10:01 Сейчас в теме
Бухгалтерия 2.0 последняя конфигурация.
Общие модули. В некотрых нормально, некоторых ошибка.
26. aim 14.12.12 11:21 Сейчас в теме
Иногда нужно посмотреть "живую" трассу, а иногда нужно посмотреть точки ветвления и от чего программа пошла по этому пути, зависимости. Но это так - к слову. Но вот если верно, что (как Вы пишете), что сложность программы от20 к30 увеличивается на порядок, то это конечно да. Мне уже начало было казаться, что 1С единственная и неповторимая, но при общей непрозрачности 1С кода... 1С может повторить судьбу всех своих монструозных собратьев. Был Мультикс - пришел Юникс; был Windows - пришел Apple, Android и т.д; был IBM x86 - появился ARM.
27. romansun 193 14.12.12 11:36 Сейчас в теме
(26)
о, спасибо за коммент.

Да, согласен со всем. В целом в 1С инструментов маловато и, в принципе, при таком положении дел мы можем получить некие огромнейшие софтины с открытым бесполезным кодом, в которые можно будет только что писать костылики, поскольку объять необъятное будет невозможно просто сидя в отладке.

Вот очень очень не хотелось бы этого.

Сложность 2.0-3.0, думаю, раза в два-три выросла с увеличением количества задействованных модулей в 6-7 раз... Ну, это общая 1С-ная тенденция усложнения и платформы и конфигураций. На курсах 1С часто говорят преподы про это - раньше раз-раз и готов специалист, а щас смотришь, а уже не меньше года на подготовку надо.
28. pumbaE 24.12.12 02:27 Сейчас в теме
В связи с выходом новой версии снегопата и возможности его работы в режиме отладки, есть идея использовать данную разработку, как каркас по трассировке кода. Сейчас уже можно поставить две точки останова в начале процедуры, например обработки проведения, и в конце, запустить определенный скрипт, который сам будет нажимать F11 и записывать вызовы в базу.

Можно ли будет использовать ваш код для этого?
29. romansun 193 11.01.13 15:10 Сейчас в теме
(28)

да, конечно, без проблем. Будет очень любопытно взглянуть на результат.
30. pumbaE 11.01.13 15:34 Сейчас в теме
(29) предварительная реализация пока такая http://screencast.com/t/KQvjn99m , вывожу в дерево и даю возможность перейти в необходимую процедуру при клике на строке дерева. В дальнейшем думаю необходимо будет добавить возможность сохранять стек и анализировать. Это пока сырой вариант, но на дерево вызовов в УТ11 иногда уже страшно становиться смотреть.
romansun; +1 Ответить
31. pumbaE 17.01.13 12:48 Сейчас в теме
(0) как идея - включаем тех журнал на CALL, парсим его и получаем фактические вызовы строк и примерно как я в снегопате при отладке делаю, определяю в какой процедуре находится строка и сверяю с предыдущей , получаем дерево вызовов даже без модификации исходных текстов.
32. romansun 193 17.01.13 18:51 Сейчас в теме
33. Paul_Nevada 04.09.13 11:37 Сейчас в теме
Привет!
Интересно и ДРУГОЕ - КАК сами разработчики типовых не запутываются в этих "деревьях"??? Наверняка же они пользуют какие-то вспомогательные инструменты... У кого из вас есть какие мысли (а, может, и информация) на эту тему?
34. romansun 193 04.09.13 13:04 Сейчас в теме
(33) СППР используют...

плюс, я думаю, у них есть неплохое тестовое покрытие
35. pumbaE 04.09.13 15:19 Сейчас в теме
(34) сомневаюсь. Вроде и есть тестирование http://v8.1c.ru/o7/201308do/index.htm , но вот почем-то ни разу не хвастаются автоматическим тестированием, покрытием тестами, как регрессионное тестирование позволяет на этапе помещения в хранилище сразу уведомлять разработчика, что есть проблемы с тестами, с производительностью и т.д... Ну а СППР используют, тут согласен :)
36. Paul_Nevada 04.09.13 17:33 Сейчас в теме
(34) поясни, пожалуйста, что есть "СППР" и "тестовое покрытие"???
37. romansun 193 05.09.13 15:13 Сейчас в теме
СППР
http://v8.1c.ru/model/

насчет тестирования - читайте про юнит-тестирование, TDD и т.п.

http://infostart.ru/video/w167567/
http://habrahabr.ru/post/82842/
http://forum.infostart.ru/forum26/topic58819/
38. Paul_Nevada 05.09.13 17:22 Сейчас в теме
39. ssa 16.10.13 22:38 Сейчас в теме
Может пригодиться. Спасибо!
Оставьте свое сообщение