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

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

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

// Формирует документ HTML на основании электронного письма.
//
// Параметры:
//  ПараметрыФормирования - Структура - параметры формирования документа HTML:
//   * Письмо  - ДокументСсылка.ЭлектронноеПисьмоВходящее,
//               ДокументСсылка.ЭлектронноеПисьмоИсходящее - письмо для которого будет проведена оценка.
//   * ТипТекста  - ПеречислениеСсылка.ТипыТекстовЭлектронныхПисем - тип текста письма.
//   * Текст  - Строка - текста письма.
//   * ТекстHTML  - Строка - текста письма в формате HTML.
//   * ТипТекстаПреобразование  - ПеречислениеСсылка.ТипыТекстовЭлектронныхПисем - тип текста в который преобразуется
//                                                                                 письмо.
//   * Кодировка  - Строка - кодировка письма.
//   * ОбработатьКартинки - Булево - признак того что картинки будут вложены в HTML.
//  ЕстьВнешниеРесурсы - Булево - возвращаемое значение, Истина, если письмо содержит элементы, загружаемые из Интернета.
//
// Возвращаемое значение:
//   Строка   - обработанный текст электронного письма.
//
Функция СформироватьДокументHTMLНаОснованииПисьма(ПараметрыФормирования, ЕстьВнешниеРесурсы = Неопределено) Экспорт
	
	Письмо = ПараметрыФормирования.Письмо;
	ТипТекста = ПараметрыФормирования.ТипТекста;
	Текст = ПараметрыФормирования.Текст;
	ТекстHTML = ПараметрыФормирования.ТекстHTML;
	ТипТекстаПреобразование = ?(ПараметрыФормирования.ТипТекстаПреобразование = Неопределено,
		ПараметрыФормирования.ТипТекста, ПараметрыФормирования.ТипТекстаПреобразование);
	Кодировка = ПараметрыФормирования.Кодировка;
	ОбработатьКартинки = ПараметрыФормирования.ОбработатьКартинки;
	ОтключитьВнешниеРесурсы = ПараметрыФормирования.ОтключитьВнешниеРесурсы;
		
	Если ТипТекста <> ТипТекстаПреобразование 
		И ТипТекста <> Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст Тогда
		
		ТекстВходящегоПисьма = ПолучитьОбычныйТекстИзHTML(ТекстHTML);
		
		ДокументHTML = ПолучитьДокументHTMLИзОбычногоТекста(ТекстВходящегоПисьма);
		
	ИначеЕсли ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст 
		ИЛИ (ТипТекста.Пустая() И СокрЛП(ТекстHTML) = "") Тогда
		
		ДокументHTML = ПолучитьДокументHTMLИзОбычногоТекста(Текст);
		
	Иначе
		
		КодировкаПисьма = Кодировка;
		
		Если ПустаяСтрока(КодировкаПисьма) Тогда
			ПозицияАтрибутаКодировки = СтрНайти(ТекстHTML,"charset");
			Если ПозицияАтрибутаКодировки <> 0 Тогда
				Инд = 0;
				Пока КодСимвола(Сред(ТекстHTML,ПозицияАтрибутаКодировки + 8 + Инд,1)) <> 34 Цикл
					КодировкаПисьма = КодировкаПисьма + Сред(ТекстHTML,ПозицияАтрибутаКодировки + 8 + Инд,1);
					Инд = Инд + 1;
				КонецЦикла
			Иначе
				КодировкаПисьма = "utf8";
			КонецЕсли;
		КонецЕсли;
		
		Если ТипЗнч(Письмо) = Тип("Структура") Тогда
			ТаблицаФайлов = Письмо.Вложения;
		Иначе
			ТаблицаФайлов = ПолучитьВложенияПисьмаСНеПустымИД(Письмо);
		КонецЕсли;
		
		ТекстКОбработке = ТекстHTML;
		
		Если СтрЧислоВхождений(НРег(ТекстКОбработке),"<html") = 0 Тогда
			ТекстКОбработке = "<html>" + ТекстКОбработке + "</html>"
		КонецЕсли;
		
		НомерПопытки = 1;
		ТекстПисьма = СодержимоеТегаHTML(ТекстКОбработке, "html", Истина, НомерПопытки);
		Пока СтрНайти(НРег(ТекстПисьма), "<body") = 0 
			И Не ПустаяСтрока(ТекстПисьма) Цикл
			НомерПопытки = НомерПопытки + 1;
			ТекстПисьма = СодержимоеТегаHTML(ТекстКОбработке, "html", Истина, НомерПопытки);
		КонецЦикла;
		
		Если ТаблицаФайлов.Количество() Тогда
			
			ДокументHTML = ЗаменитьИдентификаторыКартинокНаПутьКФайлам(ТекстПисьма, ТаблицаФайлов, КодировкаПисьма, ОбработатьКартинки);
			
		Иначе
			
			Документ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ДляИсходящегоПисьма (БСП)

ДеревоПодсистемСформировать (БСП)

СформироватьСообщениеИОтправить (БСП)

СформироватьСписокРеквизитовПоСКД (БСП)

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

TurboConf ИР адаптер 1.76