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

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

Как открыть HTML в 1С: рабочие способы и примеры кода

Как открыть HTML-страницу в 1С: поле HTML-документа, запуск в браузере, COM-объект Internet Explorer, загрузка из файла и URL. Примеры кода и ошибки.

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

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

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

Какие способы открыть HTML существуют в 1С

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

Отдельный вариант — COM-объект Internet Explorer, который исторически применялся в обычных формах и толстом клиенте. Сейчас он считается устаревшим: сам браузер выведен из поддержки, а поле HTML-документа покрывает те же задачи надёжнее. Использовать COM-подход имеет смысл только при сопровождении старых конфигураций, где он уже внедрён.

Сравнение способов

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

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

Запуск во внешнем браузере

Открытие файла или URL в браузере пользователя. Полная совместимость с сайтами, но страница живёт вне 1С и не управляется из формы.

Чтение как текст

Загрузка HTML для разбора, поиска данных, конвертации. Не предназначен для визуального отображения.

COM Internet Explorer

Устаревший вариант для старых конфигураций на обычных формах. Для новой разработки не рекомендуется.

Отображение HTML в форме через поле HTML-документа

Основной способ показать HTML внутри 1С — реквизит формы с видом «Поле HTML-документа». Создайте реквизит формы типа «Строка» (неограниченной длины), перетащите его на форму и в свойствах элемента установите вид «Поле HTML-документа». После этого любое присвоение строки с HTML-разметкой или адреса страницы этому реквизиту приводит к отрисовке содержимого.

Минимальный пример вывода форматированного текста:

&НаКлиенте

Процедура ПоказатьСправку(Команда)

HTMLТекст = "<html><body><h2>Порядок работы</h2>"

+ "<p>Заполните документ и нажмите <b>Провести</b>.</p>"

+ "</body></html>";

ПолеHTML = HTMLТекст;

КонецПроцедуры

Для загрузки страницы по адресу достаточно присвоить реквизиту URL: ПолеHTML = "https://example.com/page";. Поле само выполнит запрос и отобразит результат. Для локального файла укажите путь в формате file:/// или предварительно прочитайте файл в строку и присвойте текст — второй вариант надёжнее, поскольку у клиентского сеанса может не быть доступа к серверному каталогу.

Как добавить поле HTML-документа в форму
  1. 1
    Откройте форму в конфигураторе и добавьте реквизит формы типа «Строка» без ограничения длины
  2. 2
    Перетащите реквизит в дерево элементов формы
  3. 3
    В палитре свойств элемента установите вид «Поле HTML-документа»
  4. 4
    В коде присвойте реквизиту HTML-разметку или URL
  5. 5
    Запустите режим предприятия и проверьте отображение

Особенности работы в разных клиентах

Поле HTML-документа работает в толстом, тонком и веб-клиенте, но движок рендеринга различается. В Windows-клиентах используется системный браузерный компонент, в веб-клиенте — iframe браузера пользователя. Из-за этого одна и та же страница со сложными скриптами может выглядеть по-разному. Для внутренних отчётов и справок используйте простой HTML без тяжёлых JavaScript-библиотек — так отображение будет предсказуемым везде.

Открытие HTML-файла во внешнем браузере

Если страницу нужно показать «как есть», со всеми скриптами и стилями, надёжнее открыть её в браузере пользователя. Для этого служит метод ЗапуститьПриложение() (в тонком клиенте — асинхронный НачатьЗапускПриложения() с описанием оповещения). Операционная система сама выберет браузер по ассоциации расширения .html.

&НаКлиенте

Процедура ОткрытьВБраузере(Команда)

ПутьКФайлу = "C:\Отчеты\Отчет.html";

НачатьЗапускПриложения(

Новый ОписаниеОповещения("ПослеЗапуска", ЭтотОбъект),

ПутьКФайлу);

КонецПроцедуры

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

Чтение HTML как текста и программный разбор

Когда HTML нужен не для показа, а для извлечения данных, используйте объект ЧтениеHTML в связке с построителем DOM. Это позволяет обратиться к элементам страницы по тегам, идентификаторам и классам без ручного разбора строки регулярными выражениями.

Чтение = Новый ЧтениеHTML;

