Вызывает начало записи табличного документа в файл.
Синтаксис
НачатьЗапись(<ОписаниеОповещения>, <ИмяФайла>, <ТипФайлаТаблицы>, <Вложения>)Полное описание, параметры и ограничения
ТабличныйДокумент.НачатьЗапись (SpreadsheetDocument.BeginWriting)
ТабличныйДокумент (SpreadsheetDocument)
НачатьЗапись (BeginWriting)
Доступен, начиная с версии 8.3.7.
Синтаксис:
НачатьЗапись(<ОписаниеОповещения>, <ИмяФайла>, <ТипФайлаТаблицы>, <Вложения>)
Параметры:
<ОписаниеОповещения> (необязательный)
Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана после завершения записи файла со следующими параметрами:
<Результат> - результат операции:
Истина - если запись была инициирована с помощью расширений для браузера и пользователь подтвердил его получение, то есть запись файла была завершена.
Ложь - если запись была инициирована с помощью расширений для браузера, но пользователь не подтвердил его получение, то есть запись файла не была завершена.
Неопределено - если запись была инициирована скачиванием файла средствами браузера и не известно - был ли файл записан или нет.
<ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения.
Если параметр не указан или имеет тип Неопределено, то по завершении никакая процедура вызвана не будет.
<ИмяФайла> (обязательный)
Тип: Строка.
Имя файла, в котором сохраняется табличный документ.
<ТипФайлаТаблицы> (необязательный)
Тип: ТипФайлаТабличногоДокумента.
Формат, в котором будет сохранен табличный документ.
Значение по умолчанию: MXL.
<Вложения> (необязательный)
Тип: КоллекцияВложенийPDF.
Объект содержит вложения PDF-файлов. Используется только при записи в форматах PDF и PDF/A-3.
Описание:
Вызывает начало записи табличного документа в файл.
Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
Примечание:
При работе на веб-клиенте нет возможности сохранять в формате XLS95.
Не поддерживается сохранение в PDF картинок типа Метафайл.
При работе на веб-клиенте вызов метода выполняет обращение к серверу.
При выводе в формат PDF шрифты, которые нельзя внедрять, а также шрифты, не являющиеся TrueType или OpenType, будут заменены на шрифт Arial. Если данный шрифт не обнаружен, то будет использован шрифт Helvetica.
См. также:
ТабличныйДокумент, метод Записать
ТабличныйДокумент, метод ЗаписатьАсинх
Использование в версии:
Доступен, начиная с версии 8.3.7.
Описание изменено в версии 8.3.18.
Методическая информация
Практические примеры
Запустить сохранение MXL и обработать три результата
Новое временное имя, обратный вызов и отдельная диагностика файла. Запуск операции и её успешное завершение не смешиваются.
Где и как запускать
Полный модуль собственной управляемой формы; толстый клиент Windows. Не запускать в рабочей конфигурации.
Подготовка
Создайте собственную отдельную учебную базу с именем конфигурации УчебнаяКонфигурацияСинтаксиса, внешнюю обработку и пустую управляемую форму. Откройте её в толстом клиенте Windows 8.5.1.1343.
Для командного урока создайте команду Выполнить, кнопку и действие Выполнить. Вставьте весь приведённый модуль, включая функции ниже процедуры.
Книга / 3 и Ручка / 1 создаются в новом табличном документе. Рабочие печатные формы, документы базы и файлы организации не используются.
Основной язык собственной конфигурации — ru. Урок языков дополнительно требует язык en. Языки создаются вручную в Конфигураторе; код не устанавливает их и не переводит текст автоматически.
Урок проверки печати требует установленного собственного тестового/виртуального принтера. На форме создайте строковый реквизит УчебныйПринтер и введите точное имя устройства.
Для реальной печати дополнительно нужен строковый реквизит Подтверждение. Для окна нужна отдельная команда СкрытьУчебноеОкно. Для сохранения первый запуск использует новый временный MXL, не существующий рабочий файл.
При создании руководства 1С, принтер и запись файла не запускались. Окна, драйвер и обратный вызов проверяются вручную в собственной учебной базе.
&НаКлиенте
Процедура Выполнить(Команда)
Документ = СоздатьУчебныйДокумент();
НовоеИмя = ПолучитьИмяВременногоФайла("mxl");
ПроверкаПути = Новый Файл(НовоеИмя);
Если ПроверкаПути.Существует() Тогда
ВызватьИсключение "Новый временный путь уже занят; повторите команду, файл не перезаписываем";
КонецЕсли;
Состояние = Новый Структура("Маркер,Путь", "guide-owned-save", НовоеИмя);
Оповещение = Новый ОписаниеОповещения("УчебнаяЗаписьЗавершена", ЭтотОбъект, Состояние,
"УчебнаяЗаписьОшибка", ЭтотОбъект);
Документ.НачатьЗапись(Оповещение, НовоеИмя, ТипФайлаТабличногоДокумента.MXL);
Сообщить("Запись запущена; это ещё не подтверждение успешного сохранения.");
КонецПроцедуры
&НаКлиенте
Процедура УчебнаяЗаписьЗавершена(Результат, Состояние) Экспорт
Если Состояние.Маркер <> "guide-owned-save" Тогда
ВызватьИсключение "Неизвестный учебный обратный вызов";
КонецЕсли;
Если Результат = Истина Тогда
Сообщить("Обратный вызов подтвердил сохранение.");
ИначеЕсли Результат = Ложь Тогда
Сообщить("Обратный вызов сообщил, что сохранение не завершено.");
ИначеЕсли Результат = Неопределено Тогда
Сообщить("Результат сохранения неизвестен; скачивание браузером не доказывает получение файла.");
Иначе
ВызватьИсключение "Неожиданный тип результата записи";
КонецЕсли;
СобственныйФайл = Новый Файл(Состояние.Путь);
Если СобственныйФайл.Существует() Тогда
Сообщить(СобственныйФайл.Размер() > 0);
Сообщить("Проверьте созданный учебный файл: " + Состояние.Путь);
Иначе
Сообщить("По собственному локальному пути файла нет; успешную запись не утверждаем.");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УчебнаяЗаписьОшибка(ИнформацияОбОшибке, Состояние, СтандартнаяОбработка) Экспорт
СтандартнаяОбработка = Истина;
Сообщить("Ошибка записи собственного файла: " + Состояние.Путь);
Сообщить(ИнформацияОбОшибке.Описание);
КонецПроцедуры
&НаКлиенте
Функция СоздатьУчебныйДокумент()
Документ = Новый ТабличныйДокумент;
Документ.КодЯзыка = "ru";
Документ.Область(1, 1).Текст = "Товар";
Документ.Область(1, 2).Текст = "Количество";
Документ.Область(2, 1).Текст = "Книга";
Документ.Область(3, 1).Текст = "Ручка";
Документ.Область(2, 2).Текст = "3";
Документ.Область(3, 2).Текст = "1";
Документ.Область(, 1, , 1).ШиринаКолонки = 25;
Документ.Область(, 2, , 2).ШиринаКолонки = 12;
Возврат Документ;
КонецФункцииРазбор по шагам
Получить новое временное имя и отказаться от записи, если оно уже занято. Этот путь создан специально для учебного документа.
Передать собственный маркер и путь через дополнительные параметры ОписаниеОповещения. НачатьЗапись получает оповещение первым аргументом, имя вторым, формат третьим.
Обработать Истина, Ложь и Неопределено отдельно. Последнее особенно важно для скачивания средствами браузера: факт запуска не равен факту получения файла.
В толстом клиенте дополнительно проверить существование и ненулевой размер своего файла. Обработчик ошибки не удаляет и не перезаписывает файлы.
Как проверить результат
После запуска выводится только сообщение о начале. Проверку успеха смотрите в обратном вызове.
Если собственный файл появился, проверка его размера даёт Истина. Откройте MXL вручную и сравните Книгу/3 и Ручку/1; файл остаётся для проверки.
Ожидаемый результат
Полный модуль начала записи, завершения и ошибки с честной диагностикой состояния.
На что обратить внимание
На стороне браузера локальный путь может не соответствовать месту сохранённого скачивания: этот урок запускается в толстом клиенте Windows.
Не удаляйте файл при Неопределено: это неизвестный результат, а не доказательство неудачи.
Ненулевой размер не доказывает правильное содержимое; нужна ручная проверка MXL. После неё собственный временный файл можно удалить вручную.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.