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
diff --git a/src/cf/InformationRegisters/узТекущиеШаблоныСообщений.xml b/src/cf/InformationRegisters/узТекущиеШаблоныСообщений.xml
index 3c231837b..53e037e06 100644
--- a/src/cf/InformationRegisters/узТекущиеШаблоныСообщений.xml
+++ b/src/cf/InformationRegisters/узТекущиеШаблоныСообщений.xml
@@ -46,7 +46,7 @@