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

Методы · BeginWriting

Вызывает начало записи форматированного документа в файл.

Синтаксис

НачатьЗапись(<ОписаниеОповещения>, <ИмяФайла>, <ТипФайла>)
Полное описание, параметры и ограничения

ФорматированныйДокумент.НачатьЗапись (FormattedDocument.BeginWriting)

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

НачатьЗапись (BeginWriting)

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

Синтаксис:
НачатьЗапись(<ОписаниеОповещения>, <ИмяФайла>, <ТипФайла>)
Параметры:

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

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

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

<ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения.
Если параметр не указан или имеет тип Неопределено, то по завершении никакая процедура вызвана не будет.

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

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

Вызывает начало записи форматированного документа в файл.

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

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

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

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

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

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

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

Сохранить свою памятку через callback и проверить сам временный файл

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

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

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

Подготовка

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

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

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

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

  5. ТОЛЬКО тонкий/толстый клиент Windows с правами на локальный временный каталог, не веб-клиент.

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

  7. Удалённый учебный результат не восстанавливается; цель — изучить завершение операции и проверку своего файла.

Перем Выполняется;

&НаКлиенте
Процедура УчебныйПример(Команда)
    Если Выполняется = Истина Тогда
        Сообщить("Дождитесь завершения учебного сохранения");
        Возврат;
    КонецЕсли;
    ИмяФайла = ПолучитьИмяВременногоФайла("html");
    ФайлЭкспорта = Новый Файл(ИмяФайла);
    Если ФайлЭкспорта.Существует() Тогда
        ВызватьИсключение "Существующий файл не перезаписываем";
    КонецЕсли;
    Документ = Новый ФорматированныйДокумент;
    Документ.Добавить("Учебная памятка: Книга, сумма 750 руб.");
    Состояние = Новый Структура("ИмяФайла,Документ", ИмяФайла, Документ);
    Оповещение = Новый ОписаниеОповещения("ПослеЭкспорта", ЭтотОбъект, Состояние, "ОшибкаЭкспорта", ЭтотОбъект);
    Выполняется = Истина;
    Попытка
        Документ.НачатьЗапись(Оповещение, ИмяФайла, ТипФайлаФорматированногоДокумента.HTML);
    Исключение
        УдалитьСвойУчебныйФайл(Состояние);
        Выполняется = Ложь;
        ВызватьИсключение;
    КонецПопытки;
КонецПроцедуры

&НаКлиенте
Процедура ПослеЭкспорта(Результат, Состояние) Экспорт
    Попытка
        ФайлЭкспорта = Новый Файл(Состояние.ИмяФайла);
        Если Не ФайлЭкспорта.Существует() Тогда
            ВызватьИсключение "Свой учебный файл после callback не обнаружен";
        КонецЕсли;
        Сообщить(ФайлЭкспорта.Размер() > 0);
        Сообщить(СтрНайти(Состояние.Документ.ПолучитьТекст(), "750 руб.") > 0);
        // В этом Windows-примере доказательство результата — сам файл, не Булево callback.
        УдалитьФайлы(Состояние.ИмяФайла);
        Сообщить(Не ФайлЭкспорта.Существует());
    Исключение
        УдалитьСвойУчебныйФайл(Состояние);
        Выполняется = Ложь;
        ВызватьИсключение;
    КонецПопытки;
    Выполняется = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура ОшибкаЭкспорта(Ошибка, СтандартнаяОбработка, Состояние) Экспорт
    УдалитьСвойУчебныйФайл(Состояние);
    Выполняется = Ложь;
    СтандартнаяОбработка = Истина;
КонецПроцедуры

&НаКлиенте
Процедура УдалитьСвойУчебныйФайл(Состояние)
    Попытка
        СвойФайл = Новый Файл(Состояние.ИмяФайла);
        Если СвойФайл.Существует() Тогда
            УдалитьФайлы(Состояние.ИмяФайла);
        КонецЕсли;
    Исключение
        // Не скрываем первичную ошибку вторичной ошибкой уборки.
    КонецПопытки;
КонецПроцедуры

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

  1. Существование файла проверяется ДО НачатьЗапись. Пример не перезаписывает заранее существующий путь.

  2. Документ и точное имя файла удерживаются структурой состояния до завершения.

  3. Callback имеет два аргумента Результат и Состояние, а callback ошибки — три, включая СтандартнаяОбработка.

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

  5. Удаляем только уникальный файл данного запуска, без масок/каталогов, и проверяем отсутствие после удаления.

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

  1. Три сообщения Истина: файл непустой, документ содержит итог, собственный временный файл удалён.

  2. Повторное нажатие во время операции не запускает вторую запись в тот же путь.

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

Запись через callback закончена и проверена по собственному Windows-файлу, а не по предположению о результате обещания.

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

  1. В веб-клиенте скачивание может не подтверждаться и callback может получить Неопределено. Этот пример не заявляет проверку пользовательского браузерного скачивания.

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

  3. Ненулевой размер не заменяет визуальную проверку оформленного HTML.

  4. Cleanup может сам завершиться ошибкой прав доступа; тогда свой временный файл останется, первичная ошибка сохраняется.

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

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

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

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

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