В начало

Загрузка показателей из папки обмена

 

Листинг. Общий модуль для регламентного задания загрузки показателей в JSON формате

 

Функция ПолучитьПоказателиИзБазы(Вариант)

 

            Если Вариант = 1 тогда

                        ТекстЗапроса= "";

            КонецЕсли;

           

возврат ТекстЗапроса;

 

КонецФункции

 

функция ПолучитьСписокЦП(Показатель)

            СписокЦП = новый списокЗначений;

 

            Если Показатель = "Собираемость" тогда

                        СписокЦП.Добавить("000001234");

            КонецЕсли;

 

            Возврат СписокЦП;

           

КонецФункции

 

Процедура ЗагрузитьДанныеИзФайлаНаСервере(ПолноеИмяФайла, КороткоеИмяФайла)

 

            ЧтениеJSON = Новый ЧтениеJSON;

            ЧтениеJSON.ОткрытьФайл(ПолноеИмяФайла);

 

            Попытка

                        СтруктураДанных = ПрочитатьJSON(ЧтениеJSON);

                        ЧтениеJSON.Закрыть();                                         

            Исключение

            КонецПопытки;

                       

            Показатель = СтруктураДанных.Показатель;

            НачДата = СтруктураДанных.ДатаНачала;

            КонДата = СтруктураДанных.ДатаОкончания;

            ДанныеПоказателя = СтруктураДанных.Данные;

            СписокЦП = ПолучитьСписокЦП(Показатель);

 

            Если показатель = "ЗаявлениеВБанк" Тогда

                        Вариант = 3;

            Иначе 

                        Вариант = 1;

            КонецЕсли;

 

            ТекстЗапроса = ПолучитьПоказателиИзБазы(Вариант);

            Запрос = новый Запрос;

            Запрос.Текст = ТекстЗапроса;

            Запрос.УстановитьПараметр("НачалоПериода", НачалоКвартала(НачДата));

            Запрос.УстановитьПараметр("ОкончаниеПериода", КонецКвартала(кондата));

            Запрос.УстановитьПараметр("СписокКодов", списокцп);

            ТЗДанные = Запрос.Выполнить().Выгрузить();

           

            Индекс = ДанныеПоказателя.ВГраница();

 

            Пока Индекс >= 0 Цикл

                        Если Показатель = "Собираемость" тогда

                                   стр = ДанныеПоказателя[Индекс];

                                   ИНН = стр.инн;

                                   ко = стр.ко;

                                   до = стр.до;

                                   ПокСтр = стр.показатель;

                                   стрпоиска = Новый Структура;

 

                                   Если ПокСтр = "Собираемость" Тогда

                                               СтрПоиска.Вставить("ЦелевойПоказатель",  Справочники.ЦелевыеПоказатели.НайтиПоКоду("00000123"));

                                   КонецЕсли;

 

                                   рез = тзДанные.НайтиСтроки( стрПоиска);

                                   Для сч=0 по рез.ВГраница() Цикл

                                               ЦП = рез[сч].ЦелевойПоказатель;

                                               ЦПКод = рез[сч].ЦелевойПоказатель.код;

                                               ПериодичностьПланирования = рез[сч].ПериодичностьПланирования;

                                               Сотрудник = рез[сч].Сотрудник;

                                               ПланОборот = рез[сч].ПланОборот;

                                               Организация = рез[сч].СтруктураКомпанииОрганизация;

                                               Должность = рез[сч].СтруктураКомпанииДолжность;

                                               Подразделение = рез[сч].СтруктураКомпанииПодразделение;

                                               СтруктураКомпании = рез[сч].СтруктураКомпании;

                                               ИНН = рез[сч].инн;

                                               ГоловнойИНН = рез[сч].ГоловнойИНН;

                                              

                                               Док = Документы.ВводФактовВыполнения.СоздатьДокумент();

                                               Док.Дата = КонДата;

                                               факты = док.Факты;

 

                                               строкаТЗ = факты.Добавить();

                                               строкатз.СтруктураКомпании = СтруктураКомпании;

                                               строкатз.Факт = ко;

                                               строкатз.ЦелевойПоказатель = цп;

                                               строкаТЗ.Период = КонДата;

                                               строкаТЗ.комментарий = "загружено автоматически";

 

                                               Попытка

                                                           Док.Записать(РежимЗаписиДокумента.Проведение);

                                               Исключение

                                                           Сообщение = Новый СообщениеПользователю;

                                                           Сообщение.Текст = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());

                                                           Сообщение.Сообщить();

                                               КонецПопытки;

                                              

                                   КонецЦикла;

                        КонецЕсли;

                        Индекс = Индекс-1;             

            КонецЦикла;

           

КонецПроцедуры

 

Процедура ЗаполнитьПоказатели(НачДата, КонДата)

 

            КаталогТемп = Константы.KPI_КаталогДляОбмена.Получить();

            НайденныеФайлы = НайтиФайлы(КаталогТемп, "*.txt");

 

            Для Каждого Фл из НайденныеФайлы Цикл

                        ПолныйПуть = КаталогТемп + "\" + Фл.Имя;

                        ЗагрузитьДанныеИзФайлаНаСервере(ПолныйПуть,Фл.ИмяБезРасширения, начДата,КонДата);

            КонецЦикла;

 

            Для Каждого Фл из НайденныеФайлы Цикл

                        УдалитьФайлы(Фл.ПолноеИмя);

            КонецЦикла;

           

КонецПроцедуры

 

//////////////////////////////////////////////////////////////////////////////////////

Процедура ДляРегламентногоЗадания () Экспорт

 

            НачДата = НачалоКвартала(Началомесяца(ТекущаяДата())-10);

            конДата = КонецМесяца(Началомесяца(ТекущаяДата())-10);

            ЗаполнитьПоказатели(НачДата, КонДата);

           

КонецПроцедуры