Как получить HTML-код из объекта ФорматированныйДокумент в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

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

Разбор основной ошибки: функция или процедура?

Рассмотрим типичную ситуацию. Программист пытается получить текст в формате HTML, используя привычный для функций синтаксис:


// Ошибочный вариант
ТекстHTML = МойФорматированныйДокумент.ПолучитьHTML(); 

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

Чтобы успешно получить код HTML, нам необходимо заранее подготовить переменную. Разберем правильный алгоритм действий:

  1. Создаем переменную (например, ТекстHTML), в которую будет помещен результат.
  2. Создаем переменную для вложений (например, СтруктураВложений), если в документе могут быть картинки.
  3. Вызываем процедуру, передавая эти переменные.

Пример корректного кода:


ПеременнаяТекстHTML = "";
ПеременнаяВложения = Новый Структура;

// Вызываем процедуру
МойФорматированныйДокумент.ПолучитьHTML(ПеременнаяТекстHTML, ПеременнаяВложения);

// Теперь в переменной ПеременнаяТекстHTML содержится строка с кодом HTML
Сообщить(ПеременнаяТекстHTML);

Работа с вложениями и изображениями

Выясним важную особенность: когда мы вызываем ПолучитьHTML, 1С не вставляет данные картинок напрямую в текст HTML (например, через Base64). Вместо этого в тексте появляются ссылки вида src="image001".

Проанализируем, как обрабатываются данные во втором параметре (Вложения):

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

Отличие ПолучитьHTML() от ПолучитьТекст()

Часто возникает путаница между получением разметки и получением чистого текста. Разберем их различия:

Метод ПолучитьТекст() — это функция. Она возвращает только текстовое содержимое документа без каких-либо тегов (<b>, <p>, <div> и т.д.). Ее удобно использовать, если вам нужно, например, посчитать количество символов в сообщении или выполнить поиск по тексту без учета оформления.


// Пример получения чистого текста без оформления
ЧистыйТекст = МойФорматированныйДокумент.ПолучитьТекст();

Обратная операция: Установка HTML в документ

Рассмотрим ситуацию, когда нам нужно выполнить обратное действие — загрузить HTML-код в объект ФорматированныйДокумент. Для этого используется метод УстановитьHTML(ТекстHTML, Вложения).

Важно помнить следующие моменты:

Программное управление фрагментами документа

Иногда требуется получить не весь документ целиком, а лишь его часть. Посмотрим на инструменты, которые предоставляет платформа для более тонкой работы:

  1. Закладки: С помощью метода ПолучитьЗакладки() можно определить границы документа (начало и конец).
  2. Выделение фрагмента: Метод ПолучитьТекст(Начало, Конец) позволяет вырезать конкретный кусок текста по заданным закладкам.

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

Особенности разметки и ограничения

Проанализируем качество кода, который генерирует 1С. Получаемый HTML часто содержит специфические стили. Например, вместо современных CSS-классов 1С может использовать устаревшие теги <font> или инлайновые стили style="...". Если ваша цель — получить идеально чистый код для верстки сайта, рекомендуем использовать регулярные выражения для удаления лишних атрибутов после получения строки.

Критически важно для веб-клиента: Работа с ФорматированнымДокументом в браузере может отличаться от работы в тонком клиенте. Некоторые операции могут требовать асинхронного вызова (особенно при работе с файлами картинок) или зависеть от настроек безопасности браузера пользователя.

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

← На главную