Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 09:28

Механизм автоматической отправке отчетов на почту

Автор Маргарита, 10 авг 2016, 19:33

0 Пользователей и 1 гость просматривают эту тему.

Маргарита

Здравствуйте. Требуется создать регламентное задание по автоматической отправке отчетов на почту.
Создала общий модуль, в котором прописала:
1) Общую процедуру, запускаемую из фонового задания:
Процедура Отчет() Экспорт
ТекстПисьма = "Отчет по ... за " + Строка(НачалоДня(ТекущаяДата())-60*60*16) + " - " + Строка(НачалоДня(ТекущаяДата())+60*60*8) + Символы.ПС;
Таб = СоздатьОтчет(ТекстПисьма);

ПутьКФайлу = "C:\Users\Public\";
ИмяФайла = "temp.xls";
ПолноеИмяФайла = ПутьКФайлу+ИмяФайла;

ВыгрузитьТДвФайл(Таб, ПолноеИмяФайла, ТекстПисьма);

ОтправкаУведомлений(ТекстПисьма, ПолноеИмяФайла);
КонецПроцедуры


2) Формирование отчета
Функция СоздатьОтчет(ТекстПисьма)
Таб = Новый ТабличныйДокумент;
Попытка
//Получаем схему из макета
СхемаКомпоновкиДанных = Отчеты.УниверсальныйОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
//Из схемы возьмем настройки по умолчанию
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
//Настроим период
НачальнаяДата = Настройки.ПараметрыДанных.Элементы.Найти("НачальнаяДата");
НачальнаяДата.Значение = НачалоДня(ТекущаяДата())-60*60*16;
КонечнаяДата = Настройки.ПараметрыДанных.Элементы.Найти("КонечнаяДата");
КонечнаяДата.Значение = НачалоДня(ТекущаяДата())+60*60*8;

//Помещаем в переменную данные о расшифровке данных
Расшифровка = Новый ДанныеРасшифровкиКомпоновкиДанных;
//Формируем макет, с помощью компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
//Передаем в макет компоновки схему, настройки и данные расшифровки
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, Расшифровка);
ВнешниеПараметры = Новый Структура;
//Выполним компоновку с помощью процессора компоновки
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеПараметры, Расшифровка);
//Выводим результат в табличный документ
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Таб);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);
Возврат Таб;

Исключение
ТекстПисьма = ТекстПисьма + "Ошибка при создании отчета! " + ОписаниеОшибки() + Символы.ПС;
Возврат Таб;
КонецПопытки;
КонецФункции
3) Сохранение в файл (Excel):

Процедура ВыгрузитьТДвФайл(Таб, ПолноеИмяФайла, ТекстПисьма)
Попытка
Таб.Записать(ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS);

Исключение
ТекстПисьма = ТекстПисьма + "Не удалось создать файл! " + ОписаниеОшибки() + Символы.ПС;
КонецПопытки;
КонецПроцедуры

4) Отправление почту:

Процедура ОтправкаУведомлений(ТекстПисьма, ПолноеИмяФайла)
ИПП = Новый ИнтернетПочтовыйПрофиль;
ИПП.АдресСервераSMTP = "mail.ru";
ИПП.ПарольSMTP = "pass";
ИПП.ПользовательSMTP = "login";
ИПП.ПортSMTP = 25;

Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Кодировка = "UTF-8";
Сообщение.Получатели.Добавить("1@mail.ru");
Сообщение.Получатели.Добавить("2@mail.ru");

Сообщение.Отправитель.Адрес = "0@mail.ru";

Сообщение.Тема = "Регл.задание: Отчет";
Попытка
Сообщение.Вложения.Добавить(ПолноеИмяФайла,"Отчет");
Исключение
ТекстПисьма = ТекстПисьма + "Не удалось добавить вложение! " + ОписаниеОшибки() + Символы.ПС;
КонецПопытки;
Сообщение.Тексты.Добавить(ТекстПисьма);

Почта = Новый ИнтернетПочта;
Почта.Подключиться(ИПП);
Почта.Послать(Сообщение);
Почта.Отключиться();
КонецПроцедуры.

Код написан для внутреннего отчета. А нужно для внешнего отчета. Как получить систему компоновки данных для внешнего отчета? Подскажите, пожалуйста

LexaK

для БСП20 упр.формы
есть справочник ДополнительныеОтчетыИОбработки, там регистрируете свой внешний отчет.

программно его можно получить по команде


    //ссылка - элемент справочника ДополнительныеОтчетыИОбработки с вашим отчетом
    лкОтчет = ДополнительныеОтчетыИОбработки.ПолучитьОбъектВнешнейОбработки(Ссылка);
    ...


примерно такой-же механизм есть и для БСП1.2

какая у вас конфигурация вы не написали.
если помогло нажмите: Спасибо!

Похожие темы (5)

Рейтинг@Mail.ru

Поиск