Шаблоны сообщений пользователю - подсистема БСП

15.05.22

Разработка - БСП (Библиотека стандартных подсистем)

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

 

Введение

Всем доброго времени! В данном небольшом мануале рассмотрим базовый функционал Библиотеки стандартных подсистем (БСП) модулей "Шаблоны сообщений", которые используются в типовых конфигурациях. Функционал будет полезен пользователям для общего понимания встроенных возможностей программ, а так же программистам для быстрого и правильного внедрения и реализации своих разработок (подсистем) в типовые конфигурации

Данную статью вы можете использовать как шпаргалку на будущее (поскольку, всех знаний в голове не уместить). Разработку примеров буду вести на типовой конфигурации Библиотека стандартных подсистем версии 3.1.7.34 , используя 1С:Предприятие 8.3.19.1264.

Статью разобьем на две части - в первой из них программно создадим и настроем типовой шаблон сообщений, использую элемент справочника конфигурации "Шаблоны сообщений".

Во второй части статьи мы попробуем отправить сообщение по электронной почте, создав документ "Электронное сообщение исходящее" по шаблону из первой части.

 

Создание и настройка шаблона сообщений типовыми методами

В данном разделе, как указано выше, попробуем написать код, который создаст типовой шаблон сообщения в справочнике "Шаблоны сообщений", конфигурации на БСП.

Я буду разрабатывать пример для нетипового документа в системе стандартных подсистем - это документ "Списание товаров". Для этого я первым этапом должен внести изменения в конфигурацию (или расширение) небольшие правки для этого документа:

В модуль менеджера документа "Списание товара" вносим пустые процедуры взаимодействия с подсистемой сообщений пользователю:

 
 Типовой код взаимодействия объекта с системой сообщений

 

// СтандартныеПодсистемы.ШаблоныСообщений

// Вызывается при подготовке шаблонов сообщений и позволяет переопределить список реквизитов и вложений.
//
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
	
КонецПроцедуры

// Вызывается в момент создания сообщений по шаблону для заполнения значений реквизитов и вложений.
//

Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
	
КонецПроцедуры

// Заполняет список получателей SMS при отправке сообщения сформированного по шаблону.
//

Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт

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

// Заполняет список получателей почты при отправке сообщения сформированного по шаблону.
//

Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
	
КонецПроцедуры

// Конец СтандартныеПодсистемы.ШаблоныСообщений

 

 

Далее, для документа "Списание товаров" я создаю СКД макет "ДанныеШаблонаСообщений", где самым простым запросом выбираю поля, которые мне нужны. В общем виде, выглядит это вот так:

Рис.1. Описание СКД шаблона документа "Списание товаров".

 

Запрос простой, но его нужно сделать именно так:

 
 Код запроса

 

ВЫБРАТЬ
	_ДемоСписаниеТоваров.Ссылка КАК Ссылка,
	_ДемоСписаниеТоваров.ВерсияДанных КАК ВерсияДанных,
	_ДемоСписаниеТоваров.ПометкаУдаления КАК ПометкаУдаления,
	_ДемоСписаниеТоваров.Номер КАК Номер,
	_ДемоСписаниеТоваров.Дата КАК Дата,
	_ДемоСписаниеТоваров.Комментарий КАК Комментарий,
	_ДемоСписаниеТоваров.МестоХранения КАК МестоХранения,
	_ДемоСписаниеТоваров.Организация КАК Организация,
	_ДемоСписаниеТоваров.Ответственный КАК Ответственный
ИЗ
	Документ._ДемоСписаниеТоваров КАК _ДемоСписаниеТоваров
ГДЕ
	_ДемоСписаниеТоваров.Ссылка = &_ДемоСписаниеТоваров

 

 

 

Следующим этапом, я должен добавить ссылку документа "Списание товаров" в определяемый тип "Предмет шаблона сообщений". Вот так:

 

Рис.2. Определение типа "Списание товаров"

 

Все, теперь я создаю элемент справочника "Шаблон сообщений" и вижу, что тип документа "Списание товаров" доступен:

 

Рис.3. Доступность документа "Списание товаров" в назначениях шаблонов сообщений.

 

Далее, я напишу обработку, которая автоматически создаст мне шаблон по типу документа "Списание товаров". Код обработки вот такой:

 
 Код обработки создания шаблона электронного сообщения пользователю

 

&НаКлиенте
Процедура СоздатьШаблон(Команда)

	СоздатьШаблонНаСервере();
	
