На Инфостарте и в СЕТИ предлагают использовать base64 для хранения картинок в HTML документе. Это решение имеет ограничение на длину строки и при большом количестве картинок начинаются "тормоза" при сохранении и открытии веб документа.
Предлагается для редактора использовать Форматированный документ и хранить его в хранилище. При формирования HTML документа используется объект ПотокВПамяти, который позволяет сохранять картинки из форматированного документа в файл (ключевой момент) и по веб ссылке отображать картнку на веб форме.
Фрагмент кода: ИмяФайла (уникальное) = КлючЗначение.Ключ+"_"+Объект.Ссылка.УникальныйИдентификатор()+".jpg" позволяет ограничить количество временных файлов для открытых ссылок, т.е для всех пользовательских сеансов используется один и тот временный файл для конкретной картинки и позволяет избежать "затирания" файлов картинки.
Код для понимания несложный, описывать, думаю, не нужно.
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ТекущийОбъект.НовостиВХранилище = Новый ХранилищеЗначения(ФорматДокумент);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ФорматДокумент = ТекущийОбъект.НовостиВХранилище.Получить();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьРежимРедактирования(Команда)
Если НЕ Элементы.ФорматДокумент.ТолькоПросмотр Тогда
Элементы.ФорматДокумент.ТолькоПросмотр=Истина;
Иначе
Элементы.ФорматДокумент.ТолькоПросмотр=ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЗаполнитьХТМЛНаСервере( ) ;
Если НЕ РольДоступна("ПолныеПрава") Тогда
Отказ=Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьХТМЛНаСервере( )
HTML_String = "";
СтруктураКартинок = Новый Структура;
ФорматДокумент.ПолучитьHTML(HTML_String, СтруктураКартинок);
КаталогКартинок=КаталогВременныхФайлов();
Для каждого КлючЗначение из СтруктураКартинок Цикл
Стрим = Новый ПотокВПамяти;
КлючЗначение.Значение.Записать(Стрим);
Бинарник = Стрим.ЗакрытьИПолучитьДвоичныеДанные();
ИмяФайла = КлючЗначение.Ключ+"_"+Объект.Ссылка.УникальныйИдентификатор()+".jpg";
Бинарник.Записать(КаталогКартинок+ИмяФайла);
HTML_String=СтрЗаменить(HTML_String,КлючЗначение.Ключ,"http://localhost/SL/PicturesTemp/"+ИмяФайла);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура HTML_StringПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)
Если ДанныеСобытия.Свойство("href") И ЗначениеЗаполнено(ДанныеСобытия.href) Тогда
ИмяОткрываемойСтраницы = СокрЛП(ДанныеСобытия.href);
Протокол = ВРег(СтрЛевДоСимвола(ИмяОткрываемойСтраницы, ":"));
Если Протокол <> "HTTP" И Протокол <> "HTTPS" И Протокол <> "E1C" Тогда
Возврат; // Не ссылка
КонецЕсли;
ПерейтиПоСсылке(ИмяОткрываемойСтраницы);
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиПоСсылке(Ссылка) Экспорт
#Если ТолстыйКлиентОбычноеПриложение Тогда
ЗапуститьПриложение(Ссылка);
#Иначе
ПерейтиПоНавигационнойСсылке(Ссылка);
#КонецЕсли
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция СтрЛевДоСимвола(Строка, Разделитель, Остаток = Неопределено)
Позиция = СтрНайти(Строка, Разделитель);
Если Позиция = 0 Тогда
СтрокаДоТочки = Строка;
Остаток = "";
Иначе
СтрокаДоТочки = Лев(Строка, Позиция - 1);
Остаток = Сред(Строка, Позиция + СтрДлина(Разделитель));
КонецЕсли;
Возврат СтрокаДоТочки;
КонецФункции
&НаКлиенте
Процедура GetHTML(Команда)
ЗаполнитьХТМЛНаСервере( );
КонецПроцедуры