Записать свой оформленный документ в HTML-поток в памяти

Учебные задачи

Создаём заголовок и итог, экспортируем документ в собственный поток, не выбирая имя файла и не затрагивая диск.

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

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

Подготовка

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

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

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

Документ = Новый ФорматированныйДокумент;
Заголовок = Документ.Добавить("Учебная покупка");
Заголовок.Шрифт = Новый Шрифт("Arial", 14, Истина);
Документ.Добавить(Неопределено, Тип("ПереводСтрокиФорматированногоДокумента"));
Документ.Добавить("Книга: 3 × 250 = 750 руб.");
Поток = Новый ПотокВПамяти;
Попытка
    Документ.Записать(Поток, ТипФайлаФорматированногоДокумента.HTML);
Исключение
    Поток.Закрыть();
    ВызватьИсключение;
КонецПопытки;
ДанныеHTML = Поток.ЗакрытьИПолучитьДвоичныеДанные();
Сообщить(ДанныеHTML.Размер() > 0);
Сообщить(СтрНайти(Документ.ПолучитьТекст(), "750 руб.") > 0);
HTML = "";
Вложения = Новый Структура;
Документ.ПолучитьHTML(HTML, Вложения);
Сообщить(СтрДлина(HTML) > 0 И Вложения.Количество() = 0);

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

  1. Документ имеет собственный заголовок с жирным шрифтом и собственную строку итога.

  2. Перегрузка Записать с ПотокВПамяти не создаёт файл на диске. Формат HTML задаём явно.

  3. Поток принадлежит коду. При исключении закрываем его, при успехе закрываем с получением ДвоичныеДанные.

  4. Отдельно получаем текстовый HTML и структуру вложений через ПолучитьHTML для сравнения назначения API.

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

  1. Все три сообщения Истина: поток непустой, документ содержит итог, HTML-компоненты непустые и без вложений.

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

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

Получены байты HTML-экспорта и отдельно HTML-компоненты документа.

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

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

  2. ДвоичныеДанные и строка HTML не одно и то же. Не назначайте произвольную кодировку байтам без проверки формата.

  3. Для картинок HTML-компоненты могут требовать вложений; здесь документ намеренно только текстовый.

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

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

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

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

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