КонецПроцедуры   

&НаСервере
Процедура СоздатьШаблонНаСервере()
	
	ПараметрыШаблона 	= ШаблоныСообщений.ОписаниеПараметровШаблона();
		
	//  Структура:
	//   Наименование - Строка - наименование шаблона.
	//   Текст        - Строка - текст шаблона.
	//   Тема         - Строка - текст темы электронного письма.
	//   ТипШаблона   - Строка - тип "Письмо" или "SMS".
	//   Назначение   - Строка - Например, Заказ поставщику.
	//   ПолноеИмяТипаНазначения - Строка - Документ.ЗаказПокупателя параметры доступны все его реквизиты.
	//   ФорматПисьма    - ПеречислениеСсылка.СпособыРедактированияЭлектронныхПисем HTML или ОбычныйТекст.
	//   УпаковатьВАрхив - Булево - если Истина, Только для шаблонов электронной почты.
	//   ТранслитерироватьИменаФайлов - Булево - "Schet na oplaty.pdf".
	//   ФорматыВложений - СписокЗначений - список форматов вложений. Только для шаблонов электронной почты.
	//   ВладелецШаблона - ОпределяемыйТип.ВладелецШаблонаСообщения - владелец контекстного шаблона.
	//   ШаблонПоВнешнейОбработке - Булево - если Истина, то шаблон формируется внешней обработкой.
	//   ВнешняяОбработка - СправочникСсылка.ДополнительныеОтчетыИОбработки - внешняя обработка, в которой содержится шаблон.
	//   ПодписьИПечать   - Булево - добавляет факсимильную подпись и печать в печатную форму. Только для шаблонов
	
	Наименование 		= "Шаблон - списание товаров";

	ПараметрыШаблона.Назначение 				= "Оповещение - процедура ""Списание товара""";  
	ПараметрыШаблона.ТипШаблона					= "Письмо";
	ПараметрыШаблона.ПолноеИмяТипаНазначения	= "Документ._ДемоСписаниеТоваров";
    ПараметрыШаблона.ФорматПисьма 				= Перечисления.СпособыРедактированияЭлектронныхПисем.HTML;
	ПараметрыШаблона.Тема                       = "Создано списание [_ДемоСписаниеТоваров.Номер] от [_ДемоСписаниеТоваров.Дата]";
	
	ТестШаблонаСообщения = "Списание [_ДемоСписаниеТоваров.Номер] создано"+Символы.ПС
							+"Ответственный [_ДемоСписаниеТоваров.Ответственный]"+Символы.ПС
							+"МестоХранения [_ДемоСписаниеТоваров.МестоХранения]"+Символы.ПС
							+"Основная организация [_ДемоСписаниеТоваров.Организация]";	
	
	ПараметрыШаблона.Текст  = ТестШаблонаСообщения;
	
	ПолученныйШаблон 	= ШаблоныСообщений.СоздатьШаблон(Наименование,ПараметрыШаблона);
	
КонецПроцедуры	

 

 

Проверяя корректность, нажав соответствующую кнопку "Проверить шаблон" - вижу сообщение "Шаблон заполнен корректно". Все, могу его использовать.

Рис.4. Проверка корректности шаблона сообщений пользователю, созданного автоматически.

 

Теперь, во второй части статьи, попробуем отправить этот шаблон как электронное письмо.

 

 

Пример отправки сообщения по созданному шаблону

После того, как мы создали кастомный шаблон сообщения по реквизитам документам, попробуем его отправить документом "Электронное письмо исходящее".

Для этого дополним наш код такими процедурами (с привязкой к кнопке):

 
 Добавление кода для возможности отправки электронным письмом

 

&НаКлиенте
Процедура ОтправитьСообщение(Команда)
	
	ПодготовитьПисьмоПоШаблону();

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

&НаСервере
Процедура ПодготовитьПисьмоПоШаблону()

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

 

 

Где, Шаблон - это наш созданный шаблон, а Предмет - это ссылка на документ "Списание со склада". Результат выполнения кода - созданное электронное письмо исходящее вот такого вида:

Рис.5. Результат отправки - письмо заполнено по нашему шаблону.

 

В комментарии письма написано, что оно создано по шаблону:

Рис.6. В комментарии написано по какому шаблону создано.

 

Общий код всей обработки вот такой:

 
 Код всей обработки

 

Пожалуй, на этом закончим второй раздел и перейдем к заключению и выводам:

 

 

