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

Документы и Печать · 11 мин

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

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

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

Существует два основных подхода: интерактивное сохранение через интерфейс (подходит для разовых операций пользователя) и программное сохранение методом Записать() (подходит для автоматизации — массовой рассылки, регламентных заданий, формирования вложений). Оба способа используют встроенные механизмы платформы и не требуют установки сторонних PDF-принтеров.

Интерактивное сохранение через меню «Файл»

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

Обратите внимание: если сохранять через «Сохранить копию» из контекстного меню или через кнопку на панели инструментов, набор доступных форматов может отличаться в зависимости от конфигурации и версии платформы. Надёжнее использовать именно главное меню «Файл» — там список форматов всегда полный: MXL, Excel, HTML, PDF, ODS и другие.

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

Порядок действий в интерфейсе
  1. 1
    Сформируйте печатную форму или отчёт, чтобы табличный документ отобразился на экране
  2. 2
    Откройте «Файл — Параметры страницы» и настройте ориентацию, масштаб и поля
  3. 3
    Проверьте результат в предварительном просмотре печати
  4. 4
    Выберите «Файл — Сохранить как», укажите тип файла «PDF-документ»
  5. 5
    Задайте имя и каталог, нажмите «Сохранить»
  6. 6
    Откройте полученный PDF и убедитесь, что все страницы и данные на месте

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

Во встроенном языке 1С табличный документ (объект типа ТабличныйДокумент) сохраняется методом Записать(). Первый параметр — полное имя файла, второй — тип файла. Для PDF используется значение ТипФайлаТабличногоДокумента.PDF.

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

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

На сервере 1С метод работает аналогично, но файл создаётся в файловой системе сервера. Чтобы передать результат клиенту, файл обычно помещают во временное хранилище через ПоместитьВоВременноеХранилище() и затем скачивают на стороне клиента. Это стандартный шаблон для кнопок «Скачать PDF» в управляемых формах.

Настройка параметров записи PDF

Объект ПараметрыЗаписиPDF создаётся конструктором Новый ПараметрыЗаписиPDF и содержит несколько полезных свойств. Свойство ДиапазонСтраниц позволяет сохранить не весь документ, а выбранные страницы — например, «1-3» или «2». Это удобно, когда печатная форма содержит служебные листы, которые не должны попасть в отправляемый файл.

bsl
ПараметрыPDF = Новый ПараметрыЗаписиPDF;
ПараметрыPDF.ДиапазонСтраниц = "1-2";
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF, ПараметрыPDF);

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

Сохранение печатных форм документов и отчётов

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

Для отчётов на СКД результат выводится в табличный документ, доступный в элементе формы «Результат». Программно его можно получить после вызова компоновки и вывода в объект ТабличныйДокумент, а затем сохранить тем же методом Записать(). Это позволяет строить регламентные задания, которые ежедневно формируют отчёт и складывают PDF в сетевую папку.

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

Для массовой выгрузки именуйте файлы по шаблону «ТипДокумента_Номер_Дата.pdf» и очищайте имя от недопустимых символов (двоеточий, слэшей из номера документа). Это избавляет от ошибок записи и упрощает поиск файлов в архиве.
ПЗ
Практическое замечание

Сохранение на сервере, веб-клиенте и тонком клиенте

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

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

Типичные ошибки и способы их устранения

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

Вторая группа ошибок — проблемы со шрифтами. Если в PDF кириллица отображается некорректно или текст «плывёт», убедитесь, что используемые в макете шрифты установлены на том компьютере, где выполняется запись (на сервере — на сервере). В Linux-окружениях для корректной работы с шрифтами может потребоваться установка пакетов шрифтов в систему.

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

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

Проверка результата и альтернативные форматы

После записи откройте PDF в просмотрщике и проверьте три вещи: количество страниц соответствует предварительному просмотру, весь текст читаем (шрифты встроились корректно), таблицы не обрезаны по краям. Для программной проверки можно сравнить размер файла с нулевым порогом и обернуть запись в попытку-исключение с записью ошибки в журнал регистрации.

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

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

Количество страниц в PDF
Норма

Совпадает с предварительным просмотром печати

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

Лишние пустые листы или пропавшие страницы

Отображение текста
Норма

Кириллица читается, шрифты совпадают с макетом

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

Квадраты вместо букв, съехавшая вёрстка

Границы таблиц
Норма

Все колонки видны целиком

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

Правые колонки обрезаны или перенесены на отдельные листы

PDF — не единственный вариант. Если получателю нужно редактировать документ, подойдёт Excel (ТипФайлаТабличногоДокумента.XLSX); для публикации в вебе — HTML; для обмена между базами 1С — родной формат MXL. Но для фиксации документа «как напечатано» и передачи вовне PDF остаётся оптимальным выбором: он не редактируется штатно и одинаково отображается везде.

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

PDF

Фиксированная вёрстка для отправки контрагентам и архива; не редактируется, требует корректных шрифтов

XLSX

Получатель может редактировать данные; вёрстка и формулы могут отличаться от оригинала

MXL

Родной формат 1С для обмена между базами; внешний получатель без 1С его не откроет

HTML

Подходит для публикации в вебе; печатная вёрстка и разбиение на страницы теряются

Итог

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

Интерактивно PDF сохраняется через «Файл — Сохранить как», программно — методом Записать() с типом PDF и при необходимости объектом ПараметрыЗаписиPDF. Настройки страницы табличного документа определяют вид итогового файла, а в клиент-серверном режиме результат передаётся клиенту через временное хранилище.

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

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

Да. Создайте объект ПараметрыЗаписиPDF, задайте свойство ДиапазонСтраниц (например, "1-3" или "2") и передайте его третьим параметром в метод Записать(). Без этого параметра сохраняется весь документ.

Почему в PDF обрезаны правые колонки таблицы?

Ширина таблицы превышает область печати при текущих настройках страницы. Включите АвтоМасштаб у табличного документа, уменьшите масштаб печати или переключите ориентацию на альбомную, затем повторите запись. Проверить результат заранее можно в предварительном просмотре печати.

Как сохранить PDF в регламентном задании на сервере?

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

Что делать, если кириллица в PDF отображается некорректно?

Проверьте, что шрифты, использованные в макете, установлены на компьютере, где выполняется запись. На сервере под Linux может потребоваться установка пакетов системных шрифтов. После установки шрифтов сервер 1С обычно нужно перезапустить.

Можно ли объединить несколько печатных форм в один PDF?

Да. Выведите все формы последовательно в один табличный документ, вставляя между ними разрыв страниц (метод ВывестиГоризонтальныйРазделительСтраниц), а затем запишите документ в PDF одним вызовом Записать().

Чем сохранение в PDF отличается от печати на виртуальный PDF-принтер?

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