Фоновая отправка уведомлений

13.01.24

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

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

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

Наименование Файл Версия Размер
Отправка уведомлений:
.cfe 12,05Kb
15
.cfe от 15.03.2022 для 2.4, 2.5 12,05Kb 15 Скачать

Фоновая отправка уведомлений

Часто нужно уведомлять пользователей о событиях происходящих в системе на их электронную почту.

 

Например, для того что пришло уведомление о приходе денег от клиента по заказу, теперь перетащить модуль документа в расширение и вставить следующий код:


&После("ОбработкаПроведения")
Процедура Расш1__ОбработкаПроведения(Отказ, РежимПроведения)

	Если Проведен = ложь тогда
		Возврат;
	Конецесли;
	
	ТЗ=Новый ТаблицаЗначений;
	ТЗ.Колонки.Добавить("ОснованиеПлатежа");
	ТЗ.Колонки.Добавить("Партнер");
	ТЗ.Колонки.Добавить("Сумма");
	Для каждого стр из РасшифровкаПлатежа цикл
		ЗаполнитьЗначенияСвойств(ТЗ.Добавить(),Стр);
	Конеццикла;
	
	ТЗ.Свернуть("ОснованиеПлатежа,Партнер","Сумма");
	
	Для каждого стр из ТЗ цикл
		
		Тема ="Приход: "+ стр.Сумма+" от "+Контрагент+?(ЗначениеЗаполнено(стр.ОснованиеПлатежа)," по "+стр.ОснованиеПлатежа,"");
		
		КлючУникальности="Приход "+Ссылка.УникальныйИдентификатор()+" от "+Контрагент; 
		
		ДатаЗадания=ТекущаяДата();
	    Тема="Ознакомьтесь с поступлением денежных средств  "+ Номер+ " от "+Формат(Дата,"ДФ=dd.MM.yy")+" от "+Контрагент;
		Тело= "По "+стр.ОснованиеПлатежа+" поступили д.с. в размере "+ Формат(стр.Сумма,"ЧДЦ=2")+"
		|
		| Гиперссылка на поступление денежных средств:   "+ПолучитьНавигационнуюСсылку(Ссылка)+"
		|
		|
		| Прим. Вы можете перейти в документ, скопировав гиперссылку в буфер обмена и нажав в  1С ""Shift+F11""" ; 
	  	мо_ОтправкаУведомлений_Сервер.ОтправитьУведомлениеПоEmailВФоновомРежиме(стр.Партнер.ОсновнойМенеджер,Тема,Тело,,КлючУникальности,Ссылка);		  
	Конеццикла;

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

На почту менеджеру придет уведомление:

Ознакомьтесь с поступлением денежных средств 0A00-001052 от 25.09.20 от ООО Uhff КФ Рус

 

1С:Предприятие

Сегодня, 13:05

Кому: вам

По Заказ клиента от "ООО Гром КФ Рус" А20-0000458 от 27.07.2020 18:29:16 поступили д.с. в размере 661 240,80

 Гиперссылка на поступление денежных средств: e1cib/data/Документ.ПоступлениеБезналичныхДенежныхСредств?ref=80e4ac1f6b91b3ef11eb014d446068dd


 Прим. Вы можете перейти в документ, скопиров гиперссылку в буфер обмена и нажав в 1С "Shift+F11"

 

 

     Преймущества по  сравнению с обычным кодом:

  1.  Уведомления не задублируются. Правильно подобрав ключ уникальности, Вы гарантируете единичную отправку сообщения.
  2.  Вам не нужно вспоминать детали работы с электронными письмами. Все что вам нужно,  это ссылка на пользователя (у него должен быть прописан e-mail в контактной информации, ссылка на  объект (можно даже еще не записанный)  и текст сообщения.
  3.   Экономия времени. Теперь, чтоб добавить уведомление о событие, Вам всего лишь надо скопировать небольшой фрагмент кода и подправить текст сообщения.
  4.  Экономия кода. Уведомлений о событиях много и основная работа с ними выделена в общий модуль.
  5. Все сообщения отправляются в фоновом режиме. Это значит, что сколько бы времени ни занял процесс отправки, это никак не повлияет на работу программы.

 

  1.      Пример отправки сообщения из еще не записанного справочника с отправкой гиперссылки на будущий элемент:

 

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	ПередЗаписьюНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере()
	  КонтрольнаяСумма=Объект.ПредпечатнаяПодготовка;
	  Для Каждого СтрокаВарианта Из Объект.ВариантыРасчета цикл
		  КонтрольнаяСумма=КонтрольнаяСумма+ СтрокаВарианта.Цена;
	  КонецЦикла;
	  КонтрольнаяСумма2=Объект.Ссылка.ПредпечатнаяПодготовка;
	  Для Каждого СтрокаВарианта Из Объект.Ссылка.ВариантыРасчета цикл
		  КонтрольнаяСумма2=КонтрольнаяСумма+ СтрокаВарианта.Цена;
	  КонецЦикла;
	  Если  КонтрольнаяСумма2<> КонтрольнаяСумма Тогда
		  
		  Если Объект.Ссылка=Неопределено  Тогда
			  // Получаем возможно уже установленную ранее ссылку нового
			  СсылкаНаОбъект = Объект.ПолучитьСсылкуНового();
			  Если Не ЗначениеЗаполнено(СсылкаНаОбъект) Тогда
				  // Если ссылка нового пустая, то запрашиваем ее у менеджера и устанавливаем
				  СсылкаНаОбъект = Документы.мо_ЗаказНаРасчет.ПолучитьСсылку();
				  Объект.УстановитьСсылкуНового(СсылкаНаОбъект);
			  КонецЕсли;
		  Иначе
			  СсылкаНаОбъект = Объект.Ссылка;
		  КонецЕсли;		  
		ДатаЗадания=ТекущаяДата();
	    Тема="Ознакомьтесь с изменением цен по расчету  "+ Объект.Номер+ " от "+Формат(ДатаЗадания,"ДФ=dd.MM.yy");
		КлючУникальностиДокумента= "Изменение цен по расчету  "+ Объект.Номер+ " от "+Формат(ДатаЗадания,"ДФ=dd.MM.yy");
		
		//Задача.Предмет = Сделка;
		Тело= "По заданию на расчет по сделке"+Объект.Ссылка+" поменялись рассчитанные цены!
		|
		| Гиперссылка на заказ на расчет:   "+ПолучитьНавигационнуюСсылку(СсылкаНаОбъект)+"
		|
		|
		| Прим. Вы можете перейти в документ, скопировав гиперссылку в буфер обмена и нажав в  1С ""Shift+F11""" ; 
	  	мо_ОтправкаУведомлений_Сервер.ОтправитьУведомлениеПоEmailВФоновомРежиме(Объект.Менеджер,Тема,Тело,,КлючУникальностиДокумента,СсылкаНаОбъект);		  
	  КонецЕсли;
