Асинхронно получить 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С» и не аффилирован с ней.