Работа с макетами в 1С:Предприятие 8.3 — неотъемлемая часть ежедневных задач бухгалтеров, кадровиков и программистов. Часто требуется сохранить отчет, печатную форму или обработку не только для внутреннего использования, но и для передачи контрагентам, в госорганы или архив. Формат PDF стал де-факто стандартом для таких случаев: он сохраняет форматирование, защищен от редактирования и универсально открывается на любых устройствах.

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

Стандартные способы сохранения макета в PDF

Платформа 1С:Предприятие 8.3 предоставляет несколько встроенных механизмов для экспорта макетов в PDF. Их доступность зависит от конфигурации и версии платформы, но большинство решений поддерживают хотя бы один из следующих методов:

  • 📄 Печать в PDF через виртуальный принтер — универсальный способ, работающий даже в базовых конфигурациях. Требует предварительной настройки принтера (например, Microsoft Print to PDF или CutePDF).
  • 🖼️ Экспорт табличного документа — подходит для макетов, основанных на табличных данных (отчеты, ведомости). Доступен через контекстное меню или программно.
  • 📥 Сохранение через "Файл → Сохранить как" — в некоторых конфигурациях (например, 1С:Бухгалтерия 3.0) поддерживается прямой экспорт в PDF для печатных форм.

Самый простой способ — использование виртуального принтера. Он не требует знания программирования и работает даже в тонком клиенте. Однако у этого метода есть недостатки: зависимость от настроек принтера на локальном компьютере и возможные проблемы с кодировками (особенно при работе с кириллицей).

⚠️ Внимание: Если при печати в PDF через виртуальный принтер пропадают русские символы, проверьте настройки шрифтов в параметрах принтера. Часто проблема решается выбором шрифта Arial Unicode MS или Times New Roman вручную.

Для табличных документов (например, отчетов с группировками) удобнее использовать встроенный экспорт. Чтобы им воспользоваться:

  1. Откройте макет в режиме 1С:Предприятие (не в конфигураторе!).
  2. В контекстном меню табличного документа выберите Сохранить как....
  3. В списке форматов выберите PDF (*.pdf).
  4. Укажите путь для сохранения и подтвердите действие.
📊 Какой способ экспорта в PDF вы используете чаще?
Через виртуальный принтер
Встроенный экспорт табличного документа
Программно (1С-код)
Специальные обработки
Не сохраняю в PDF

Программное сохранение макета в PDF на встроенном языке

Для автоматизации процесса или интеграции в бизнес-процессы часто требуется сохранять макеты в PDF программно. Платформа 1С:Предприятие 8.3 предоставляет несколько объектов и методов для этой задачи:

  • 📜 Объект ТабличныйДокумент — метод ЗаписатьPDF() позволяет сохранить табличный макет без открытия диалоговых окон.
  • 🖨️ Объект ПечатнаяФорма — для печатных форм документов (счетов, накладных) используется метод Печать() с указанием драйвера PDF.
  • 🔄 Объект Запрос + ПолеТабличногоДокумента — для динамического формирования макета перед экспортом.

Пример кода для сохранения табличного документа в PDF:

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

ТабДок.Прочитать("C:\Temp\Макет.mxl"); // Загрузка макета из файла

ТабДок.ЗаписатьPDF("C:\Temp\Отчет.pdf"); // Сохранение в PDF

Для печатных форм код будет другим. Например, чтобы сохранить печатную форму документа Счет на оплату:

Док = Документы.СчетНаОплату.НайтиПоНомеру("СЧ-000123");

ПечатнаяФорма = Док.ПечатнаяФорма();

ПечатнаяФорма.Печать(,,,,Истина,,,"C:\Temp\Счет.pdf");

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

Для сложных макетов с динамическим содержимым (например, отчеты с группировками) удобно использовать комбинацию запроса и табличного документа:

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ ..."; // Ваш запрос

Результат = Запрос.Выполнить();

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

Область = ТабДок.Область();

// Формирование макета на основе результата запроса

...

ТабДок.ЗаписатьPDF("C:\Temp\ДинамическийОтчет.pdf");