Заключение и выводы

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

В статье рассмотрены основы функционала, который можно применять в современных типовых конфигурациях. Я думаю, что данный материал будет полезен всем желающим - всем, кто хочет разобраться в этих модулях - подсистеме "Шаблоны сообщений". Развитие практики этого функционала оставляю на ваше усмотрение.

Небольшие практические примеры по моим статьям вы всегда можете скачать на моем гит-хабе https://github.com/quazareline

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

Обратите внимание на другие мои "чисто-практические статьи" по современному функционалу библиотеки стандартных подсистем, написанных мной ранее. Статьи будут так же полезны вам на практике.

 

Материалы применения типового функционала Библиотеки стандартных подсистем

 

Генерация штрихкодов с помощью БСП для программистов

Базовые приемы работы с кластером 1С при помощи БСП

Модули общего назначения - готовые полезные функции и процедуры конфигураций на БСП

Многопоточный режим выполнения процедуры с помощью методов БСП - примеры разработки

Печать макета MS Word в любом документе с помощью БСП

 

У кого есть вопросы, предложения и дополнения или благодарности - пишите в личку - отвечу всем.

шаблоны сообщений БСП пользователи электронное сообщение исходящее

См. также

Ограничение видимости дополнительных отчетов по пользователям для БСП

Роли и права БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Розница 3.0 Абонемент ($m)

Часто нужно ограничить дополнительные отчеты по видимости для разных пользователей. В "варианте отчета" для дополнительного отчета (БСП) можно указать конкретных пользователей, которым доступен данный вариант. Но данная настройка не срабатывает, т.к. варианты дополнительных отчетов считаются "предопределенными".

1 стартмани

14.09.2023    238    1    itmind    0    

7

Оптимизация персонализированных рассылок отчетов в БСП

Email рассылки БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Абонемент ($m)

Представленная в публикации разработка позволяет оптимизировать персонализированную рассылку отчетов БСП за счет предварительной выборки получателей отчетов.

1 стартмани

10.07.2023    799    0    Sirruf    0    

3

Снова об использовании ТекущаяДата() на клиенте и на сервере и о работе в разных часовых поясах

БСП (Библиотека стандартных подсистем) Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Можно ли применять ТекущаяДата() вопреки требованиям стандартов 1С? Безопасно ли использование функции ОбщегоНазначенияКлиент.ДатаСеанса() из БСП? Как правильно поступать при работе пользователей в разных часовых поясах?

24.04.2023    5505    Alxby    26    

44

Печать в WORD при помощи БСП. Вывод уникальных ссылок в строки таблицы

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

Пример вывода уникальных ссылок в строку таблицы макета WORD при печати с помощью БСП. Может быть полезна при создании интерактивных прайсов.

03.04.2023    1226    user1575928    0    

18

Учим БСП печатать активные ссылки и подложку в документе WORD

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Небольшое расширение БСП для печати в WORD. Добавлена печать активных ссылок, подложки документа, и фона страницы.

1 стартмани

13.03.2023    1614    3    user1575928    0    

6

Многопоточное выполнение процедуры с помощью ДлительныеОперации

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

26.02.2023    6061    egoriy111    24    

77
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. frkbvfnjh 764 16.05.22 13:24 Сейчас в теме
Как интересно, мне как раз нужно разработать свой вид уведомлений. Теперь буду знать куда вопросы писать :)
2. vld1973 83 18.05.22 10:16 Сейчас в теме
Интересное решение. Спасибо.
3. CHELLL 53 29.11.22 14:01 Сейчас в теме
Супер статья, н у меня не отправляется((( Получатель пустой. Пытался его через ДопПараметры передать но не вышло. Как Вас получатель заполняется?
4. CHELLL 53 29.11.22 16:57 Сейчас в теме
(3)нашел))
6. AnPetr 27.03.23 09:22 Сейчас в теме
(4)А как?
8. user1574479 22.08.23 12:59 Сейчас в теме
(6) Параметры.Получатель = "aaa@mail.ru"
5. zakirus 07.03.23 08:06 Сейчас в теме
Набор данных в СКД необходимо назвать "Данные", без этого валится в ошибку.
7. 7OH 69 02.08.23 15:33 Сейчас в теме
А кто подскажет - как в стандартный механизм подключить вывод табличной части ?
Чтобы пользователь как и тут мог выбирать реквизиты
Оставьте свое сообщение