ФорматированныйДокумент.УстановитьHTML

Методы · SetHTML

Формирует форматированный документ из переданных HTML-составляющих.

Синтаксис

УстановитьHTML(<ТекстHTML>, <Вложения>)
Полное описание, параметры и ограничения

ФорматированныйДокумент.УстановитьHTML (FormattedDocument.SetHTML)

ФорматированныйДокумент (FormattedDocument)

УстановитьHTML (SetHTML)

Доступен, начиная с версии 8.2.

Синтаксис:
УстановитьHTML(<ТекстHTML>, <Вложения>)
Параметры:

<ТекстHTML> (обязательный)
Тип: Строка.
Текстовая строка, содержащая HTML.

<Вложения> (обязательный)
Тип: Структура.
Структура, содержащая вложения, которые будут установлены в форматированный документ.
Ключ структуры - название или имя файла картинки. Значение - Картинка.
Описание:

Формирует форматированный документ из переданных HTML-составляющих.

Доступность:

Сервер, внешнее соединение.

Использование в версии:

Доступен, начиная с версии 8.2.

Методическая информация

Практические примеры

Восстановить свой документ из HTML и получить HTML с вложениями

Серверный пример использует только собственную маленькую HTML-памятку без скриптов, внешних URL и изображений.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Отдельная учебная база, серверный общий модуль УчебныеЗадачи. Фрагмент без директив вставьте в тело ВыполнитьПример() Экспорт.

  2. Документ создаётся заново в памяти при каждом запуске. Существующие реквизиты, файлы и документы конфигурации не меняются.

  3. Сообщения показывают контрольные проверки. Для визуального просмотра оформления используйте отдельную задачу с полным модулем учебной формы.

  4. УстановитьHTML доступен на сервере/во внешнем соединении, не в клиентском обработчике формы.

ИсходныйHTML = "<p><b>Книга</b>: 3 шт.</p><p>Сумма: 750 руб.</p>";
Вложения = Новый Структура;
Документ = Новый ФорматированныйДокумент;
Документ.УстановитьHTML(ИсходныйHTML, Вложения);
Сообщить(СтрНайти(Документ.ПолучитьТекст(), "Книга") > 0);
Сообщить(СтрНайти(Документ.ПолучитьТекст(), "750 руб.") > 0);
ПолученныйHTML = "";
ПолученныеВложения = Новый Структура;
Документ.ПолучитьHTML(ПолученныйHTML, ПолученныеВложения);
Сообщить(СтрДлина(ПолученныйHTML) > 0);
Сообщить(ПолученныеВложения.Количество() = 0);
Копия = Новый ФорматированныйДокумент;
Копия.УстановитьHTML(ПолученныйHTML, ПолученныеВложения);
Сообщить(СтрНайти(Копия.ПолучитьТекст(), "Книга") > 0);
Сообщить(СтрНайти(Копия.ПолучитьТекст(), "750 руб.") > 0);

Разбор по шагам

  1. Передаём своё известное HTML и пустую структуру вложений в серверный УстановитьHTML.

  2. ПолучитьТекст используется для смысловой проверки наличия названия/суммы.

  3. ПолучитьHTML — процедура с ДВУМЯ выходными параметрами. Не присваивайте её вызов как будто это функция, возвращающая строку.

  4. Вложения содержат встроенные картинки. Здесь их нет, поэтому структура пуста.

  5. Восстанавливаем копию из полученных HTML-компонентов и снова проверяем смысловое содержимое.

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

  1. Все шесть сравнений Истина; текст исходного документа и копии содержит Книга и 750 руб.

  2. Вложений ноль; нет обращения к чужим изображениям и сети.

Ожидаемый результат

Показан серверный путь HTML → документ → HTML-компоненты → новый документ.

На что обратить внимание

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

  2. УстановитьHTML не заявлен как универсальная очистка опасного HTML. Недоверенный HTML здесь не принимается.

  3. Не переносите серверный УстановитьHTML на клиент из-за того, что некоторые другие методы документа доступны в обоих контекстах.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Добавить собственный знак готовности и передать его как вложение HTML

