[Расширение] Доработка рассылки отчетов, отчет в теле письма

05.07.19

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

Я очень люблю механизм рассылки отчетов из БСП - достаточно гибкий, универсальный. Активно пользуюсь им для того, чтобы получать оповещения из программы о том, что "что-то идёт не так"... Однако, и в нем есть что улучшить.

Скачать исходный код

Наименование Файл Версия Размер
[Расширение] Доработка рассылки отчетов, отчет в теле письма.:
.cfe 5,22Kb
50
.cfe 5,22Kb 50 Скачать

В механизме рассылки отчетов из БСП есть замечательная настройка - "Отправлять пустой". По умолчанию она выключена. Если включена - в любом случае приходит письмо или в папке появляется файл с пустым содержимым. Но если отключена, отчет придет только в том, случае, если в нем что-то есть. Этим мы активно пользуемся для оповещений себя и пользователей о проблемах в программе, авариях, неверных настройках и неправильных данных. У меня есть набор отчетов-сигнализаторов и я ими обязательно поделюсь, но сейчас я хочу рассказать о доработке рассылки отчетов, которая сэкономила лично мне и многим пользователям достаточно много времени.

Итак. Неудобство рассылки - в наличии вложений файлов. Конечно, когда рассылка используется для отправки огромных портянок директорам, это единственный способ донести до них информацию. Но мы-то используем рассылку для оповещений о проблеме, нам нужно быстро видеть,что отправила программа, чтобы отреагировать как можно быстрее.

Представьте или вспомните как это обычно бывает:

  • Приходит письмо
  • Мы видим факт прихода письма, его тему, но конкретики нет
  • Открываем письмо
  • Открываем вложение
  • Вдумчиво читаем
  • Реагируем

Классно было бы сократить это до операций:

  • Пришло письмо
  • В шторке телефона или в окне оповещений Windows видим содержимое письма
  • Реагируем

Но мы же программисты, можем помочь сами себе и облегчить себе же жизнь!

Давайте сделаем какое то ключевое слово, если мы его напишем в шаблоне письма, программа поймет, что ей нужно вставить содержимое отчетов в текстовую часть е-мейла. Пусть это будет 

[ОтчетыВТелеПисьма]

напишем так в стиле имеющихся ключевых слов шаблона рассылки отчета.

С помощью расширения попробуем встроиться в процедуру рассылки отчетов. Нам надо попасть в такое место, чтобы отчеты были уже сформированы, но само письмо еще нет. Ознакомимся с кодом из общих модулей "РассылкаОтчетов". Хорошо подойдет процедура "ОтправитьОтчетыПолучателю", у нее есть параметры - "Вложения", "ПараметрыДоставки". Идеально!

Слава расширениям, мы можем выполнить свой код с директивой

&Перед("ОтправитьОтчетыПолучателю")

И ничего не сломаем.

Нам нужно обратиться к ПараметрыДоставки.ШаблонТекста, понять, что нужно вставить содержимое файлов в текстовую часть письма. Дальше прочитать Вложения, перевести их в текст, вставить этот текст вместо ключевого слова шаблона. Звучит очень просто, давайте уже напишем код.

&Перед("ОтправитьОтчетыПолучателю")
Процедура У_ОтправитьОтчетыПолучателю(Вложения, ПараметрыДоставки, СтрокаПолучатель)
	
	ШаблонТекста = ПараметрыДоставки.ШаблонТекста;
	Если СтрНайти(ШаблонТекста, "[ОтчетыВТелеПисьма]") = 0 Тогда
		Возврат;
	КонецЕсли;
	
	ТекстыВложений = "";
		
	Для Каждого Вложение Из ПреобразоватьВСоответствие(Вложения, "Ключ", "Значение") Цикл
		Если Не ФорматПисьмаПригоденДляРассылки(Вложение.Ключ) Тогда
			Продолжить;
		КонецЕсли;
		ТекстыВложений = ТекстыВложений + Символы.ПС;
		Чтение = Новый ЧтениеТекста(Вложение.Значение);
		ТекстыВложений = ТекстыВложений  + Чтение.Прочитать();
	КонецЦикла;
	
	Если ПараметрыДоставки.ПисьмоВФорматеHTML Тогда
		ТекстыВложений = СтрЗаменить(ТекстыВложений, Символы.ПС, "<br>");
	КонецЕсли;
		
	ПараметрыДоставки.ШаблонТекста = СтрЗаменить(ШаблонТекста, "[ОтчетыВТелеПисьма]", ТекстыВложений); 

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