Чтение.ОткрытьФайл("C:\Данные\страница.html");

Построитель = Новый ПостроительDOM;

Документ = Построитель.Прочитать(Чтение);

Элементы = Документ.ПолучитьЭлементыПоИмени("table");

Для простых задач достаточно ЧтениеТекста, которое загружает файл в строку с указанием кодировки. Помните, что HTML-файлы часто сохранены в UTF-8, и при чтении без явного указания кодировки кириллица может превратиться в нечитаемые символы.

Формирование HTML из данных 1С и типовые сценарии

Обратная задача — сгенерировать HTML из данных информационной базы. Чаще всего разработчики собирают разметку конкатенацией строк, подставляя значения из запроса. Для табличных отчётов удобно сначала вывести табличный документ и сохранить его в HTML через метод Записать() с типом файла ТипФайлаТабличногоДокумента.HTML — платформа сама сформирует корректную разметку с оформлением.

ТабДок.Записать("C:\Отчеты\итог.html",

ТипФайлаТабличногоДокумента.HTML);

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

Если HTML формируется конкатенацией строк, экранируйте данные из базы: значения с символами <, > и кавычками ломают разметку. Для подстановки в атрибуты и текст используйте простую функцию замены спецсимволов на HTML-сущности.
ПЗ
Практическое замечание

Частые ошибки и как их проверить

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

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

Типичные ошибки
01
Присвоение пути к серверному файлу на клиенте — поле остаётся пустым, потому что файл недоступен
02
Чтение HTML без указания кодировки — кириллица превращается в нечитаемые символы
03
Ожидание полной поддержки современных сайтов в поле HTML-документа — сложные скрипты и стили могут не работать
04
Использование COM Internet Explorer в новых разработках — устаревший механизм с проблемами безопасности
Контрольные точки

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

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

Разметка видна, текст читаем, кодировка корректна

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

Поле пустое или символы искажены

Открытие файла в браузере
Норма

Браузер запустился и показал страницу полностью

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

Ошибка «файл не найден» или пустая вкладка

Разбор HTML программно
Норма

Элементы находятся по тегам и содержат данные

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

Коллекция элементов пустая при корректном файле

Частые вопросы

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

Можно, если сайт поддерживает вход через форму внутри страницы — пользователь введёт логин прямо в поле. Сложнее с корпоративными прокси и SSO: поведение зависит от системного браузерного компонента. Если авторизация не проходит, откройте страницу во внешнем браузере, где сохранены сессии пользователя.

Почему поле HTML-документа пустое после присваивания текста?

Проверьте три вещи: элемент формы действительно связан с тем реквизитом, которому вы присваиваете значение; вид элемента установлен как «Поле HTML-документа», а не «Поле надписи»; сама разметка корректна и начинается с html-тегов. Также убедитесь, что присваивание выполняется в контексте клиента при работе с интерактивными действиями.

Как открыть HTML-файл, сформированный на сервере, у пользователя тонкого клиента?

Поместите двоичные данные файла во временное хранилище на сервере, на клиенте получите их через ПолучитьИзВременногоХранилища, запишите во временный локальный файл и запустите через НачатьЗапускПриложения. Либо прочитайте текст файла и присвойте его полю HTML-документа без сохранения на диск.

Поддерживает ли поле HTML-документа JavaScript?

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

Как вывести табличный документ в виде HTML?

Используйте метод Записать табличного документа с типом файла ТипФайлаТабличногоДокумента.HTML. Платформа сформирует HTML-файл с сохранением оформления ячеек, который затем можно показать в поле HTML-документа, отправить по почте или открыть в браузере.

Что делать, если вместо русского текста отображаются непонятные символы?

Проблема в кодировке. При чтении файла через ЧтениеТекста укажите кодировку явно (чаще всего UTF-8 или windows-1251), а в саму разметку добавьте meta-тег с указанием charset. После этого текст отобразится корректно и в поле HTML-документа, и в браузере.

Итог

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

Для показа HTML внутри формы используйте поле HTML-документа, для полноценного просмотра — запуск во внешнем браузере, для обработки данных — ЧтениеHTML с построителем DOM. Следите за кодировкой и доступностью файлов на клиенте, а COM Internet Explorer оставьте для сопровождения старых решений.