Встала задача замерить производительность открытия документов, отчетов и пр.
Стандартный ADPEX вполне походил для задачи, однако, серверный вариант замера производительности не удобен для управляемых форм. Пришлось немного допилить его.
Добавляем в серверный модуль
#Область ОценкаПроизводительности Функция ОП_СодержитСвойство(Переменная, ИмяСвойства) // Инициализируем структуру для теста с ключом (значение переменной "ИмяСвойства") и значением NULL СтруктураПроверка = Новый Структура; СтруктураПроверка.Вставить(ИмяСвойства, NULL); // Заполняем созданную структуру из переданного значения переменной ЗаполнитьЗначенияСвойств(СтруктураПроверка, Переменная); // Если значение для свойства структуры осталось NULL, то искомое свойство не найдено, и наоборот. Если СтруктураПроверка[ИмяСвойства] = NULL Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции Процедура ОП_НачатьЗамерФорма(Форма) Экспорт Если НЕ ОП_СодержитСвойство(Форма, "ИМС_ЗамерПроизводительности") Тогда ОписаниеТипа = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(14, 0, ДопустимыйЗнак.Неотрицательный)); Реквизиты = Новый Массив; Реквизиты.Добавить(Новый РеквизитФормы("ИМС_ЗамерПроизводительности", ОписаниеТипа)); Форма.ИзменитьРеквизиты(Реквизиты); КонецЕсли; Форма.ИМС_ЗамерПроизводительности = ОценкаПроизводительности.НачатьЗамерВремени(); КонецПроцедуры Процедура ОП_ЗавершитьЗамерФорма(Форма, Операция = ".Открытие") Экспорт Объект = Форма.РеквизитФормыВЗначение("Объект"); ИмяОбъекта = Объект.Метаданные().Имя; ОценкаПроизводительности.ЗакончитьЗамерВремени("Имс:"+ИмяОбъекта+Операция,Форма.ИМС_ЗамерПроизводительности); КонецПроцедуры #КонецОбласти |
Дальше, добавляем новое расширение конфигурации. В расширение добавляем требуемые формы документов и на форме:
&НаСервере Процедура ОП_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) РУ.ОП_НачатьЗамерФорма(ЭтаФорма); КонецПроцедуры &НаКлиенте Процедура ОП_ПриОткрытии(Отказ) ОП_ПриОткрытииНаСервере(); КонецПроцедуры &НаСервере Процедура ОП_ПриОткрытииНаСервере() РУ.ОП_ЗавершитьЗамерФорма(ЭтаФорма); КонецПроцедуры &НаСервере Процедура ОП_ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда РУ.ОП_НачатьЗамерФорма(ЭтаФорма); КонецЕсли; КонецПроцедуры &НаСервере Процедура ОП_ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда РУ.ОП_ЗавершитьЗамерФорма(ЭтаФорма,".Проведение"); КонецЕсли; КонецПроцедуры |
Главное, не забыть снять флаг «Безопасный режим» с расширения. Замеры производительности в безопасном режиме не работают.