Убедиться, что путь для сохранения существует и доступен для записи

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

Тестировать код в отладочном режиме перед использованием в рабочей базе

Создать резервную копию макета перед модификацией-->

Сохранение макетов из конфигуратора 1С

Иногда требуется экспортировать макеты не из пользовательского режима 1С:Предприятие, а непосредственно из конфигуратора. Это актуально для разработчиков, которые настраивают или переносят макеты между базами. В конфигураторе доступны следующие способы:

  • 📁 Экспорт макета в файл — сохранение в формате .mxl или .erf с последующим преобразованием в PDF.
  • 🖥️ Предварительный просмотр → Печать в PDF — для макетов печатных форм и отчетов.
  • 🔧 Использование внешних обработок — специализированные инструменты для пакетного экспорта.

Чтобы сохранить макет из конфигуратора в PDF:

  1. Откройте конфигуратор и найдите нужный макет в дереве объектов (например, в разделе Отчеты → [ИмяОтчета] → Макеты).
  2. Дважды кликните на макет, чтобы открыть его в редакторе.
  3. В меню редактора выберите Файл → Предварительный просмотр.
  4. В окне предварительного просмотра нажмите Печать и выберите виртуальный PDF-принтер.

Для пакетного экспорта нескольких макетов удобно использовать внешние обработки. Например, обработка "Универсальный экспорт макетов в PDF" (доступна на Инфостарте) позволяет:

  • Выбирать несколько макетов одновременно.
  • Настраивать параметры экспорта (качество, ориентация страницы).
  • Сохранять PDF в указанную папку с автоматическим именованием файлов.
Способ экспорта Преимущества Недостатки Требуются права
Печать в PDF через предварительный просмотр Не требует программирования, визуальный контроль Ручная операция, не подходит для пакетной обработки Полные права в конфигураторе
Экспорт в .mxl + конвертация Сохраняет структуру макета для дальнейшего использования Требуется дополнительное ПО для конвертации в PDF Права на чтение конфигурации
Внешние обработки Автоматизация, пакетный экспорт, гибкие настройки Требует установки обработки, возможны ограничения бесплатных версий Зависит от обработки

Типичные ошибки и их решения

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

  • 🔤 Искаженные или отсутствующие символы — проблема возникает из-за несовместимости шрифтов. Решение: в настройках виртуального принтера выберите шрифт с поддержкой кириллицы (например, Arial или DejaVu Sans).
  • 📉 Пустой PDF-файл — чаще всего связан с отсутствием данных в макете или ошибками в программном коде. Проверьте, что макет не пустой, и перезапустите операцию.
  • 🔒 Ошибка доступа при сохранении — убедитесь, что у пользователя есть права на запись в указанную папку. В корпоративных сетях может потребоваться обратиться к администратору.
  • 📏 Неправильные размеры страницы — настройте параметры страницы в макете (Файл → Параметры страницы) перед экспортом.

Критическая ошибка при программном экспорте: если метод ЗаписатьPDF() возвращает пустой файл без ошибок, проверьте наличие лицензии на компоненту "1С:Предприятие 8.3. Конвертация данных". Без нее некоторые функции экспорта могут работать некорректно.

Для диагностики проблем с шрифтами в PDF:

  1. Откройте созданный PDF-файл в программе Adobe Acrobat Reader.
  2. Перейдите в Файл → Свойства → Шрифты.
  3. Проверьте, все ли шрифты помечены как "Встроенные". Если нет — установите недостающие шрифты в систему или измените настройки принтера.
⚠️ Внимание: В некоторых конфигурациях (например, 1С:Зарплата и Управление Персоналом) макеты печатных форм могут содержать динамические данные, которые не отображаются в PDF при экспорте через виртуальный принтер. В таких случаях используйте программный экспорт через ТабличныйДокумент.
Что делать, если PDF сохраняется в неправильной кодировке?

Если в PDF вместо кириллических символов отображаются "кракозябры", проблема кроется в настройках региональных стандартов виртуального принтера.

1. Откройте "Панель управления → Устройства и принтеры".

