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

Публикация № 1057084

Обмен - Email рассылки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Скачать файлы

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

См. также

Специальные предложения

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение