ЭкспортОценкиПроизводительности (БСП)

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

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

// Процедура обработки регламентного задания по выгрузке данных
//
// Параметры:
//  КаталогиЭкспорта - Структура со значением типа Массив.
//
Процедура ЭкспортОценкиПроизводительности(КаталогиЭкспорта, ДопПараметры = Неопределено) Экспорт
	
	Если ОценкаПроизводительностиСлужебный.ПодсистемаСуществует("СтандартныеПодсистемы.БазоваяФункциональность") Тогда
		МодульОбщегоНазначения = ОценкаПроизводительностиСлужебный.ОбщийМодуль("ОбщегоНазначения");
		МодульОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ЭкспортОценкиПроизводительности);
	КонецЕсли;
		
	// Если система отключена, то выгрузку данных делать не будем.
	Если ДопПараметры = Неопределено И Не ОценкаПроизводительностиВызовСервераПовтИсп.ВыполнятьЗамерыПроизводительности() Тогда
	    Возврат;	
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	МАКСИМУМ(Замеры.ДатаЗаписи) КАК ДатаЗамера
	|ИЗ 
	|	РегистрСведений.ЗамерыВремени КАК Замеры
	|ГДЕ
	|	Замеры.ДатаЗаписи <= &ТекДата";
	
	Если ДопПараметры = Неопределено Тогда
		Запрос.УстановитьПараметр("ТекДата", ТекущаяУниверсальнаяДата() - 1);
	Иначе
		Запрос.УстановитьПараметр("ТекДата", ДопПараметры.ДатаОкончания);
	КонецЕсли;
	
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Следующий() И Выборка.ДатаЗамера <> Null Тогда
		ВерхняяГраньДатыЗамеров = Выборка.ДатаЗамера;
	Иначе 
		Возврат;	
	КонецЕсли;

	МассивыЗамеров = ЗамерыСРазделениемПоКлючевымОперациям(ВерхняяГраньДатыЗамеров, ДопПараметры);
	
	ПорядковыйНомерФайла = 0;
	ТекДата = ТекущаяУниверсальнаяДатаВМиллисекундах();
	Если ДопПараметры <> Неопределено Тогда
		ВременныйКаталог = ПолучитьИмяВременногоФайла();
		СоздатьКаталог(ВременныйКаталог);
		
		КаталогиЭкспорта = Новый Структура("ЛокальныйКаталогЭкспорта, FTPКаталогЭкспорта", Новый Массив, Новый Массив);
		КаталогиЭкспорта.ЛокальныйКаталогЭкспорта.Добавить(Истина);
		КаталогиЭкспорта.ЛокальныйКаталогЭкспорта.Добавить(ВременныйКаталог);
		КаталогиЭкспорта.FTPКаталогЭкспорта.Добавить(Ложь);
		КаталогиЭкспорта.FTPКаталогЭкспорта.Добавить("");
	КонецЕсли;
	
	Для Каждого МассивЗамеров Из МассивыЗамеров Цикл
		ПорядковыйНомерФайла = ПорядковыйНомерФайла + 1;
		ВыгрузитьРезультаты(КаталогиЭкспорта, МассивЗамеров, ТекДата, ПорядковыйНомерФайла);
	КонецЦикла;
	
	Если ДопПараметры <> Неопределено Тогда
		ФайлыДанных = НайтиФайлы(ВременныйКаталог, "*.xml");
		ЗаписьZipФайла = Новый ЗаписьZipФайла();
		ИмяАрхива = ПолучитьИмяВременногоФайла("zip");
		ЗаписьZipФайла.Открыть(ИмяАрхива,,,МетодСжатияZIP.Сжатие);
		Для Каждого ФайлДанных Из ФайлыДанных Цикл
			ЗаписьZipФайла.Добавить(ФайлДанных.ПолноеИмя);
		КонецЦикла;
		ЗаписьZipФайла.Записать();		
		
		ДвоичныеДанныеАрхив = Новый ДвоичныеДанные(ИмяАрхива);
		ПоместитьВоВременноеХранилище(ДвоичныеДанныеАрхив, ДопПараметры.АдресХранилища);
		
		УдалитьФайлы(ВременныйКаталог);
		УдалитьФайлы(ИмяАрхива);
	КонецЕсли;
			
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

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

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

КаталогиЭкспортаОценкиПроизводительности (БСП)

РегламентноеЗаданиеЭкспортаОценкиПроизводительности (БСП)

ЗагрузитьФайлОценкиПроизводительности (БСП)

ПолучитьПараметрыНаСервере (БСП)

ВключитьЗамерыПроизводительности (БСП)

ПолучитьЭлементОбщаяПроизводительностьСистемы (БСП)

ИзменитьОценкуПользователя (БСП)

ЛокальныйКаталогЭкспортаКлючЗадания (БСП)

FTPКаталогЭкспортаКлючЗадания (БСП)

Синтакс-помощник БСП с нейросетевым ассистентом