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











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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

11 Comments

  1. VmvLer

    Это просто инструкция по использованию в конфигураторе механизма

    «замер производительности».

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

    Вопрос «где наш код?» также маркетинговая уловка.

    Для новичка, не для новичка, но использовать подмену понятий при копировании

    очевидного и общедоступного механизма без единой идеи — это, по крайней мере,

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

    Reply
  2. Kindman1980

    (1) в теме публикации я хотел еще одно применение механизма написать, но мне отклонили публикацию сославшись на незаконность применения по политикам 1с. Хотя я с таким применением много, где сталкивался. То, что вы говорите про механизм, то возможно вы правы. Но с другой стороны -как называется механизм «Анализ производительности». Я лишь пишу про другое применение. И возможно его все программисты знают, но не знает большинство консультантов, что его можно таким образом использовать. Особенно для цели, когда ты не знаешь функционал, а тебе нужно быстро понять как он работает. Сейчас по-другому это называется «переупаковка».

    Reply
  3. VmvLer

    (2) Мои сообщения не следует воспринимать как личную дискредитацию, чаще я отвечаю некому абстрактному автору и опираясь на своё субъективное мнение о реальности современных технологий.

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

    по разбору шелухи. так что, каков мир технологий, таковы и его адепты.

    Reply
  4. user764477

    (2)Заинтриговали прям, с альтернативным применением. Намекните хотя бы…

    Reply
  5. dandykry

    (1)

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

    Ты воюешь не в ту сторону

    Reply
  6. VmvLer

    (5) я не воюю, просто лягаюсь как кони на водопое для бодрости тела и рассудка — не надо маленьких дурить)

    Reply
  7. dandykry

    (6) Да понятно, что пользы от публикации 1%.

    Я читал комментарий и пришлось перечитывать из за:

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

    Порадовал))

    Reply
  8. leosoft

    (6) Не надо слишком категорично судить публикации. Автор поделился своим опытом, который может

    быть полезен, как минимум, начинающим.

    Reply
  9. &rew

    Вообще, сам иногда пользуюсь этим способом. Но есть несколько нюансов:

    1. «Если отсортироваться по проценту выполнения, то, как правило, сразу понятно, где выполняется основная функциональность.» Вообще не факт. Это если на запросе и то не факт, а так и НайтиСсылки можно за основную функциональность принять.

    2. Можно еще, если непонятно где затык (а так почти всегда), ставить точку останова и смотреть стек.

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

    4. Ну и ВременноеХранилище. Если мы из него получаем данные, то как оно туда попало мы не факт что увидим в текущем вызове.

    Reply
  10. Kindman1980

    (9) да я со многим согласен и стек второй инструмент.

    Reply
  11. Saipl

    (3)

    Мои сообщения не следует воспринимать как личную дискредитацию, чаще я отвечаю некому абстрактному автору и опираясь на своё субъективное мнение о реальности современных технологий.

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

    по разбору шелухи. так что, каков мир технологий, таковы и его адепты.

    Мощно задвинул — надо заучить !

    Буду при встрече с клиентами такую тираду выдавать — многозначительно глядя в потолок )

    Всем добра !

    Reply

Leave a Comment

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