К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как вывести HTML-документ в 1С

Как вывести HTML-документ в 1С: поле HTML-документа, табличный документ, объект ДокументHTML. Примеры кода, настройка отображения, типичные ошибки и FAQ.

Вывод HTML-документа в 1С востребован в нескольких типовых сценариях: показ форматированных отчётов с нестандартным оформлением, отображение содержимого писем, вывод справочной информации, веб-страниц и результатов обмена с внешними сервисами. Платформа 1С:Предприятие предоставляет для этого несколько инструментов, и выбор зависит от того, откуда берётся HTML и что пользователь должен с ним делать.

Основных подхода три: элемент формы «Поле HTML-документа», специализированный объект ДокументHTML и конвертация через табличный документ. Первый вариант самый гибкий — он позволяет показывать произвольную разметку, запускать JavaScript и обрабатывать клики по ссылкам. Второй и третий подходят для более простых задач — например, сохранения HTML в файл или вывода на печать.

Ниже разобраны все способы с примерами кода на встроенном языке, ограничения каждого метода, проверка результата и типичные ошибки, которые мешают корректному отображению разметки.

Способы вывода HTML в 1С: что выбрать

Прежде чем писать код, определите задачу. Если нужно показать пользователю красиво оформленный текст внутри формы — используйте поле HTML-документа. Если HTML пришёл из внешнего источника и его нужно сохранить или разобрать — работайте с объектом ДокументHTML. Если конечная цель — печатная форма, правильнее конвертировать данные в табличный документ, а не выводить сырой HTML.

Сравнение вариантов

Поле HTML-документа на форме

Интерактивный показ разметки пользователю, поддержка ссылок и скриптов. Ограничение: работает только в форме, зависит от браузерного движка платформы.

Объект ДокументHTML

Запись HTML в файл, программный разбор структуры документа. Ограничение: не отображает документ визуально сам по себе.

Конвертация в табличный документ

Печать и сохранение в Excel/PDF. Ограничение: сложная вёрстка и стили теряются, поддерживается базовое форматирование.

Поле HTML-документа опирается на браузерный движок, встроенный в платформу (в тонком и веб-клиенте поведение может отличаться от толстого клиента). Это важно учитывать: разметка, корректно отображающаяся в одном клиенте, в другом может выглядеть иначе, поэтому лучше использовать простой, валидный HTML без экзотических конструкций.

Вывод HTML через поле HTML-документа на форме

Создайте в конфигураторе форму объекта или произвольную форму и добавьте реквизит формы типа «Строка» (неограниченная длина). Затем перетащите реквизит в дерево элементов формы и измените вид поля на «Поле HTML-документа». После этого вывод сводится к присваиванию строки с разметкой.

В ряде версий платформы доступен метод установки содержимого напрямую. Если поле связано с реквизитом, достаточно записать строку в реквизит — платформа сама отобразит разметку. Учтите: присваивание нового значения перезагружает содержимое поля, поэтому при частых обновлениях возможно мерцание.

Обработка кликов по ссылкам

Поле HTML-документа поддерживает событие ПриНажатии, которое срабатывает при клике по ссылке. В обработчике можно перехватить переход и выполнить произвольный код вместо открытия адреса — например, открыть карточку элемента справочника по ссылке вида «v8:Справочник.Товары.Код».

Для этого в обработчике события установите параметр отказа от стандартной обработки и разберите значение гиперссылки. Это стандартный приём для построения интерактивных дашбордов внутри 1С: HTML рисует интерфейс, а клики обрабатываются встроенным языком.

Загрузка HTML из файла или из интернета

Если разметка хранится во внешнем файле, прочитайте её объектом ЧтениеТекста с указанием кодировки — для HTML это чаще всего UTF-8. Неверная кодировка — самая частая причина «кракозябр» вместо кириллицы.

1c
&НаСервере
Функция ПрочитатьHTMLИзФайла(ПутьКФайлу)
	Чтение = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.UTF8);
	Результат = Чтение.Прочитать();
	Чтение.Закрыть();
	Возврат Результат;
КонецФункции

Для загрузки страницы из интернета используйте HTTPСоединение и HTTPЗапрос. Полученное тело ответа — это и есть HTML-строка, которую можно вывести в поле документа. Учитывайте, что внешние ресурсы страницы (картинки, CSS) могут не загрузиться, если нет доступа к сети с компьютера пользователя или если веб-клиент блокирует смешанное содержимое.

Программная работа с объектом ДокументHTML

Объект ДокументHTML предназначен для чтения и записи HTML-файлов средствами платформы. В связке с ПостроительDOM он позволяет разобрать документ в дерево элементов и программно извлечь нужные данные — например, таблицы из присланной поставщиком HTML-спецификации.

Для записи HTML в файл используется ЗаписьHTML. Типовой сценарий: сформировать строку разметки, создать ДокументHTML через ЧтениеHTML и сохранить на диск. Это удобно для выгрузки отчётов, которые потом открываются в браузере без 1С.

Порядок сохранения HTML в файл
  1. 1
    Сформируйте строку с HTML-разметкой
  2. 2
    Создайте ЧтениеHTML и установите строку через УстановитьСтроку
  3. 3
    Постройте ДокументHTML через ПостроительDOM
  4. 4
    Создайте ЗаписьHTML, откройте файл и вызовите Записать
  5. 5
    Откройте файл в браузере и проверьте результат

Вывод HTML на печать и сохранение в PDF

Поле HTML-документа не предназначено для печати штатными средствами. Если HTML нужно распечатать или сохранить в PDF, есть два пути. Первый — сохранить HTML во временный файл и открыть его в браузере, откуда пользователь печатает стандартными средствами. Второй — преобразовать данные в табличный документ 1С и использовать его возможности печати и экспорта в PDF.

Табличный документ поддерживает метод Записать с типом файла PDF, что полностью закрывает задачу формирования печатных форм без внешних компонентов. Но помните: произвольная HTML-вёрстка в табличный документ не конвертируется автоматически — макет нужно строить средствами 1С.

Проверка результата и типичные ошибки

После вывода проверьте три вещи: корректность кодировки (русский текст читается), работу ссылок (клики обрабатываются или открываются как задумано) и поведение в разных клиентах (тонкий, толстый, веб). Различия браузерных движков — главный источник сюрпризов при переносе решения между клиентами.

Типичные ошибки
01
Чтение файла без указания кодировки — кириллица отображается нечитаемыми символами
02
Использование сложного CSS и современных скриптов — движок платформы их не поддерживает, разметка «разваливается»
03
Обновление поля в цикле — постоянная перезагрузка содержимого вызывает мерцание и просадку производительности
04
Попытка печатать напрямую из поля HTML — штатной печати нет, нужен обходной путь через файл или табличный документ
05
Ссылки на локальные картинки по абсолютным путям — на другом компьютере изображения не откроются
Контрольные точки

Как проверить результат

Текст на русском языке
Норма

Символы отображаются корректно

Тревожный признак

Знаки вопроса или кракозябры — неверная кодировка

Клик по ссылке
Норма

Срабатывает обработчик или открывается нужный объект

Тревожный признак

Открывается пустая страница или ошибка навигации

Отображение в веб-клиенте
Норма

Разметка совпадает с тонким клиентом

Тревожный признак

Стили и структура отличаются — упростите HTML

Если поле остаётся пустым после присваивания строки, проверьте, что реквизит действительно связан с элементом формы и что вид поля установлен именно в «Поле HTML-документа», а не в обычное поле ввода. Также убедитесь, что строка не пустая и не содержит ошибок, из-за которых движок отказывается рендерить документ.

FAQ

Можно ли вывести HTML в управляемой форме без реквизита?

Нет, поле HTML-документа должно быть связано с реквизитом формы типа «Строка». Создайте реквизит программно или в конфигураторе, установите вид поля и присваивайте значение реквизиту — содержимое отобразится автоматически.

Почему в поле HTML не работают скрипты и современные стили?

Поле использует браузерный движок, встроенный в платформу, с ограниченной поддержкой современных возможностей. Рассчитывайте на базовый HTML и простой CSS, а интерактивность реализуйте через событие ПриНажатии и код на встроенном языке.

Как вывести HTML-письмо из почты в 1С?

Получите тело письма через интернет-почтовый профиль (объекты ИнтернетПочта и ИнтернетПочтовоеСообщение), найдите тело с типом содержимого HTML и присвойте его текст реквизиту, связанному с полем HTML-документа. Картинки из вложений потребуется сохранить и подставить ссылки на локальные файлы.

Можно ли в поле HTML открыть внешний сайт по адресу?

Да, в ряде версий платформы поле может отобразить страницу по URL, но надёжнее для этой задачи использовать метод ПерейтиПоНавигационнойСсылке или запуск браузера — так поведение будет предсказуемым во всех клиентах и не будет зависеть от доступности сети в момент открытия формы.

Как сохранить содержимое поля HTML в файл?

Значение реквизита — это обычная строка. Запишите её объектом ЗаписьТекста с кодировкой UTF-8 в файл с расширением .html. Если нужен именно объектный путь, используйте связку ЧтениеHTML, ПостроительDOM и ЗаписьHTML.

Что делать, если HTML отображается по-разному в тонком и веб-клиенте?

Упростите разметку: уберите сложные стили, позиционирование и скрипты, используйте табличную вёрстку и inline-стили. Проверяйте результат во всех целевых клиентах до передачи решения пользователям — это единственный надёжный способ выявить расхождения движков.

Итог

Что важно запомнить

Для экранного показа HTML используйте поле HTML-документа с реквизитом-строкой, для сохранения — ДокументHTML и ЗаписьHTML, для печати — табличный документ. Следите за кодировкой, простотой разметки и проверяйте результат во всех используемых клиентах.