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

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 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1297    dimanich70    6    

13

Заполнение поля адреса в своей обработке [БСП]

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

Небольшая шпаргалка по функциям БСП касательно адреса. Так скажем, еще один способ помимо https://infostart.ru/1c/articles/1060970/

12.02.2024    690    FilippovRI    0    

15

Расширяем возможности дополнительных обработок и настраиваем их отладку

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

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2355    YA_418728146    11    

40

1С:БСП Дополнительные реквизиты и сведения

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

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

19.01.2024    5198    PROSTO-1C    5    

45

Бесплатный митап 9 февраля «Библиотеки и фреймворки на 1С и всё, что с этим связано»

БСП (Библиотека стандартных подсистем) Мероприятия Бесплатно (free)

Митап посвящен вопросам создания, использования и поддержке переиспользуемого кода при разработке решений на платформе 1С:Предприятие 8.

15.01.2024    3799    0    Infostart    0    

20

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    4836    mrXoxot    11    

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

// Вызывается при подготовке шаблонов сообщений и позволяет переопределить список реквизитов и вложений.
//
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
	НовыйРеквизит = Реквизиты.Добавить(); 
	НовыйРеквизит.Тип = Новый ОписаниеТипов("Строка");
	НовыйРеквизит.Имя = Реквизиты.Родитель.Имя+".ТаблицаПредметов";
	НовыйРеквизит.Представление = НСтр("ru = 'Таблица предметов (HTML)';en = 'Items table (HTML)'");	
КонецПроцедуры


Потом, при создании, этому реквизиту присваивать любое значение, в том числе и таблицу (условно HTML)

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

Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
	ПредметыHTML = "
		|<table border=""1"" cellpadding=3px style=""border-collapse: collapse;"">
		|<colgroup>
		|	<col span=""5"">
		|	<col span=""1"" style=""background-color: #D6EEEE"">
		|</colgroup>
		|<tbody>";

	//Здесь добавляем заголовок и строчки таблицы...

	ПредметыHTML = ПредметыHTML + "
		|</tbody>                 
		|</table>";
		
		Сообщение.ЗначенияРеквизитов.Вставить("ТаблицаПредметов", ПредметыHTML);
КонецПроцедуры
Показать
9. dreamwaver_dz 109 24.11.23 22:03 Сейчас в теме
А вот с отправкой HTML ещё придется разбираться.
Дело в том, что перед отправкой, БСП весь подготовленный текст (HTML) присваивает в реквизит типа "ФорматированныйДокумент".
Этот реквизит не поддерживает HTML в полном объёме и лишнее, в том числе таблицы HTML, превращается в слитный текст.
Поэтому процесс подготовки финального текста нужно внимательно проследить и в нужных моментах подкорректировать.
Оставьте свое сообщение