2. Найдите ваш виртуальный PDF-принтер, кликните правой кнопкой и выберите "Настройки печати".

3. Перейдите на вкладку "Дополнительно" и установите язык драйвера на "Русский (Россия)".

4. Сохраните настройки и повторите экспорт.

Автоматизация экспорта макетов в PDF

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

  • Регламентные задания — в 1С:Предприятие 8.3 можно создать задание, которое будет автоматически сохранять макеты в PDF по расписанию.
  • 🤖 Внешние обработки с GUI — инструменты вроде "Печать в PDF для 1С" или "PDF-Конвертер" позволяют настраивать шаблоны экспорта.
  • 📦 Интеграция с внешними системами — отправка сгенерированных PDF на email или в облачные хранилища (например, Яндекс.Диск или Google Drive).

Пример создания регламентного задания для автоматического экспорта отчета в PDF:

  1. В пользовательском режиме перейдите в Администрирование → Регламентные задания.
  2. Создайте новое задание с типом Выполнение кода.
  3. Укажите следующий код (замените пути и имена на свои):
    Отчет = Отчеты.Продажи.Создать();
    

    ТабДок = Отчет.Сформировать();

    ТабДок.ЗаписатьPDF("C:\Отчеты\Продажи_" + ТекущаяДата() + ".pdf");

  4. Настройте расписание (например, каждое 1-е число месяца в 9:00).
  5. Сохраните и активируйте задание.

Для интеграции с email можно использовать следующий код (требуется настройка почтового профиля в 1С):

ПутьКФайлу = "C:\Temp\Отчет.pdf";

// Формирование и сохранение PDF (код зависит от макета)

...

Почта = Новый Почта;

Сообщение = Почта.СоздатьСообщение();

Сообщение.Текст = "Отчет по продажам за " + ТекущаяДата();

Сообщение.Тема = "Ежемесячный отчет";

Сообщение.Получатели.Добавить("client@example.com");

Сообщение.Вложения.Добавить(ПутьКФайлу);

Почта.Отправить(Сообщение);

💡

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

Сравнение способов экспорта: что выбрать?

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

Критерий Виртуальный принтер Встроенный экспорт Программный код Внешние обработки
Сложность настройки Низкая Средняя Высокая Средняя
Автоматизация Нет Частично Полная Полная
Качество PDF Зависит от принтера Хорошее Отличное Отличное
Поддержка кириллицы Требует настройки Да Да Да
Пакетная обработка Нет Нет Да Да

Для разовых операций (например, сохранение счета для клиента) достаточно виртуального принтера или встроенного экспорта. Если же требуется еженедельно формировать десятки отчетов в PDF и рассылать их по email, оптимальным решением станет программная автоматизация или специализированные обработки.

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

💡

Для большинства пользователей оптимальным балансом между простотой и функциональностью являются внешние обработки. Они не требуют знания программирования, но позволяют автоматизировать рутинные задачи.

Дополнительные инструменты и расширения

Если стандартные средства 1С:Предприятие не покрывают ваши потребности (например, требуется особое форматирование PDF или интеграция с внешними системами), можно воспользоваться сторонними инструментами. Наиболее популярные решения:

  • 📌 1С:Предприятие 8. PDF-Конвертер — обработка для пакетного экспорта макетов в PDF с гибкими настройками (качество, защита паролем, водяные знаки).
  • 📑 FastReport — система отчетности, интегрируемая с 1С. Позволяет создавать сложные отчеты и экспортировать их в PDF с высоким качеством.
  • 🔗 1С:EDT + Библиотека iTextSharp — для разработчиков, которые хотят гибко управлять генерацией PDF из 1С-кода.
  • ☁️ Облачные сервисы — например, PDF.co или CloudConvert для конвертации макетов через API.

Обработка "1С:Предприятие 8. PDF-Конвертер" поддерживает:

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