КонецПроцедуры

Если В    

       Если Вы цените свое время и чувствуете в себе силы выразить немного благодарности в виде стартмани, то рекомендую  скачать расширение в готовом виде.

     Если Вам это не доступно по каким то причинам, то код основных фрагментов расширения приведен ниже:


Процедура ОтправитьУведомлениеПоEmail(М_Пользователи,Тема,Тело,АдресОтвета="",КлючУникальности="",КлючеваяСсылка="") Экспорт
  	УстановитьПривилегированныйРежим(Истина);	
	ПараметрыПисьма = Новый Структура;

	
	Кому ="";
	Если ТипЗнч(М_Пользователи)=Тип("Массив") Тогда
		Для Каждого Пользователь из  М_Пользователи Цикл
			Адрес=УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Пользователь,Справочники.ВидыКонтактнойИнформации.EmailПользователя);
			Если ЗначениеЗаполнено(Адрес) Тогда 
				Кому =Кому+?(Кому="","",";")+Адрес;
			КонецЕсли;
		КонецЦикла;
	Иначе
			Адрес=УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(М_Пользователи,Справочники.ВидыКонтактнойИнформации.EmailПользователя);
			Если ЗначениеЗаполнено(Адрес) Тогда 
				Кому =Кому+?(Кому="","",";")+Адрес;
			КонецЕсли;
	КонецЕсли;
	Если ЗначениеЗаполнено(Кому) Тогда
		ПараметрыПисьма.Вставить("Кому", Кому);
	Иначе
		возврат;
	КонецЕсли;
	
	УчетнаяЗаписьИзНастроек=Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты;
	ПараметрыПисьма.Вставить("АдресОтвета", АдресОтвета);

	ПараметрыПисьма.Вставить("Тема", Тема);
	
	//ФайлВФорматеHTML = ПолучитьИмяВременногоФайла();
	//ТабДок.Записать(ФайлВФорматеHTML, ТипФайлаТабличногоДокумента.HTML5);
	//ТекстПисьма = Новый ТекстовыйДокумент;
	//ТекстПисьма.Прочитать(ФайлВФорматеHTML);
	// ХТМЛПоле = ТекстПисьма.ПолучитьТекст();
	
	
	ПараметрыПисьма.Вставить("Тело", Тело);
	ПараметрыПисьма.Вставить("ТипТекста",  ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.ПростойТекст"));
	Если КлючУникальности="" ИЛИ  РегистрыСведений.мо_СчетчикСобытий.ПолучитьСчетчик(КлючУникальности,КлючеваяСсылка)=0 Тогда
		Попытка
			РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(УчетнаяЗаписьИзНастроек, ПараметрыПисьма);
			Если КлючУникальности<>"" Тогда
				РегистрыСведений.мо_СчетчикСобытий.УвеличитьСчетчик(КлючУникальности,КлючеваяСсылка);
			КонецЕсли;
		Исключение
		КонецПопытки;
	КонецЕсли;
КонецПроцедуры

Функция ЗапуститьФоновоеВыполнение(ТекстПроцедуры,СтруктураПараметров=Неопределено) Экспорт
    УникальныйИдентификатор = Новый УникальныйИдентификатор;
    ПараметрыВыполнения = Новый Массив;
    ПараметрыВыполнения.Добавить(ТекстПроцедуры);
    ПараметрыВыполнения.Добавить(СтруктураПараметров);
    
    ФоновыеЗадания.Выполнить("мо_ОтправкаУведомлений_Сервер.ФоноваяПроцедура",ПараметрыВыполнения,УникальныйИдентификатор);
    Возврат УникальныйИдентификатор;
КонецФункции

Процедура ФоноваяПроцедура(ТекстМодуля,ПараметрыВыполнения) Экспорт
    ПолныйТекстМодуля = "";
    Для Каждого ТекПараметр Из ПараметрыВыполнения Цикл
        ПолныйТекстМодуля = ПолныйТекстМодуля+ТекПараметр.Ключ+"=ПараметрыВыполнения."+ТекПараметр.Ключ+";"+Символы.ПС;
    КонецЦикла;
    ПолныйТекстМодуля = ПолныйТекстМодуля + ТекстМодуля;
    Выполнить(ПолныйТекстМодуля);
КонецПроцедуры

Процедура ОтправитьУведомлениеПоEmailВФоновомРежиме(М_Пользователи,Тема,Тело,АдресОтвета="",КлючУникальности="",КлючеваяСсылка="") Экспорт
	ТекстФоновойПроцедуры = "
	|мо_ОтправкаУведомлений_Сервер.ОтправитьУведомлениеПоEmail(М_Пользователи,Тема,Тело,АдресОтвета,КлючУникальности,КлючеваяСсылка);";
	СтруктураПараметров=Новый Структура;
	СтруктураПараметров.Вставить("М_Пользователи",М_Пользователи);
	СтруктураПараметров.Вставить("Тема",Тема);
	СтруктураПараметров.Вставить("Тело",Тело);
	СтруктураПараметров.Вставить("АдресОтвета",АдресОтвета);
	СтруктураПараметров.Вставить("КлючУникальности",КлючУникальности);
	СтруктураПараметров.Вставить("КлючеваяСсылка",КлючеваяСсылка);
	ЗапуститьФоновоеВыполнение(ТекстФоновойПроцедуры,СтруктураПараметров);
КонецПроцедуры


Рег

 

Регистр счетчик событий:

Модуль менеджера:

Процедура УвеличитьСчетчик(ИмяСобытия,КлючеваяСсылка)ЭКСПОРТ
	УстановитьПривилегированныйРежим(Истина);	
	НЗСчетчик= РегистрыСведений.мо_СчетчикСобытий.СоздатьНаборЗаписей();
	НЗСчетчик.Отбор.ИмяСобытия.Установить(ИмяСобытия);
	НЗСчетчик.Отбор.КлючеваяСсылка.Установить(КлючеваяСсылка);
	НЗСчетчик.Прочитать();
	Если НЗСчетчик.Количество() = 0 Тогда
		НовыйСчетчик = НЗСчетчик.Добавить();
		НовыйСчетчик.ИмяСобытия = ИмяСобытия;
		НовыйСчетчик.КлючеваяСсылка = КлючеваяСсылка;
		НовыйСчетчик.Счетчик = 1;
	ИначеЕсли НЗСчетчик.Количество() = 1 Тогда
		НовыйСчетчик = НЗСчетчик[0];
		НовыйСчетчик.Счетчик = НовыйСчетчик.Счетчик+1;
	КонецЕсли;
	НЗСчетчик.Записать();
КонецПроцедуры

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

 

 

 

       Подключение расширения:

          Подключение осуществляется обычным способом:

Расширением гарантированно работает на платформе 8.3 (тестировано на релизах 8.3.13.1644,8.3.18.1334) 1С:Комплексная автоматизация 2 (2.5.7.298) , 1С:ERP Управление предприятием 2 (2.4.7.107)  и Управление торговлей, редакция 11 (11.4.6.188) И Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.11.106)   Режим совместимости Версия 8.3.12 и выше. БСП >3.*

