diff --git a/src/cf/Catalogs/узЗадачи/Ext/ObjectModule.bsl b/src/cf/Catalogs/узЗадачи/Ext/ObjectModule.bsl index 480cecb37..540cd2a1a 100644 --- a/src/cf/Catalogs/узЗадачи/Ext/ObjectModule.bsl +++ b/src/cf/Catalogs/узЗадачи/Ext/ObjectModule.bsl @@ -507,15 +507,11 @@ Возврат; КонецЕсли; - ПараметрыПисьма = ПолучитьПараметрыПисьма(РезультатФункции); + //+ГЕНА ДопПараметры = Новый Структура(); ДопПараметры.Вставить("ВажностьЗадачи",Важность); - ДопПараметры.Вставить("ТекстПисьма",ПараметрыПисьма.ТекстПисьма); - ДопПараметры.Вставить("ТемаПисьма",ПараметрыПисьма.ТемаПисьма); ДопПараметры.Вставить("ПользовательКому",Исполнитель); - //+ГЕНА - ДопПараметры.Вставить("ТипТекста", ПараметрыПисьма.ТипТекста); - ДопПараметры.Вставить("ТекстПисьмаHTML", ПараметрыПисьма.ТекстПисьмаHTML); + ПолучитьПараметрыПисьма(РезультатФункции, ДопПараметры); //-ГЕНА //+ #190 SZ 16.03.2020 @@ -580,15 +576,11 @@ Возврат; КонецЕсли; - ПараметрыПисьма = ПолучитьПараметрыПисьма(РезультатФункции); + //+ГЕНА ДопПараметры = Новый Структура(); ДопПараметры.Вставить("ВажностьЗадачи",Важность); - ДопПараметры.Вставить("ТекстПисьма",ПараметрыПисьма.ТекстПисьма); - ДопПараметры.Вставить("ТемаПисьма",ПараметрыПисьма.ТемаПисьма); ДопПараметры.Вставить("ПользовательКому",СтарыйИсполнитель); - //+ГЕНА - ДопПараметры.Вставить("ТипТекста", ПараметрыПисьма.ТипТекста); - ДопПараметры.Вставить("ТекстПисьмаHTML", ПараметрыПисьма.ТекстПисьмаHTML); + ПолучитьПараметрыПисьма(РезультатФункции, ДопПараметры); //-ГЕНА //+ #190 SZ 16.03.2020 @@ -629,17 +621,12 @@ Возврат; КонецЕсли; - ПараметрыПисьма = ПолучитьПараметрыПисьма(РезультатФункции); - + //+ГЕНА ДопПараметры = Новый Структура(); ДопПараметры.Вставить("ВажностьЗадачи",Важность); - ДопПараметры.Вставить("ТекстПисьма",ПараметрыПисьма.ТекстПисьма); - ДопПараметры.Вставить("ТемаПисьма",ПараметрыПисьма.ТемаПисьма); ДопПараметры.Вставить("Статус",Статус); ДопПараметры.Вставить("МассивПользователейКому",МассивНаблюдателей); - //+ГЕНА - ДопПараметры.Вставить("ТипТекста", ПараметрыПисьма.ТипТекста); - ДопПараметры.Вставить("ТекстПисьмаHTML", ПараметрыПисьма.ТекстПисьмаHTML); + ПолучитьПараметрыПисьма(РезультатФункции, ДопПараметры); //-ГЕНА узОбщийМодульСервер.ОтправитьПисьмо(ДопПараметры); @@ -684,24 +671,19 @@ КонецЕсли; //-ГЕНА - ПараметрыПисьма = ПолучитьПараметрыПисьма(РезультатФункции); - МассивКонтрагентов = Новый Массив(); МассивКонтрагентов.Добавить(Контрагент); ТЗАдресаЭлектроннойПочты = узОбщийМодульСервер.ПолучитьТЗАдресаЭлектроннойПочтыПоМассивуКонтрагентов( МассивКонтрагентов); + //+ГЕНА ДопПараметры = Новый Структура(); ДопПараметры.Вставить("ВажностьЗадачи",Важность); - ДопПараметры.Вставить("ТекстПисьма",ПараметрыПисьма.ТекстПисьма); - ДопПараметры.Вставить("ТемаПисьма",ПараметрыПисьма.ТемаПисьма); ДопПараметры.Вставить("ТЗАдресаЭлектроннойПочты",ТЗАдресаЭлектроннойПочты); ДопПараметры.Вставить("ЭтоОтправкаКонтрагентам",ЭтоОтправкаКонтрагентам); ДопПараметры.Вставить("Задача",Ссылка); - //+ГЕНА - ДопПараметры.Вставить("ТипТекста", ПараметрыПисьма.ТипТекста); - ДопПараметры.Вставить("ТекстПисьмаHTML", ПараметрыПисьма.ТекстПисьмаHTML); + ПолучитьПараметрыПисьма(РезультатФункции, ДопПараметры); //-ГЕНА пУчетнаяЗапись = ПолучитьУчетнуюЗаписьДляОтправкиУведомленийДляКонтрагентов(); @@ -942,7 +924,7 @@ Возврат РезультатФункции; КонецФункции -Функция ПолучитьПараметрыПисьма(ДопПараметры) +Процедура ПолучитьПараметрыПисьма(ДопПараметры, РезультатФункции) //МассивКодовСообщений = Новый Массив(); //МассивКодовСообщений.Добавить(22); //Добрый день //МассивКодовСообщений.Добавить(23); //Номер задачи @@ -1027,14 +1009,12 @@ ДопПараметры.Вставить("НомерЗадачи",НомерЗадачи); //ГЕНА - РезультатФункции = Новый Структура(); РезультатФункции.Вставить("ТемаПисьма",ТемаПисьма); РезультатФункции.Вставить("ТипТекста", ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.ПростойТекст")); ПолучитьТекстПисьма(ДопПараметры, РезультатФункции); //-ГЕНА - Возврат РезультатФункции; -КонецФункции +КонецПроцедуры Процедура ПолучитьТекстПисьма(ДопПараметры, РезультатФункции) // ГЕНА @@ -1059,12 +1039,12 @@ пТекстПисьма = ПолучитьТекстПисьма_Общее(ДопПараметры); Конецесли; РезультатФункции.Вставить("ТекстПисьма", пТекстПисьма); - РезультатФункции.Вставить("ТекстПисьмаHTML", ""); Иначе РезультатФункции.Вставить("ТипТекста", ТекстИТемаПисьма.ТипТекста); РезультатФункции.Вставить("ТемаПисьма", ТекстИТемаПисьма.Тема); РезультатФункции.Вставить("ТекстПисьма", ТекстИТемаПисьма.Текст); РезультатФункции.Вставить("ТекстПисьмаHTML", ТекстИТемаПисьма.ТекстHTML); + РезультатФункции.Вставить("ВложенияКартинки", ТекстИТемаПисьма.ВложенияКартинки); КонецЕсли; //-ГЕНА @@ -1556,10 +1536,41 @@ ТипТекста = ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.HTML"); ТекстHTML = ДанныеСообщения.Текст; + + // Получение простого текста из письма HTML + СтруктураВложений = Новый Структура; ДокHTML = Новый ФорматированныйДокумент; - ДокHTML.УстановитьHTML(ДанныеСообщения.Текст, Новый Структура); + ДокHTML.УстановитьHTML(ДанныеСообщения.Текст, СтруктураВложений); Текст = ДокHTML.ПолучитьТекст(); + // Преобразования картинок во вложения и передача для прикрепления к документу письма + Если ТипЗнч(ДанныеСообщения.Вложения) <> Неопределено Тогда + СписокКартинок = Новый СписокЗначений; + Для каждого Вложение Из ДанныеСообщения.Вложения Цикл + Если ЗначениеЗаполнено(Вложение.Идентификатор) Тогда + ДвоичныеДанные = ПолучитьИзВременногоХранилища(Вложение.АдресВоВременномХранилище); + Изображение = Новый Картинка(ДвоичныеДанные); + Если Изображение.Формат() = ФорматКартинки.PNG Тогда + РасширениеКартинки = "png"; + ИначеЕсли Изображение.Формат() = ФорматКартинки.JPEG Тогда + РасширениеКартинки = "jpeg"; + ИначеЕсли Изображение.Формат() = ФорматКартинки.GIF Тогда + РасширениеКартинки = "gif"; + ИначеЕсли Изображение.Формат() = ФорматКартинки.SVG Тогда + РасширениеКартинки = "svg"; + ИначеЕсли Изображение.Формат() = ФорматКартинки.TIFF Тогда + РасширениеКартинки = "tiff"; + Иначе + РасширениеКартинки = ""; + КонецЕсли; + // Добавление расширения к представлению чтобы было понятно в каком формате сохранять файл + ПредставлениеКартинки = Вложение.Представление + ?(ПустаяСтрока(РасширениеКартинки), "", "." + РасширениеКартинки); + СписокКартинок.Добавить(Вложение.Идентификатор, ПредставлениеКартинки,, Изображение); + КонецЕсли; + КонецЦикла; + ТекстИТемаПисьма.Вставить("ВложенияКартинки", СписокКартинок); + КонецЕсли; + Иначе ТипТекста = ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.ПростойТекст"); ТекстHTML = ""; @@ -1574,4 +1585,3 @@ КонецФункции //-ГЕНА - diff --git a/src/cf/CommonModules/узОбщийМодульСервер/Ext/Module.bsl b/src/cf/CommonModules/узОбщийМодульСервер/Ext/Module.bsl index 66b23a22c..c5c1b6a65 100644 --- a/src/cf/CommonModules/узОбщийМодульСервер/Ext/Module.bsl +++ b/src/cf/CommonModules/узОбщийМодульСервер/Ext/Module.bsl @@ -30,9 +30,8 @@ Если ДокОбъект.ТипТекста = ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.HTML") ИЛИ ДокОбъект.ТипТекста = ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.HTMLСКартинками") Тогда ДокОбъект.ТекстHTML = ДопПараметры.ТекстПисьмаHTML; - Иначе - ДокОбъект.Текст = ТекстПисьма; КонецЕсли; + ДокОбъект.Текст = ТекстПисьма; // Обычный текст сохраняется всегда //-ГЕНА ДокОбъект.УчетнаяЗапись = ПредопределенноеЗначение("Справочник.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты"); @@ -79,6 +78,14 @@ ДокОбъект.Записать(); + //+ГЕНА + // Сохранения вложенных картинок в присоединенных файлах документа + Если ДокОбъект.ТипТекста = ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.HTML") + И ДопПараметры.ВложенияКартинки.Количество() > 0 Тогда + СохранитьКартинкиФорматированногоДокументаКакПрисоединенныеФайлы(ДокОбъект.Ссылка, ДопПараметры.ВложенияКартинки); + КонецЕсли; + //-ГЕНА + Если ДопПараметры.Свойство("Задача") Тогда Взаимодействия.УстановитьПредмет(ДокОбъект.Ссылка, ДопПараметры.Задача); КонецЕсли; @@ -1270,3 +1277,24 @@ КонецЕсли; КонецПроцедуры + +//+ГЕНА +Процедура СохранитьКартинкиФорматированногоДокументаКакПрисоединенныеФайлы(Ссылка, СписокКартинок) + + Для каждого Вложение Из СписокКартинок Цикл + + ДвоичныеДанныеКартинки = Вложение.Картинка.ПолучитьДвоичныеДанные(); + АдресКартинкиВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеКартинки); + ПрисоединенныйФайл = УправлениеЭлектроннойПочтой.ЗаписатьВложениеЭлектронногоПисьмаИзВременногоХранилища( + Ссылка, АдресКартинкиВоВременномХранилище, + "_" + СтрЗаменить(Вложение.Представление, "-", "_"), ДвоичныеДанныеКартинки.Размер()); + + Если ПрисоединенныйФайл <> Неопределено Тогда + ПрисоединенныйФайлОбъект = ПрисоединенныйФайл.ПолучитьОбъект(); + ПрисоединенныйФайлОбъект.ИДФайлаЭлектронногоПисьма = "cid:" + Вложение.Значение; + ПрисоединенныйФайлОбъект.Записать(); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры +//-ГЕНА \ No newline at end of file