В начало

Рассылка программного отчета на почту

 

Листинг. Общий модуль

Функция ТЗизБП(Знач Организация)

           

            Выборка = Справочники.ПараметрыПодключенияКСервисуДЗФЛ.Выбрать();

           

            Пока Выборка.Следующий() Цикл 

                        Если Выборка.ПометкаУдаления = Ложь И

                                    Выборка.Организация = Организация Тогда

                                    

                                   Соединение = Новый HTTPСоединение(Выборка.АдресПубликации, Выборка.Порт, Выборка.Логин, Выборка.Пароль,,30,,);

                                  

                                   ДатаНачала = НачалоГода(ТекущаяДата());

                                   ДатаОкончания = ТекущаяДата();

                                  

                                   Заголовки = Новый Соответствие;             

                                   Заголовки.Вставить("Content-Type", "application/json");

                                                                      

                                   Запрос = Новый HTTPЗапрос("/" + Выборка.Наименование + "/hs/DZFL/tz/" + ДатаНачала + "/" + ДатаОкончания, Заголовки);

                                   Результат2 = Соединение.ВызватьHTTPМетод("GET", Запрос);

                                  

                                  

                                   Если Результат2.КодСостояния = 200 Тогда    

                                               ТЗ = ЗначениеИзСтрокиВнутр(Результат2.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8)); 

                                               Прервать;

                                   Иначе 

                                               Возврат Неопределено;

                                   КонецЕсли;

                                                                      

                        КонецЕсли;

            КонецЦикла;

           

            Если ЗначениеЗаполнено(ТЗ) Тогда

                        Возврат ТЗ;

            Иначе

                        Возврат Неопределено;

            КонецЕсли;   

           

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

 

