Анализ функциональности: где наш код?!

02.12.19

Разработка - Механизмы платформы 1С

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

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

Пример: нам нужно посмотреть, как работает функционал закрытия периода в ERP.

Шаг 1: открыть конфигуратор программы, далее в главном меню -"конфигурация" - "открыть конфигурацию". Далее в главном меню "Отладка" -"Начать отладку" или просто клавиша (F5)

После того как отладка запущена, зайти в подключение отладки ("Отладка"- "Подключение")

Далее в открывшемся окне внизу нажать "Автоматическое подключение" и в открывшемся окне "Автоматическое подключение" установить минимум 2 флага "Клиентские и внешние соединения на сервере" и "Фоновые задания".

Далее последовательно закрываем эти окна.

После этого уже в пользовательском режиме открываем то, что нам нужно.

Я планирую открыть рабочее место "Закрытие месяца".

Перед самым открытием вернуться в конфигуратор и нажать "Отладка" - "Замер производительности.

Возвращаемся в пользовательский режим и нажимаем в меню "Закрытие месяца". Ждем, пока откроется окно рабочего места "Закрытия месяца".

После этого возвращаемся в конфигуратор. И видим в отладчике фоновое задание или несколько окон замеров (это зависит от количества запущенных фоновых заданий).

Останавливаем замер производительности также "Отладка"- "Замер производительности"

Теперь начинается самое интересное - анализ мест исполнения. Таблица замера содержит следующие колонки: Модуль, номер строки, строка, кол, время выполнения и процент времени выполнения.  В таблице можно выполнять сортировку. Я люблю 2 сортировки ( по модулю и по проценту выполнения).

Если отсортироваться по проценту выполнения, то, как правило, сразу понятно, где выполняется основная функциональность.

Пример сортировки ниже

Видно, что это 2 модуля (Аудит состояния системы и закрытие месяца). Нас интересует модуль "Закрытие месяца сервер". Это и есть основной модуль, который отвечает за функциональность закрытия месяца.

Я люблю сохранять модули в эксель. В экселе очень удобно, можно в отдельных колонках оставлять комментарии.

Для этого нужно выделить все содержимое (Ctrl+A), открыть эксель и вставить туда содержимое через копи-паст.

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

И после сортировки увидеть все модули, где отрабатывают проверки "Закрытие месяца".

Также результаты замеров можно сохранять не в эксель, а в файлы с расширением *.PFF и открывать их позже для анализа.

анализ код

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    4443    dsdred    53    

70

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    5275    YA_418728146    25    

63

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6394    dsdred    36    

111

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18464    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12074    human_new    27    

74

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8799    YA_418728146    6    

141

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

20.08.2023    6271    sebekerga    54    

94

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15965    SeiOkami    31    

103
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. VmvLer 02.12.19 11:52 Сейчас в теме
Это просто инструкция по использованию в конфигураторе механизма
"замер производительности".

тег "Анализ функциональности" в заголовке просто для красного словца и ни о каком анализе в теме речь не идет. Это более глубокая тема и в логическом, и в физическом плане чем замер и автор никак ее не раскрыл.
Вопрос "где наш код?" также маркетинговая уловка.

Для новичка, не для новичка, но использовать подмену понятий при копировании
очевидного и общедоступного механизма без единой идеи - это, по крайней мере,
очень порядочно и профессионально.
Дмитрий74Чел; Intercititude; CodeNull; Xershi; +4 Ответить
2. Kindman1980 81 02.12.19 12:23 Сейчас в теме
(1) в теме публикации я хотел еще одно применение механизма написать, но мне отклонили публикацию сославшись на незаконность применения по политикам 1с. Хотя я с таким применением много, где сталкивался. То, что вы говорите про механизм, то возможно вы правы. Но с другой стороны -как называется механизм "Анализ производительности". Я лишь пишу про другое применение. И возможно его все программисты знают, но не знает большинство консультантов, что его можно таким образом использовать. Особенно для цели, когда ты не знаешь функционал, а тебе нужно быстро понять как он работает. Сейчас по-другому это называется "переупаковка".
Shalnov; mrChOP93; +2 Ответить
3. VmvLer 02.12.19 12:39 Сейчас в теме
(2) Мои сообщения не следует воспринимать как личную дискредитацию, чаще я отвечаю некому абстрактному автору и опираясь на своё субъективное мнение о реальности современных технологий.

можно до упаду спорить о терминах и манипуляциях в современном мире, даже топ-компании часто грешат очковтирательством жонглируя очень удобным термином "анализ" в своих поделках
по разбору шелухи. так что, каков мир технологий, таковы и его адепты.
JohnConnor; Xershi; +2 Ответить
11. Saipl 7 03.12.19 13:29 Сейчас в теме
(3)
Мои сообщения не следует воспринимать как личную дискредитацию, чаще я отвечаю некому абстрактному автору и опираясь на своё субъективное мнение о реальности современных технологий.

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

Мощно задвинул - надо заучить !
Буду при встрече с клиентами такую тираду выдавать - многозначительно глядя в потолок )
Всем добра !
4. user764477 02.12.19 12:54 Сейчас в теме
(2)Заинтриговали прям, с альтернативным применением. Намекните хотя бы...
for_sale; mrChOP93; +2 Ответить
5. dandykry 10 02.12.19 14:23 Сейчас в теме
(1)

очень порядочно и профессионально


Ты воюешь не в ту сторону
6. VmvLer 02.12.19 14:34 Сейчас в теме
(5) я не воюю, просто лягаюсь как кони на водопое для бодрости тела и рассудка - не надо маленьких дурить)
7. dandykry 10 02.12.19 14:37 Сейчас в теме
(6) Да понятно, что пользы от публикации 1%.

Я читал комментарий и пришлось перечитывать из за:
использовать подмену понятий при копировании очевидного и общедоступного механизма без единой идеи - это, по крайней мере,очень порядочно и профессионально.

Порадовал))
8. leosoft 165 02.12.19 17:15 Сейчас в теме
(6) Не надо слишком категорично судить публикации. Автор поделился своим опытом, который может
быть полезен, как минимум, начинающим.
bambucho; user843241; DmitryKSL; +3 Ответить
14. bambucho 07.09.22 18:11 Сейчас в теме
(1) Какой инструментарий Вы посоветуете для анализа кода?
9. &rew 49 03.12.19 09:52 Сейчас в теме
Вообще, сам иногда пользуюсь этим способом. Но есть несколько нюансов:
1. "Если отсортироваться по проценту выполнения, то, как правило, сразу понятно, где выполняется основная функциональность." Вообще не факт. Это если на запросе и то не факт, а так и НайтиСсылки можно за основную функциональность принять.
2. Можно еще, если непонятно где затык (а так почти всегда), ставить точку останова и смотреть стек.
3. Если кнопочка с процедурой сформирована программно, например, как получаются параметры процедуры кнопки и собственно что за процедура вызывает действие, мы через замер не увидим, мы увидим только грубо говоря факт выполнения.
4. Ну и ВременноеХранилище. Если мы из него получаем данные, то как оно туда попало мы не факт что увидим в текущем вызове.
10. Kindman1980 81 03.12.19 13:05 Сейчас в теме
(9) да я со многим согласен и стек второй инструмент.
12. user1454320 23.12.20 09:21 Сейчас в теме
Мне было полезно прочесть как текст публикации так и комментарии к ней. Все в тему. Спасибо.
13. bambucho 07.09.22 18:10 Сейчас в теме
Ну очень не хватает колонки с последовательностью вызовов строк / порядкового номера.
Оставьте свое сообщение