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