Как сохранить картинку из штрихкода для отображении в письме в формате HTML

1. sys1c 29.09.21 06:49 Сейчас в теме
Всем привет.
Вроде типовая задача, но внятного решения я к сожалению не нашел.

Задача проста, при проведении Заказа клиента, нужно отправить табличный документе, в виде HTML письма, все хорошо, но картинка (штрих код) документа отправляется пустым "кубиком".

Насколько понял две пробелемы.
1) Как сохранить штрих код, произвольные картинки из макета табличного документа, для отправки в HTML письма?
2) Как подцепить эти картинки к письму? нужно подменять ID Этих картинок, но не понял как его получить?

код отправки самого письма у меня получился такой:

ТабличныйДокумент = Заказ.ПолучитьОбъект().ПолучитьТабличныйДокументДляEmail();
	
ФайлВФорматеHTML = ПолучитьИмяВременногоФайла();
	
ТабличныйДокумент.Записать(ФайлВФорматеHTML, ТипФайлаТабличногоДокумента.HTML);
	
Вложения = Новый Массив;
	
СтруктураВложения = Новый Структура;
СтруктураВложения.Вставить("Представление", "Заказ");
СтруктураВложения.Вставить("АдресВоВременномХранилище", ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ФайлВФорматеHTML)));
	
Вложения.Добавить(СтруктураВложения);
	
ПараметрыПисьма = Новый Структура;
ПараметрыПисьма.Вставить("Кому", "klient@mail.ru");
ПараметрыПисьма.Вставить("Тема", "Заказ" );
ПараметрыПисьма.Вставить("Вложения", Вложения);
ПараметрыПисьма.Вставить("ТипТекста", ТипТекстаПочтовогоСообщения.HTML);
ПараметрыПисьма.Вставить("ОбрабатыватьТексты", Ложь);
	
ТекстПисьма = Новый ТекстовыйДокумент;
ТекстПисьма.Прочитать(ФайлВФорматеHTML);
    
ХТМЛТекст = ТекстПисьма.ПолучитьТекст();
	
ПараметрыПисьма.Вставить("Тело", ХТМЛТекст);	
	
Письмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоНаименованию("system@system.ru"), ПараметрыПисьма);
	
РаботаСПочтовымиСообщениями.ОтправитьПисьмо(Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоНаименованию("system@system.ru"), Письмо);
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starik-2005 3046 29.09.21 11:53 Сейчас в теме
Картинки в HTML - это или сцылка на файл, или встроенная в сцылку двоичная строка, закодированная в base64. Перед отправкой пройдись по HTML, найти там "img src=", поменяй это на img "src='dat a:base64," - ну и закинь сюды картинку, которую можно вытащить из коллекции картинок табличного документа.
https://ru.wikipedia.org/wiki/Data:_URL
3. sys1c 30.09.21 04:45 Сейчас в теме
(2) нашел такую же тему https://forum.infostart.ru/forum9/topic168715/
тупо "копипастом" - не работает.
при указании HTML5 вместо HTML тег IMG вообще не появлялся, ладно, сохранил в HTML, и картинка насколько я могу судить закодировалась, но все равно не работает.
Если не убираю ПараметрыПисьма.Вставить("ОбрабатыватьТексты", Ложь)
тогда письмо отрпавляется и ловлю все тот же пустой кубик вместо картинки.

Если с ОбработкойТекста - то ловлю ошибку

ОбщийМодуль.РаботаСПочтовымиСообщениямиСлужебный.Модуль(1529)}: Ошибка при вызове метода контекста (ОбработатьТексты)
Письмо.ОбработатьТексты();
по причине:
Файл не обнаружен 'file:///data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfYAAAA8CAYAAACU75jaAAABnUlEQVR4AezV­y66C
MBSGUfD93/noGTiwSbN3C0z+rDXT9AIF/c6/j2PiPM+fz9+h3+/HqeP4cd44­brZ1
tU51Xd15T63bvd/x+9k+s3WrdXafV3Ufu+ezev27512de3ff3fez2n/1HK+e­99X3
bPU+uuc/G9f9vVTrdc+lew7V9c72q9bvzr973buf5+5zW933qffu6nV1583G­jeN3
/5/+vQ4AIIawA0AQYQeAIMIOAEGEHQCCCDsABBF2AAgi7AAQRNgBIIiwA0AQ­YQeA
IMIOAEGEHQCCCDsABBF2AAgi7AAQRNgBIIiwA0AQYQeAIMIOAEGEHQCCCDsA­BBF2
AAgi7AAQRNgBIIiwA0AQYQeAIMIOAEGEHQCCCDsABBF2AAgi7ECod3t1IAAA­AMAw
yN/6HntJBJ/EDgAhYgeAELEDQIjYASBE7AAQInYACBE7AISIHQBCxA4AIWIH­gBCx
A0CI2AEgROwAECJ2AAgROwCEiB0AQsQOACFiB4AQsQNAiNgBIETsABAidgAI­ETsA
hIgdAELEDgAhYgeAELEDQMgAp6XNdPIXcvUAAAAASUVORK5CYII='



