Асинхронная функция. Сохраняет форматированный документ в файл.
Синтаксис
ЗаписатьАсинх(<ИмяФайла>, <ТипФайла>)ЗаписатьАсинх(<Поток>, <ТипФайла>)Полное описание, параметры и ограничения
ФорматированныйДокумент.ЗаписатьАсинх (FormattedDocument.WriteAsync)
ФорматированныйДокумент (FormattedDocument)
ЗаписатьАсинх (WriteAsync)
Доступен, начиная с версии 8.3.18.
Вариант синтаксиса: В файл
Синтаксис:
ЗаписатьАсинх(<ИмяФайла>, <ТипФайла>)
Параметры:
<ИмяФайла> (обязательный)
Тип: Строка.
Имя файла, в который будет записан форматированный документ.
<ТипФайла> (необязательный)
Тип: ТипФайлаФорматированногоДокумента.
Указывает тип файла.
Описание варианта метода:
Запись форматированного документа в файл.
Вариант синтаксиса: В поток
Синтаксис:
ЗаписатьАсинх(<Поток>, <ТипФайла>)
Параметры:
<Поток> (обязательный)
Тип: Поток, ПотокВПамяти, ФайловыйПоток.
Поток для записи документа.
<ТипФайла> (необязательный)
Тип: ТипФайлаФорматированногоДокумента.
Указывает формат записи документа.
Описание варианта метода:
Запись форматированного документа в поток.
Возвращаемое значение:
Тип: Обещание.
Результат выполнения обещания:
Истина - если запись была инициирована с помощью расширения браузера и пользователь подтвердил его получение, то есть запись файла была завершена.
Ложь - если запись была инициирована с помощью расширения браузера, но пользователь не подтвердил его получение, то есть запись файла не была завершена.
Неопределено - если запись была инициирована скачиванием файла средствами браузера и неизвестно, был ли файл записан или нет.
.
Описание:
Асинхронная функция. Сохраняет форматированный документ в файл.
Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
См. также:
ФорматированныйДокумент, метод Записать
ФорматированныйДокумент, метод НачатьЗапись
Использование в версии:
Доступен, начиная с версии 8.3.18.
Методическая информация
Практические примеры
Асинхронно получить HTML-байты своего документа в клиенте
Обработчик ожидает запись в собственный поток и проверяет полученные данные. Результат обещания не трактуем как универсальное подтверждение сохранения файла.
Где и как запускать
Модуль пустой управляемой формы учебной внешней обработки; тонкий или толстый клиент Windows. Вставьте весь модуль. Это не серверный код.
Подготовка
Создайте учебную внешнюю обработку с пустой управляемой основной формой. Создайте команду УчебныйПример и кнопку этой команды.
В свойстве команды Действие выберите процедуру УчебныйПример. Вставьте полный приведённый модуль формы.
Откройте EPF в тонком или толстом клиенте Windows и нажмите кнопку. Не переносите Ждать и Асинх в серверный общий модуль.
Пример работает только со своими данными в памяти; записи в базу, файлы и сеть нет.
&НаКлиенте
Асинх Процедура УчебныйПример(Команда)
Документ = Новый ФорматированныйДокумент;
Документ.Добавить("Учебная памятка: Книга, сумма 750 руб.");
Поток = Новый ПотокВПамяти;
Попытка
Ждать Документ.ЗаписатьАсинх(Поток, ТипФайлаФорматированногоДокумента.HTML);
Исключение
Поток.Закрыть();
ВызватьИсключение;
КонецПопытки;
Данные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
Сообщить(Данные.Размер() > 0);
Сообщить(СтрНайти(Документ.ПолучитьТекст(), "750 руб.") > 0);
КонецПроцедурыРазбор по шагам
Полный клиентский Асинх обработчик создаёт свои документ и поток при каждом запуске.
Ждать гарантирует завершение операции перед закрытием потока.
Не сравниваем результат обещания с Истина, чтобы не выдавать его за безусловное доказательство сохранения файла во всех средах.
В данном сценарии нет браузерного скачивания: проверяем размер результата именно своего ПотокВПамяти.
Как проверить результат
Оба сравнения Истина; получены ненулевые байты экспорта и сохранён исходный итог.
Путь к файлу не запрашивается; рабочие файлы и база не меняются.
Ожидаемый результат
Завершён клиентский асинхронный экспорт в память с проверкой собственного результата.
На что обратить внимание
У ЗаписатьАсинх есть также файловая перегрузка. Для браузерного скачивания результат может быть Истина/Ложь/Неопределено по способу получения файла.
Этот пример не доказывает, что пользователь скачал файл: сохранения на диск вообще нет.
Асинх и Ждать используются на клиенте; серверную задачу выполняйте синхронным методом.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.