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

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


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


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


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


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





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


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


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




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


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


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


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


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


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


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

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




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

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




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


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


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


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

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




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

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


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


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

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


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




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




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

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


Наши проекты

ООО "ЛИКАРД" (Лукойл)
ООО "ЛИКАРД" (Лукойл)

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

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

Делопроизводство
• Учет и контроль исполнения поручений
Учет и хранение...

ООО "Смена"
ООО "Смена"

Отрасль:
Торговля, склад, логистика, транспорт

Внедренное типовое решение:
1С:Комплексная автоматизация

Банк и касса
Расчеты с контрагентами
Торговые операции
Взаиморасчеты с...

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

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

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

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

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

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

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

- Финансово-бухгалтерский блок
- Казначейство ...

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

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

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

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

Внедрение 1С:Управление торговлей в оптово-розничной компании «Много Плитки»
ООО «Много Плитки»

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

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

Закупки (снабжение) и управление отношениями с поставщиками:
- Оформление ...

ООО "ОМЗ"
ООО "ОМЗ"

Отрасль:
Металлургическая промышленность, металлообработка

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

Автоматизация бизнес-процессов...

Внедрение блоков в 1С:Комплексная автоматизация 8
ООО «Больцен Рус»

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

Внедренное типовое решение:
1С:Комплексная автоматизация

- Оперативный учет...

Автоматизация подсистемы учета взаиморасчетов с агентами и интернет-магазинами на базе «1С:Управление холдингом 8»
ОАО «Фрейт Линк»

Отрасль:
Логистика и грузоперевозки

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

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

Автоматизации бизнес-процессов учета и планирования на базе «1С:ERP Управление предприятием 2.0»
ООО «Буровая сервисная компания «ГРАНД»

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

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

- Создание полноценной управленческой системы взамен существующих
- Внедр...

Группа компаний ТМ «Дружба народов»
Группа компаний ТМ «Дружба народов»

Отрасль:
Пищевая промышленность

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

- Переход на новый релиз 2.1 программы «1С:ERP Управление предприятием»
- Разра...

Автоматизация торговых операций на базе "1С:Управление торговлей" в ОАО "Авиазапчасть"
ОАО «Авиазапчасть»

Отрасль:
Авиационно-космическая промышленность

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

- Оптовая торговля;
- Оформление заказов покупателей;
- Планирование прод...

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

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

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

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