Обработать html для форматированного документа.
Обрабатывает текст HTML для помещения в форматированный документ.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
// Обрабатывает текст HTML для помещения в форматированный документ. // Процедура ОбработатьHTMLДляФорматированногоДокумента(ПараметрыШаблона, СформированноеСообщение, ПреобразовыватьHTMLДляФорматированногоДокумента, СписокФайлов = Неопределено) Экспорт Если ПустаяСтрока(СформированноеСообщение.Текст) Тогда Возврат; КонецЕсли; Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами"); Если СписокФайлов = Неопределено Тогда СписокФайлов = Новый Массив; МодульРаботаСФайлами.ЗаполнитьПрисоединенныеФайлыКОбъекту(ПараметрыШаблона.Шаблон, СписокФайлов); КонецЕсли; ДокументHTML = ПолучитьОбъектДокументHTMLИзТекстаHTML(СформированноеСообщение.Текст); Для каждого Картинка Из ДокументHTML.Картинки Цикл АтрибутИсточникКартинки = Картинка.Атрибуты.ПолучитьИменованныйЭлемент("src"); ДополнительныеПараметры = Новый Структура; ДополнительныеПараметры.Вставить("ИдентификаторФормы", ПараметрыШаблона.УникальныйИдентификатор); ДополнительныеПараметры.Вставить("ВызыватьИсключение", Ложь); ИзображениеОтсутствуетВПрисоединенныхФайлах = Истина; Для Каждого ПрисоединенныйФайл Из СписокФайлов Цикл Если СтрЧислоВхождений(АтрибутИсточникКартинки.Значение, ПрисоединенныйФайл.ИДФайлаЭлектронногоПисьма) > 0 Тогда ДанныеФайла = МодульРаботаСФайлами.ДанныеФайла(ПрисоединенныйФайл.Ссылка, ДополнительныеПараметры); ОбработатьКартинкуВТекстеHTMLДляФорматированногоДокумента(Картинка, ДанныеФайла, СформированноеСообщение, АтрибутИсточникКартинки, ПрисоединенныйФайл.Наименование, ПрисоединенныйФайл.ИДФайлаЭлектронногоПисьма); ИзображениеОтсутствуетВПрисоединенныхФайлах = Ложь; Прервать; ИначеЕсли СтрНачинаетсяС(АтрибутИсточникКартинки.Значение, "cid:" + ПрисоединенныйФайл.Наименование) Тогда НайденнаяСтрока = СформированноеСообщение.Вложения.Найти(ПрисоединенныйФайл.Наименование, "Представление"); Если НайденнаяСтрока <> Неопределено Тогда СформированноеСообщение.Вложения.Удалить(НайденнаяСтрока); КонецЕсли; ДанныеФайла = МодульРаботаСФайлами.ДанныеФайла(ПрисоединенныйФайл.Ссылка, ДополнительныеПараметры); ОбработатьКартинкуВТекстеHTMLДляФорматированногоДокумента(Картинка, ДанныеФайла, СформированноеСообщение, АтрибутИсточникКартинки, ПрисоединенныйФайл.Наименование, ПрисоединенныйФайл.Наименование); ИзображениеОтсутствуетВПрисоединенныхФайлах = Ложь; Прервать; КонецЕсли; КонецЦикла; Если ИзображениеОтсутствуетВПрисоединенныхФайлах Тогда ИмяКартинки = Сред(АтрибутИсточникКартинки.Значение, 5); НайденнаяСтрока = СформированноеСообщение.Вложения.Найти(ИмяКартинки, "Представление"); Если НайденнаяСтрока <> Неопределено Тогда ДвоичныеДанные = ПолучитьИзВременногоХранилища(НайденнаяСтрока.АдресВоВременномХранилище); АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ПараметрыШаблона.УникальныйИдентификатор); НайденнаяСтрока.Идентификатор = ИмяКартинки; НайденнаяСтрока.АдресВоВременномХранилище = АдресВоВременномХранилище; НовыйАтрибутКартинки = АтрибутИсточникКартинки.КлонироватьУзел(Ложь); НовыйАтрибутКартинки.ТекстовоеСодержимое = ИмяКартинки; Картинка.Атрибуты.УстановитьИменованныйЭлемент(НовыйАтрибутКартинки); КонецЕсли; КонецЕсли; КонецЦикла; Если Преобразовывать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 /////////////////////////////////////////////////////////////////////////////////////////////////////// |