Возможно, кому-то эта информация пригодится.
Недавно столкнулся с вопросом редактирования на управляемой форме поля HTML документа. Это нужно для красивого оформления содержимого документа, а именно форматировать текст документа, размещать ссылки и таблицы. Однако, не всё так просто. В отличии от обычного приложения, в УФ нет возможности непосредственно править поле HTML. Для этих целей там есть специальный тип ФорматированныйДокумент, и соответственно, вид поля "Поле форматированного документа". Однако, форматированный документ до сих пор не поддерживает отображение таблиц. А это одна из главных задач, потому как пользователи постоянно копируют из экселя таблицы и вставляют их в документ. Поэтому обратил внимание на вот эту публикацию //infostart.ru/public/75313/. В ней всё решается штатными средствами, что понравилось. Правда ,пришлось немного доработать вставку ссылки в поле HTML документа из-за того что метод execCommand("CreateLink"...) ком-объекта не очень красиво отрабатывает, т.е. не вставляет ссылку в поле сразу. Поэтому вставку ссылки сделал так:
&НаКлиенте
Процедура ВставитьСсылку(Команда)
ПредставлениеСсылки = "";
Если ВвестиСтроку(ПредставлениеСсылки,"Адрес ссылки") Тогда
//копируем в буфер это представление:
Документ.ParentWindow.ClipboardData.SetData("Text", ПредставлениеСсылки);
//вставляем в поле текст представления:
Документ.execCommand("Paste");
//выделяем текст представления в поле:
Область = Документ.body.createTextRange();
Область.findText(ПредставлениеСсылки);
Область.select();
//заменяем выделенную область ссылкой:
Область.pasteHTML("<a href="+ПредставлениеСсылки+">"+ПредставлениеСсылки+"</a>");
КонецЕсли;
КонецПроцедуры
Как позже выяснилось, execCommand("CreateLink"...) может отработать правильно, но также нужно выделять область текста, для которого задаётся ссылка. Но текст остаётся выделенным и выделение снимается толко щелчком мыши в другой области поля:
&НаКлиенте
Процедура ВставитьСсылкуСтандартно(Команда)
ПредставлениеСсылки = "";
Если ВвестиСтроку(ПредставлениеСсылки,"Адрес ссылки") Тогда
//Если не делать копирование в буфер и выделение текста, то
//Документ.execCommand("CreateLink", Ложь, ПредставлениеСсылки) не отработает
//Поэтому делаем так же
//копируем в буфер это представление:
Документ.ParentWindow.ClipboardData.SetData("Text", ПредставлениеСсылки);
//вставляем в поле текст представления:
Документ.execCommand("Paste");
//выделяем текст представления в поле:
Область = Документ.body.createTextRange();
Область.findText(ПредставлениеСсылки);
Область.select();
//создаём ссылку и вставляем
Документ.execCommand("CreateLink", Ложь, ПредставлениеСсылки);
КонецЕсли;
КонецПроцедуры
Для примера прилагаю обработочку