Вызывает начало записи пакета отображаемых документов в файл.
Синтаксис
НачатьЗапись(<ОписаниеОповещения>, <ИмяФайла>, <ТипФайла>)Полное описание, параметры и ограничения
ПакетОтображаемыхДокументов.НачатьЗапись (RepresentableDocumentBatch.BeginWriting)
ПакетОтображаемыхДокументов (RepresentableDocumentBatch)
НачатьЗапись (BeginWriting)
Доступен, начиная с версии 8.3.12.
Синтаксис:
НачатьЗапись(<ОписаниеОповещения>, <ИмяФайла>, <ТипФайла>)
Параметры:
<ОписаниеОповещения> (необязательный)
Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана после завершения записи файла со следующими параметрами:
<Результат> - результат операции:
Истина, если запись была инициирована с помощью расширений для браузера и пользователь согласился на его получение, то есть запись файла была завершена;
Ложь, если запись была инициирована с помощью расширений для браузера, но пользователь не согласился на его получение, то есть запись файла не была завершена;
Неопределено, если запись была инициирована скачиванием файла средствами браузера и неизвестно, был ли файл записан или нет;
<ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения.
Если параметр не указан или имеет тип Неопределено, то по завершении никакая процедура вызвана не будет.
<ИмяФайла> (обязательный)
Тип: Строка.
Содержит полное имя файла, в который нужно записать пакет отображаемых документов.
<ТипФайла> (обязательный)
Тип: ТипФайлаПакетаОтображаемыхДокументов.
Содержит формат файла, в котором будет сохранен пакет отображаемых документов.
Описание:
Вызывает начало записи пакета отображаемых документов в файл.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
См. также:
ПакетОтображаемыхДокументов, метод Записать
ПакетОтображаемыхДокументов, метод ЗаписатьАсинх
Использование в версии:
Доступен, начиная с версии 8.3.12.
Описание изменено в версии 8.3.18.
Методическая информация
Практические примеры
Обработать завершение двух видов записи пакета
Сначала PDF, затем отдельным запуском внутренний файл печати. Обратный вызов различает Истина, Ложь и Неопределено.
Где и как запускать
Полный модуль собственной управляемой формы; толстый клиент Windows. Временные документы принадлежат только этой форме.
Подготовка
Собственная отдельная конфигурация УчебнаяКонфигурацияСинтаксиса, платформа 8.5.1.1343. Создайте внешнюю обработку с пустой управляемой формой, командой Выполнить и её кнопкой.
Откройте обработку в толстом клиенте Windows. Вставьте полный модуль одного урока. При наличии Асинх используйте асинхронную процедуру из примера, не убирайте Ждать.
Серверная функция создаёт только две собственные формы: Книга / 3 и Ручка / 1. Временное хранилище привязано к УникальныйИдентификатор этой формы, адреса сохраняются в собственном массиве.
Пока выполняется запись, форму не закрывайте. После завершения очищаются только адреса, созданные этим модулем. Файл оставляется для ручной проверки и удаления пользователем.
Запись выбирает новое временное имя на машине клиента. Существующий файл не перезаписывается. Для файла печати используется расширение print: это внутренний файл печати, не PDF и не текстовый отчёт.
Урок печати требует строковые реквизиты УчебныйПринтер и Подтверждение. Введите точное имя собственного тестового устройства и фразу ПЕЧАТАЮ ТОЛЬКО УЧЕБНЫЕ ДАННЫЕ.
При создании руководства печать, сохранение и запуск 1С не выполнялись. Для PDF вручную проверьте обе учебные формы; ненулевой размер файла сам по себе не доказывает содержимое.
Перем УчебныйПакет;
Перем УчебныеАдреса;
Перем Занято;
&НаКлиенте
Процедура Выполнить(Команда)
Если Занято = Истина Тогда
ВызватьИсключение "Дождитесь завершения собственной предыдущей операции";
КонецЕсли;
Если УчебныеАдреса <> Неопределено Тогда
ВызватьИсключение "Предыдущие учебные данные ещё не освобождены; закройте только учебную форму и откройте заново";
КонецЕсли;
Созданные = СоздатьСобственныйПакет();
УчебныйПакет = Созданные.Пакет;
УчебныеАдреса = Созданные.Адреса;
Занято = Истина;
ФайлДляПечати = Ложь;
Попытка
Если ФайлДляПечати Тогда
Имя = НовоеСобственноеИмя("print");
Иначе
Имя = НовоеСобственноеИмя("pdf");
КонецЕсли;
Состояние = Новый Структура("Маркер,Путь", "guide-owned-package", Имя);
Оповещение = Новый ОписаниеОповещения("УчебныйПакетЗаписан", ЭтотОбъект, Состояние,
"УчебныйПакетОшибка", ЭтотОбъект);
Если ФайлДляПечати Тогда
УчебныйПакет.НачатьЗаписьФайлаДляПечати(Оповещение, Имя);
Иначе
УчебныйПакет.НачатьЗапись(Оповещение, Имя, ТипФайлаПакетаОтображаемыхДокументов.PDF);
КонецЕсли;
Исключение
Сообщить("Ошибка начала записи: " + ОписаниеОшибки());
Сообщить("При неопределённом состоянии начала не удаляем адреса автоматически; закрытие учебной формы освободит её хранилище.");
ВызватьИсключение;
КонецПопытки;
Сообщить("Операция началась. Результат смотрите в обратном вызове, форму пока не закрывайте.");
КонецПроцедуры
&НаКлиенте
Процедура УчебныйПакетЗаписан(Результат, Состояние) Экспорт
Если Состояние.Маркер <> "guide-owned-package" Тогда
ВызватьИсключение "Неизвестный учебный обратный вызов";
КонецЕсли;
Если Результат = Истина Тогда
Сообщить("Запись подтверждена обратным вызовом.");
ИначеЕсли Результат = Ложь Тогда
Сообщить("Обратный вызов сообщил, что запись не завершена.");
ИначеЕсли Результат = Неопределено Тогда
Сообщить("Результат неизвестен; скачивание браузером ещё не доказывает получения файла.");
Иначе
ВызватьИсключение "Неожиданный результат записи";
КонецЕсли;
Занято = Ложь;
ПроверитьСобственныйФайл(Состояние.Путь);
ОсвободитьСобственныйПакет();
КонецПроцедуры
&НаКлиенте
Процедура УчебныйПакетОшибка(ИнформацияОбОшибке, Состояние, СтандартнаяОбработка) Экспорт
СтандартнаяОбработка = Истина;
Занято = Ложь;
Сообщить("Ошибка учебного пакета: " + ИнформацияОбОшибке.Описание);
Сообщить("Только собственный путь для проверки: " + Состояние.Путь);
ОсвободитьСобственныйПакет();
КонецПроцедуры
&НаСервере
Функция СоздатьСобственныйПакет()
Адреса = Новый Массив;
Пакет = Новый ПакетОтображаемыхДокументов;
Пакет.Заголовок = "guide-owned: Книга и Ручка";
Пакет.Вывод = ИспользованиеВывода.Разрешить;
Пакет.КоличествоЭкземпляров = 1;
Для Номер = 1 По 2 Цикл
Документ = Новый ТабличныйДокумент;
Если Номер = 1 Тогда
Название = "Книга";
Количество = "3";
Иначе
Название = "Ручка";
Количество = "1";
КонецЕсли;
Документ.Область(1, 1).Текст = "Только собственный учебный товар";
Документ.Область(2, 1).Текст = Название;
Документ.Область(2, 2).Текст = Количество;
Документ.Область(, 1, , 1).ШиринаКолонки = 30;
Документ.КоличествоЭкземпляров = 7;
Адрес = ПоместитьВоВременноеХранилище(Документ, ЭтаФорма.УникальныйИдентификатор);
Адреса.Добавить(Адрес);
Элемент = Пакет.Состав.Добавить(Адрес);
Элемент.Наименование = Название;
КонецЦикла;
Возврат Новый Структура("Пакет,Адреса", Пакет, Адреса);
КонецФункции
&НаСервере
Процедура УдалитьСобственныеАдреса(Адреса)
Для Каждого Адрес Из Адреса Цикл
УдалитьИзВременногоХранилища(Адрес);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ОсвободитьСобственныйПакет()
Если УчебныеАдреса <> Неопределено Тогда
УдалитьСобственныеАдреса(УчебныеАдреса);
УчебныеАдреса = Неопределено;
КонецЕсли;
УчебныйПакет = Неопределено;
КонецПроцедуры
&НаКлиенте
Функция НовоеСобственноеИмя(Расширение)
Имя = ПолучитьИмяВременногоФайла(Расширение);
Проверка = Новый Файл(Имя);
Если Проверка.Существует() Тогда
ВызватьИсключение "Новый путь уже занят; файл не перезаписываем";
КонецЕсли;
Возврат Имя;
КонецФункции
&НаКлиенте
Процедура ПроверитьСобственныйФайл(Имя)
Файл = Новый Файл(Имя);
Если Файл.Существует() Тогда
Сообщить(Файл.Размер() > 0);
Сообщить("Файл появился; вручную проверьте содержимое: " + Имя);
Иначе
Сообщить("По собственному локальному пути файла нет, успешную запись не утверждаем: " + Имя);
КонецЕсли;
КонецПроцедурыРазбор по шагам
Для первого запуска ФайлДляПечати = Ложь. Для второго в отдельной копии урока поменять на Истина: выбирается другое новое имя и другой метод.
Создать оповещение с маркером/путём и двумя экспортными обработчиками. Сохранить пакет в переменной формы до обратного вызова.
Вызвать НачатьЗапись или НачатьЗаписьФайлаДляПечати. Возврат из начала операции не подтверждает файл.
В обработчике разобрать три статуса и проверить только собственный путь. Затем освободить собственные адреса. Ошибка начала с неопределённым состоянием не вызывает автоматической преждевременной очистки.
Как проверить результат
После запуска ожидается сообщение о начале, не об успехе.
Сохранение и ненулевой размер проверяются в обратном вызове. PDF и внутренний print-файл — разные форматы; print нельзя проверять PDF-просмотрщиком.
Ожидаемый результат
Полный пример начала, завершения и ошибки с двумя реальными API записи.
На что обратить внимание
Неопределено — неизвестный результат, а не успешность и не отмена.
Для браузера локальный путь не доказывает место скачанного файла; урок запускается в толстом клиенте.
После ошибки начала закройте только учебную форму для освобождения её хранилища; не чистите весь временный каталог.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.