Функция ФорматПисьмаПригоденДляРассылки(НаименованиеФайла)
	
	Если Прав(НаименованиеФайла, 3) = "txt" ИЛИ Прав(НаименованиеФайла, 4) = "html" Тогда
		Возврат Истина;
	Иначе
		Возврат Ложь;
	КонецЕсли;
		
КонецФункции

Обычно письмо о проблеме выглядит так:

Ясно, понятно. Только у нас куча этих обработок, одновременно запущенных, под разные версии, разные порты. Как понять, какая именно зависла? Открываю письмо, открываю вложение, читаю.

Нет, сделаем проще! Смотрите как классно:

Из стандартного оповещения Windows я вижу не только то, что пришло письмо о проблеме, но и конкретную проблему. Я даже не открою это письмо, потому что уже знаю его содержимое, я просто сразу отреагирую - зависла обработка, запущенная на порту 1242. Чиню.

В публикации выложен файл расширения с доработкой рассылки отчетов. Проверен на версии БСП 3.0.1.434, возможно будет работать на более старых версиях (модуль рассылки отчетов менялся не сильно).

 
 Как пользоваться
  1. Устанавливаем расширение
  2. Создаем рассылку отчетов с нужной вам информацией.
  3. Проверяем формат отправляемых файлов - должен быть текстовый или html, не запакованный в архив.
  4. В шаблоне рассылки пишем волшебную фразу [ОтчетыВТелеПисьма] (именно так, с квадратными скобками)
  5. Получаем письма из вашей 1С.

Расширение рассылка отчетов БСП

См. также

"Акты сверки +" Групповая подготовка и рассылка актов сверки для Бухгалтерии 3.0.

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

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

3000 руб.

25.11.2020    22401    181    5    

162

Автоматическая рассылка отчетов из 1С: Управление торговлей 10.3 и 1С:УПП по электронной почте

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

Многим сотрудникам предприятия требуется актуальная и достоверная информация для принятия верных управленческих решений. Получить данную информацию можно при помощи отчетов, существующих в конфигурации «1С: Управление торговлей 10.3» или «1С:УПП». Но не всегда у пользователей есть время, возможность и/или желание формировать отчеты непосредственно в системе. Намного привычней и удобней получать готовые отчеты на электронную почту, не открывая 1С.

12000 руб.

16.04.2014    84370    100    91    

94

Email, SMS, Telegram рассылки из 1С - Директ Маркетинг

Управление взаимоотношениями с клиентами (CRM) Мессенджеры и боты SMS рассылки Email рассылки Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Полный набор инструментов для качественных транзакционных и маркетинговых Email, SMS, Telegram рассылок из 1С. Даже простые уведомления об оплате счетов способны существенно упростить сбор дебиторской задолженности. Применение всех возможностей прямого маркетинга выводит коммуникацию с клиентами, уровень сервиса и лояльность на новый уровень.

7788 руб.

07.04.2014    83827    41    191    

128

Групповое создание актов сверок

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

Обработки предназначены для массового создания актов сверки и отправки их по электронной почте для конфигураций Управление торговлей 10.3. и Бухгалтерия предприятия 3.0. Для Бухгалтерии 3.0 Разработка велась на 1С:Предприятие 8.3 (8.3.15.1830). проверялась на Бухгалтерия предприятия 3.0 (3.0.71.83) и 3.0.76.77 Для Управление торговлей 10.3 Разработка велась на 1С:Предприятие 8.3 релиз конфигурации (10.3.61.2) . РАБОТАЕТ НА БАЗОВЫХ и ПРОФ. ВЕРСИЯХ.

