Записывает табличный документ в файл.
Синтаксис
Записать(<ИмяФайла>, <ТипФайлаТаблицы>, <Вложения>)Записать(<Поток>, <ТипФайлаТаблицы>, <Вложения>)Примеры платформы
ТабДок1.Записать("C:\My Documents\Таблица2.mxl");
Поток = ФайловыеПотоки.ОткрытьДляЗаписи(имяФайла);
ТабДок2.Записать(Поток, ТипФайлаТабличногоДокумента.XLSX);
Поток.Закрыть();Полное описание, параметры и ограничения
ТабличныйДокумент.Записать (SpreadsheetDocument.Write)
ТабличныйДокумент (SpreadsheetDocument)
Записать (Write)
Доступен, начиная с версии 8.1.
Вариант синтаксиса: В файл
Синтаксис:
Записать(<ИмяФайла>, <ТипФайлаТаблицы>, <Вложения>)
Параметры:
<ИмяФайла> (обязательный)
Тип: Строка.
Имя файла, в котором сохраняется табличный документ.
<ТипФайлаТаблицы> (необязательный)
Тип: ТипФайлаТабличногоДокумента.
Формат, в котором будет сохранен табличный документ.
Значение по умолчанию: MXL.
<Вложения> (необязательный)
Тип: КоллекцияВложенийPDF.
Объект, содержащий вложения PDF-документов.
Используется только при записи в форматы PDF и PDF/A-3.
Если табличный документ записывается в формате PDF или PDF/A-3 и указан параметр <Вложения>, то вложения добавляются в документ в формате PDF и PDF/A-3.
Описание варианта метода:
Запись табличного документа в файл.
Вариант синтаксиса: В поток
Синтаксис:
Записать(<Поток>, <ТипФайлаТаблицы>, <Вложения>)
Параметры:
<Поток> (обязательный)
Тип: Поток, ПотокВПамяти, ФайловыйПоток.
Поток для записи табличного документа.
<ТипФайлаТаблицы> (необязательный)
Тип: ТипФайлаТабличногоДокумента.
Формат, в котором будет сохранен табличный документ.
Значение по умолчанию: MXL.
<Вложения> (необязательный)
Тип: КоллекцияВложенийPDF.
Объект, содержащий вложения PDF-документов.
Если табличный документ записывается в формате PDF или PDF/A-3 и указан параметр <Вложения>, то вложения добавляются в документ в формате PDF и PDF/A-3.
Описание варианта метода:
Запись табличного документа в поток.
При записи в поток допускается использование только форматов: ANSITXT, DOCX, XLSX, MXL, MXL7, ODS, PDF, TXT.
Внимание! В веб-клиенте использование данного варианта недоступно.
Описание:
Записывает табличный документ в файл.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
При работе на сервере, веб-клиенте или через внешнее соединение:
нет возможности сохранять в формате XLS95;
нет возможности сохранять в формате MXL7 табличные документы, содержащие картинки. При попытке сохранить такой документ в формате MXL7 будет сгенерировано исключение.
Не поддерживается сохранение в PDF картинок типа Метафайл.
При работе на веб-клиенте вызов метода выполняет обращение к серверу.
При работе на мобильной платформе возможно сохранение только в форматах MXL и PDF.
При выводе в формат PDF шрифты, которые нельзя внедрять, а также шрифты, не являющиеся TrueType или OpenType, будут заменены на шрифт Arial. Если данный шрифт не обнаружен, то будет использован шрифт Helvetica.
Пример:
// запись документа в файл
ТабДок1.Записать("C:\My Documents\Таблица2.mxl");
// запись документа в поток в формате XLSX
Поток = ФайловыеПотоки.ОткрытьДляЗаписи(имяФайла);
ТабДок2.Записать(Поток, ТипФайлаТабличногоДокумента.XLSX);
Поток.Закрыть();
См. также:
ТабличныйДокумент, метод ЗаписатьАсинх
ТабличныйДокумент, метод НачатьЗапись
Использование в версии:
Доступен, начиная с версии 8.1.
Описание изменено в версии 8.3.18.
Методическая информация
Практические примеры
Показать собственный PDF в поле формы без временного файла
Из учебных ячеек формируем байты PDF в памяти, читаем их в ДокументPDF и связываем с полем. Проверяем масштаб и первую страницу, диагностически читаем состояние просмотра.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В отдельной учебной базе 8.5.1.1343 создайте внешнюю обработку УчебныеПоляДокументов85 с пустой управляемой основной формой. Запускайте в тонком клиенте Windows; веб-клиент в этот урок не входит.
Не создавайте вручную УчебныйДокумент, ПолеДокумента или учебную команду. Модуль программно добавляет их при открытии формы.
В свойствах формы → События назначьте ПриСозданииНаСервере. Вставьте весь код одного урока на уровне модуля, сохраните свою EPF и откройте её в учебной базе.
Поле связано с реквизитом УчебныйДокумент типа ДокументPDF. Объект документа содержит данные, элемент ПолеДокумента отвечает за отображение и пользовательские действия.
Документ создаётся заново из собственных констант. Книга: 3 штуки по 250, сумма 750. Реальные документы, справочники, файлы, сертификаты и сетевые адреса не используются.
Каждый урок запускайте в отдельной копии формы. Изменения текста и оформления живут в памяти открытой учебной формы; код не сохраняет документ в файл, не печатает и не пишет в базу.
Размеры и ограничения элемента задаются на сервере создания формы. Кнопка выполняет клиентские проверки или явно описанное учебное изменение.
Фактический вид и запуск в 1С не проверены. Настройки компоновки формы, масштаб интерфейса и версия клиента могут влиять на отображение; сверяйте его вручную.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
НовыеРеквизиты = Новый Массив;
НовыеРеквизиты.Добавить(Новый РеквизитФормы("УчебныйДокумент", Новый ОписаниеТипов("ДокументPDF")));
ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
ЭтаФорма.УчебныйДокумент = ПрочитатьСобственныйДокумент(СоздатьСобственныеБайтыPDF());
Поле = Элементы.Добавить("ПолеДокумента", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеPDFДокумента;
Поле.ПутьКДанным = "УчебныйДокумент";
Поле.Масштаб = 100;
Поле.НомерТекущейСтраницы = 1;
Поле.Ориентация = 0;
Поле.Вывод = ИспользованиеВывода.Запретить;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Проверить учебный документ";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Поле = Элементы.ПолеДокумента;
Сообщить(ТипЗнч(УчебныйДокумент) = Тип("ДокументPDF"));
Сообщить(Поле.Масштаб = 100);
Сообщить(Поле.НомерТекущейСтраницы = 1);
Сообщить(Поле.Ориентация = 0);
Сообщить("Положение состояния просмотра: " + Строка(Поле.ПоложениеСостоянияПросмотра));
Сообщить("Тип значения положения: " + Строка(ТипЗнч(Поле.ПоложениеСостоянияПросмотра)));
КонецПроцедуры
&НаСервереБезКонтекста
Функция СоздатьСобственныеБайтыPDF()
Таблица = Новый ТабличныйДокумент;
Таблица.КодЯзыка = "ru";
Таблица.Область(1, 1).Текст = "СОБСТВЕННЫЙ УЧЕБНЫЙ ОБРАЗЕЦ";
Таблица.Область(2, 1).Текст = "Книга";
Таблица.Область(2, 2).Текст = "3";
Таблица.Область(2, 3).Текст = "250";
Таблица.Область(2, 4).Текст = "750";
Таблица.Область(1, 1, 2, 4).ЦветФона = Новый Цвет(255, 255, 210);
Таблица.Область(, 1, , 1).ШиринаКолонки = 45;
Поток = Новый ПотокВПамяти;
Попытка
Таблица.Записать(Поток, ТипФайлаТабличногоДокумента.PDF);
Данные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
Исключение
Поток.Закрыть();
ВызватьИсключение;
КонецПопытки;
Возврат Данные;
КонецФункции
&НаСервереБезКонтекста
Функция ПрочитатьСобственныйДокумент(Данные)
Поток = Данные.ОткрытьПотокДляЧтения();
Попытка
Документ = Новый ДокументPDF;
Документ.Прочитать(Поток);
Поток.Закрыть();
Исключение
Поток.Закрыть();
ВызватьИсключение;
КонецПопытки;
Возврат Документ;
КонецФункции
Разбор по шагам
Собственный ТабличныйДокумент экспортируется в ПотокВПамяти, а не на диск. Исключение закрывает поток и передаётся вызывающему коду.
Второй поток открывается на полученных ДвоичныеДанные. ДокументPDF читает его и закрывает при успехе и ошибке.
После назначения УчебныйДокумент создаём поле с ВидПоляФормы.ПолеPDFДокумента и правильным путём к данным.
Масштаб 100 — дополнительный масштаб PDF относительно масштаба формы. Номер страницы начинается с 1; документ не пустой.
В установленном описании ПоложениеСостоянияПросмотра тип не указан. Поэтому читаем реальное значение и тип, не назначая выдуманное перечисление.
Как проверить результат
Ожидаются четыре Истина и две диагностические строки состояния. На форме должна быть учебная строка Книга / 3 / 250 / 750.
Откройте поток в отладчике: чтение закрыто, а PDF остаётся в реквизите формы. Файл PDF этим кодом не создаётся.
Ожидаемый результат
Полный маршрут собственного PDF до поля формы показан без зависимости от неизвестного файла.
На что обратить внимание
ДокументPDF и обычный элемент ПолеPDFДокумента — не одно и то же. Здесь управляемая форма использует ПолеФормы с соответствующим видом.
НомерТекущейСтраницы — единичная нумерация; 0 не является первой страницей.
Не выдавайте настройки просмотра за проверку электронной подписи или защиту PDF.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Настроить размеры PDF-поля и имя для возможного сохранения
Задаём размеры и максимумы поля. На клиенте только формируем собственное имя файла и запрещаем интерактивный вывод; документ по этому имени не записываем.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В отдельной учебной базе 8.5.1.1343 создайте внешнюю обработку УчебныеПоляДокументов85 с пустой управляемой основной формой. Запускайте в тонком клиенте Windows; веб-клиент в этот урок не входит.
Не создавайте вручную УчебныйДокумент, ПолеДокумента или учебную команду. Модуль программно добавляет их при открытии формы.
В свойствах формы → События назначьте ПриСозданииНаСервере. Вставьте весь код одного урока на уровне модуля, сохраните свою EPF и откройте её в учебной базе.
Поле связано с реквизитом УчебныйДокумент типа ДокументPDF. Объект документа содержит данные, элемент ПолеДокумента отвечает за отображение и пользовательские действия.
Документ создаётся заново из собственных констант. Книга: 3 штуки по 250, сумма 750. Реальные документы, справочники, файлы, сертификаты и сетевые адреса не используются.
Каждый урок запускайте в отдельной копии формы. Изменения текста и оформления живут в памяти открытой учебной формы; код не сохраняет документ в файл, не печатает и не пишет в базу.
Размеры и ограничения элемента задаются на сервере создания формы. Кнопка выполняет клиентские проверки или явно описанное учебное изменение.
Фактический вид и запуск в 1С не проверены. Настройки компоновки формы, масштаб интерфейса и версия клиента могут влиять на отображение; сверяйте его вручную.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
НовыеРеквизиты = Новый Массив;
НовыеРеквизиты.Добавить(Новый РеквизитФормы("УчебныйДокумент", Новый ОписаниеТипов("ДокументPDF")));
ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
ЭтаФорма.УчебныйДокумент = ПрочитатьСобственныйДокумент(СоздатьСобственныеБайтыPDF());
Поле = Элементы.Добавить("ПолеДокумента", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеPDFДокумента;
Поле.ПутьКДанным = "УчебныйДокумент";
Поле.АвтоМаксимальнаяВысота = Ложь;
Поле.АвтоМаксимальнаяШирина = Ложь;
Поле.Высота = 18;
Поле.Ширина = 100;
Поле.МаксимальнаяВысота = 28;
Поле.МаксимальнаяШирина = 120;
Поле.РастягиватьПоВертикали = Истина;
Поле.РастягиватьПоГоризонтали = Истина;
Поле.ЦветРамки = Новый Цвет(80, 105, 130);
Поле.Вывод = ИспользованиеВывода.Запретить;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Проверить учебный документ";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Поле = Элементы.ПолеДокумента;
Поле.ИспользуемоеИмяФайла = КаталогВременныхФайлов() + "УчебныйПросмотрPDF_" + Строка(Новый УникальныйИдентификатор) + ".pdf";
Сообщить(Не Поле.АвтоМаксимальнаяВысота И Не Поле.АвтоМаксимальнаяШирина);
Сообщить(Поле.Высота = 18 И Поле.Ширина = 100);
Сообщить(Поле.МаксимальнаяВысота = 28 И Поле.МаксимальнаяШирина = 120);
Сообщить(Поле.РастягиватьПоВертикали И Поле.РастягиватьПоГоризонтали);
Сообщить(Поле.ЦветРамки = Новый Цвет(80, 105, 130));
Сообщить(Поле.Вывод = ИспользованиеВывода.Запретить);
Сообщить(СтрНайти(Поле.ИспользуемоеИмяФайла, "УчебныйПросмотрPDF_") > 0);
КонецПроцедуры
&НаСервереБезКонтекста
Функция СоздатьСобственныеБайтыPDF()
Таблица = Новый ТабличныйДокумент;
Таблица.КодЯзыка = "ru";
Таблица.Область(1, 1).Текст = "СОБСТВЕННЫЙ УЧЕБНЫЙ ОБРАЗЕЦ";
Таблица.Область(2, 1).Текст = "Книга";
Таблица.Область(2, 2).Текст = "3";
Таблица.Область(2, 3).Текст = "250";
Таблица.Область(2, 4).Текст = "750";
Таблица.Область(1, 1, 2, 4).ЦветФона = Новый Цвет(255, 255, 210);
Таблица.Область(, 1, , 1).ШиринаКолонки = 45;
Поток = Новый ПотокВПамяти;
Попытка
Таблица.Записать(Поток, ТипФайлаТабличногоДокумента.PDF);
Данные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
Исключение
Поток.Закрыть();
ВызватьИсключение;
КонецПопытки;
Возврат Данные;
КонецФункции
&НаСервереБезКонтекста
Функция ПрочитатьСобственныйДокумент(Данные)
Поток = Данные.ОткрытьПотокДляЧтения();
Попытка
Документ = Новый ДокументPDF;
Документ.Прочитать(Поток);
Поток.Закрыть();
Исключение
Поток.Закрыть();
ВызватьИсключение;
КонецПопытки;
Возврат Документ;
КонецФункции
Разбор по шагам
Отключаем автоматические максимумы и задаём явные ограничения до открытия клиентской формы.
Высота поля задаётся в строках, ширина и максимальные ограничения — в единицах, указанных в справке, не в пикселях.
Разрешаем растягивание и задаём цвет рамки. Фактический прямоугольник зависит также от компоновки формы.
КаталогВременныхФайлов берём на клиенте. Свой уникальный суффикс не зависит от имени рабочего документа.
ИспользуемоеИмяФайла — предложение для команды сохранения. Само присваивание не вызывает сохранение. Вывод.Запретить относится к интерактивным операциям поля.
Как проверить результат
Ожидаются семь Истина. Повторное нажатие меняет предложенное имя, но не создаёт PDF на диске.
Измените размеры окна и проверьте ограничение роста. Не нажимайте сохранение или печать: они не являются частью этого упражнения.
Ожидаемый результат
Настройки размера, имя сохранения и ограничение интерактивного вывода разобраны отдельно от файловых операций.
На что обратить внимание
ИспользованиеВывода.Запретить — настройка интерфейса, не серверная модель прав и не шифрование PDF.
Серверный временный каталог может отличаться от клиентского; имя для пользовательского сохранения здесь формируется на клиенте.
Нулевой максимум по справке снимает ограничение, а не задаёт нулевой размер поля.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.