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