Для интеграции с FastReport потребуется:

  1. Установить FastReport .NET на сервер 1С.
  2. Подключить библиотеку к конфигурации через Внешние компоненты.
  3. Написать код для формирования отчета и экспорта в PDF:
    FastReport.Report = Новый COMОбъект("FastReport.Report");
    

    FastReport.Report.Load("C:\Шаблоны\Отчет.frx");

    FastReport.Report.Prepare();

    FastReport.Report.ExportPDF("C:\Отчеты\Result.pdf");

⚠️ Внимание: При использовании внешних библиотек (например, iTextSharp или FastReport) убедитесь, что они совместимы с версией вашей платформы 1С. Некоторые компоненты требуют 64-разрядной версии 1С:Предприятие.

Для облачных сервисов (например, PDF.co) потребуется:

  1. Зарегистрироваться на сервисе и получить API-ключ.
  2. Использовать HTTP-соединение из 1С для отправки макета и получения PDF:
    HTTPЗапрос = Новый HTTPЗапрос("https://api.pdf.co/v1/pdf/convert");
    

    HTTPЗапрос.Заголовки.Вставить("x-api-key", "ВАШ_API_КЛЮЧ");

    HTTPЗапрос.ЗагрузитьТекст(ПараметрыЗапроса);

    Ответ = HTTPЗапрос.Выполнить();

    Ответ.СохранитьВФайл("C:\Result.pdf");

FAQ: Частые вопросы по экспорту макетов в PDF

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

Да, в большинстве конфигураций 1С:Предприятие 8.3 поддерживается прямой экспорт табличных документов в PDF через метод ЗаписатьPDF(). Также некоторые печатные формы имеют встроенную опцию сохранения в PDF через меню Файл → Сохранить как.

Почему в PDF не отображаются русские буквы?

Проблема связана с настройками шрифтов виртуального принтера. Решение:

  1. Откройте свойства виртуального PDF-принтера.
  2. Перейдите на вкладку "Дополнительно" и установите язык драйвера на "Русский (Россия)".
  3. Вручную выберите шрифт с поддержкой кириллицы (например, Arial или Times New Roman).

Если проблема сохраняется, попробуйте другой виртуальный принтер (например, doPDF или PDFCreator).

Как сохранить в PDF макет, который открывается только в конфигураторе?

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

  1. Откройте макет в редакторе конфигуратора.
  2. Выберите Файл → Предварительный просмотр.
  3. В окне предварительного просмотра нажмите Печать и выберите виртуальный PDF-принтер.

Альтернативно можно экспортировать макет в файл .mxl (через контекстное меню в дереве конфигурации), а затем открыть его в пользовательском режиме и сохранить в PDF.

Можно ли защитить PDF паролем прямо из 1С?

Стандартные средства 1С не поддерживают защиту PDF паролем. Однако это можно реализовать двумя способами:

  1. Использовать внешние обработки (например, "PDF-Конвертер для 1С", где есть опция установки пароля).
  2. После генерации PDF программно обработать файл с помощью сторонних библиотек (например, iTextSharp):
    PDFReader = Новый COMОбъект("iTextSharp.text.pdf.PdfReader", "C:\itextsharp.dll");
    

    PDFStamper = Новый COMОбъект("iTextSharp.text.pdf.PdfStamper", PDFReader, Новый FileStream("C:\Protected.pdf", FileMode.Create));

    PDFStamper.SetEncryption(Новый Byte[]{}, Новый Byte[]{}, "пароль", Истина);

    PDFStamper.Close();

Как автоматизировать отправку PDF по email после генерации?

Для автоматической отправки сгенерированного PDF по email:

  1. Настройте почтовый профиль в 1С (Администрирование → Организации → Настройки почты).
  2. Используйте следующий код после генерации PDF:
    Почта = Новый Почта;
    

    Сообщение = Почта.СоздатьСообщение();

    Сообщение.Текст = "Отчет во вложении";

    Сообщение.Тема = "Автоматический отчет от " + ТекущаяДата();

    Сообщение.Получатели.Добавить("email@example.com");

    Сообщение.Вложения.Добавить("C:\Отчет.pdf");

    Почта.Отправить(Сообщение);

Для массовой рассылки организуйте цикл по списку адресатов.