В начало

Выгрузка отчетов на ФТП

 

            Нужно отправить отчет в папку ФТП.

            Предварительно создаем некоторые объекты метаданных:

- внешнюю обработку;

- справочник с настройками «ПараметрыДляВыгрузкиНаФТП».

 

Листинг. Модуль внешней обработки

&НаСервере

Функция ОтчетОплатаГосПошлинВТабДок(Знач ДатаНачала, Знач ДатаОкончания)

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

           

            СКД = Отчеты.ОтчетОплатаГосПошлин.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

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

           

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

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

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

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

 

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

            Параметр2.Значение = ДатаОкончания;

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

           

            //Задаем отбор

    Отбор1 = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

    Отбор1.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НомерДелаСП");

    Отбор1.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;

                                              

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

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

           

            //Передаем в макет компоновки схему, настройки и данные расшифровки

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

            ВнешниеПараметры = Новый Структура;   

           

            //Выполним компоновку с помощью процессора компоновки

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

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

           

            //Выводим результат в табличный документ

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

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

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

           

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

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

 

&НаСервере

Функция ДолжникиДляВыгрузкиВЕДСЧерезФТП(Знач Город, Знач ДолгСУчетомОплатыТекущегоМесяца, Знач МесяцевДолга)

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

           

            СКД = Отчеты.ДолжникиДляВыгрузкиВЕДСЧерезФТП.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

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

           

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

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

            Параметр1.Значение = Справочники.F1_Города.НайтиПоНаименованию(Город);

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

 

            Параметр2 = Настройки.ПараметрыДанных.Элементы.Найти("ДолгСУчетомОплатыТекущегоМесяца");

            Параметр2.Значение = ДолгСУчетомОплатыТекущегоМесяца;

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

           

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

            Параметр3.Значение = МесяцевДолга;

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

                                                          

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

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

           

            //Передаем в макет компоновки схему, настройки и данные расшифровки

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

            ВнешниеПараметры = Новый Структура;   

           

            //Выполним компоновку с помощью процессора компоновки

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

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

           

            //Выводим результат в табличный документ

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

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

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

           

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

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

 

&НаСервере

Функция СписокНастроек()

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

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

                        "ВЫБРАТЬ

                        |           ПараметрыДляВыгрузкиНаФТП.Ссылка КАК Ссылка,

                        |           ПараметрыДляВыгрузкиНаФТП.Код КАК Код,

                        |           ПараметрыДляВыгрузкиНаФТП.Наименование КАК Наименование,

                        |           ПараметрыДляВыгрузкиНаФТП.Сервер КАК Сервер,

                        |           ПараметрыДляВыгрузкиНаФТП.Порт КАК Порт,

                        |           ПараметрыДляВыгрузкиНаФТП.Логин КАК Логин,

                        |           ПараметрыДляВыгрузкиНаФТП.Пароль КАК Пароль,

                        |           ПараметрыДляВыгрузкиНаФТП.Каталог КАК Каталог,

                        |           ПараметрыДляВыгрузкиНаФТП.SSL КАК SSL

                        |ИЗ

                        |           Справочник.ПараметрыДляВыгрузкиНаФТП КАК ПараметрыДляВыгрузкиНаФТП

                        |ГДЕ

                        |           ПараметрыДляВыгрузкиНаФТП.ПометкаУдаления = ЛОЖЬ";

           

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

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

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

           

            Масс = Новый Массив;

           

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

                       

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

                        Струк.Вставить("Наименование", Выборка.Наименование);

                        Струк.Вставить("Сервер", Выборка.Сервер);

                        Струк.Вставить("Порт", Выборка.Порт);

                        Струк.Вставить("Логин", Выборка.Логин);

                        Струк.Вставить("Пароль", Выборка.Пароль);

                        Струк.Вставить("Каталог", Выборка.Каталог);

                        Струк.Вставить("SSL", Выборка.SSL);

                       

                        Масс.Добавить(Струк);

                       

            КонецЦикла;

           

            Возврат Масс; 

           

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

 

&НаСервере

Функция СписокГородов()

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

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

                        "ВЫБРАТЬ

                        |           F1_Города.Ссылка КАК Ссылка,

                        |           F1_Города.Наименование КАК Город

                        |ИЗ

                        |           Справочник.F1_Города КАК F1_Города

                        |ГДЕ

                        |           F1_Города.ПометкаУдаления = ЛОЖЬ";

           

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

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

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

           

            Масс = Новый Массив;

           

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

                       

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

                        Струк.Вставить("Город", Выборка.Город);

                       

                        Масс.Добавить(Струк);

                       

            КонецЦикла;

           

            Возврат Масс; 

           

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

 

Функция ВыгрузкаДляНедолжникаРф() Экспорт

           

            Для Каждого Эл Из СписокНастроек() Цикл

                       

                        Если Эл.Наименование = "Недолжник.Рф - Выгрузка" Тогда

                                   //Незащищенное соединение

                                   FTPСоединение = Новый FTPСоединение(Эл.Сервер, Эл.Порт, Эл.Логин, Эл.Пароль, Неопределено, Истина, 0);

                                  

                                   ТабДок = ОтчетОплатаГосПошлинВТабДок(НачалоГода(НачалоГода(ТекущаяДата()) - 1), НачалоДня(ТекущаяДата()));//[Начало прошлого года], [Начало этого дня]

                                  

                                   ИмяФайла = "Оплата госпошлин " + Формат(ТекущаяДата(),"ДФ=yyyy-MM-dd") + ".xls";

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

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

                                  

                                   Попытка

                                               FTPСоединение.Записать(ТемпФайл, Эл.Каталог + "/" + ИмяФайла);

                                   Исключение   

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

                                  

                                   УдалитьФайлы(ТемпФайл);           

                        КонецЕсли;   

            КонецЦикла;

           

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

 

Функция ВыгрузкаДляЕДСЗаявки() Экспорт

           

            Для Каждого Эл Из СписокНастроек() Цикл

 

                        Если Эл.Наименование = "ЕДС Заявки - Выгрузка" Тогда

                                   //Защищенное соединение по ФТП

                                   SSL = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);

                                   FTPСоединение = Новый FTPСоединение(Эл.Сервер, Эл.Порт, Эл.Логин, Эл.Пароль, Неопределено, Истина, 0, SSL);

                                  

                                   Для Каждого Тек Из СписокГородов() Цикл

                                               ТабДок = ДолжникиДляВыгрузкиВЕДСЧерезФТП(Тек.Город, 20000, 2);                                  

                                               ИмяФайла = "Должники " + Тек.Город + " " + Формат(ТекущаяДата(),"ДФ=yyyy-MM-dd") + ".xls";

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

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

                                              

                                               Попытка

                                                           FTPСоединение.Записать(ТемпФайл, Эл.Каталог + "/" + ИмяФайла);  

                                                Исключение 

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

                                              

                                               УдалитьФайлы(ТемпФайл);           

                                   КонецЦикла;

                                  

                        КонецЕсли;   

                       

            КонецЦикла;

 

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

 

 

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

&НаКлиенте

Процедура ТестОтправки(Команда)

           

            ВыгрузкаДляНедолжникаРф();

            ВыгрузкаДляЕДСЗаявки();

                       

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