ЗавершитьЗамерВремениНаКлиентеАвто (БСП)

Автор: 1С
ОбщийМодуль.ОценкаПроизводительностиКлиент
БСП

Завершить замер времени на клиенте авто. Автоматически завершает замер времени на клиенте.

// Автоматически завершает замер времени на клиенте.
//
Процедура ЗавершитьЗамерВремениНаКлиентеАвто() Экспорт
	
	ВремяОкончания = ТекущаяУниверсальнаяДатаВМиллисекундах();
	
	ОценкаПроизводительностиЗамерВремени = ПараметрыПриложения["СтандартныеПодсистемы.ОценкаПроизводительностиЗамерВремени"];
	ВремяПодключенияОбработчика = ОценкаПроизводительностиЗамерВремени["ВремяПодключенияОбработчика"];
		
    Если ОценкаПроизводительностиЗамерВремени <> Неопределено Тогда
        
        Замеры = ПараметрыПриложения["СтандартныеПодсистемы.ОценкаПроизводительностиЗамерВремени"]["Замеры"];
		ЗамерыЗавершенные = ПараметрыПриложения["СтандартныеПодсистемы.ОценкаПроизводительностиЗамерВремени"]["ЗамерыЗавершенные"];
		
		ДляУдаления = Новый Массив;
        
        КоличествоНеЗавершенныхАвтоЗамеров = 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
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ЗавершитьЗамерВремени (БСП)

ЗакончитьЗамерВремениАвто (БСП)

ЗаписатьРезультатыАвтоНеГлобальный (БСП)

ЗакончитьЗамерВремени (БСП)

ЗамерВремени (БСП)

ЗаписатьРезультатыАвто (БСП)

ЗакончитьЗамерВремениТехнологический (БСП)

НачатьЗамерВремениТехнологический (БСП)

НачатьЗамерВремени (БСП)

1С Менеджер конфигураций