19.09.2019 Карцев Кирилл 16030
Замер производительности в 1С

Для чего нужен замер производительности?


         В платформе есть множество удобных инструментов, повышающих эффективность работы разработчика прикладных решений 1С. Один из таких инструментов – «Замер производительности». Грамотный разработчик понимает, насколько важна производительность 1С, ценность быстрой работы разрабатываемых им решений. И конечно же, он должен уметь выявлять и быстро находить проблемные места в коде.


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


         Еще одна полезная «фишка». Замер производительности крайне прост в использовании и удобен как для своей основной функции, так и для поиска вызываемых мест кода. Например, иногда бывает сложно найти, в каком именно месте проходит проверка на ошибку, или нужно найти места вызова какой-то процедуры. Для этого можно запустить замер, собрать стек вызовов всего исполняемого кода и поиском найти нужную строку коду.


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





Как запускать замеры?


Шаг 1. Запустить базу 1С в режиме отладки. Запускаем базу в режиме конфигуратора, нажимаем «F5» (или кнопку «Начать отладку») и запускаем пользовательский режим для отладки.


Также можно подключать отладку уже запущенных сеансов. И даже подключаться к фоновым заданиям или сервисам.




Для клиент-серверных приложений важно, чтобы была включена отладка на сервере, чтобы можно было собирать и серверные вызовы тоже.


Шаг 2. Открыть нужное место в системе для запуска исполняемой команды. Не нужно включать отладку до момента запуска команды, иначе в стек замера попадут ненужные строки.


Шаг 3. Нажать кнопку замера производительности. Кнопка появляется при включении отладки.


Шаг 4. Выполнить команду и дождаться завершения. После отжать кнопку замера и получить таблицу результатов замера.


Шаг 5. 1С оценка производительности и устранение проблемных мест.


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


Пример анализа производительности

Имеем обработку (условно), которая выводит простую таблицу с суммой движений по 60 счету по документам поступления товаров и услуг.




Когда ее разработали, документов у компании формировалось немного и особо не заморачивались с кодом. Программист на скорую руку набросал бухгалтеру такую обработку и забыл про нее. Но вот прошло несколько лет и документов стало по несколько тысяч в месяц и теперь бухгалтер жалуется, что скорость работы 1С оставляет желать лучшего. На компьютере бухгалтера «крутится» по несколько минут.

Запускаем замер производительности и сразу видно проблему – запрос в цикле.




Для выявления проблемных мест достаточно отсортировать результат по времени выполнения или проценту от общего времени выполнения.


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


Нижние итоги показывают сумму показателя по выделенной строке. Поэтому если нужно увидеть общее время работы команды, достаточно выделить все строки (Ctrl+A).


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

Снова делаем замер и вот результат:




Проблема решена, обработка отработала практически моментально.

Конечно, этот пример условный, но он показывает, как легко и быстро с помощью этого инструмента можно находить ошибки в разработке.


Часто бывает, что кода в исполняемой команде много, и неясно, в каком именно месте можно оптимизировать решение. Именно для поиска таких мест и нужен «Замер производительности 1С».


Особенность замера производительности в управляемых формах

В клиент-серверном варианте работы информационной базы, замер производительности собирает клиентские и серверные вызовы в одну таблицу. Понять место вызова можно по колонкам «Клиент» и «Сервер».


Если отладка на сервере выключена, то будут собраны и показаны только клиентские вызовы. Также можно отфильтровать отображение вызовов через флажки «Клиент» и «Сервер».




А вот так будет выглядеть стек замера в обычном режиме (нет разделения на «Клиент» и «Сервер»):




Специалист компании «Кодерлайн»

Карцев Кирилл


Наши проекты

СТС-Медиа
СТС-Медиа

Отрасль:
Медиаиндустрия

Внедренное типовое решение:
1С:Управление холдингом

- Бухгалтерский учет;
- Налоговый учет;
- МСФО (GAAP/управленческий учет);
- ...

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

Внедренное типовое решение:
1С:Управление торговлей

Оформление заказов поставщикам Оформление заказов покупателей Управление ...

Внедрение системы финансового учета БИТ:Финанс
ООО «Алькор и Ко» (Л’Этуаль)

Отрасль:
Торговля

Внедренное типовое решение:
БИТ.Финанс

- Финансовый учет;
- Поддержка проекта внедрения МСФО;
- Регламентные рабо...

Апгрейд 1С:Бухгалтерия 8 ПРОФ (USB) до версии 1С:Бухгалтерия 8 КОРП (USB)
ООО «Ява Строй»

Отрасль:
Строительство

Внедренное типовое решение:
1С:Бухгалтерия 8 КОРП (USB)

- Создание чистых конфигураций. Внесение изменений в БД ЗУП и новая расчетна...

ООО «ДАФ Тракс Рус» (DAF Trucks Rus)
ООО «ДАФ Тракс Рус» (DAF Trucks Rus)

Отрасль:
Машиностроение

Внедренное типовое решение:
«1С:Управление корпоративными финансами»

- Осуществлена разработка матрицы прав и ролей для финансового подразделени...

ООО «ПКП КАБЭЛЕКТРОСНАБ»
ООО «ПКП КАБЭЛЕКТРОСНАБ»

Отрасль:
Производство кабельной продукции

Внедренное типовое решение:
1С:Управление небольшой фирмой 1.6

- Оформление заказов покупателей;
- Управление складскими запасами;
- Ана...

1с-РАРУС МСК
1с-РАРУС МСК

Отрасль:
Разработка компьютерного программного обеспечения

Внедренное типовое решение:

- Совместная работа по внедрению разных решений, в том числе «1С:ERP Управление...

Внедрение 1С:Управление торговлей
ООО «Амперсенд»

Отрасль:
Оптовая торговля

Внедренное типовое решение:
1С:Управление торговлей

- Оформление заказов поставщикам;
- Управление отношениями с поставщиками;...

Автоматизация документооборота в компании ООО "Ликард"
ООО «Ликард» (ОАО ЛУКОЙЛ)

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:Документооборот КОРП

- Отказ от бумажного документооборота, от громоздких систем на базе офисного...

Фирма 1С
Фирма 1С

Отрасль:

Внедренное типовое решение:
1С:Документооборот

- Подготовка функциональной модели прикладного решения «1С:Документооборот...

ООО «Вистеон Автоприбор Электроникс»
ООО «Вистеон Автоприбор Электроникс»

Отрасль:

Внедренное типовое решение:
1C:Управление производственным предприятием

- Управленческий учет; - Расчет зарплаты; - Логистика адресного склада; - Учет ...

ООО «ЛИГА-ТРАНС»
ООО «ЛИГА-ТРАНС»

Отрасль:
Профессиональные услуги, бытовое обслуживание

Внедренное типовое решение:
«1С:ERP Управление предприятием 2.1».

- Сделано ТЗ по автоматизации учета МСФО: - Разработана карта бюджета доходо...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение