Сформировать текст 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ДляВходящегоПисьма (БСП)
ПолучитьПараметрыРаботыПользователяДляИсходящегоЭлектронногоПисьма (БСП)
ОценитьРазмерИсходящегоЭлектронногоПисьма (БСП)
ОткрытьФормуОтправкиПисьма (БСП)