Отправка отчетов (или других табличных документов) из 1С по электронной почте.

09.02.15

Интеграция - Email рассылки

Автоматизация (регламентное задание) рассылки отчетов (или других табличных документов) из 1С по электронной почте.

Здравствуйте, уважаемые форумчане. Чтобы ответить на 1 вопрос (я типо экстрасенс) оставлю ссылку с поиском, так как сам недавно нуждался, но пришлось все собирать по кирпичикам: Поиск
А теперь 2 вопрос - Зачем?
Итак, руководству понадобилось получать отчет по производству к началу планерки, сперва шло все хорошо - девочка на поддержке заходила в 1С, создавала отчет, сохраняла в Excel и всем отправляла. но наступил кризис, девочку сократили, а от отчета никто не отказался. Вот собственно для автоматизации всего этого процесса и было решено добавить регламентное задание, создать отчет, сохранить в читаемый (любимый для руководителй) тип файла и отправить по электронке.



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

Вот собственно всего 4 несложных процедурки и у нас все готово для настройки регламентного задания: Имя метода выбираем наш общий модуль с 1 процедурой (ОтправкаОтчетов.Отчет) и настраиваем расписание.


Теперь и руководство довольно - все вовремя приходит, и нам (программистам/администраторам 1С) время не надо тратить.

автоматизация отчет электронная почта фоновое задание регламентное задание

См. также

Взаиморасчеты Email рассылки Акт сверки Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Внешняя обработка для Бухгалтерии 3.0 - позволяет автоматически формировать документы «Акт сверки расчетов» с контрагентами за выбранный период с последующей фоновой отправкой на почту контрагента.

3000 руб.

25.11.2020    24549    240    8    

206

SALE! 20%

Email рассылки Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Решение для массовой рассылки печатных форм (в том числе и дополнительных) любых документов, и произвольных файлов. Рассылка возможна посредством электронной почты, Telegram и файловой системы. Рассылка пакета документов. Добавление факсимильных печати и подписи. Произвольные шаблоны HTML/Simple text с автозаполнением любыми полями документа. Любые форматы файлов. Упаковка вложений в архив. Транслитерация имен файлов. Разбиение рассылки на произвольные порции. Обход спам-фильтров. Журналирование рассылок.

4920 3936 руб.

30.06.2022    11079    72    98    

34

Взаиморасчеты Email рассылки Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Обработка позволяет автоматически сформировать акты сверок на почту контрагентов (почта берется из контактных данных контрагента). При формировании акта сверки формируется подпись с указанием контактов для связи с бухгалтерией нашей организации (формируется исходя из контактов из карточки организации). Присутствует возможность ручного редактирования электронной почты контрагента для отправки. Отправка осуществляется с системной записи электронной почты. В случае, если у контрагента нет адреса электронной почты, эти контрагенты будут выведены в отдельной табличной части. Это очень удобно, так как сразу наглядно виден список контрагентов, которым невозможно отправить акты сверок!

7080 руб.

11.05.2021    9492    6    1    

6

Email рассылки Взаиморасчеты Акт сверки Бухгалтер Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Обработка для конфигурации Управление торговлей 10.3 (КА 1.1, УПП 1.3), которая автоматически формирует акты сверок взаиморасчетов, позволяет их скопом распечатать и разослать по электронной почте контрагентам.

2160 руб.

08.02.2018    31497    47    0    

54
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Danil.Potapov 517 09.02.15 16:13 Сейчас в теме
рекомендую за основу брать подсистему рассылки отчетов от 1с в БСП.
zoikins; sapervodichka; +2 Ответить
2. DoctorRoza 09.02.15 16:27 Сейчас в теме
Самый простой, рабочий вариант.
criptid; kokman; +2 Ответить
3. burlakov 83 09.02.15 16:33 Сейчас в теме
давно подобный механизм сам реализовывал. только тут не хватает много чего еще.
1. справочник рассылок нужен
2. сформированные сообщения надо ставить в очередь и задание должно отправлять их каждые 5 мин допустим
3. все настройки должны задаваться, а не в коде писаться напрямки. изменят вам сервер - в код полезете переделывать?
4. помимо отчетов это можно использовать для информирования групп пользователей о любы событиях в системе (например о создании элемента справочника или проведении документа (в т.ч. с описаниями изменений по версионированию))

если кому интересно могу выложить такой механизм.
4. bashinsky 135 09.02.15 16:37 Сейчас в теме
5. burlakov 83 09.02.15 16:39 Сейчас в теме
(4) bashinsky, хорошо. сделаю вариант решения сбоку и выложу на днях. у нас работает уже четвертый год - вполне успешно.
6. bashinsky 135 09.02.15 16:52 Сейчас в теме
(5) burlakov, Спасибо, буду ждать.
7. succub1_5 91 09.02.15 16:56 Сейчас в теме
(3) burlakov, согласен - совершенству нет предела =)
1) в конечной версии у нас из excel файла берется список абонентов
2) зачем? более 30 абонентов всем приходит
3) да, а можно из настроенного почтового профиля брать
4) так я получается сразу 3 момента описал: программная отправка почтовых сообщений (много для чего нужно), программное создание отчета из СКД и 1 строчная выгрузка полученного табличного документа в excel
=)
user914179; +1 Ответить
9. burlakov 83 10.02.15 07:59 Сейчас в теме
(7)

