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

05.07.19

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
[Расширение] Доработка рассылки отчетов, отчет в теле письма.:
.cfe 5,22Kb
53
53 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

3000 руб.

25.11.2020    25486    267    8    

230

SALE! 50%

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

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

4800 2400 руб.

07.04.2014    86207    52    195    

137

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

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

4920 руб.

30.06.2022    11713    77    100    

39

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

Создать и отправить 1000 Актов серки контрагентам за 5 мин ?! Легко! Разработано для конфигурации УНФ Массовое создание и рассылка Актов сверки в три клика.

6000 руб.

13.01.2022    11154    8    13    

14

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

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

12000 руб.

16.04.2014    85974    101    91    

96

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

Данная обработка позволяет сократить объем ручных операций, выполняемых ежемесячно бухгалтером или его помощником за счет автоматизации систематического процесса.

7800 руб.

12.02.2019    33646    27    24    

26

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

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

7080 руб.

11.05.2021    10023    7    2    

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

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

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

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

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

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


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

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

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

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


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

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


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

Спасибо!
14. user1209971 76 30.05.22 12:48 Сейчас в теме
(13) Взаимно, мне тоже времени сэкономили :)
16. blandinko 13.04.23 16:27 Сейчас в теме
подскажите, пожалуйста, а можно ли добавить таблицу отчета в тело письма?
17. ardn 686 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 Сейчас в теме
Спасибо Вам большое за доработку, очень полезно.

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

Пока что никак не получается, ни границы, ни форматирование не применяются к таблице в теле письма...
20. Valeriy009 15.08.24 15:06 Сейчас в теме
спасибо большое! вставил в типовой функционал, c условием если тело письма http и вложение html то вставлять автоматически.
Оставьте свое сообщение