2000 руб.

24.04.2020    30518    120    66    

100

Массовая рассылка печатных форм любых документов по электронной почте

Email рассылки Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

3600 руб.

30.06.2022    9127    63    88    

26

Групповое формирование, согласование, печать и отправка по e-mail актов сверок взаиморасчетов (Бухгалтерия предприятия, ред. 3.0)

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

Указывайте любой период, список организаций, контрагентов, видов договоров (с покупателем, с поставщиком и др.), счетов бухгалтерского учёта, валюту, необходимость детализации по договорам, список печатных форм и форматов их сохранения, а затем формируйте, согласовывайте, контролируйте, печатайте и отправляйте по e-mail готовые акты сверок прямо из 1С: Бухгалтерия предприятия, ред. 3.0.

9000 руб.

03.04.2018    30646    64    24    

64
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. qeos 116 02.02.21 17:59 Сейчас в теме
что со скриншотами?
+
2. ardn 627 02.02.21 18:15 Сейчас в теме
(1) Поясните вопрос
+
3. qeos 116 04.02.21 17:01 Сейчас в теме
(2) скриншоты отображаются в публикации нормально? или так задумано?
что за обработка Моби-С
+
4. TariK 28.04.22 09:57 Сейчас в теме
Что с скринами? Исправьте!
+
5. ardn 627 28.04.22 11:37 Сейчас в теме
(4)
В данной публикации имеется два изображения. На данный момент они оба отображаются нормально, вставлены через движок сайта.
+
6. user_2010 894 28.04.22 13:12 Сейчас в теме
(5) с изображениями проблема - все они закрыты другой картинкой "Не работает обработка Моби-С"
+
8. ardn 627 28.04.22 13:28 Сейчас в теме
(6)
Давайте вместе попробуем проанализировать текст статьи и приведенные тут изображения.
В тексте имеются следующие слова:
Представьте или вспомните как это обычно бывает:

Приходит письмо
Мы видим факт прихода письма, его тему, но конкретики нет
Открываем письмо
Открываем вложение
Вдумчиво читаем
Реагируем
Классно было бы сократить это до операций:

Пришло письмо
В шторке телефона или в окне оповещений Windows видим содержимое письма
Реагируем
Показать

Первая картинка предваряется словами:
Обычно письмо о проблеме выглядит так:

Далее следует изображение области уведомлений Windows с уведомлением о пришедшем письме.

На втором изображении также область уведомлений, только письмо другое, более информативное. Даже строки под этим изображением дают понять, что картинка отличается:
Из стандартного оповещения Windows я вижу не только то, что пришло письмо о проблеме, но и конкретную проблему. Я даже не открою это письмо, потому что уже знаю его содержимое, я просто сразу отреагирую - зависла обработка, запущенная на порту 1242. Чиню.


На мой взгляд, изображения соответствуют тексту. Что вы думаете по этому поводу?
+
10. user_2010 894 28.04.22 13:56 Сейчас в теме
(8) все ваши картинки - закрыты какой-то другой картинкой с текстом типа "Не работает обработка Моби-С".
Может быть вы видите свои картинки нормально. Я же вижу вместо ваших картинок - одну и туже - с текстом "Не работает обработка Моби-С".
+
7. user_2010 894 28.04.22 13:28 Сейчас в теме
Вопрос гуру рассылок.
У рассылки есть параметр "Отправлять пустой". Этот флаг не установлен. Т.е. пустые отчеты не должны приходить.
Каким образом программа определяет - пустой результат или не пустой?

Наблюдаю отправку письма в любом случае - даже если в отчете нет ни одной строки - только шапка отчета.
В чем может быть проблема? Как победить это?
Спасибо!
+
9. ardn 627 28.04.22 13:36 Сейчас в теме
(7)
Исследовал этот вопрос.

