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

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

HTML в 1С: что это и как применяется на практике

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

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

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

Вторая сторона темы — формирование HTML программно. Встроенный язык 1С позволяет собирать HTML-строку вручную или через объектную модель документа и отдавать её браузеру, почтовому клиенту или сохранять в файл. Так делают красивые email-рассылки, экспорт отчётов и интеграцию с корпоративными порталами.

Что такое поле HTML-документа в форме 1С

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

В тонком клиенте под Windows поле использует движок браузера, установленного в системе (исторически — Internet Explorer, в новых релизах платформы — WebView2 на базе Chromium). В веб-клиенте содержимое отображается через iframe текущего браузера. Из-за этого одна и та же страница может выглядеть и вести себя по-разному у разных пользователей.

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

Как вывести HTML в форму: пошаговый порядок

Минимальная реализация занимает несколько минут и не требует внешних компонентов. Нужен реквизит формы, элемент поля и небольшой серверный или клиентский код, который заполнит реквизит содержимым.

Порядок действий
  1. 1
    Создайте в форме реквизит строкового типа неограниченной длины, например «ТекстHTML».
  2. 2
    Перетащите реквизит на форму и в свойствах элемента установите вид «Поле HTML-документа».
  3. 3
    В обработчике ПриСозданииНаСервере сформируйте HTML-строку: обёртку html/body, стили и содержимое.
  4. 4
    Присвойте строку реквизиту — после открытия формы содержимое отобразится автоматически.
  5. 5
    Если нужна интерактивность, добавьте ссылки с собственными адресами и обработайте их в событии ПриНажатии, отменяя стандартный переход.
  6. 6
    Проверьте отображение в тонком клиенте и в веб-клиенте отдельно: результат может отличаться.

Пример простейшего заполнения:

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ТекстHTML = "<html><body style='font-family:Arial'>"

+ "<h2>Остатки по складу</h2>"

+ "<p>Товар: <b>Кабель ВВГ 3х2.5</b> — 145 м</p>"

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

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

Обратите внимание: если реквизит содержит строку, начинающуюся с «http», платформа попытается загрузить страницу по адресу. Для показа локального HTML строка должна содержать полноценный документ с тегами html и body.

Интерактивность: события, JavaScript и обмен данными с формой

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

Приём с ссылками вида <a href="action:openitem?id=123"> — стандартный способ связать HTML-интерфейс с логикой 1С. В обработчике строка адреса разбирается, извлекается команда и параметры, после чего вызывается нужная процедура.

Прямой вызов JavaScript из кода 1С и наоборот ограничен и зависит от клиента. В тонком клиенте Windows доступ к объектной модели документа возможен через свойство «Документ» поля, но этот механизм не работает в веб-клиенте и на Linux/macOS. Если решение должно быть кроссплатформенным, весь интерактив следует строить только на событии «ПриНажатии».

Программная генерация HTML: отчёты, письма, печать

Второй сценарий не связан с формами: HTML собирается как обычная строка и используется вне интерфейса. Самые частые применения — HTML-письма через объект ИнтернетПочтовоеСообщение (тип текста HTML), экспорт отчётов в файлы, которые красиво открываются в браузере, и ответы HTTP-сервисов, опубликованных на веб-сервере.

Для писем HTML предпочтительнее простого текста: можно выделить итоги таблицей, вставить ссылки на документы и логотип. Почтовый объект 1С принимает тело письма строкой; важно указать корректный тип содержимого, иначе получатель увидит «голую» разметку.

При генерации HTML вручную критично экранировать данные из базы: наименования контрагентов, комментарии и другие пользовательские строки могут содержать символы <, >, & и кавычки. Без экранирования разметка «поедет», а в худшем случае в письмо или страницу попадёт непредусмотренный код.

