Флавия
Автор
400509
Просмотров
18.223.119.155
Ваш IP
21 сентября 2023
Дата создания

Обработка с инфостартра

Имя обработки:
 
Тип обработки:
Платформа 1С v8.x (все механизмы)
Категория:Конфигурации 1cv8
Конфигурация:Практика программирования, Системное
Кому предназначена обработкаПрограммист
Краткое описаниеНекоторое время назад возникла необходимость окинуть с высоты птичьего полёта БП3.0.

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

 

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

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

БП2.0 - 21 шт.

БП3.0 - 122 шт.

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

БП2.0 - 6

БП3.0 - 12

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

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

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

  

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

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

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

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

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

--- 

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




Ссылка на обработку:infostart.ru/public/164960
Скачать программу:/Download/report/164960.rar
Комментария к обработке:


Некоторое время назад возникла необходимость окинуть с высоты птичьего полёта БП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/
1. tormozit 7023 05.12.12 01:34
Если запись выполняется сразу (в реальном времени), то это должно ОЧЕНЬ сильно замедлять работу программы. Думаю замедление будет зачастую такое, что никто даже не захочет этим пользоваться. Поэтому если сделано именно так, то рекомендую все таки рассмотреть вариант без записи в бд, а просто строить дерево в памяти.
+1 – Ответить
2. DrAku1a 1603 05.12.12 02:35
А стандартный механизм трассировки от 1С чем плох то?
+ – Ответить 7
5. BorisMor 309 05.12.12 07:08
(2) DrAku1a, а под стандартными вы что подразумеваете ?
Мне вообще грустно, что нет в 1С нормальной системы логрования (с разбиением сообщений на типы, указанием временем, запись в отдельную базу). На C# пользуюсь библиотекой NLog – любо дорого.

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

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

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


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

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

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

В данном решении есть еще колонка с временем, но она ни о чем, ибо оно 1С-ное в пределах секунды. Допилить до тысячных, и можно свой замер производительности делать, с блэкджеком и с возможностями снимать производительность попроцедурно, помодульно, "поветочно" и кто как еще придумает.
+ – Ответить
3. VNSh 05.12.12 05:40
Спасибо, может очень пригодиться.
В ссылке на тему форума нужен завершающий слэш, иначе она не работает.
+1 – Ответить
4. mr.Kot 05.12.12 07:02
Грусно как-то от того, что усложняется БП от версии к версии.
+ – Ответить
6. vec435 15 05.12.12 09:29
если построить дерево вызовов только на основе выгруженных модулей то это сократит время при отладке
Прикрепленные файлы:
+ – Ответить 2
10. BorisMor 309 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
"стандартный" http://infostart.ru/public/101391/
+ – Ответить
9. DoctorRoza 05.12.12 10:55
Отмечусь, чтобы запомнить, на всякий случай!!
+ – Ответить
13. romansun 192 05.12.12 11:19
Я вообще надеюсь на 1С. Весьма непросто разбираться в чем-то новом, в частности на УФ, без мощного набора инструментов.

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

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

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

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

Разные контору пишут одну и туже конфу ))
+ – Ответить 1
23. romansun 192 07.12.12 18:50
(22)

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

если не сложно, скиньте пример такой функции
+ – Ответить
24. NoRazum 29 10.12.12 10:01
Бухгалтерия 2.0 последняя конфигурация.
Общие модули. В некотрых нормально, некоторых ошибка.
+ – Ответить
25. AnryMc 843 10.12.12 12:59
http://www.stal76.ru/ak/cm.html
http://www.stal76.ru/callgraph/index.html
+1 – Ответить
26. aim 14.12.12 11:21
Иногда нужно посмотреть "живую" трассу, а иногда нужно посмотреть точки ветвления и от чего программа пошла по этому пути, зависимости. Но это так - к слову. Но вот если верно, что (как Вы пишете), что сложность программы от20 к30 увеличивается на порядок, то это конечно да. Мне уже начало было казаться, что 1С единственная и неповторимая, но при общей непрозрачности 1С кода... 1С может повторить судьбу всех своих монструозных собратьев. Был Мультикс - пришел Юникс; был Windows - пришел Apple, Android и т.д; был IBM x86 - появился ARM.
+ – Ответить 1
27. romansun 192 14.12.12 11:36
(26)
о, спасибо за коммент.

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

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

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

Можно ли будет использовать ваш код для этого?
+ – Ответить 2
29. romansun 192 11.01.13 15:10
(28)

да, конечно, без проблем. Будет очень любопытно взглянуть на результат.
+ – Ответить
30. pumbaE 11.01.13 15:34
(29) предварительная реализация пока такая http://screencast.com/t/KQvjn99m , вывожу в дерево и даю возможность перейти в необходимую процедуру при клике на строке дерева. В дальнейшем думаю необходимо будет добавить возможность сохранять стек и анализировать. Это пока сырой вариант, но на дерево вызовов в УТ11 иногда уже страшно становиться смотреть.
+1 – Ответить
31. pumbaE 17.01.13 12:48
(0) как идея - включаем тех журнал на CALL, парсим его и получаем фактические вызовы строк и примерно как я в снегопате при отладке делаю, определяю в какой процедуре находится строка и сверяю с предыдущей , получаем дерево вызовов даже без модификации исходных текстов.
+ – Ответить 1
32. romansun 192 17.01.13 18:51
(31) хм.....
+ – Ответить
33. Paul_Nevada 04.09.13 11:37
Привет!
Интересно и ДРУГОЕ - КАК сами разработчики типовых не запутываются в этих "деревьях"??? Наверняка же они пользуют какие-то вспомогательные инструменты... У кого из вас есть какие мысли (а, может, и информация) на эту тему?
+ – Ответить 3
34. romansun 192 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 192 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/
+1 – Ответить 1
38. Paul_Nevada 05.09.13 17:22
(37) СПАСИБО!
+ – Ответить
39. ssa 16.10.13 22:38
Может пригодиться. Спасибо!
+ – Ответить