В ходе жизни информационных систем могут возникать ситуации, когда пользователи начинают жаловаться на «резкое снижение» скорости работы. Жалобы пользователей – это, однако, субъективный показатель. Его, безусловно, стоит принимать во внимание, но только для того, чтобы начать собирать объективные показатели.
Таким объективным показателем может быть время выполнения какой-то ключевой операции, например, время проведения документа определенного типа.
Чтобы иметь объективную картину, надо, чтобы при каждом нажатии кнопки ОК в критичном документе выполнялся замер времени и записывался в базу. Тогда у вас, во-первых, будет понимание того, сколько на самом деле, а не со слов пользователя, проводятся документы, а во-вторых, вы сможете видеть динамику процесса и сами сможете отследить тревожную ситуацию и начать принимать меры (например, время увеличилось вдвое – с 5 минут до 10, но основные пользователи в отпусках, а девочкам, их замещающим, кажется, что это нормально и они не жалуются).
В такой ситуации, когда нужно измерить и хранить время выполнения не одной операции, а, например, время проведения каждого документа в работающей базе, есть смысл воспользоваться функционалом подсистемы «Оценка производительности» из состава Библиотеки стандартных подсистем «1С».
В ряде типовых конфигураций эта подсистема уже встроена, и определены основные ключевые операции, так что зачастую достаточно просто включить замер производительности.
Ниже приводится инструкция для библиотеки стандартных подсистем 2.1.1.22, перепроверенная и уточненная для ред. 2.2.5.30. В старых версиях (1.2.2.3) существенное отличие только в том, что Ключевые операции – это не справочник, а перечисление.
1. Запустить конфигуратор.
2. Убедиться, что конфигурация не содержит встроенной подсистемы «Оценка производительности» (в частности, регистра сведений Замеры времени, обработки Оценка производительности, справочника или перечисления Ключевые операции). Если содержит, проверить предопределенные элементы справочника Ключевые операции на наличие нужных операций. Если их недостаточно, перейти к п. 10; если все необходимые есть – к п. 13.
3. Сравнить и объединить с cf БСП. Текущая версия публикуется на http://users.v8.1c.ru/actual.jsp.
4. В окне сравнения-объединения снять все флажки, как показано на рис. 4.7.3:

Рис. 4.7.3. Порядок заполнения окна сравнения-объединения
5. Из меню Действия выбрать Отметить по подсистемам файла.
6. Снять, как показано на рис. 4.7.4, все флажки в перечне подсистем:

Рис. 4.7.4. Порядок заполнения окна отбора по подсистемам
7. Нажать кнопку Установить.
8. В окне сравнения-объединения Общие – Подсистемы – Стандартные подсистемы – Оценка производительности установить флажок, как показано на рис. 4.7.5.

Рис. 4.7.5. Порядок заполнения окна сравнения-объединения после установки отбора по подсистемам
9. Выполнить объединение.
10 В справочник Ключевые операции добавить предопределенные элементы (например, КлючеваяОперация_1).
11. Не имеет значения – это кнопка ОК, кнопка Создать, кнопка Открыть или еще что-то. Надо с помощью кода сначала стартовать замер, а потом начать выполнение действия.
Например, когда документ проводится при нажатии кнопки ОК и нам необходимо выполнить замер времени проведения:
- если ОК стандартная кнопка:
Обработчик кнопки (команды) может выглядеть следующим образом (на рис. 4.7.6 приведен код из типовой конфигурации «Бухгалтерия предприятия», ред. 3.0, релиз 3.0.19.15, элемент справочника Ключевые операции надо использовать свой):

Рис. 4.7.6. Код обработки команды «Провести и закрыть» формы документа «Поступление товаров и услуг» типовой конфигурации «Бухгалтерия предприятия», ред. 3.0, релиз 3.0.19.15
- если ОК нестандартная кнопка, включить старт замера в начало обработчика нажатия кнопки:
КлючеваяОперация = ПредопределенноеЗначение("Справочник.КлючевыеОперации.КлючеваяОперация_1");
ОценкаПроизводительностиКлиентСервер.НачатьЗамерВремени(КлючеваяОперация);
Обратите внимание, что все счетчики лучше встраивать на клиенте (не в серверный код). Не нужно завершать замер вручную. Замер будет завершаться автоматически по обработчику ожидания.
Но если вдруг потребуется вызывать замер с сервера, то замер надо заканчивать принудительно:
&НаСервере
Функция СоздатьДокументЗаказПоставщику(Ссылка)
КлючеваяОперация = ПредопределенноеЗначение("Справочник.КлючевыеОперации.КлючеваяОперация_1");
...код создания документа>...
ВремяНачала = ОценкаПроизводительностиКлиентСервер.НачатьЗамерВремени(КлючеваяОперация);
ДокументЗаказ.Записать(РежимЗаписиДокумента.Проведение[66]);
ОценкаПроизводительностиКлиентСервер.ЗакончитьЗамерВремени(КлючеваяОперация, ВремяНачала);
....
КонецФункции
12. При объединении с версиями БСП, начиная с определенного момента, требуется в модуле обычного приложения и в модуле управляемого приложения объявлять переменную:
Перем ПараметрыПриложения Экспорт;
13. Константу Выполнять Замеры Производительности установить в Истину любым удобным способом (обработкой, создав новую форму констант, и пр.).
14. При необходимости отрегулировать константу Оценка производительности период записи – это периодичность записи результатов замеров на сервере, в текущих релизах при установке значения 1 и меньше (в т. ч. 0 по умолчанию) выполняется раз в 60 секунд.
15. Для анализа значений APDEX нужно использовать обработку Оценка производительности (Операции – Обработки…). Чтобы ее использовать, нужно задать период, шаг периода и целевое время, в списке оставить только свою ключевую операцию и «общую производительность системы» и нажать Обновить показатели производительности.
В простых случаях время на выполнение всех пунктов изложенной выше инструкции не превышает 20 минут.
Если подсистему пришлось встраивать, то потребуется обновить конфигурацию базы, причем не динамически, а с выходом всех пользователей.
Дополнительно рекомендуется ознакомиться со статьей , а также посмотреть, как данный функционал реализован в последних релизах типовых конфигураций, например, в уже упомянутой конфигурации «Бухгалтерия предприятия», ред. 3.0.
Использование изложенного подхода предполагает, что замеры выполняются только при нажатии кнопки ОК (или Провести и закрыть) в форме элемента. Это не охватывает всех случаев, потому что, например, проведение документа может выполняться и с помощью других кнопок, заменить обработчики которых гораздо сложнее. Но можно считать, что для массовых документов выборка, получаемая таким образом, является достаточной, хоть и не будет охватывать всех случаев. А для немассовых документов следует попросить отдельных пользователей пользоваться для проведения документов только кнопкой ОК.
Результатом внесенных изменений, если все сделано правильно, должно стать появление в регистре сведений Замеры времени информации о том, какие ключевые операции были выполнены и за какое время. Появляются они там не моментально, но в течение минуты после выполнения ключевой операции появиться должны обязательно.
Полученные данные можно использовать для самостоятельной обработки, либо, как указывалось выше, воспользоваться входящей в подсистему обработкой Оценка производительности, агрегирующей результаты по методике APDEX.