Функция ОтчетСверкиВТабДок(Знач ДатаДокументаНачало, Знач ДатаДокументаКонец, Знач Организация)

           

            МойЗапрос = Новый Запрос;

           

            МойЗапрос.Текст = "ВЫБРАТЬ

                              |     1 КАК ДокЕсть,

                              |     ПоступлениеНаРасчетныйСчет.ДатаДокумента КАК ДатаДокумента,

                              |     ПоступлениеНаРасчетныйСчет.НомерДокумента КАК НомерДокумента,

                              |     ПоступлениеНаРасчетныйСчет.СуммаДокумента КАК СуммаДокумента,

                              |     ПоступлениеНаРасчетныйСчет.НомерСП КАК НомерСП,

                              |     ПоступлениеНаРасчетныйСчет.ДатаСП КАК ДатаСП,

                              |     ПоступлениеНаРасчетныйСчет.НомерСудебногоУчастка КАК НомерСудебногоУчастка,

                              |     ПоступлениеНаРасчетныйСчет.Проведен КАК Проведен,

                              |     ПоступлениеНаРасчетныйСчет.Организация КАК Организация

                              |ПОМЕСТИТЬ втБП

                              |ИЗ

                              |     &ПРС КАК ПоступлениеНаРасчетныйСчет

                              |ГДЕ

                              |     ПоступлениеНаРасчетныйСчет.ДатаДокумента >= &ДатаДокументаНачало

                              |     И ПоступлениеНаРасчетныйСчет.ДатаДокумента <= &ДатаДокументаКонец

                              |;

                              |

                              |////////////////////////////////////////////////////////////////////////////////

                              |ВЫБРАТЬ

                              |     1 КАК ДокЕсть,

                              |     CRM_БизнесПроцессВзысканоПоИП.Период КАК ДатаДокумента,

                              |     CRM_БизнесПроцессВзысканоПоИП.НомерДокумента КАК НомерДокумента,

                              |     CRM_БизнесПроцессВзысканоПоИП.Сумма КАК СуммаДокумента,

                              |     CRM_БизнесПроцессВзысканоПоИП.Ссылка.НомерДелаСП КАК НомерСП,

                              |     CRM_БизнесПроцессВзысканоПоИП.Ссылка.ДатаПодачиВСудСП КАК ДатаСП,

                              |     CRM_БизнесПроцессВзысканоПоИП.Ссылка.СудебныйУчасток.Номер КАК НомерСудебногоУчастка,

                              |     ИСТИНА КАК Проведен,

                              |     CRM_БизнесПроцессВзысканоПоИП.Ссылка.Истец.Наименование КАК Организация,

                              |     CRM_БизнесПроцессВзысканоПоИП.Ссылка КАК БизнесПроцесс

                              |ПОМЕСТИТЬ втДЗФЗ

                              |ИЗ

                              |     РегистрСведений.РезультатОбменаЧерезСервисДЗФЛ КАК РезультатОбменаЧерезСервисДЗФЛ,

                              |     БизнесПроцесс.CRM_БизнесПроцесс.ВзысканоПоИП КАК CRM_БизнесПроцессВзысканоПоИП

                              |ГДЕ

                              |     CRM_БизнесПроцессВзысканоПоИП.Период >= &ДатаДокументаНачало

                              |     И РезультатОбменаЧерезСервисДЗФЛ.ДатаДокумента <= &ДатаДокументаКонец

                              |;

                              |

                              |////////////////////////////////////////////////////////////////////////////////

                              |ВЫБРАТЬ

                              |     ЕСТЬNULL(втБП.ДокЕсть, 0) КАК ДокЕстьБД,

                              |     ЕСТЬNULL(втДЗФЗ.ДокЕсть, 0) КАК ДокЕстьДЗФЗ,

                              |     втБП.ДатаДокумента КАК ДатаДокумента,

                              |     втБП.НомерДокумента КАК НомерДокумента,

                              |     ЕСТЬNULL(втБП.СуммаДокумента, 0) КАК Сумма,

                              |     втБП.НомерСП КАК НомерСП,

                              |     втБП.ДатаСП КАК ДатаСП,

                              |     втБП.НомерСудебногоУчастка КАК НомерСудебногоУчастка,

                              |     втБП.Проведен КАК Проведен,

                              |     втБП.Организация КАК Организация,

                              |     втДЗФЗ.БизнесПроцесс КАК БизнесПроцесс

                              |ПОМЕСТИТЬ срСуммы

                              |ИЗ

                              |     втБП КАК втБП

                              |                 ЛЕВОЕ СОЕДИНЕНИЕ втДЗФЗ КАК втДЗФЗ

                              |                 ПО втБП.ДатаДокумента = втДЗФЗ.ДатаДокумента

                              |                            И втБП.НомерДокумента = втДЗФЗ.НомерДокумента

                              |                            И втБП.СуммаДокумента = втДЗФЗ.СуммаДокумента

                              |                            И втБП.НомерСП = втДЗФЗ.НомерСП

                              |                            И втБП.ДатаСП = втДЗФЗ.ДатаСП

                              |                            И втБП.НомерСудебногоУчастка = втДЗФЗ.НомерСудебногоУчастка

                              |                            И втБП.Организация = втДЗФЗ.Организация

                              |                            И втБП.Проведен = втДЗФЗ.Проведен

                              |

                              |ОБЪЕДИНИТЬ

                              |

                              |ВЫБРАТЬ

                              |     ЕСТЬNULL(втБП.ДокЕсть, 0),

                              |     ЕСТЬNULL(втДЗФЗ.ДокЕсть, 0),

                              |     втДЗФЗ.ДатаДокумента,

                              |     втДЗФЗ.НомерДокумента,

                              |     ЕСТЬNULL(втДЗФЗ.СуммаДокумента, 0),

                              |     втДЗФЗ.НомерСП,

                              |     втДЗФЗ.ДатаСП,

                              |     втДЗФЗ.НомерСудебногоУчастка,

                              |     втДЗФЗ.Проведен,

                              |     втДЗФЗ.Организация,

                              |     втДЗФЗ.БизнесПроцесс

                              |ИЗ

                              |     втБП КАК втБП

                              |                 ПРАВОЕ СОЕДИНЕНИЕ втДЗФЗ КАК втДЗФЗ

                              |                 ПО втБП.ДатаДокумента = втДЗФЗ.ДатаДокумента

                              |                            И втБП.НомерДокумента = втДЗФЗ.НомерДокумента

                              |                            И втБП.СуммаДокумента = втДЗФЗ.СуммаДокумента

                              |                            И втБП.НомерСП = втДЗФЗ.НомерСП

                              |                             И втБП.ДатаСП = втДЗФЗ.ДатаСП

                              |                            И втБП.НомерСудебногоУчастка = втДЗФЗ.НомерСудебногоУчастка

                              |                            И втБП.Организация = втДЗФЗ.Организация

                              |                            И втБП.Проведен = втДЗФЗ.Проведен

                              |;

                              |

                              |////////////////////////////////////////////////////////////////////////////////

                              |ВЫБРАТЬ РАЗЛИЧНЫЕ

                              |     ВЫБОР

                              |                 КОГДА срСуммы.ДокЕстьБД = 1

                              |                            ТОГДА ""БП""

                              |                 КОГДА срСуммы.ДокЕстьДЗФЗ = 1

                              |                            ТОГДА "" ДЗФЗ""

                              |     КОНЕЦ КАК База,

                              |     срСуммы.ДатаДокумента КАК ДатаДокумента,

                              |     срСуммы.НомерДокумента КАК НомерДокумента,

                              |     срСуммы.Сумма КАК Сумма,

                              |     срСуммы.НомерСП КАК НомерСП,

                              |     срСуммы.ДатаСП КАК ДатаСП,

                              |     срСуммы.НомерСудебногоУчастка КАК НомерСудебногоУчастка,

                              |     срСуммы.Проведен КАК Проведен,

                              |     срСуммы.Организация КАК Организация,

                              |     срСуммы.БизнесПроцесс КАК БизнесПроцесс

                              |ИЗ

                              |     срСуммы КАК срСуммы

                              |ГДЕ

                              |     срСуммы.ДокЕстьБД <> срСуммы.ДокЕстьДЗФЗ";     

           

            ТЗ = ТЗизБП(Организация);           

           

            Если НЕ ЗначениеЗаполнено(ТЗ) Тогда

                        Возврат Неопределено;

            КонецЕсли;

           

            МойЗапрос.УстановитьПараметр("ПРС", ТЗ);

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

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

           

            Результат = МойЗапрос.Выполнить();   

           

            Если Результат.Пустой() Тогда

                        Возврат Неопределено;

            КонецЕсли;    

                       

            Выгрузка = Результат.Выгрузить();

           

            //Программное формирование отчета

            СКД=Отчеты.СверкаДокументаПРСизБазыДЗФЗсБазойБП.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

            Настройки=СКД.НастройкиПоУмолчанию; 

 

            //Задаем параметры

            Параметр1 = Настройки.ПараметрыДанных.Элементы.Найти("ДатаДокументаНачало");

            Параметр1.Значение = ДатаДокументаНачало;

            Параметр1.Использование = Истина;

 

            Параметр2 = Настройки.ПараметрыДанных.Элементы.Найти("ДатаДокументаКонец");

            Параметр2.Значение = ДатаДокументаКонец;

            Параметр2.Использование = Истина; 

           

            Параметр3 = Настройки.ПараметрыДанных.Элементы.Найти("Организация");

            Параметр3.Значение = Организация;

            Параметр3.Использование = Истина; 

           

            ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

            КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

    МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, Настройки, ДанныеРасшифровки);    

           

            ВнешнийНаборДанных = Новый Структура("НаборДанных1", Выгрузка);

            ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;

            ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);     

           

            ТабДок = Новый ТабличныйДокумент();

            ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

            ПроцессорВывода.УстановитьДокумент(ТабДок);

            ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

           

            Возврат ТабДок;

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

 

