Разработка и Конфигурация · 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-подход имеет смысл только при сопровождении старых конфигураций, где он уже внедрён.
Сравнение способов
Показ страницы внутри формы 1С. Подходит для отчётов, справки, карт. Ограничение: не все современные веб-функции поддерживаются встроенным движком.
Открытие файла или URL в браузере пользователя. Полная совместимость с сайтами, но страница живёт вне 1С и не управляется из формы.
Загрузка HTML для разбора, поиска данных, конвертации. Не предназначен для визуального отображения.
Устаревший вариант для старых конфигураций на обычных формах. Для новой разработки не рекомендуется.
Отображение 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:/// или предварительно прочитайте файл в строку и присвойте текст — второй вариант надёжнее, поскольку у клиентского сеанса может не быть доступа к серверному каталогу.
- 1Откройте форму в конфигураторе и добавьте реквизит формы типа «Строка» без ограничения длины
- 2Перетащите реквизит в дерево элементов формы
- 3В палитре свойств элемента установите вид «Поле HTML-документа»
- 4В коде присвойте реквизиту HTML-разметку или URL
- 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-документа: встроенный движок ограничен, поэтому для сложных страниц выбирайте запуск во внешнем браузере.
Как проверить результат
Разметка видна, текст читаем, кодировка корректна
Поле пустое или символы искажены
Браузер запустился и показал страницу полностью
Ошибка «файл не найден» или пустая вкладка
Элементы находятся по тегам и содержат данные
Коллекция элементов пустая при корректном файле
Частые вопросы
Можно ли открыть сайт с авторизацией в поле 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 оставьте для сопровождения старых решений.