подскажите пожалуйста что не так? в html я вообще 0
4. starik-2005 3046 30.09.21 10:46 Сейчас в теме
(3) ну так Вы стандарта не придерживаетесь (ну или не Вы, а те товарищи, который сохранение писали в HTML). Просто сделайте правильно и проблема уйдет. Как правильно - см. сцылку.

Вообсче, тот бэйз64 - это не картинка походу...
5. sys1c 30.09.21 11:30 Сейчас в теме
Переделал еще раз, теперь получился вот такой код:
	ТабличныйДокумент = Заказ.ПолучитьОбъект().ПолучитьТабличныйДокументДляEmail();

    ИмяФайлаHTML = ПолучитьИмяВременногоФайла();
    ТабличныйДокумент.Записать(ИмяФайлаHTML, ТипФайлаТабличногоДокумента.HTML);
    ТекстПисьма = Новый ТекстовыйДокумент;
    ТекстПисьма.Прочитать(ИмяФайлаHTML);
	
	ТекстHTML = ТекстПисьма.ПолучитьТекст();
	ФайлHTML = Новый Файл(ИмяФайлаHTML);
	
	ИмяКаталогаКартинок = ФайлHTML.ИмяБезРасширения + "_files";
	ПутьКаталогаКартинок = СтрЗаменить(ФайлHTML.ПолноеИмя, ФайлHTML.Имя, ИмяКаталогаКартинок);
	
	// Ожидается, что в каталоге будут только картинки.
	ФайлыКартинок = НайтиФайлы(ПутьКаталогаКартинок, "*");
	
	Для Каждого ФайлКартинки Из ФайлыКартинок Цикл
		КартинкаТекстом = Base64Строка(Новый ДвоичныеДанные(ФайлКартинки.ПолноеИмя));
		КартинкаТекстом = "data:image/" + Сред(ФайлКартинки.Расширение,2) + ";base64," + Символы.ПС + КартинкаТекстом;
		
		ТекстHTML = СтрЗаменить(ТекстHTML, ИмяКаталогаКартинок + "/" + ФайлКартинки.Имя, КартинкаТекстом);
	КонецЦикла;
		
	ТекстПисьма.УстановитьТекст(ТекстHTML);
	ТекстПисьма.Записать(ИмяФайлаHTML, КодировкаТекста.UTF8);
	
	
	ПараметрыПисьма = Новый Структура;
	ПараметрыПисьма.Вставить("Кому", "klient@mail.ru");
	ПараметрыПисьма.Вставить("Копия", "klient@mail.ru");
	ПараметрыПисьма.Вставить("Тема", "Заказ" );
	ПараметрыПисьма.Вставить("ТипТекста", Перечисления.ТипыТекстовЭлектронныхПисем.HTMLСКартинками);
	
	
    ПараметрыПисьма.Вставить("Тело", ТекстHTML);	
	
	Письмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоНаименованию("system@system.ru"), ПараметрыПисьма);
	         
	РаботаСПочтовымиСообщениями.ОтправитьПисьмо(Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоНаименованию("system@system.ru"), Письмо);

Показать



и по прежнему ловлю
ОбщийМодуль.РаботаСПочтовымиСообщениямиСлужебный.Модуль(1529)}: Ошибка при вызове метода контекста (ОбработатьТексты)
Письмо.ОбработатьТексты();
по причине:
Файл не обнаружен 'file:///data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfYAAAA8CAYAAACU75jaAAABnUlEQVR4AezV­­y66C
MBSGUfD93/noGTiwSbN3C0z+rDXT9AIF/c6/j2PiPM+fz9+h3+/HqeP4cd44­­brZ1
tU51Xd15T63bvd/x+9k+s3WrdXafV3Ufu+ezev27512de3ff3fez2n/1HK+e­­99X3
bPU+uuc/G9f9vVTrdc+lew7V9c72q9bvzr973buf5+5zW933qffu6nV1583G­­jeN3
/5/+vQ4AIIawA0AQYQeAIMIOAEGEHQCCCDsABBF2AAgi7AAQRNgBIIiwA0AQ­­YQeA
IMIOAEGEHQCCCDsABBF2AAgi7AAQRNgBIIiwA0AQYQeAIMIOAEGEHQCCCDsA­­BBF2
AAgi7AAQRNgBIIiwA0AQYQeAIMIOAEGEHQCCCDsABBF2AAgi7ECod3t1IAAA­­AMAw
yN/6HntJBJ/EDgAhYgeAELEDQIjYASBE7AAQInYACBE7AISIHQBCxA4AIWIH­­gBCx
A0CI2AEgROwAECJ2AAgROwCEiB0AQsQOACFiB4AQsQNAiNgBIETsABAidgAI­­ETsA
hIgdAELEDgAhYgeAELEDQMgAp6XNdPIXcvUAAAAASUVORK5CYII='

может кто подсказать, в чем ошибка?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот