Разработка и Конфигурация · 9 мин
Как вывести HTML-документ в 1С
Как вывести HTML-документ в 1С: поле HTML-документа, табличный документ, объект ДокументHTML. Примеры кода, настройка отображения, типичные ошибки и FAQ.
Вывод HTML-документа в 1С востребован в нескольких типовых сценариях: показ форматированных отчётов с нестандартным оформлением, отображение содержимого писем, вывод справочной информации, веб-страниц и результатов обмена с внешними сервисами. Платформа 1С:Предприятие предоставляет для этого несколько инструментов, и выбор зависит от того, откуда берётся HTML и что пользователь должен с ним делать.
Основных подхода три: элемент формы «Поле HTML-документа», специализированный объект ДокументHTML и конвертация через табличный документ. Первый вариант самый гибкий — он позволяет показывать произвольную разметку, запускать JavaScript и обрабатывать клики по ссылкам. Второй и третий подходят для более простых задач — например, сохранения HTML в файл или вывода на печать.
Ниже разобраны все способы с примерами кода на встроенном языке, ограничения каждого метода, проверка результата и типичные ошибки, которые мешают корректному отображению разметки.
Способы вывода HTML в 1С: что выбрать
Прежде чем писать код, определите задачу. Если нужно показать пользователю красиво оформленный текст внутри формы — используйте поле HTML-документа. Если HTML пришёл из внешнего источника и его нужно сохранить или разобрать — работайте с объектом ДокументHTML. Если конечная цель — печатная форма, правильнее конвертировать данные в табличный документ, а не выводить сырой HTML.
Сравнение вариантов
Интерактивный показ разметки пользователю, поддержка ссылок и скриптов. Ограничение: работает только в форме, зависит от браузерного движка платформы.
Запись HTML в файл, программный разбор структуры документа. Ограничение: не отображает документ визуально сам по себе.
Печать и сохранение в Excel/PDF. Ограничение: сложная вёрстка и стили теряются, поддерживается базовое форматирование.
Поле HTML-документа опирается на браузерный движок, встроенный в платформу (в тонком и веб-клиенте поведение может отличаться от толстого клиента). Это важно учитывать: разметка, корректно отображающаяся в одном клиенте, в другом может выглядеть иначе, поэтому лучше использовать простой, валидный HTML без экзотических конструкций.
Вывод HTML через поле HTML-документа на форме
Создайте в конфигураторе форму объекта или произвольную форму и добавьте реквизит формы типа «Строка» (неограниченная длина). Затем перетащите реквизит в дерево элементов формы и измените вид поля на «Поле HTML-документа». После этого вывод сводится к присваиванию строки с разметкой.
В ряде версий платформы доступен метод установки содержимого напрямую. Если поле связано с реквизитом, достаточно записать строку в реквизит — платформа сама отобразит разметку. Учтите: присваивание нового значения перезагружает содержимое поля, поэтому при частых обновлениях возможно мерцание.
Обработка кликов по ссылкам
Поле HTML-документа поддерживает событие ПриНажатии, которое срабатывает при клике по ссылке. В обработчике можно перехватить переход и выполнить произвольный код вместо открытия адреса — например, открыть карточку элемента справочника по ссылке вида «v8:Справочник.Товары.Код».
Для этого в обработчике события установите параметр отказа от стандартной обработки и разберите значение гиперссылки. Это стандартный приём для построения интерактивных дашбордов внутри 1С: HTML рисует интерфейс, а клики обрабатываются встроенным языком.
Загрузка HTML из файла или из интернета
Если разметка хранится во внешнем файле, прочитайте её объектом ЧтениеТекста с указанием кодировки — для HTML это чаще всего UTF-8. Неверная кодировка — самая частая причина «кракозябр» вместо кириллицы.
&НаСервере
Функция ПрочитатьHTMLИзФайла(ПутьКФайлу)
Чтение = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.UTF8);
Результат = Чтение.Прочитать();
Чтение.Закрыть();
Возврат Результат;
КонецФункцииДля загрузки страницы из интернета используйте HTTPСоединение и HTTPЗапрос. Полученное тело ответа — это и есть HTML-строка, которую можно вывести в поле документа. Учитывайте, что внешние ресурсы страницы (картинки, CSS) могут не загрузиться, если нет доступа к сети с компьютера пользователя или если веб-клиент блокирует смешанное содержимое.
Программная работа с объектом ДокументHTML
Объект ДокументHTML предназначен для чтения и записи HTML-файлов средствами платформы. В связке с ПостроительDOM он позволяет разобрать документ в дерево элементов и программно извлечь нужные данные — например, таблицы из присланной поставщиком HTML-спецификации.
Для записи HTML в файл используется ЗаписьHTML. Типовой сценарий: сформировать строку разметки, создать ДокументHTML через ЧтениеHTML и сохранить на диск. Это удобно для выгрузки отчётов, которые потом открываются в браузере без 1С.
- 1Сформируйте строку с HTML-разметкой
- 2Создайте ЧтениеHTML и установите строку через УстановитьСтроку
- 3Постройте ДокументHTML через ПостроительDOM
- 4Создайте ЗаписьHTML, откройте файл и вызовите Записать
- 5Откройте файл в браузере и проверьте результат
Вывод HTML на печать и сохранение в PDF
Поле HTML-документа не предназначено для печати штатными средствами. Если HTML нужно распечатать или сохранить в PDF, есть два пути. Первый — сохранить HTML во временный файл и открыть его в браузере, откуда пользователь печатает стандартными средствами. Второй — преобразовать данные в табличный документ 1С и использовать его возможности печати и экспорта в PDF.
Табличный документ поддерживает метод Записать с типом файла PDF, что полностью закрывает задачу формирования печатных форм без внешних компонентов. Но помните: произвольная HTML-вёрстка в табличный документ не конвертируется автоматически — макет нужно строить средствами 1С.
Проверка результата и типичные ошибки
После вывода проверьте три вещи: корректность кодировки (русский текст читается), работу ссылок (клики обрабатываются или открываются как задумано) и поведение в разных клиентах (тонкий, толстый, веб). Различия браузерных движков — главный источник сюрпризов при переносе решения между клиентами.
Как проверить результат
Символы отображаются корректно
Знаки вопроса или кракозябры — неверная кодировка
Срабатывает обработчик или открывается нужный объект
Открывается пустая страница или ошибка навигации
Разметка совпадает с тонким клиентом
Стили и структура отличаются — упростите 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, для печати — табличный документ. Следите за кодировкой, простотой разметки и проверяйте результат во всех используемых клиентах.