Работа с макетами в 1С:Предприятие 8.3 — неотъемлемая часть ежедневных задач бухгалтеров, кадровиков и программистов. Часто требуется сохранить отчет, печатную форму или обработку не только для внутреннего использования, но и для передачи контрагентам, в госорганы или архив. Формат PDF стал де-факто стандартом для таких случаев: он сохраняет форматирование, защищен от редактирования и универсально открывается на любых устройствах.
В этой статье мы разберем все актуальные способы экспорта макетов в PDF прямо из 1С — от стандартных инструментов платформы до программных решений для автоматизации. Особое внимание уделим типичным ошибкам (например, когда PDF создается пустым или с искаженным шрифтом) и способам их устранения. Материал будет полезен как начинающим пользователям, так и опытным специалистам, которые хотят оптимизировать рутинные операции.
Стандартные способы сохранения макета в PDF
Платформа 1С:Предприятие 8.3 предоставляет несколько встроенных механизмов для экспорта макетов в PDF. Их доступность зависит от конфигурации и версии платформы, но большинство решений поддерживают хотя бы один из следующих методов:
- 📄 Печать в PDF через виртуальный принтер — универсальный способ, работающий даже в базовых конфигурациях. Требует предварительной настройки принтера (например, Microsoft Print to PDF или CutePDF).
- 🖼️ Экспорт табличного документа — подходит для макетов, основанных на табличных данных (отчеты, ведомости). Доступен через контекстное меню или программно.
- 📥 Сохранение через "Файл → Сохранить как" — в некоторых конфигурациях (например, 1С:Бухгалтерия 3.0) поддерживается прямой экспорт в PDF для печатных форм.
Самый простой способ — использование виртуального принтера. Он не требует знания программирования и работает даже в тонком клиенте. Однако у этого метода есть недостатки: зависимость от настроек принтера на локальном компьютере и возможные проблемы с кодировками (особенно при работе с кириллицей).
⚠️ Внимание: Если при печати в PDF через виртуальный принтер пропадают русские символы, проверьте настройки шрифтов в параметрах принтера. Часто проблема решается выбором шрифтаArial Unicode MSилиTimes New Romanвручную.
Для табличных документов (например, отчетов с группировками) удобнее использовать встроенный экспорт. Чтобы им воспользоваться:
- Откройте макет в режиме
1С:Предприятие(не в конфигураторе!). - В контекстном меню табличного документа выберите
Сохранить как.... - В списке форматов выберите
PDF (*.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:
- Откройте конфигуратор и найдите нужный макет в дереве объектов (например, в разделе
Отчеты → [ИмяОтчета] → Макеты). - Дважды кликните на макет, чтобы открыть его в редакторе.
- В меню редактора выберите
Файл → Предварительный просмотр. - В окне предварительного просмотра нажмите
Печатьи выберите виртуальный PDF-принтер.
Для пакетного экспорта нескольких макетов удобно использовать внешние обработки. Например, обработка "Универсальный экспорт макетов в PDF" (доступна на Инфостарте) позволяет:
- Выбирать несколько макетов одновременно.
- Настраивать параметры экспорта (качество, ориентация страницы).
- Сохранять PDF в указанную папку с автоматическим именованием файлов.
| Способ экспорта | Преимущества | Недостатки | Требуются права |
|---|---|---|---|
| Печать в PDF через предварительный просмотр | Не требует программирования, визуальный контроль | Ручная операция, не подходит для пакетной обработки | Полные права в конфигураторе |
Экспорт в .mxl + конвертация |
Сохраняет структуру макета для дальнейшего использования | Требуется дополнительное ПО для конвертации в PDF | Права на чтение конфигурации |
| Внешние обработки | Автоматизация, пакетный экспорт, гибкие настройки | Требует установки обработки, возможны ограничения бесплатных версий | Зависит от обработки |
Типичные ошибки и их решения
При сохранении макетов в PDF пользователи часто сталкиваются с типичными проблемами. Большинство из них связано с настройками шрифтов, разрешением доступа или особенностями конкретных конфигураций. Рассмотрим самые распространенные ошибки и способы их устранения:
- 🔤 Искаженные или отсутствующие символы — проблема возникает из-за несовместимости шрифтов. Решение: в настройках виртуального принтера выберите шрифт с поддержкой кириллицы (например,
ArialилиDejaVu Sans). - 📉 Пустой PDF-файл — чаще всего связан с отсутствием данных в макете или ошибками в программном коде. Проверьте, что макет не пустой, и перезапустите операцию.
- 🔒 Ошибка доступа при сохранении — убедитесь, что у пользователя есть права на запись в указанную папку. В корпоративных сетях может потребоваться обратиться к администратору.
- 📏 Неправильные размеры страницы — настройте параметры страницы в макете (
Файл → Параметры страницы) перед экспортом.
Критическая ошибка при программном экспорте: если метод ЗаписатьPDF() возвращает пустой файл без ошибок, проверьте наличие лицензии на компоненту "1С:Предприятие 8.3. Конвертация данных". Без нее некоторые функции экспорта могут работать некорректно.
Для диагностики проблем с шрифтами в PDF:
- Откройте созданный PDF-файл в программе Adobe Acrobat Reader.
- Перейдите в
Файл → Свойства → Шрифты. - Проверьте, все ли шрифты помечены как "Встроенные". Если нет — установите недостающие шрифты в систему или измените настройки принтера.
⚠️ Внимание: В некоторых конфигурациях (например, 1С:Зарплата и Управление Персоналом) макеты печатных форм могут содержать динамические данные, которые не отображаются в PDF при экспорте через виртуальный принтер. В таких случаях используйте программный экспорт через ТабличныйДокумент.
Что делать, если PDF сохраняется в неправильной кодировке?
Если в PDF вместо кириллических символов отображаются "кракозябры", проблема кроется в настройках региональных стандартов виртуального принтера.
1. Откройте "Панель управления → Устройства и принтеры".
2. Найдите ваш виртуальный PDF-принтер, кликните правой кнопкой и выберите "Настройки печати".
3. Перейдите на вкладку "Дополнительно" и установите язык драйвера на "Русский (Россия)".
4. Сохраните настройки и повторите экспорт.
Автоматизация экспорта макетов в PDF
Для регулярного экспорта макетов в PDF (например, ежемесячные отчеты для контрагентов) целесообразно настроить автоматизацию. Это позволит сэкономить время и исключить человеческий фактор. Рассмотрим основные подходы:
- ⏰ Регламентные задания — в 1С:Предприятие 8.3 можно создать задание, которое будет автоматически сохранять макеты в PDF по расписанию.
- 🤖 Внешние обработки с GUI — инструменты вроде "Печать в PDF для 1С" или "PDF-Конвертер" позволяют настраивать шаблоны экспорта.
- 📦 Интеграция с внешними системами — отправка сгенерированных PDF на email или в облачные хранилища (например, Яндекс.Диск или Google Drive).
Пример создания регламентного задания для автоматического экспорта отчета в PDF:
- В пользовательском режиме перейдите в
Администрирование → Регламентные задания. - Создайте новое задание с типом
Выполнение кода. - Укажите следующий код (замените пути и имена на свои):
Отчет = Отчеты.Продажи.Создать();ТабДок = Отчет.Сформировать();
ТабДок.ЗаписатьPDF("C:\Отчеты\Продажи_" + ТекущаяДата() + ".pdf");
- Настройте расписание (например, каждое 1-е число месяца в 9:00).
- Сохраните и активируйте задание.
Для интеграции с 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 потребуется:
- Установить FastReport .NET на сервер 1С.
- Подключить библиотеку к конфигурации через
Внешние компоненты. - Написать код для формирования отчета и экспорта в 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) потребуется:
- Зарегистрироваться на сервисе и получить API-ключ.
- Использовать 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 не отображаются русские буквы?
Проблема связана с настройками шрифтов виртуального принтера. Решение:
- Откройте свойства виртуального PDF-принтера.
- Перейдите на вкладку "Дополнительно" и установите язык драйвера на "Русский (Россия)".
- Вручную выберите шрифт с поддержкой кириллицы (например,
ArialилиTimes New Roman).
Если проблема сохраняется, попробуйте другой виртуальный принтер (например, doPDF или PDFCreator).
Как сохранить в PDF макет, который открывается только в конфигураторе?
Для макетов, доступных только в конфигураторе (например, макеты отчетов или обработок), используйте следующий алгоритм:
- Откройте макет в редакторе конфигуратора.
- Выберите
Файл → Предварительный просмотр. - В окне предварительного просмотра нажмите
Печатьи выберите виртуальный PDF-принтер.
Альтернативно можно экспортировать макет в файл .mxl (через контекстное меню в дереве конфигурации), а затем открыть его в пользовательском режиме и сохранить в PDF.
Можно ли защитить PDF паролем прямо из 1С?
Стандартные средства 1С не поддерживают защиту PDF паролем. Однако это можно реализовать двумя способами:
- Использовать внешние обработки (например, "PDF-Конвертер для 1С", где есть опция установки пароля).
- После генерации 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С (
Администрирование → Организации → Настройки почты). - Используйте следующий код после генерации PDF:
Почта = Новый Почта;Сообщение = Почта.СоздатьСообщение();
Сообщение.Текст = "Отчет во вложении";
Сообщение.Тема = "Автоматический отчет от " + ТекущаяДата();
Сообщение.Получатели.Добавить("email@example.com");
Сообщение.Вложения.Добавить("C:\Отчет.pdf");
Почта.Отправить(Сообщение);
Для массовой рассылки организуйте цикл по списку адресатов.