bsl
Функция ЭкранироватьHTML(Строка)
    Результат = СтрЗаменить(Строка, "&", "&amp;");
    Результат = СтрЗаменить(Результат, "<", "&lt;");
    Результат = СтрЗаменить(Результат, ">", "&gt;");
    Результат = СтрЗаменить(Результат, """", "&quot;");
    Возврат Результат;
КонецФункции

Где HTML в 1С уместен, а где лучше штатные средства

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

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

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

Подходит для красивого отображения: дашборды, карты, справка, витрины. Не подходит для ввода данных и как основа рабочего места.

Табличный документ

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

Диаграммы и графическая схема

Встроенные элементы для графиков и схем. Работают одинаково во всех клиентах, в отличие от JS-библиотек внутри HTML-поля.

HTTP-сервисы 1С

Когда HTML нужен снаружи — для личного кабинета или виджета на сайте. 1С отдаёт готовую разметку по запросу, без поля документа вовсе.

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

Ограничения и типичные ошибки

Главное ограничение — зависимость от клиентского окружения. В веб-клиенте поле работает в изолированном iframe: нет доступа к объектной модели, ограничены скрипты. В тонком клиенте на разных операционных системах используются разные движки. Решение, отлаженное в одном клиенте, обязательно проверяйте во всех используемых.

Типичные ошибки
01
Использование свойства «Документ» поля для доступа к DOM — код падает или молча не работает в веб-клиенте и на Linux.
02
Вставка данных из базы в HTML без экранирования — ломается разметка и появляется риск внедрения кода.
03
Хранение больших HTML-шаблонов прямо в коде модуля — трудно редактировать; лучше держать шаблон в макете типа «Текстовый документ» или «HTML-документ».
04
Сборка интерфейса ввода данных на HTML вместо штатных элементов — потеря связи с данными формы и проблемы с обновлением.
05
Забытая отмена СтандартнаяОбработка в ПриНажатии — поле уходит по ссылке вместо выполнения команды 1С.

Отдельная ошибка — игнорирование кодировки при сохранении HTML в файл. Если писать файл без указания UTF-8 и соответствующего meta-тега, кириллица в браузере превратится в нечитаемые символы. Используйте объект ЗаписьТекста с явным указанием кодировки.

Контрольные точки

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

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

Разметка и стили выглядят как задумано, кириллица читается

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

Кракозябры, съехавшая вёрстка, пустое поле

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

Контент виден, клики по ссылкам вызывают обработчик 1С

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

Скрипты не выполняются, события не приходят

Данные с особыми символами
Норма

Наименования с кавычками и амперсандом отображаются корректно

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

Разметка ломается на определённых записях

Файл, сохранённый из 1С
Норма

Браузер открывает файл с правильной кодировкой

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

Вместо русского текста — знаки вопроса или иероглифы

FAQ

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

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

Как открыть внешний сайт из 1С, не встраивая его в форму?

Используйте метод ПерейтиПоНавигационнойСсылке или ЗапуститьПриложение с URL — страница откроется в штатном браузере пользователя. Это безопаснее и избавляет от проблем с устаревшим встроенным движком.

Чем отличается макет «HTML-документ» от текстового макета?

Макет типа «HTML-документ» хранит разметку с возможностью просмотра в редакторе и удобен для шаблонов страниц и писем. Текстовый макет универсальнее и тоже подходит для хранения HTML как строки. Функциональной разницы при программном чтении почти нет — выбор вопрос удобства редактирования.

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

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

Можно ли сформировать HTML-отчёт и отправить его по почте автоматически?

Да: соберите HTML-строку с экранированными данными, создайте объект ИнтернетПочтовоеСообщение, установите тип текста HTML и отправьте через профиль почты. Предварительно протестируйте письмо в нескольких почтовых клиентах — они по-разному поддерживают стили, поэтому используйте простую табличную вёрстку с инлайн-стилями.

Заменяет ли HTML-поле веб-публикацию информационной базы?

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

Итог

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

HTML в 1С — это поле HTML-документа для отображения контента в формах и программная генерация разметки для писем, файлов и HTTP-сервисов. Используйте его для визуализации, а не для ввода данных, экранируйте пользовательские строки и обязательно проверяйте поведение во всех типах клиентов.