&НаСервере

Процедура ОтправитьПочтовоеСообщениеСОтчетом(Знач Почта, Знач Сообщение, Знач ИмяФайлаОтчета, Знач ПутьКОтчету)

 

Попытка        

    АдресПолучателя = Почта;

            АдресОтвета = "";

            ТемаПисьма = Сообщение;

            ТекстПисьма = Сообщение; 

           

            МодульРаботаСПочтовымиСообщениями = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениями");

            УчетнаяЗапись = МодульРаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись();  

           

            ПараметрыПисьма = Новый Структура;

            ПараметрыПисьма.Вставить("Кому", АдресПолучателя);

            ПараметрыПисьма.Вставить("УчетнаяЗапись", УчетнаяЗапись);                                                              

            ПараметрыПисьма.Вставить("АдресОтвета", АдресОтвета);

            ПараметрыПисьма.Вставить("Тема", ТемаПисьма);        

            ПараметрыПисьма.Вставить("Тело", ТекстПисьма);

            ПараметрыПисьма.Вставить("ТипТекста", "ПростойТекст");

 

            Вложения = Новый Соответствие;

            Вложения.Вставить(ИмяФайлаОтчета, Новый ДвоичныеДанные(ПутьКОтчету));

            ПараметрыПисьма.Вставить("Вложения", Вложения);  

                                  

            РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(УчетнаяЗапись, ПараметрыПисьма);          

Исключение

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

 

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

 

&НаСервере

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

           

            Выборка = Справочники.СписокРассылкиОтчетаСверки.Выбрать();

           

            Пока Выборка.Следующий() Цикл

 

                        Если Выборка.ПометкаУдаления Тогда

                                   Продолжить;

                        КонецЕсли;

                       

                        ИмяФайлаОтчета = "Отчет сверки.xls";

                        ВремФайл = КаталогВременныхФайлов() + ИмяФайлаОтчета;

                        ТекстПисьмаИЗаголовок = "Сверка документа ""Поступление на расчетный счет"" из базы ДЗФЗ с базой БП";

                        ТабДок = ОтчетСверкиВТабДок(НачалоГода(ТекущаяДата()), ТекущаяДата(), Выборка.Организация);  

                       

                        Если ТабДок <> Неопределено Тогда

                                   ТабДок.Записать(ВремФайл, ТипФайлаТабличногоДокумента.XLS);

                                                                      

                                   ОтправитьПочтовоеСообщениеСОтчетом(Выборка.Почта, ТекстПисьмаИЗаголовок, ИмяФайлаОтчета, ВремФайл);

                                  

                                   УдалитьФайлы(ВремФайл);         

                        КонецЕсли;

                       

            КонецЦикла;            

           

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