Другие разработки автора:

Подсистема штрихкодирования серий номенклатуры (УТ 11, КА, ERP)Подсистема штрихкодирования серий номенклатуры (УТ 11, КА, ERP)
Подсистема 'Входной контроль' для ERP ,КА , УТ 11
Подсистема 'Входной контроль' для ERP ,КА , УТ 11
Электронный обходной лист (расширение) для ERP, ЗУП, КА
Отправка электронных писем по задолженностям клиентов (ERP, УТ 11)Отправка электронных писем по задолженностям клиентов (ERP, УТ 11)
Excel Studio for 1CExcel Studio for 1C
Настраиваемый управленческий балансНастраиваемый управленческий баланс
Динамические отчеты СКД
Динамические отчеты СКД
Фоновая отправка уведомлений
Генератор кодаГенератор кода

 

Акция! Вы можете скачать архив всех моих разработок, которые я предлагаю за StartMone, по Специальной  цене:  //infostart.ru/public/960899/#archive

Молочников Олег Spb. 2024

Проверено на следующих конфигурациях и релизах:

  • 1С:Комплексная автоматизация 2, релизы 2.5.7.298

Отправка уведомлений рассылка многопоточность параллелизм фоновое задание

См. также

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

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

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

3000 руб.

25.11.2020    22071    162    4    