Программа не делает чуда, фактически схема СКД исполняется два раза - первый раз с выводом в таблицу значений, чтобы узнать, есть ли строки, пустой ли отчет, второй раз - чтобы сформировать табличный документ. Да, оптимальность, это не про этот механизм.

По поводу проверки на пустоту - в коде есть проверка, используются ли в схеме СКД внешние источники данных или данные, подставленные в схему из таблицы значений. (иногда так делаем при программном формировании отчета)
Например так
ВнешниеНаборыДанных = Новый Структура("тз...", тз...);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина);
В этом случае рассылка считает, что результат будет не пустой всегда.
Ranetka; +1
11. user_2010 894 28.04.22 13:58 Сейчас в теме
(9) понятно! спасибо! у меня как раз внешний набор данных.
+
15. Ranetka 23 23.11.22 13:58 Сейчас в теме
(9) Вот просто спасибо за разбор проблемы с отправкой пустого. Сэкономили кучу времени.
ardn; +1
12. user1209971 74 30.05.22 09:24 Сейчас в теме
#Вставка                           
	Если СтрНайти(ШаблонТекста, "[ОтчетыВТелеПисьма]") > 0 Тогда
		
		ТекстыВложений = "";
		Для Каждого Вложение Из ПараметрыПисьма.Вложения Цикл
			Если Не ФорматВложенияПригоденДляВставкиВТелоПисьма(Вложение.Ключ) Тогда
				Продолжить;
			КонецЕсли;
			ТекстыВложений = ТекстыВложений + Символы.ПС;
			Чтение = Новый ЧтениеТекста(Вложение.Значение);
			ТекстыВложений = ТекстыВложений  + Чтение.Прочитать();
		КонецЦикла;
		
		Если ПараметрыДоставки.ПисьмоВФорматеHTML Тогда
			ТекстыВложений = СтрЗаменить(ТекстыВложений, Символы.ПС, "");
		КонецЕсли;
			
		ШаблонТекста = СтрЗаменить(ШаблонТекста, "[ОтчетыВТелеПисьма]", ТекстыВложений);
	КонецЕсли; 
#КонецВставки
Показать


Измененный вариант в расширении процедуры &Вместо (с контролем)

После получения текста шаблона в процедуре ОтправитьОтчетыПолучателю
ШаблонТекста = ПараметрыДоставки.ШаблонТекста;


Это решение на случай, когда получатель не один, а несколько, то есть рассылка каждому контрагенту (пользователю) по отдельности,
когда каждому нужно вставить в его письмо свой текст из вложения.
Вариант описанный в статье, заменяет текст в шаблоне для всех получателей писем по данным вложения для первого получателя
ardn; +1
13. ardn 627 30.05.22 09:25 Сейчас в теме
(12)
заменяет текст в шаблоне для всех получателей писем по данным вложения для первого получателя

Спасибо!
+
14. user1209971 74 30.05.22 12:48 Сейчас в теме
(13) Взаимно, мне тоже времени сэкономили :)
+
16. blandinko 13.04.23 16:27 Сейчас в теме
подскажите, пожалуйста, а можно ли добавить таблицу отчета в тело письма?
+
17. ardn 627 13.04.23 16:40 Сейчас в теме
(16)

Да, конечно
Я письмо в формате html прикрепляю
Прикрепленные файлы:
+
18. blandinko 13.04.23 17:27 Сейчас в теме
(17) у меня тоже письмо в формате html, отчет - html, в итоге в тексте письма сначала почему-то выводится кусок кода html, как на втором скриншоте, а потом таблица отчета
Прикрепленные файлы:
+
19. blandinko 14.04.23 11:24 Сейчас в теме
Спасибо Вам большое за доработку, очень полезно.

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

Пока что никак не получается, ни границы, ни форматирование не применяются к таблице в теле письма...
+
Оставьте свое сообщение