СформироватьТекстHTMLДляИсходящегоПисьма (БСП)

Автор: 1С
ОбщийМодуль.Взаимодействия
БСП

Сформировать текст html для исходящего письма. Формирует текст HTML для исходящего электронного письма.

// Формирует текст HTML для исходящего электронного письма.
//
// Параметры:
//  Письмо  - ДокументСсылка.ЭлектронноеПисьмоИсходящее
//  ДляПечати  - Булево - признак того, что текст HTML формируется для печатной формы письма.
//  ОбработатьКартинки - Булево - признак того что картинки будут вложены в HTML.
//
// Возвращаемое значение:
//   Строка   - сформированный текст HTML для исходящего электронного письма.
//
Функция СформироватьТекстHTMLДляИсходящегоПисьма(Письмо, ДляПечати, ОбработатьКартинки,
	ОтключитьВнешниеРесурсы = Истина, ЕстьВнешниеРесурсы = Неопределено) Экспорт
	
	УстановитьПривилегированныйРежим(Истина);
	
	Запрос = Новый Запрос;
	Запрос.Текст = "
	|ВЫБРАТЬ
	|	ЭлектронноеПисьмоИсходящее.Ссылка КАК Письмо,
	|	ЭлектронноеПисьмоИсходящее.Дата,
	|	ЭлектронноеПисьмоИсходящее.СтатусПисьма,
	|	ЭлектронноеПисьмоИсходящее.ОтправительПредставление,
	|	ЭлектронноеПисьмоИсходящее.Текст,
	|	ЭлектронноеПисьмоИсходящее.ТекстHTML,
	|	ЭлектронноеПисьмоИсходящее.Тема,
	|	ЭлектронноеПисьмоИсходящее.ТипТекста КАК ТипТекста,
	|	ЭлектронноеПисьмоИсходящее.ТипТекста КАК ТипТекстаПреобразование,
	|	ЭлектронноеПисьмоИсходящее.ВзаимодействиеОснование,
	|	ЭлектронноеПисьмоИсходящее.ВключатьТелоИсходногоПисьма,
	|	ЭлектронноеПисьмоИсходящее.ПолучателиПисьма.(
	|		Ссылка,
	|		НомерСтроки,
	|		Адрес,
	|		Представление,
	|		Контакт
	|	),
	|	ЭлектронноеПисьмоИсходящее.ПолучателиКопий.(
	|		Ссылка,
	|		НомерСтроки,
	|		Адрес,
	|		Представление,
	|		Контакт
	|	),
	|	ЕСТЬNULL(УчетныеЗаписиЭлектроннойПочты.ИмяПользователя, """") КАК ИмяПользователяУчетнойЗаписи
	|ИЗ
	|	Документ.ЭлектронноеПисьмоИсходящее КАК ЭлектронноеПисьмоИсходящее
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты
	|		ПО ЭлектронноеПисьмоИсходящее.УчетнаяЗапись = УчетныеЗаписиЭлектроннойПочты.Ссылка
	|ГДЕ
	|	ЭлектронноеПисьмоИсходящее.Ссылка = &Письмо";
	
	Запрос.УстановитьПараметр("Письмо",Письмо);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	
	ПараметрыФормирования = ПараметрыФормированияДокументаHTMLНаОснованииПисьма(Выборка);
	ПараметрыФормирования.ОбработатьКартинки = ОбработатьКартинки;
	ПараметрыФормирования.ОтключитьВнешниеРесурсы = ОтключитьВнешниеРесурсы;
	
	ДокументHTML = СформироватьДокументHTMLНаОснованииПисьма(ПараметрыФормирования, ЕстьВнешниеРесурсы);
	
	Если Выборка.СтатусПисьма = Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Черновик 
		И Выборка.ВключатьТелоИсходногоПисьма 
		И Выборка.ВзаимодействиеОснование <> Неопределено 
		И (ТипЗнч(Выборка.ВзаимодействиеОснование) = Тип("ДокументСсылка.ЭлектронноеПисьмоВходящее") 
		ИЛИ ТипЗнч(Выборка.ВзаимодействиеОснование) = Тип("ДокументСсылка.ЭлектронноеПисьмоИсходящее")) Тогда
		
		ВыборкаОснование = ПолучитьДанныеПисьмаОснования(Выборка.ВзаимодействиеОснование);
		
		ТекстHTML = ВыборкаОснование.ТекстHTML;
		Если СтрНайти(ВыборкаОснование.ТекстHTML, "body") = 0 Тогда
			ТекстHTML = "<body>" +ВыборкаОснование.ТекстHTML + "</body>";
		КонецЕсли;
		
		ПараметрыФормирования = ПараметрыФормированияДокументаHTMLНаОснованииПисьма();
		ПараметрыФормирования.Письмо = Выборка.ВзаимодействиеОснование;
		ПараметрыФормирования.ТипТекста = ВыборкаОснование.ТипТекста;
		ПараметрыФормирования.Текст = ВыборкаОснование.Текст;
		ПараметрыФормирования.ТекстHTML = ВыборкаОснование.ТекстHTML;
		ПараметрыФормирования.ТипТекстаПреобразование = Выборка.ТипТекста;
		ПараметрыФормирования.ОтключитьВнешниеРесурсы = ОтключитьВнешниеРесурсы;
		
		ДокументОснованиеHTML = СформироватьДокументHTMLНаОснованииПисьма(ПараметрыФормирования, ЕстьВнешниеРесурсы);
		
		ЭлементТелоОснованиеHTML = ДокументОснованиеHTML.Тело;
		МассивДочернихУзловТелаОснование = МассивДочернихУзловСодержащихHTML(ЭлементТелоОснованиеHTML);
		
		ЭлементDIV = ДобавитьЭлементСАтрибутами(ЭлементТелоОснованиеHTML,
			"div",Новый Структура("style","border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt"));
		
		Для каждого ДочернийУзел Из МассивДочернихУзловТелаОснование Цикл
			
			ЭлементDIV.ДобавитьДочерний(ДочернийУзел);
			
		КонецЦикла;
		
		СтруктураАтрибутов = Новый Структура;
		СтруктураАтрибутов.Вставить("size", "2");
		СтруктураАтрибутов.Вставить("width", "100%");
		СтруктураАтрибутов.Вставить("align", "center");
		СтруктураАтрибутов.Вставить("tabindex", "-1");
		
		ЭлементHR = ДобавитьЭлементСАтрибутами(ЭлементDIV, "hr", СтруктураАтрибутов);
		ВставитьЭлементHTMLПервымДочернимЭлементом(ЭлементDIV,ЭлементHR,МассивДочернихУзловТелаОснование);
		
		СтруктураДанныеШапкиПисьмаОснования = Новый Структура;
		СтруктураДанныеШапкиПисьмаОснования.Вставить("ОтправительПредставление", ВыборкаОснование.ОтправительПредставление);
		СтруктураДанныеШапкиПисьмаОснования.Вставить("ОтправительАдрес", ВыборкаОснование.ОтправительАдрес);
		СтруктураДанныеШапкиПисьмаОснования.Вставить("Дата", ВыборкаОснование.Дата);
		СтруктураДанныеШапкиПисьмаОснования.Вставить("Тема", ВыборкаОснование.Тема);
		СтруктураДанныеШапкиПисьмаОснования.Вставить("ПолучателиПисьма", ВыборкаОснование.ПолучателиПисьма);
		СтруктураДанныеШапкиПисьмаОснования.Вставить("ПолучателиКопий", ВыборкаОснование.ПолучателиКопий);
		
		ЭлементШрифт = СформироватьЭлементДанныхШапкиПисьма(ЭлементDIV,
		СтруктураДанныеШапкиПисьмаОснования,
		ВыборкаОснование.ИмяОбъектаМетаданных = "ЭлектронноеПисьмоИсходящее");
		ВставитьЭлементHTMLПервымДочернимЭлементом(ЭлементDIV,ЭлементШрифт,МассивДочернихУзловТелаОснование);
		
		МассивДочернихУзловТелаТекущее = МассивДочернихУзловСодержащихHTML(ДокументHTML.Тело);
		Для Каждого ДочернийУзел Из МассивДочернихУзловТелаТекущее Цикл
			
			ЭлементТелоОснованиеHTML.ВставитьПеред(ДокументОснованиеHTML.ИмпортироватьУзел(ДочернийУзел,Истина),ЭлементDIV);
			
		КонецЦикла;
		
		ДокументHTML = ДокументОснованиеHTML;
		
	КонецЕсли;
	
	Если ДляПечати Тогда
		СформироватьШапкуИПодвалПечатнойФормыПисьма(Письмо, ДокументHTML, Выборка);
	КонецЕсли;
	
	Возврат ПолучитьТекстHTMLИзОбъектаДокументHTML(ДокументHTML);
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

СформироватьЭлементДанныхШапкиПисьма (БСП)

СформироватьТекстHTMLДляВходящегоПисьма (БСП)

ПолучитьПараметрыРаботыПользователяДляИсходящегоЭлектронногоПисьма (БСП)

ОценитьРазмерИсходящегоЭлектронногоПисьма (БСП)

ОткрытьФормуОтправкиПисьма (БСП)

УстановитьТекстПисьма (БСП)

СформироватьДокументHTMLНаОснованииПисьма (БСП)

ОбработатьТекстHTML (БСП)

СформироватьШаблонТекстаВТехПоддержку (БСП)

1С Менеджер конфигураций