К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как сохранить табличный документ в 1С

Как сохранить табличный документ в 1С в форматы MXL, Excel, PDF: через меню «Файл», программно методом Записать, с выбором формата и проверкой результата.

Табличный документ в 1С — это универсальный формат представления данных: печатные формы документов, отчёты, прайс-листы и макеты выводятся именно в нём. Сохранить такой документ можно двумя способами: интерактивно, через стандартное меню «Файл», и программно — методом Записать() из встроенного языка.

Выбор способа зависит от задачи. Бухгалтеру, которому нужно отправить печатную форму контрагенту, достаточно пары кликов. Разработчику, настраивающему автоматическую рассылку отчётов, потребуется код с указанием формата, пути и параметров записи.

Важный нюанс: табличный документ существует только в памяти или в окне программы, пока его не записали в файл. Закрытие окна без сохранения приводит к потере результата, и восстановить его можно только повторным формированием отчёта или печатной формы.

Что такое табличный документ и какие форматы доступны

Табличный документ — объект платформы 1С:Предприятие, предназначенный для отображения и печати данных в виде таблицы с форматированием: объединёнными ячейками, рамками, шрифтами, картинками. Его внутренний «родной» формат — MXL, который платформа умеет открывать и редактировать без сторонних программ.

При сохранении доступны и другие форматы. Наиболее востребованные:

  • MXL — внутренний формат 1С, сохраняет структуру и форматирование без потерь, открывается только в 1С;
  • XLS / XLSX — для передачи данных тем, кто работает в Excel, и для дальнейших расчётов;
  • PDF — для отправки контрагентам и архива: документ выглядит одинаково на любом устройстве и защищён от случайного редактирования;
  • HTML — для публикации на веб-страницах;
  • ODS — для пользователей OpenOffice и LibreOffice;
  • TXT — только текст без форматирования, подходит для простых выгрузок.

Сохранение через интерфейс: меню «Файл»

Когда печатная форма или отчёт открыт на экране, сохранение занимает несколько секунд. Откройте меню «Файл» и выберите «Сохранить» — документ запишется в формате MXL в ранее указанное место. Если файл сохраняется впервые или нужен другой формат, используйте «Сохранить как».

В диалоге сохранения укажите папку, имя файла и тип файла в выпадающем списке. После нажатия «Сохранить» платформа создаст файл выбранного формата. Если документ многостраничный, в файл попадут все страницы.

Порядок действий в интерфейсе
  1. 1
    Сформируйте печатную форму или отчёт, чтобы табличный документ открылся на экране
  2. 2
    Откройте меню «Файл» и выберите «Сохранить как»
  3. 3
    Укажите папку и имя файла
  4. 4
    Выберите тип файла: MXL, Excel, PDF или другой
  5. 5
    Нажмите «Сохранить» и откройте файл для проверки

Сохранение копии печатной формы

В некоторых конфигурациях печатная форма открывается в специальном окне менеджера печати с собственной кнопкой сохранения. Там доступны те же форматы, а иногда — дополнительные действия: отправка по электронной почте прямо из окна, подписание, вывод на принтер. Кнопка обычно называется «Сохранить» или имеет значок дискеты.

Программное сохранение: метод Записать()

Для автоматизации используется метод Записать() объекта «ТабличныйДокумент». Минимальный вызов требует два параметра: полное имя файла и тип файла.

ТабДок = Новый ТабличныйДокумент;

// ... заполнение документа ...

ТабДок.Записать("C:\Отчеты\Остатки.xlsx",

ТипФайлаТабличногоДокумента.XLSX);

Перечисление ТипФайлаТабличногоДокумента содержит значения для всех поддерживаемых форматов: MXL, XLSX, XLS, PDF, HTML, ODS, TXT и другие. Имя значения должно соответствовать реальному расширению файла — иначе файл не откроется в целевой программе.

bsl
ТабДок.Записать("C:\Отчеты\Счет.pdf", ТипФайлаТабличногоДокумента.PDF);

Сохранение на сервере и в фоновом задании

Если код выполняется на сервере (в толстом клиенте с серверным вызовом, в фоновом задании, в регламентной операции), путь в методе Записать() интерпретируется относительно сервера, а не компьютера пользователя. Учётная запись, под которой работает сервер 1С, должна иметь права на запись в указанный каталог.

Типовой приём — сохранить файл во временный каталог на сервере, поместить его во временное хранилище и уже на клиенте получить данные и предложить пользователю сохранить файл в удобное место. Для передачи используются функции работы с двоичными данными и ПоместитьВоВременноеХранилище().

Выбор формата под задачу

Формат определяет, что получатель сможет сделать с файлом. Ошибка выбора — частая причина переделок: например, отправка MXL контрагенту, у которого нет 1С, приводит к тому, что файл просто не открывается.

Сравнение форматов

MXL

Для обмена между пользователями 1С и хранения макетов. Не открывается без платформы 1С.

XLSX

Для дальнейшей обработки данных в Excel. Форматирование может частично искажаться при сложной структуре.

PDF

Для отправки контрагентам и архива. Не редактируется, выглядит одинаково везде, но данные из него сложно переиспользовать.

HTML

Для публикации в интернете или вставки в письмо. Теряется часть настроек печати.

