Завершить замер времени на клиенте авто. Автоматически завершает замер времени на клиенте.
// Автоматически завершает замер времени на клиенте.
//
Процедура ЗавершитьЗамерВремениНаКлиентеАвто() Экспорт
ВремяОкончания = ТекущаяУниверсальнаяДатаВМиллисекундах();
ОценкаПроизводительностиЗамерВремени = ПараметрыПриложения["СтандартныеПодсистемы.ОценкаПроизводительностиЗамерВремени"];
ВремяПодключенияОбработчика = ОценкаПроизводительностиЗамерВремени["ВремяПодключенияОбработчика"];
Если ОценкаПроизводительностиЗамерВремени <> Неопределено Тогда
Замеры = ПараметрыПриложения["СтандартныеПодсистемы.ОценкаПроизводительностиЗамерВремени"]["Замеры"];
ЗамерыЗавершенные = ПараметрыПриложения["СтандартныеПодсистемы.ОценкаПроизводительностиЗамерВремени"]["ЗамерыЗавершенные"];
ДляУдаления = Новый Массив;
КоличествоНеЗавершенныхАвтоЗамеров = 0;
Для Каждого Замер Из Замеры Цикл
ЗамерЗначение = Замер.Значение;
Если ЗамерЗначение["АвтоЗавершение"] Тогда
Если ЗамерЗначение["ВремяНачала"] <= ВремяПодключенияОбработчика И ЗамерЗначение["ВремяОкончания"] = Неопределено Тогда
// Если есть вложенные замеры, зафиксируем последний шаг.
Если ЗамерЗначение["ВложенныеЗамеры"] <> Неопределено
И ЗамерЗначение["ВложенныеЗамеры"].Количество() Тогда
ЗафиксироватьЗамерДлительнойОперации(ЗамерЗначение, 1, ЗамерЗначение["ИмяПоследнегоШага"]);
КонецЕсли;
// Смещение даты клиента рассчитывается внутри процедуры
ЗавершитьЗамерВремениСлужебный(Замер.Ключ, ВремяОкончания);
Если ЗначениеЗаполнено(Замер.Значение["КлючеваяОперация"]) Тогда
ЗамерыЗавершенные.Вставить(Замер.Ключ, Замер.Значение);
КонецЕсли;
ДляУдаления.Добавить(Замер.Ключ);
Иначе
КоличествоНеЗавершенныхАвтоЗамеров = КоличествоНеЗавершенныхАвтоЗамеров + 1;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Для Каждого ТекЗамер Из ДляУдаления Цикл
Замеры.Удалить(ТекЗамер);
КонецЦикла;
КонецЕсли;
Если КоличествоНеЗавершенныхАвтоЗамеров = 0 Тогда
ОценкаПроизводительностиЗамерВремени["ЕстьОбработчик"] = Ложь;
Иначе
ПодключитьОбработчикОжидания("ЗакончитьЗамерВремениАвто", 0.1, Истина);
ОценкаПроизводительностиЗамерВремени["ЕстьОбработчик"] = Истина;
ОценкаПроизводительностиЗамерВремени["ВремяПодключенияОбработчика"] = ТекущаяУниверсальнаяДатаВМиллисекундах() + ОценкаПроизводительностиЗамерВремени["СмещениеДатыКлиента"];
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ЗакончитьЗамерВремениАвто (БСП)
ЗаписатьРезультатыАвтоНеГлобальный (БСП)
ЗакончитьЗамерВремениТехнологический (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)