Процедура
ВыгрузитьДанныеВФайл(Текст,
ИмяФайла)
ТекстовыйФайл = Новый ТекстовыйДокумент;
ТекстовыйФайл.УстановитьТекст(текст);
ТекстовыйФайл.записать(константы.KPI_КаталогДляОбмена.Получить()
+ "\" + ИмяФайла);
КонецПроцедуры
Функция ЗаписатьРезультатВJSON(ПараметрыЗаписиJSON,НачДата,КонДата,Показатель,КодПоказателя,МассивЗначений)
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ПроверятьСтруктуру = Ложь;
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
ЗаписьJSON.ЗаписатьНачалоОбъекта();
ЗаписьJSON.ЗаписатьИмяСвойства("Показатель");
ЗаписьJSON.ЗаписатьЗначение(Показатель);
ЗаписьJSON.ЗаписатьИмяСвойства("КодПоказателя");
ЗаписьJSON.ЗаписатьЗначение(КодПоказателя);
ЗаписьJSON.ЗаписатьИмяСвойства("ДатаНачала");
ЗаписьJSON.ЗаписатьЗначение(Формат(НачДата,"ДФ=ггггММдд"));
ЗаписьJSON.ЗаписатьИмяСвойства("ДатаОкончания");
ЗаписьJSON.ЗаписатьЗначение(Формат(КонДата,"ДФ=ггггММдд"));
ЗаписьJSON.ЗаписатьИмяСвойства("Данные");
ЗаписатьJSON(ЗаписьJSON,МассивЗначений);
ЗаписьJSON.ЗаписатьКонецОбъекта();
Текст = ЗаписьJSON.Закрыть();
Возврат Текст;
КонецФункции
Процедура
ВыгрузитьДанные(ИмяФайла, Показатель,КодПоказателя,
тз, НачДата, КонДата)
ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Windows,
Символы.Таб);
тз.колонки.добавить("КодПользователя");
для каждого текстрока из тз
цикл
Если Текстрока.пользователь = null или Текстрока.пользователь
= неопределено или Текстрока.пользователь
= "" тогда
продолжить;
иначе
текстрока.кодПользователя
= текстрока.пользователь.код;
конецесли;
конеццикла;
тз.свернуть("пользователь, КодПользователя", "Количество");
если тз.количество()>0 тогда
МассивЗначений = Новый Массив;
для каждого текстрока из тз Цикл
если текстрока.пользователь = ""
или текстрока.пользователь = неопределено
или текстрока.пользователь = null
тогда
продолжить;
конецесли;
стр = новый Структура;
стр.Вставить("ФИОСотрудника", СокрЛП(текстрока.пользователь));
стр.Вставить("КодСотрудника", СокрЛП(текстрока.КодПользователя));
стр.Вставить("Показатель" ,
СокрЛП(показатель));
стр.Вставить("Количество"
, текстрока.Количество/2);
МассивЗначений.Добавить(Стр);
стр = неопределено;
КонецЦикла;
//Мсв = Новый массив;
Текст = ЗаписатьРезультатВJSON(ПараметрыЗаписиJSON,НачДата,КонДата,
Показатель,КодПоказателя, МассивЗначений);
ВыгрузитьДанныеВФайл(Текст,
ИмяФайла);
конецесли;
КонецПроцедуры
Процедура
ПолучитьДанныеНаОснованииСКД(СКД,
ОбъектДляЗагрузки, ИсполняемыеНастройки
= Неопределено, СтруктураПараметров
= Неопределено, РасшифровкаСКД
= Неопределено, МакетКомпоновки
= Неопределено, ВнешниеНаборыДанных
= Неопределено) Экспорт
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений");
Если ИсполняемыеНастройки = Неопределено Тогда
ИсполняемыеНастройки = СКД.НастройкиПоУмолчанию;
КонецЕсли;
Если СтруктураПараметров <> Неопределено Тогда
КоллекцияЗначенийПараметров = ИсполняемыеНастройки.ПараметрыДанных.Элементы;
Для каждого Параметр Из СтруктураПараметров
Цикл
НайденноеЗначениеПараметра = КоллекцияЗначенийПараметров.Найти(Параметр.Ключ);
Если НайденноеЗначениеПараметра <> Неопределено Тогда
НайденноеЗначениеПараметра.Использование =
Истина;
НайденноеЗначениеПараметра.Значение = Параметр.Значение;
КонецЕсли;
КонецЦикла;
КонецЕсли;
МакетКомпоновкиСКД = КомпоновщикМакета.Выполнить(СКД, ИсполняемыеНастройки, РасшифровкаСКД,
МакетКомпоновки, ТипГенератора);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновкиСКД, ВнешниеНаборыДанных,
РасшифровкаСКД);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ОбъектДляЗагрузки);
ПроцессорВывода.ОтображатьПроцентВывода =
Истина;
ПроцессорВывода.Вывести(ПроцессорКомпоновки,
Истина);
КонецПроцедуры
Процедура
ПолучитьДанныеПоказателя
(НачДата, КонДата, ИмяПоказателя,КодПоказателя, ИмяОтчета)
ДатаВыгрузки = Формат(ТекущаяДата(),
"ДЛФ=Д" );
показатель = ИмяПоказателя;
ИмяФайла
= Показатель + "_" +ДатаВыгрузки+
".txt";
ДеревоЗначений = Новый ТаблицаЗначений;
СтруктураПараметров = Новый Структура("ДатаНачала",
НачДата);
СтруктураПараметров.Вставить("ДатаОкончания", КонДата);
ПолучитьДанныеНаОснованииСКД(СхемаКомпоновкиДанных,
ДеревоЗначений, СхемаКомпоновкиДанных.НастройкиПоУмолчанию,
СтруктураПараметров);
ВыгрузитьДанные(ИмяФайла,
Показатель, КодПоказателя, ДеревоЗначений,
НачДата, КонДата);
КонецПроцедуры
Функция ПолучитьПоказатели()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| KPI_НастройкаПоказателейДляВыгрузки.ИмяПоказателя
КАК ИмяПоказателя,
| KPI_НастройкаПоказателейДляВыгрузки.ИмяОтчета
КАК ИмяОтчета,
| KPI_НастройкаПоказателейДляВыгрузки.ИмяДляВыгрузки
КАК ИмяДляВыгрузки,
| KPI_НастройкаПоказателейДляВыгрузки.КодКПЭ
КАК КодКПЭ
|ИЗ
| РегистрСведений.KPI_НастройкаПоказателейДляВыгрузки
КАК KPI_НастройкаПоказателейДляВыгрузки
|ГДЕ
| KPI_НастройкаПоказателейДляВыгрузки.АктивностьКПЭ";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Возврат Выборка;
КонецФункции
Процедура
Сформировать(НачДата, КонДата)
Показатели = ПолучитьПоказатели();
Пока Показатели.Следующий() Цикл
ИмяПоказателя
= Показатели.ИмяДляВыгрузки;
ИмяОтчета = Показатели.ИмяОтчета;
КодПоказателя
= Показатели.КодКПЭ;
ПолучитьДанныеПоказателя(НачДата,КонДата, ИмяПоказателя,
КодПоказателя, ИмяОтчета);
КонецЦикла;
КонецПроцедуры
Процедура
ДляРегламентногоЗадания() экспорт
НачДата
= НачалоМесяца(НачалоМесяца(ТекущаяДата())-1);
КонДата
= КонецМесяца(НачДата);
Сформировать(НачДата,
КонДата);
КонецПроцедуры
|