Практическое правило: внутри компании, где все работают в 1С, удобнее MXL — он сохраняет документ один в один. Наружу, контрагентам и в архив, — PDF. Если получатель будет считать что-то по вашим данным, — Excel.

Проверка результата и типичные ошибки

После сохранения откройте полученный файл в целевой программе. Для PDF проверьте, что все страницы на месте и текст не «уехал» за границы. Для Excel — что числа распознаны как числа, а не как текст, иначе формулы получателя работать не будут.

Контрольные точки

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

Открытие файла
Норма

Файл открывается в целевой программе без ошибок и предупреждений о повреждении

Тревожный признак

Программа сообщает о неверном формате — расширение не совпадает с типом, указанным при записи

Числа в Excel
Норма

Числовые ячейки участвуют в суммах и сортировке как числа

Тревожный признак

Числа сохранены как текст — в ячейках был вывод с неразрывными пробелами или текстовым форматом

Многостраничность
Норма

Все страницы документа присутствуют в файле

Тревожный признак

Сохранилась только видимая часть — проверьте область вывода и разрывы страниц

Типичные ошибки
01
Несовпадение расширения файла и типа в методе Записать — файл не открывается в целевой программе
02
Запись на сервере по клиентскому пути — файл «теряется» на диске сервера, пользователь его не находит
03
Сохранение в Excel документа с объединёнными ячейками и группировками — при дальнейшей обработке структура мешает фильтрации
04
Отсутствие обработки исключений при записи — фоновое задание падает, а пользователь не получает ни файла, ни внятного сообщения

Ограничения и особенности

Метод Записать() недоступен в веб-клиенте для прямой записи на диск пользователя — браузер не даёт программе доступ к файловой системе. В веб-клиенте файл формируется на сервере и передаётся пользователю через механизм получения файлов, аналогично скачиванию.

Ещё одно ограничение — объём. Очень большие табличные документы (десятки тысяч строк) при сохранении в Excel могут формироваться заметное время и потреблять много памяти. Для массовых выгрузок данных лучше подходят другие механизмы — например, текстовые форматы или специализированные обработки обмена.

При сохранении в PDF учитывайте настройки размещения: параметры «Автомасштаб», ориентация и поля страницы берутся из свойств табличного документа. Если печатная форма настроена под альбомную ориентацию, а в PDF она вышла книжной, проверьте свойство ОриентацияСтраницы документа.

Автоматизация: рассылка и архив

Типовой сценарий автоматизации — регламентное задание, которое формирует отчёт, сохраняет его в PDF и отправляет по электронной почте или складывает в сетевую папку. Схема такая: сформировать табличный документ, записать его во временный файл, прикрепить файл к письму или переместить в архивный каталог, удалить временный файл.

Для архива удобно строить структуру каталогов по периодам и наименованиям документов, а имя файла формировать из даты, номера и контрагента. Это избавляет от ручного переименования и упрощает поиск. Перед внедрением проверьте на тестовой базе полный цикл: формирование, запись, отправку и открытие полученного файла.

Если печатная форма регулярно сохраняется в PDF для отправки контрагентам, имеет смысл сразу встроить в конфигурацию кнопку «Сохранить в PDF» или отправку по почте из формы печати. Ручное сохранение через «Файл → Сохранить как» при десятках документов в день отнимает заметное время и провоцирует ошибки в именах файлов.
ПЗ
Практическое замечание
Итог

Что важно запомнить

Интерактивно табличный документ сохраняется через «Файл → Сохранить как» с выбором формата. Программно — методом Записать() с указанием пути и ТипФайлаТабличногоДокумента. Следите за совпадением расширения и типа файла, учитывайте разницу путей на клиенте и сервере и всегда проверяйте полученный файл открытием в целевой программе.

Частые вопросы

В каком формате сохранить печатную форму для контрагента без 1С?

Оптимальный вариант — PDF: файл откроется на любом устройстве, сохранит внешний вид документа и не позволит случайно изменить содержимое. Если контрагент просит редактируемый формат для расчётов, сохраните копию в XLSX.

Почему файл, сохранённый программно, не открывается?

Чаще всего расширение имени файла не совпадает со значением ТипФайлаТабличногоДокумента, переданным в метод Записать(). Например, файл назван .xlsx, а записан как MXL. Приведите расширение и тип в соответствие и запишите заново.

Как сохранить табличный документ в веб-клиенте?

Напрямую на диск пользователя из веб-клиента записать нельзя. Файл формируется на сервере, затем передаётся пользователю через механизм получения файлов — он сохраняется как обычное скачивание из браузера.

Можно ли сохранить только часть табличного документа?

Да. Программно можно скопировать нужную область в новый табличный документ через метод ПолучитьОбласть() и записать уже его. Интерактивно — выделить область и использовать копирование в новый документ или в Excel.

Что делать, если при сохранении в Excel числа становятся текстом?

Причина обычно в том, что в ячейки табличного документа значения выведены как строки — например, с неразрывными пробелами в разрядах или через функцию Формат() с текстовым результатом. Исправьте заполнение макета: выводите в ячейки числовые значения, а форматирование задавайте через оформление ячейки.

Перезапишет ли метод Записать() существующий файл?

Да, перезапишет без предупреждения. Если нужно сохранять историю, формируйте уникальные имена файлов — например, добавляя дату и время формирования — или предварительно проверяйте существование файла и запрашивайте подтверждение у пользователя.