148

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

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

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

12000 руб.

16.04.2014    84241    100    91    

94

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

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

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

7788 руб.

07.04.2014    83622    40    191    

127

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

Взаиморасчеты 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    30341    117    66    

98

SALE! 15%

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

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

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

3600 3060 руб.

30.06.2022    8982    62    88    

25
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ltfriend 954 21.10.20 18:12 Сейчас в теме
Отправка письма в процедуре обработки проведения. Если проблемы с интернетом или низкая скорость соединения, то письмо отправляется, документ ожидает завершения отправки письма, пользователь ждёт, когда же документ проведётся, транзакция висит. Красота!
2. milkers 2859 22.10.20 11:58 Сейчас в теме
(1) Большое спасибо за ваше замечание. Переписал на отправку в фоновом режиме.
3. KazanKokos 10 24.01.21 20:31 Сейчас в теме
Один минус: произошло исключение, завис клиент - письмо не ушло. Может кто подскажет кто есть на инфостарте обработка или расширение работающее по алгоритму:
1. Пул писем к отправке собирается в регистре сведений
2. рассылка ведется регламентным заданием на основе данных этого РС.
4. YA_1130000057973079 19.08.22 06:40 Сейчас в теме
Добрый день.
Можно ли при проведении реализации - фоном отправить УПД в экселе такой обработкой?
5. milkers 2859 19.08.22 08:24 Сейчас в теме
Если слегка доработать процедуру формирования письма.
Оставьте свое сообщение