В разработке на платформе 1С часто возникает задача вывести на форму произвольный текст, сформированный HTML-шаблон из файла или содержимое внешних веб-ресурсов. Рассмотрим подробно, как загрузить текст из локального файла, передать его в поле HTML-документа, а также объединить несколько страниц в одном элементе управления.
Самый распространенный способ вывода текста или готовой HTML-разметки на форму — чтение содержимого файла в строковую переменную и запись её в реквизит формы, связанный с полем HTML-документа.
Проанализируем базовый алгоритм шагов:
ТекстHTML).ЧтениеТекста.<html><body>...</body></html>.Посмотрим на пример кода для чтения файла и формирования HTML-структуры:
Чтение = Новый ЧтениеТекста;
Чтение.ОткрытьФайл(ПутьКФайлу, КодировкаТекста.UTF8);
ИсходныйТекст = Чтение.Прочитать();
Чтение.Закрыть();
// Формируем корректный HTML-документ с указанием кодировки
Разметка = "<html><head><meta charset=""utf-8""><meta http-equiv=""X-UA-Compatible"" content=""IE=edge""></head><body>"
+ ИсходныйТекст
+ "</body></html>";
Объект.РеквизитHTML = Разметка;
Если нет необходимости предварительно обрабатывать текст в коде 1С, мы можем загрузить локальный HTML-файл или внешний сайт напрямую через метод Перейти() элемента формы.
Рассмотрим пример загрузки локального файла по протоколу file:///:
ПутьКФайлу = "C:/Templates/Page.html";
Элементы.ПолеHTMLДокумента.Перейти("file:///" + СтрЗаменить(ПутьКФайлу, "\", "/"));
Выясним, как отобразить несколько веб-страниц или блоков контента внутри одного элемента управления. Для этого существуют два основных подхода:
<iframe>, указывающие на разные URL-адреса или файлы. Это позволяет отображать несколько независимых веб-страниц на одном экране.
Разметка = "<html><body>"
+ "<iframe src=""https://site1.com"" width=""100%"" height=""300""></iframe>"
+ "<iframe src=""https://site2.com"" width=""100%"" height=""300""></iframe>"
+ "</body></html>";
Объект.РеквизитHTML = Разметка;
HTTPСоединение и HTTPЗапрос. Полученные тела ответов объединяются в единый HTML-код перед выводом на форму.При работе с HTML-полем в 1С следует учитывать следующие особенности:
<, > и & могут исказить отображение. Чтобы сохранить переносы строк и исходный форматированный вид, текст стоит оборачивать в тег <pre>...</pre>.<head> мета-тег <meta charset="utf-8">, чтобы избежать проблем с кракозябрами, и <meta http-equiv="X-UA-Compatible" content="IE=edge"> для коректного применения стилей и скриптов встроенным движком.ФорматированныйДокумент или стандартное Поле текстового документа без погружения в HTML-разметку.