Отправка сообщений в формате HTML

1. Geophysic 10.02.23 13:13 Сейчас в теме
Здравствуйте, есть рабочий код по отправке сообщений, он предназначен для отправки одному менеджеру. Подскажите пожалуйста как правильнее будет сделать отправку по менеджеру и сотруднику. Нужно будет отправлять два практически одинаковых письма, разница лишь в "Добрый день, <Менеджер>" и "Добрый день, <Сотрудник>". То есть задача добавить еще одно письмо только уже по сотруднику.

Функция ВыполнитьРассылку(ДатаРассылки) Экспорт
	
	СписокПолучивших = "";
	
	Если ЭтотОбъект.Документы.Количество() = 1 Тогда
		
		Возврат СписокПолучивших;
		
	КонецЕсли;
	
	МассивМенеджеров = Новый Массив();
	
	Для каждого Стр Из ЭтотОбъект.Документы Цикл
	
	    Если Стр.ОК = Истина Тогда
		
		    МассивМенеджеров.Добавить(Стр.Ответственный);	
		
		КонецЕсли;	
	
	КонецЦикла;
	
    // Избавляемся от возможных дублей: 
	МассивМенеджеров = МассивБезДублей(МассивМенеджеров);
	
	ЗаголовокПрограммы = "";
	
	Запрос = Новый Запрос;
	
	Запрос.Текст = 
	
	"ВЫБРАТЬ
	|	ЗС.Значение КАК Значение
	|ИЗ
	|	Константа.ЗаголовокСистемы КАК ЗС";
	
	Рез = Запрос.Выполнить();
	
	Если НЕ Рез.Пустой() Тогда
	
		Выборка = Рез.Выбрать();
		Выборка.Следующий();
		ЗаголовокПрограммы = Выборка.Значение;
	
	КонецЕсли;
	
	// Через эту директиву значение не получить:
	//ЗаголовокПрограммы = Метаданные.Константы.ЗаголовокСистемы;
	
	Если ЗаголовокПрограммы <> "" Тогда
		
	    ЗаголовокПрограммы = "Комплексная " + ЗаголовокПрограммы;	
		
	Иначе	
		
		ЗаголовокПрограммы = "Комплексная Общая";
	
	КонецЕсли;
	
	Для каждого Менеджер Из МассивМенеджеров Цикл
	
		Если Менеджер <> Справочники.Пользователи.ПустаяСсылка() Тогда
			             
			ТекстСписка = "";
			ТекстПисьма = "";
			Адрес       = "";
			
			Счетчик = 1;
			
			Для каждого СтрТЧ Из ЭтотОбъект.Документы Цикл
			
				Если СтрТЧ.ОК И СтрТЧ.Ответственный = Менеджер Тогда
					
					СчетчикСтрока = "" + Строка(Счетчик) + ". ";
					
					ТекстСписка = ТекстСписка + СчетчикСтрока + СтрТЧ.ДокСсылка + "" + Символы.ПС;
					
					Адрес = СтрТЧ.АдресОтветственного;
					
					Счетчик = Счетчик + 1;
					
				КонецЕсли;
			
			КонецЦикла;
			
			//ТекстПисьма = "Добрый день, " + Строка(Менеджер) + Символы.ПС + ""
			//            + Символы.ПС 
			//			+ "На " + Формат(ДатаРассылки, "ДФ=dd.MM.yyyy") + " г. за Вами числятся следующие не принятые оповещения:" 
			//			+ Символы.ПС
			//			+ "" + Символы.ПС
			//			+ ТекстСписка + Символы.ПС
			//			+ "Занудный доброжелатель ИВС" + Символы.ПС 
			//			+ "(отвечать мне не надо, лучше исправьте документы)";
			
            ТекстПисьма = ТекстПисьмаДляОтветственногоВФорматеHTML(Менеджер, ДатаРассылки, ТекстСписка, ЗаголовокПрограммы);

			РезультатОтправки = СозданиеИОтправкаПисьма(Адрес, ТекстПисьма);
			
			Если РезультатОтправки = Истина Тогда
			
			    СписокПолучивших = СписокПолучивших + Менеджер + Символы.ПС;	

			КонецЕсли;
		
		КонецЕсли;
	
	КонецЦикла;
	
	Возврат СписокПолучивших;
КонецФункции // ВыполнитьРассылку(ДатаРассылки) Экспорт

Функция ТекстПисьмаДляОтветственногоВФорматеHTML(Менеджер, ДатаРассылки, ТекстСписка, ЗаголовокПрограммы)

	ТекстПисьма = 
	
	"<HT ML> 
	|<ST YLE TYPE = ""text/css"">
	|#s1 {color: #000000; font-family: Arial; font-size: 14px}
	|</STYLE>
	|<BODY ID=s1>
	|Добрый день, " + Менеджер + ".
	|
	|На " + Формат(ДатаРассылки, "ДФ=dd.MM.yyyy") + " г." + " в информационной базе: " + ЗаголовокПрограммы + "
	|у следующих сотрудников будет отпуск" + " 
	|
	|" + ТекстСписка +  "
	|Автоматическая электронная рассылка ИВС" + " 
	|(отвечать на это письмо не требуется)
	|</BODY>
	|</HTML>";

	Возврат ТекстПисьма;
	
КонецФункции // ТекстПисьмаВФорматеHTML()

Функция МассивБезДублей(Массив) Экспорт 
	
	ТекущийИндекс = 0; 
	
	ВсегоЭлементов = Массив.Количество();
	
	Пока ТекущийИндекс < ВсегоЭлементов Цикл 
		
		Индекс = ТекущийИндекс + 1;
		
		Пока Индекс < ВсегоЭлементов Цикл 
			
			Если Массив[Индекс] = Массив[ТекущийИндекс] Тогда 
				
				Массив.Удалить(Индекс);
				
				ВсегоЭлементов = ВсегоЭлементов - 1;
				
			Иначе 
				
				Индекс = Индекс + 1;
				
			КонецЕсли;
			
		КонецЦикла;
		
		ТекущийИндекс = ТекущийИндекс + 1;
		
	КонецЦикла;

	Возврат Массив;

КонецФункции
Показать
По теме из базы знаний
Найденные решения
4. DesertPunk 10.02.23 15:36 Сейчас в теме
(1) Менеджер это массив. Просто добавь туда еще и сотрудника.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. DesertPunk 10.02.23 15:36 Сейчас в теме
(1) Менеджер это массив. Просто добавь туда еще и сотрудника.
3. Geophysic 10.02.23 14:17 Сейчас в теме
(2) Там по другому реализовано
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот