Разработка и Конфигурация · 11 мин
Как вывести HTML в 1С: способы, код и настройка
Как вывести HTML в 1С: работа с полем HTML-документа, метод УстановитьТекст, вывод форматированного документа, типичные ошибки и готовые примеры кода.
Вывод HTML в 1С нужен в самых разных задачах: показать пользователю красиво оформленную подсказку, отчёт с таблицами и цветовым выделением, содержимое письма, карту проезда или страницу из интернета. Платформа 1С:Предприятие 8 умеет отображать HTML прямо внутри формы, и для этого не требуются внешние компоненты.
Основной инструмент — реквизит формы с типом «Поле HTML-документа». Он использует встроенный браузерный движок (в зависимости от режима — Internet Explorer или WebKit), поэтому поддерживает разметку, стили, картинки и частично скрипты. Второй вариант — поле форматированного документа, которое подходит, когда нужен редактируемый текст с оформлением, а не полноценная веб-страница.
Ниже разобраны оба подхода: как добавить поле на форму, каким кодом вывести HTML-строку, как сформировать документ программно, какие ограничения есть у браузерного движка и какие ошибки встречаются чаще всего. Примеры кода приведены на встроенном языке 1С и работают в управляемых формах типовых конфигураций.
Какие способы вывода HTML существуют в 1С
В платформе есть три рабочих варианта, и выбор зависит от задачи. Первый — поле HTML-документа: полноценный браузер внутри формы, подходит для отображения готовых страниц, отчётов, писем и внешних сайтов. Второй — форматированный документ: текст с картинками, ссылками и стилями, который пользователь может редактировать; его можно заполнить из HTML через метод УстановитьHTML. Третий — табличный документ с последующим сохранением в HTML: подходит, когда нужно не показать страницу, а выгрузить отчёт в файл.
Отдельно стоит упомянуть веб-клиент: там поле HTML-документа работает через браузер пользователя, поэтому поведение может отличаться от тонкого клиента. Если решение должно работать одинаково везде, тестируйте разметку во всех целевых клиентах.
Сравнение вариантов
Для показа готовых страниц, писем, карт и отчётов. Только просмотр, редактирование недоступно.
Когда пользователь должен редактировать оформленный текст (описания, письма). HTML импортируется через УстановитьHTML.
Когда нужно сохранить отчёт в файл .html или отправить его по почте, а не показывать на форме.
Как добавить поле HTML-документа на форму
Откройте форму в конфигураторе и выполните несколько шагов. Сначала создайте реквизит формы, например с именем «ТекстHTML», тип — «Строка» неограниченной длины. Затем перетащите этот реквизит в дерево элементов формы и в свойствах элемента установите «Вид» = «Поле HTML-документа». После этого элемент перестанет быть обычным полем ввода и станет областью отображения страницы.
Разместите поле с учётом растягивания: в свойствах элемента задайте «Растягивать по горизонтали» и «Растягивать по вертикали», иначе при изменении размеров окна страница останется маленькой полосой. Если поле должно занимать всю форму, у группы-родителя проверьте способ отображения подчинённых элементов.
- 1Откройте форму в конфигураторе и добавьте реквизит ТекстHTML типа «Строка» без ограничения длины
- 2Перетащите реквизит в дерево элементов формы
- 3В палитре свойств элемента установите Вид = Поле HTML-документа
- 4Включите растягивание по горизонтали и вертикали
- 5В модуле формы присвойте реквизиту HTML-текст и проверьте результат в режиме предприятия
Как вывести HTML-строку программно
Вывод сводится к одному присваиванию: поле HTML-документа показывает то, что записано в связанном реквизите. Сформировать строку можно вручную, из макета или из данных информационной базы. Простейший пример — вывод приветственной страницы при открытии формы.
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ТекстHTML =
"<html><head><meta charset=""utf-8""></head>"
+ "<bodyfont-family:Arial; font-size:14px;"">"
+ "<h2color:#2a6db0;"">Здравствуйте!</h2>"
+ "<p>Это HTML-страница внутри формы 1С.</p>"
+ "</body></html>";
КонецПроцедуры
Обратите внимание на двойные кавычки: внутри строкового литерала 1С кавычка экранируется удвоением, поэтому атрибуты HTML записываются как..."". Если разметка большая, удобнее хранить её в макете типа «Текстовый документ» или «HTML-документ» и читать через ПолучитьМакет().ПолучитьТекст() — так код модуля остаётся чистым, а верстку можно править без изменения программы.
Когда нужно подставить данные из базы (номенклатуру, контрагента, суммы), формируйте строку конкатенацией или через СтрШаблон(), обязательно экранируя пользовательские данные, если они могут содержать символы разметки. Иначе название товара с амперсандом или угловой скобкой сломает страницу.
ТекстHTML = СтрШаблон("<p>%2</p>", Заголовок, Описание);Как вывести HTML через форматированный документ
Форматированный документ — объект, который хранит текст с форматированием, картинками и ссылками и допускает редактирование пользователем. В типовых конфигурациях именно так хранятся, например, тексты писем и примечания. Чтобы показать в нём готовый HTML, используется метод УстановитьHTML, который принимает текст разметки и соответствие картинок.
&НаСервере
Процедура ЗаполнитьОписание()
ТекстHTML = "<p><b>Важно:</b> отгрузка только после оплаты.</p>";
Картинки = Новый Структура;
ФорматДок = Новый ФорматированныйДокумент;
ФорматДок.УстановитьHTML(ТекстHTML, Картинки);
// ФорматДок можно записать в ХранилищеЗначения реквизита объекта
КонецПроцедуры
Второй параметр — структура или соответствие, где ключом выступает идентификатор картинки из атрибута src, а значением — объект типа «Картинка». Если картинки в разметке есть, а соответствие не заполнено, в документе останутся пустые места. Обратное преобразование выполняется методом ПолучитьHTML — так можно сохранить отредактированный пользователем текст обратно в HTML для отправки по почте.
Как загрузить внешнюю страницу или файл
Поле HTML-документа умеет показывать не только строку, но и содержимое по адресу. Если присвоить реквизиту URL (например, адрес веб-сервиса или внутреннего портала), поле загрузит страницу как обычный браузер. Так же можно указать путь к локальному файлу .html на диске — это удобно для подсказок и справочных материалов, поставляемых с конфигурацией.
Для навигации из кода используется метод поля формы Перейти(Адрес). Учтите, что внешние страницы требуют сетевого доступа и могут блокироваться настройками безопасности. Полезный приём — обработчик события поля «ПриНажатии», где можно перехватить клик по ссылке, отменить переход и вместо этого выполнить действие в 1С, например открыть карточку контрагента. Так строят интерактивные отчёты: ссылки вида «1c:ОткрытьДокумент?Номер=...» превращают HTML в элемент интерфейса.
Ограничения браузерного движка и производительность
Движок поля HTML-документа зависит от режима совместимости и настроек клиента. В старых режимах используется Internet Explorer, что ограничивает поддержку современных стандартов: flexbox-раскладка, новые CSS-свойства и часть JavaScript могут не работать. В новых версиях платформы доступен режим WebKit, который ведёт себя ближе к современным браузерам. Если страница отображается «криво», первым делом проверьте, какой движок используется.
Второй момент — производительность. Большие страницы с тяжёлыми скриптами и десятками картинок замедляют открытие формы, а на терминальных сессиях — ещё и нагружают канал. Практическое правило: для отчётов и подсказок используйте простую разметку, картинки встраивайте в base64 или размещайте рядом как файлы, а JavaScript сводите к минимуму. Каждое присваивание реквизиту нового HTML перерисовывает поле целиком, поэтому частые обновления (например, раз в секунду) лучше заменить обновлением по событию.
Проверка результата и типичные ошибки
После внедрения проверьте вывод в трёх режимах: тонкий клиент, толстый клиент и веб-клиент, если он используется. Совпадение отображения во всех трёх — признак корректной разметки. Также проверьте поведение при масштабировании окна и при пустых данных: страница не должна «ломаться», когда переменные не заполнены.
Как проверить результат
Разметка, цвета и таблицы видны как задумано, без полос кода
Виден сырой текст с тегами — реквизиту присвоен текст, но вид поля не переключён на HTML
Кириллица отображается корректно
Кракозябры — нет meta charset=utf-8 или файл сохранён в другой кодировке
Ссылки открывают нужные объекты 1С через обработчик ПриНажатии
Переходы уходят в браузер или выдают ошибку навигации
Частые вопросы
Можно ли вывести HTML в обычной (неуправляемой) форме?
Да. В обычных формах есть элемент управления «Поле HTML-документа», который добавляется через панель элементов. Ему доступны методы УстановитьТекст(HTML) и Перейти(Адрес), а также события навигации. Логика та же, что и в управляемых формах, отличается только способ привязки данных.
Почему поле HTML показывает пустую страницу?
Чаще всего реквизиту не присвоено значение или присваивание происходит на сервере после открытия формы без обновления клиента. Проверьте, что строка заполнена, вид элемента установлен в «Поле HTML-документа», а присваивание выполняется в обработчике ПриОткрытии или после получения данных с сервера.
Как вывести картинку внутри HTML в 1С?
Три способа: указать в src путь к файлу на диске или сетевому ресурсу, встроить изображение в base64 прямо в разметку, либо — для форматированного документа — передать картинки через второй параметр метода УстановитьHTML. Для автономной работы надёжнее всего base64 или соответствие картинок.
Можно ли из HTML вызвать процедуру 1С?
Да, через обработчик события поля «ПриНажатии». Ссылке задают специальный href (например, «app:ОткрытьЗаказ?ИД=123»), в обработчике анализируют адрес, устанавливают отказ от стандартного перехода и вызывают нужную процедуру. Так реализуют кликабельные дашборды и меню на HTML.
Чем вывести отчёт в HTML без формы?
Сформируйте табличный документ и сохраните его методом Записать с типом файла «HTML». Полученный файл можно отправить по почте, опубликовать или открыть в браузере. Для полного контроля над разметкой вместо этого собирайте HTML-строку вручную из данных запроса.
Работает ли поле HTML-документа в веб-клиенте?
Работает, но рендеринг выполняет браузер пользователя, поэтому результат зависит от его типа и версии. Сложные скрипты и специфичные возможности движка тонкого клиента могут вести себя иначе. Тестируйте разметку именно в тех браузерах, которыми пользуются сотрудники.
Что важно запомнить
Для показа HTML используйте поле HTML-документа: реквизит-строка неограниченной длины плюс присваивание разметки. Для редактируемого оформленного текста — форматированный документ с УстановитьHTML. Кавычки удваивайте, картинки встраивайте, внешний HTML очищайте от скриптов, результат проверяйте во всех клиентах.