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

Существует несколько подходов к тому, как html загрузить в 1с, и выбор конкретного метода зависит от вашей конечной цели. Если вам нужно просто сохранить файл на диск или прочитать его содержимое для последующего анализа, достаточно работать с текстовыми потоками. Если же требуется отобразить визуальную часть сайта или сформировать красивое письмо, потребуется использование объектов HTMLДокумент или ТекстовыйДокумент.

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

Прямая загрузка HTML-файла в текстовую переменную

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

Важно учитывать кодировку файла при чтении. Большинство современных веб-страниц используют кодировку UTF-8, и если вы попытаетесь прочитать такой файл в кодировке Windows-1251, вместо текста вы получите набор непонятных символов. Поэтому всегда явно указывайте параметр кодировки при открытии файла.

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

Чтение = Новый ТекстовыйЧтение;

Чтение.Открыть("C:\page.html", "UTF-8");

Содержимое = Чтение.Прочитать();

Чтение.Закрыть();

Сообщить(Содержимое);

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

💡

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

💡

Прямое чтение файла дает вам «сырой» HTML-код, который не отформатирован для вывода в обычных полях ввода 1С.

Преобразование HTML в форматированный документ 1С

Часто возникает задача не просто сохранить код, а отобразить его пользователю так, чтобы сохранилось форматирование: жирный шрифт, таблицы, списки и изображения. В этом случае стандартный текст не подойдет, и необходимо использовать объект ТекстовыйДокумент, который умеет интерпретировать HTML-теги.

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

Однако следует помнить, что поддержка CSS-стилей в 1С ограничена. Сложные макеты, позиционирование через flexbox или grid, а также современные анимации отображены не будут. Движок рендеринга 1С ориентирован на печатные формы, а не на веб-дизайн.

  • 📄 Поддерживаются базовые теги: <b>, <i>, <u>, <p>, <br>.
  • 📊 Таблицы <table> преобразуются в сетку текстового документа с сохранением границ.
  • 🖼️ Изображения <img> вставляются, если указан полный путь или Base64.
  • 🎨 Стили style работают частично (цвета, размеры шрифтов), но игнорируют сложные селекторы.

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

⚠️ Внимание: Если HTML содержит скрипты <script> или формы ввода <input>, они будут проигнорированы при конвертации в ТекстовыйДокумент. Это статичное отображение.

Получение HTML-кода через HTTP-соединение

В современных интеграционных сценариях часто требуется загрузить html в 1с напрямую с веб-сайта без участия пользователя. Для этого используется объект HTTPСоединение, который позволяет отправить GET-запрос и получить ответ сервера.

Процесс начинается с создания соединения, указания адреса ресурса и порта. После этого вызывается метод Получить, который возвращает объект ответа. Нас интересует свойство Поток, содержащее тело страницы. Этот поток необходимо прочитать с учетом кодировки, указанной в заголовках ответа.

Соединение = Новый HTTPСоединение("example.com");

Ответ = Соединение.Получить("/page.html");

Чтение = Новый ТекстовыйЧтение(Ответ.Поток, , "UTF-8");

HTMLКод = Чтение.Прочитать();

Важным этапом является обработка ошибок. Сервер может вернуть код состояния 404 (не найдено) или 500 (ошибка сервера). Всегда проверяйте свойство КодСостояния перед попыткой прочитать поток, иначе ваша программа может завершиться аварийно.

📊 Какой способ получения HTML вы используете чаще?
Чтение из файла
HTTP-запрос
Копирование из буфера
Не использую HTML

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

Нюансы работы с HTTPS

При использовании защищенного соединения убедитесь, что на сервере 1С установлены корневые сертификаты удостоверяющего центра, иначе соединение будет разорвано.

Парсинг HTML и извлечение данных

Загрузка кода — это только полдела. Часто требуется извлечь из него конкретные данные: цены, названия товаров или контакты. Поскольку HTML представляет собой иерархическую структуру, для работы с ним лучше всего подходит подход на основе регулярных выражений или DOM-подобных parsers.