очередь нужна на случай если упадет почтовик. у нас тоже вначале ее не было. много проблем было с потерями из-за этого периодически. а потом я придумал очередь и про проблемы вообще забыли.
10. succub1_5 91 10.02.15 08:09 Сейчас в теме
(9) burlakov, понятно, мы пока не сталкивались, но я был бы очень признателен за код, отвечающий за формирование очереди =)
11. GreenDragon 10.02.15 09:54 Сейчас в теме
(9) burlakov, реализовать очередь через регистр сведений, в случае успешной отправки отмечать записи или удалять их. Я правильно понял мысль? Сейчас как раз пишу подобное для отправки печатных форм документов клиентам(регламентным заданием).
12. succub1_5 91 10.02.15 10:48 Сейчас в теме
(11) GreenDragon, кстати сам принцип отправки писем интересен: 1) если 1С отправляет все данные скопом на почтовый сервер, то очередь (хотя зачем - по идее одно письмо рассылается 20+ адресатам) формировать на самом сервере, 2) если же в 1С формировать разные письма (в силу каких-то условий: разный тест сообщения, разные прикрепляемые файлы, разные заголовки тем и т.п.) - то да уже в 1С формировать очередь и отчет по отправке.
8. LexSeIch 211 10.02.15 06:19 Сейчас в теме
Мир этому дому!
Как раз столкнулся с подобной задачей в маленькой самописной системе. Автору большое спасибо.
user914179; +1 Ответить
13. burlakov 83 10.02.15 16:21 Сейчас в теме
выложил свой механизм по Вашим просьбам http://infostart.ru/public/329175/
14. jaroslav.h 180 18.06.15 23:12 Сейчас в теме
Дякую, реально робочий варіант, багато часу зекономив, дякую тобі добра людино! Дякую!
15. simgo83 71 20.03.16 19:30 Сейчас в теме
Спасибо, реально помогло для розницы 2.0
16. mila1231 30.05.16 07:59 Сейчас в теме
лучше поздно, чем никогда)) встал вопрос о формировании отчёта в фоновом режиме..
вопрос в том, как поступить, если отчёт формируется в табличный документ по запросу, т.е по сути как заполнить сам макет??
17. Manticor 66 17.08.17 20:24 Сейчас в теме
Как обойти эту ошибку при отрпавке??

Ошибка при вызове метода контекста (Подключиться): Can't connect to mail.ru,25: Refused
18. Shurgent 11 22.08.17 09:30 Сейчас в теме
(17) На сколько я понимаю, mail.ru, как и другие почтовые службы, уже давно перешли на SSL и на 25-й порт подключиться не удастся. Нужно использовать порт 465 и устанавливать признак использования SSL:
ИПП.ПортSMTP = 465;
ИПП.ИспользоватьSSLSMTP = Истина;
19. kostyaspb010 29.03.19 15:54 Сейчас в теме
Добрый день! А куда 3 остальных модулю поместить? 1 -ый в общий модуль, это понятно.
20. user1202361 13.04.19 19:34 Сейчас в теме
Спасибо, очень интересная статья.
21. vladimir-89 26 18.04.19 10:26 Сейчас в теме
22. mpeg1989 131 28.02.20 15:45 Сейчас в теме
Открою маленький секрет, но как минимум в современных конфигурациях (в 2015г таким вопросом не задавался) в шапке отчета есть кнопочка в виде конверта, и там можно настроить регламентную рассылку отчета.
23. tfel 6 15.12.20 12:17 Сейчас в теме
(22) как минимум в БП в стандартных бухгалтерских отчетах отправка по емейлу есть, но вот настройки регламентной отправки нет. да и вообще, стандартные бухотчеты не отправляются
24. user1480726 22.07.21 09:37 Сейчас в теме
(22) Даже сейчас не во всех конфигурациях есть конвертик, для отправки. а тогда о нем и думать не могли, как по мне :)
25. JannetP 16.09.22 11:56 Сейчас в теме
Не корректно так получать настройки, нужно это делать через компоновщик:

НашОтчет = Отчеты.УниверсальныйОтчет.Создать();
НастройкиОтчета = НашОтчет.КомпоновщикНастроек.ПолучитьНастройки(); 
СхемаКомпоновкиДанных = НашОтчет.СхемаКомпоновкиДанных; 
26. vp1c 10.11.22 11:38 Сейчас в теме
как в функцию СоздатьОтчет добавить отбор, например по организации или по складу?
Оставьте свое сообщение