Маленький SVG-знак создаётся из явно приведённого текста, без скачивания. Документ получает абсолютную картинку, а HTML-компоненты — её вложение.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Отдельная учебная база, серверный общий модуль УчебныеЗадачи. Фрагмент без директив вставьте в тело ВыполнитьПример() Экспорт.

  2. Документ создаётся заново в памяти при каждом запуске. Существующие реквизиты, файлы и документы конфигурации не меняются.

  3. Сообщения показывают контрольные проверки. Для визуального просмотра оформления используйте отдельную задачу с полным модулем учебной формы.

  4. Добавление картинки и УстановитьHTML выполняются на сервере. Не переносите этот фрагмент в клиентский обработчик.

  5. Для визуального просмотра поместите фрагмент перед Возврат Документ в серверной функции СоздатьУчебнуюПамятку полного модуля задачи с формой. Он создаст отдельный документ вместо прежней памятки.

SVG = "<svg xmlns=""http://www.w3.org/2000/svg"" width=""32"" height=""32"" viewBox=""0 0 32 32""><rect width=""32"" height=""32"" rx=""6"" fill=""#146e32""/><path d=""M8 16l5 5 11-12"" fill=""none"" stroke=""white"" stroke-width=""3""/></svg>";
ДанныеЗнака = ПолучитьДвоичныеДанныеИзСтроки(SVG, КодировкаТекста.UTF8, Ложь);
КартинкаЗнака = Новый Картинка(ДанныеЗнака);
Сообщить(КартинкаЗнака.Формат() = ФорматКартинки.SVG);
Документ = Новый ФорматированныйДокумент;
Текст = Документ.Добавить("Готово: ");
Знак = Документ.Добавить(КартинкаЗнака, Тип("КартинкаФорматированногоДокумента"));
Знак.Ширина = 32;
Знак.Высота = 32;
Знак.НавигационнаяСсылка = "";
Сообщить(Знак.Ширина = 32 И Знак.Высота = 32);
Сообщить(ТипЗнч(Знак.Картинка) = Тип("Картинка"));
Сообщить(Знак.Родитель = Текст.Родитель);
Сообщить(Знак.НавигационнаяСсылка = "");
Сообщить(Документ.ПолучитьПозициюПоЗакладке(Знак.ЗакладкаКонца) > Документ.ПолучитьПозициюПоЗакладке(Знак.ЗакладкаНачала));
HTML = "";
Вложения = Новый Структура;
Документ.ПолучитьHTML(HTML, Вложения);
Сообщить(Вложения.Количество() = 1);
Копия = Новый ФорматированныйДокумент;
Копия.УстановитьHTML(HTML, Вложения);
Сообщить(СтрНайти(Копия.ПолучитьТекст(), "Готово:") > 0);

Разбор по шагам

  1. SVG содержит только собственные фигуры rect/path и встроенные цвета, без скриптов и внешних ссылок.

  2. Конструктор Картинка из ДвоичныеДанные создаёт абсолютную картинку. Вставка картинок в форматированный документ доступна на сервере.

  3. Добавить возвращает КартинкаФорматированногоДокумента. Это отдельный элемент, не сам исходный объект Картинка.

  4. Устанавливаем размер и пустую навигационную ссылку; через Родитель и закладки изучаем положение элемента рядом с текстом.

  5. ПолучитьHTML формирует HTML и структуру вложений. Абсолютная встроенная картинка требует передачи вложения вместе с HTML.

  6. УстановитьHTML восстанавливает копию из обоих компонентов, а не только из строки с потерянными картинками.

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

  1. Все восемь сообщений Истина; вложений ровно одно, текст Готово: сохранён.

  2. При просмотре в подготовленной форме виден собственный зелёный знак готовности; проверьте его отображение отдельно в вашем клиенте.

Ожидаемый результат

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

На что обратить внимание

  1. Числа 32 задают размеры элемента. В этом уроке не смешиваем их с поинтами отступа параграфа.

  2. Наличие текста в копии не является пиксельной проверкой картинки — для неё есть визуальный контроль в учебной форме.

  3. Нельзя подставлять неизвестный SVG/HTML извне, считая этот пример проверкой безопасности содержимого.

  4. Картинка задана данными, не внешним URL; сеть для её получения не нужна.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.