Встроенные средства 1С для работы с регулярными выражениями (РегулярноеВыражение) позволяют находить нужные фрагменты текста по шаблону. Например, можно найти все ссылки или извлечь контент внутри определенных тегов div с заданным классом.

Однако регулярные выражения могут быть ненадежны при работе со «сломанным» или нестандартным HTML. Если структура страницы сложная, рекомендуется использовать внешние COM-объекты (например, Microsoft HTML Object Library) или собственные библиотеки парсинга, написанные на C# и подключаемые как внешние компоненты.

Метод Сложность Надежность Производительность
Регулярные выражения Низкая Средняя Высокая
Поиск подстрок Низкая Низкая Высокая
COM-объекты (MSHTML) Высокая Высокая Средняя
Внешние сборки (.NET) Средняя Очень высокая Высокая

При использовании регулярных выражений будьте осторожны с жадным поиском. Символ . по умолчанию не захватывает переносы строк, поэтому для многострочных блоков используйте соответствующие флаги или конструкции вида [\s\S]*?.

☑️ Подготовка к парсингу

Выполнено: 0 / 4

Работа с кодировками и специальными символами

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

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

Также стоит обратить внимание на HTML-сущности. Символы вроде &nbsp; (неразрывный пробел) или &quot; (кавычка) в текстовом виде останутся именно в таком виде. Для их замены на реальные символы можно использовать метод Заменить или специальные функции декодирования.

⚠️ Внимание: При сохранении HTML в базу данных убедитесь, что поле имеет тип Неограниченная строка или достаточную длину, иначе длинный код страницы может быть обрезан.

Если вы формируете HTML самостоятельно внутри 1С для последующей выгрузки, всегда явно указывайте мета-тег кодировки в начале документа. Это гарантирует, что любой браузер или парсер откроет файл корректно.

HTML = "<html><meta charset='UTF-8'><body>Привет</body></html>";

Визуализация HTML в форме 1С

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

Чтобы загрузить контент в этот элемент, достаточно присвоить свойству Содержание строку с HTML-кодом или URL. Это самый быстрый способ показать пользователю веб-страницу без написания сложного кода конвертации.

Однако элемент HTMLДокумент зависит от установленного в системе браузера (Internet Explorer, Edge или системный WebView). В старых версиях Windows это может привести к проблемам с отображением современных стандартов CSS3 и JavaScript.

  • 🌐 Поддерживает выполнение JavaScript (зависит от настроек безопасности).
  • 🔗 Позволяет отслеживать переходы по ссылкам через событие Навигация.
  • 🛑 Блокирует всплывающие окна по умолчанию.

Если вам требуется кроссплатформенная совместимость (работа на Linux или Mac), использование HTMLДокумент может быть ограничено, так как он опирается на компоненты ОС. В таких случаях лучше генерировать отчеты в формате ТекстовыйДокумент.

💡

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

Можно ли загрузить HTML из интернета напрямую в HTMLДокумент формы?

Да, можно присвоить свойству Содержание строку вида "http://адрес_сайта". Однако это может вызвать предупреждения безопасности браузера из-за смешанного контента, если приложение запущено локально.

Почему не отображаются картинки в ТекстовомДокументе?

Чаще всего проблема в путях. Если картинка ссылается на локальный диск, у сервера 1С или клиента может не быть доступа к этому пути. Используйте абсолютные сетевые пути или встраивайте картинки в Base64.

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

Используйте объект ТекстоваяЗапись с указанием кодировки UTF-8. Запишите строку с HTML-кодом и закройте запись. Файл будет готов к открытию в браузере.

Поддерживает ли 1С теги <video> и <audio>?

В элементе формы HTMLДокумент — да, если системный браузер поддерживает эти форматы. В ТекстовомДокументе для печати — нет, эти теги будут проигнорированы.