ФорматированныйДокумент.ЗаписатьАсинх

Методы · WriteAsync

Асинхронная функция. Сохраняет форматированный документ в файл.

Синтаксис

ЗаписатьАсинх(<ИмяФайла>, <ТипФайла>)
ЗаписатьАсинх(<Поток>, <ТипФайла>)
Полное описание, параметры и ограничения

ФорматированныйДокумент.ЗаписатьАсинх (FormattedDocument.WriteAsync)

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

ЗаписатьАсинх (WriteAsync)

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

Вариант синтаксиса: В файл

Синтаксис:
ЗаписатьАсинх(<ИмяФайла>, <ТипФайла>)
Параметры:

<ИмяФайла> (обязательный)
Тип: Строка.
Имя файла, в который будет записан форматированный документ.

<ТипФайла> (необязательный)
Тип: ТипФайлаФорматированногоДокумента.
Указывает тип файла.
Описание варианта метода:
Запись форматированного документа в файл.
Вариант синтаксиса: В поток

Синтаксис:
ЗаписатьАсинх(<Поток>, <ТипФайла>)
Параметры:

<Поток> (обязательный)
Тип: Поток, ПотокВПамяти, ФайловыйПоток.
Поток для записи документа.

<ТипФайла> (необязательный)
Тип: ТипФайлаФорматированногоДокумента.
Указывает формат записи документа.
Описание варианта метода:
Запись форматированного документа в поток.
Возвращаемое значение:
Тип: Обещание.
Результат выполнения обещания:
Истина - если запись была инициирована с помощью расширения браузера и пользователь подтвердил его получение, то есть запись файла была завершена.

Ложь - если запись была инициирована с помощью расширения браузера, но пользователь не подтвердил его получение, то есть запись файла не была завершена.

Неопределено - если запись была инициирована скачиванием файла средствами браузера и неизвестно, был ли файл записан или нет.
.
Описание:

Асинхронная функция. Сохраняет форматированный документ в файл.

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

Тонкий клиент, веб-клиент, толстый клиент.

См. также:
ФорматированныйДокумент, метод Записать
ФорматированныйДокумент, метод НачатьЗапись

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

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

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

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

Асинхронно получить HTML-байты своего документа в клиенте

Обработчик ожидает запись в собственный поток и проверяет полученные данные. Результат обещания не трактуем как универсальное подтверждение сохранения файла.

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

Модуль пустой управляемой формы учебной внешней обработки; тонкий или толстый клиент Windows. Вставьте весь модуль. Это не серверный код.

Подготовка

  1. Создайте учебную внешнюю обработку с пустой управляемой основной формой. Создайте команду УчебныйПример и кнопку этой команды.

  2. В свойстве команды Действие выберите процедуру УчебныйПример. Вставьте полный приведённый модуль формы.

  3. Откройте EPF в тонком или толстом клиенте Windows и нажмите кнопку. Не переносите Ждать и Асинх в серверный общий модуль.

  4. Пример работает только со своими данными в памяти; записи в базу, файлы и сеть нет.

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

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

  1. Полный клиентский Асинх обработчик создаёт свои документ и поток при каждом запуске.

  2. Ждать гарантирует завершение операции перед закрытием потока.

  3. Не сравниваем результат обещания с Истина, чтобы не выдавать его за безусловное доказательство сохранения файла во всех средах.

  4. В данном сценарии нет браузерного скачивания: проверяем размер результата именно своего ПотокВПамяти.

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

  1. Оба сравнения Истина; получены ненулевые байты экспорта и сохранён исходный итог.

  2. Путь к файлу не запрашивается; рабочие файлы и база не меняются.

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

Завершён клиентский асинхронный экспорт в память с проверкой собственного результата.

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

  1. У ЗаписатьАсинх есть также файловая перегрузка. Для браузерного скачивания результат может быть Истина/Ложь/Неопределено по способу получения файла.

  2. Этот пример не доказывает, что пользователь скачал файл: сохранения на диск вообще нет.

  3. Асинх и Ждать используются на клиенте; серверную задачу выполняйте синхронным методом.

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

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

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

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

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