8.х Регламентное задание по отправке отчетов на почту

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Margosha2502, 10 авг 2016.

  1. TopicStarter Overlay
    Margosha2502
    Offline

    Margosha2502

    Регистрация:
    10 авг 2016
    Сообщения:
    5
    Симпатии:
    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";

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

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

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

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Вам необходимо получать саму внешнюю обработку в виде двоичных данных, сохранять ее во временный файл и создавать внешнюю обработку из этого временного файла. В синтаксис-помощнике, вроде, есть пример кода.
    Margosha2502 нравится это.
  3. bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    329
    Симпатии:
    23
    Баллы:
    29
    имхо, обработка при успешном подключении хранится в справочнике Дополнительные отчеты и обработки. Можно по наименованию найти эти отчеты, а по полученной ссылке уже получить объект и собственно макеты внешнего отчета, но я бы советовал не ковырять внешние обработки, а добавил СКДшные схемы в какое-то стандартное хранилище... например в справочник Файлы отлично всё влазит. Ну и регистратором какой-то документ выбрать
    --- Объединение сообщений, 11 авг 2016 ---
    кстати, в УТ11 есть стабильный механизм отправки почты без возни... всё что требуется сделать - сформировать исходящий электронный документ, а дальше по накатанной
  4. TopicStarter Overlay
    Margosha2502
    Offline

    Margosha2502

    Регистрация:
    10 авг 2016
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Спасибо большое!

Поделиться этой страницей