Печатные формы в 1С:Предприятие — это неотъемлемая часть работы с документами, отчетностью и первичными бухгалтерскими регистрами. Без грамотно настроенных шаблонов невозможно сформировать счет-фактуру, товарную накладную или акт выполненных работ в соответствии с законодательными требованиями. Однако многие пользователи сталкиваются с трудностями: стандартные формы не подходят под специфику бизнеса, требуется добавить логотип компании или изменить порядок вывода данных.

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

Вы узнаете:

  • 📄 Как выбрать между конструктором и ручным программированием формы
  • 🖼️ Где хранятся шаблоны печатных форм в конфигурации
  • 🔧 Какие инструменты платформы ускоряют разработку макетов
  • 📝 Как связать форму с конкретным документом или справочником

1. Подготовка: что нужно знать перед созданием формы

Прежде чем приступать к разработке, определитесь с ключевыми параметрами будущей печатной формы. От этого зависит выбор инструмента (конструктор или программный код) и структура макета.

Основные вопросы для самопроверки:

  • 📌 Форма будет использоваться для одного типа документа или универсальной?
  • 🖨️ Требуется ли поддержка разных принтеров (лазерных, термических, этикеток)?
  • 📊 Нужно ли выводить табличные данные с группировкой?
  • 🔒 Будут ли в форме конфиденциальные данные, требующие защиты?

Важно понимать, что в 1С:Предприятие 8.3 печатные формы могут быть двух типов:

  1. Внешние печатные формы — хранятся отдельно от конфигурации в файлах .epf или .erf. Подходят для доработок без изменения типовой конфигурации.
  2. Встроенные печатные формы — являются частью конфигурации и редактируются в режиме Конфигуратор. Используются для глубокой интеграции с бизнес-логикой.
📊 Какой тип печатных форм вы используете чаще?
Внешние (.epf/.erf)
Встроенные (в конфигурации)
Не знаю разницы
Не работал с формами

Критическое отличие платформы 8.3 от 7.7: в современных версиях печатные формы построены на основе системы компоновки данных (СКД), что позволяет гибко настраивать вывод информации без глубокого программирования.

2. Способы создания печатной формы в 1С

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

Метод Сложность Гибкость Когда использовать
Конструктор печатных форм Низкая Ограниченная Для простых форм без сложной логики
Редактирование в режиме Конфигуратор Средняя Высокая Для интеграции с бизнес-процессами
Программное создание (1С-код) Высокая Максимальная Для нестандартных решений с динамическим контентом

Рассмотрим каждый метод подробнее.

2.1. Конструктор печатных форм

Самый простой способ, доступный даже пользователям без навыков программирования. Чтобы открыть конструктор:

  1. Перейдите в режим 1С:Предприятие
  2. Откройте нужный документ (например, Реализация товаров и услуг)
  3. Нажмите Печать → Настройка печатной формы
  4. Выберите Конструктор печатной формы

В конструкторе вы можете:

  • 📝 Добавлять текстовые блоки и поля из документа
  • 🖼️ Вставлять логотип компании (формат .jpg или .png)
  • 📊 Настраивать табличные части с автоматическим заполнением
  • 🎨 Менять шрифты, выравнивание и отступы
💡

Если в конструкторе не хватает полей для вывода, проверьте права доступа к реквизитам документа в настройках ролей пользователей.

2.2. Редактирование в конфигураторе

Для более глубокой настройки потребуется доступ к режиму Конфигуратор. Здесь печатные формы хранятся в ветке Общие → Печатные формы или привязаны к конкретным объектам (документам, справочникам).

Алгоритм создания:

  1. Откройте конфигуратор (Файл → Конфигуратор)
  2. Найдите раздел Общие макеты или Печатные формы в дереве объектов
  3. Создайте новый макет типа Табличный документ или Текстовый документ
  4. Настройте структуру с помощью визуального редактора
  5. Привяжите макет к документу через свойство Печатные формы

Преимущество этого метода — возможность использовать вычисляемые поля и условное форматирование. Например, можно сделать так, чтобы строка с итоговой суммой выделялась жирным шрифтом только при превышении определенного порога.

2.3. Программное создание на встроенном языке

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

  • ТабличныйДокумент — для структурированных данных
  • ТекстовыйДокумент — для произвольного текста
  • Макет — для хранения шаблонов
  • Запрос — для получения данных из базы

Пример кода для создания простой формы:

Процедура ПечатьДокумента(ДокументОбъект)

Макет = Документы.РеализацияТоваровУслуг.ПечатнаяФормаТорг12();

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

ТабДок.Вывести(Макет);

// Заполняем шапку документа

ТабДок.Параметры.Заполнить(ДокументОбъект);

// Выводим табличную часть

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

Для Каждого СтрокаТоваров Из ДокументОбъект.Товары Цикл

Область.Параметры.НоваяСтрока();

Область.Параметры.НомерСтроки = СтрокаТоваров.НомерСтроки;

Область.Параметры.Номенклатура = СтрокаТоваров.Номенклатура;

Область.Параметры.Количество = СтрокаТоваров.Количество;

Область.Вывести();

КонецЦикла;

ТабДок.Показать();

КонецПроцедуры

💡

Программный метод позволяет создавать формы с динамической логикой, например, скрывать ненужные разделы в зависимости от типа документа или прав пользователя.

3. Работа с макетами: от простого к сложному

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

Типы макетов в 1С:

  • 📄 Табличный документ — для структурированных данных с ячейками
  • 📝 Текстовый документ — для произвольного текста (например, договоров)
  • 🖼️ HTML-документ — для веб-ориентированных форм
  • 📊 Двоичные данные — для хранения шаблонов в формате .xlsx или .docx

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

  • Поддержка объединенных ячеек для заголовков
  • Автоматическое растягивание строк при большом объеме данных
  • Возможность добавления графических элементов (логотипы, штрихкоды)
  • Поддержка формул для вычисляемых полей
Как добавить логотип в макет?

1. В режиме редактирования макета выберите Вставка → Рисунок. 2. Загрузите файл логотипа (рекомендуемый формат — .png с прозрачным фоном). 3. Настройте размеры и позиционирование относительно текста. 4. Привяжите рисунок к параметру макета, чтобы он подтягивался динамически из настроек организации.

При работе с табличными макетами важно правильно настроить области — именованные фрагменты, которые будут заполняться данными. Например, область "Шапка" для реквизитов документа, "Товары" для табличной части, "Подвал" для итогов.

Пример структуры макета для счета-фактуры:

┌───────────────────────────────────────┐

│ ШАПКА │

│ Логотип | Название организации │

│ Адрес | ИНН/КПП │

├───────────────────────────────────────┤

│ ТОВАРЫ │

│ № | Наименование | Кол-во | Цена | Сумма│

├───────────────────────────────────────┤

│ ПОДВАЛ │

│ ИТОГО: [СуммаПрописью] │

│ Руководитель: ________ /ФИО/ │

└───────────────────────────────────────┘

4. Связь печатной формы с документом

Созданный макет нужно привязать к конкретному документу или справочнику, чтобы форма стала доступна пользователям. Это можно сделать двумя способами:

4.1. Привязка через свойства объекта

В режиме Конфигуратор:

  1. Найдите нужный документ в дереве объектов (например, Документы → РеализацияТоваровУслуг)
  2. Откройте свойства документа
  3. Перейдите на закладку Печатные формы
  4. Добавьте новую форму и укажите созданный макет
  5. Настройте параметры вызова (где форма будет отображаться в меню Печать)

Для внешних печатных форм (.epf) привязка осуществляется через меню Все функции → Печатные формы и отчеты в режиме 1С:Предприятие.

4.2. Динамическая привязка через код

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

Процедура ДокументОбъектПередЗаписью(Отказ)

Если ДокументОбъект.ВидДокумента = ВидДокумента.СчетФактура Тогда

ДокументОбъект.ДополнительныеПрава.ПечатныеФормы.Добавить("СчетФактураСЛоготипом");

КонецЕсли;

КонецПроцедуры

Такой подход позволяет:

  • 🔒 Ограничивать доступ к формам по ролям пользователей
  • 📌 Показывать разные формы для разных видов документов
  • 🔄 Динамически менять набор форм в зависимости от статуса документа

Привязан ли макет к документу в конфигураторе?|Отображается ли форма в меню "Печать"?|Правильно ли заполняются параметры при предварительном просмотре?|Есть ли права у пользователей на доступ к форме?-->

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

Даже опытные разработчики сталкиваются с проблемами при создании печатных форм. Рассмотрим наиболее распространенные ошибки и способы их устранения.

Проблема Возможная причина Решение
Форма не отображается в меню Печать Неправильная привязка макета к документу Проверьте свойства документа в конфигураторе, раздел Печатные формы
Данные в форме не обновляются Не передан объект документа в параметры макета Убедитесь, что в коде вызывается ТабДок.Параметры.Заполнить(ДокументОбъект)
Искажение таблиц при печати Неверные настройки страницы или полей Настройте параметры страницы в макете: Файл → Параметры страницы
Медленная генерация формы Сложные запросы или большие объемы данных Оптимизируйте запрос или разбейте форму на несколько простых

Особое внимание требуют формы с большими табличными частями (более 1000 строк). В таких случаях:

  • 📊 Используйте постраничный вывод данных
  • 🔄 Настройте автоматическое разбиение на тома
  • 🖨️ Тестируйте печать на принтере, а не только в режиме предварительного просмотра
💡

Если при печати "съезжают" колонки в таблице, проверьте настройки шрифта: все ячейки должны использовать моноширинный шрифт (например, Courier New) или иметь фиксированную ширину.

Еще одна частая проблема — некорректное отображение сумм прописью. Это происходит из-за:

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

Решение — использовать стандартную функцию ЧислоПрописью():

ТекстСуммы = ЧислоПрописью(ДокументОбъект.СуммаДокумента, ,

"рубль,рубля,рублей,,копейка,копейки,копеек,2");

6. Оптимизация и расширенные возможности

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

6.1. Условное форматирование

Сделайте форму более наглядной, выделяя важные данные:

  • 🔴 Красной заливкой — отрицательные остатки или просроченные платежи
  • 🟢 Зеленым цветом — оплаченные счета или выполненные заказы
  • 🟡 Желтым — документы на согласовании

Пример кода для условного форматирования строк:

Для Каждого Строка Из ТабДок.Область("Товары").Строки Цикл

Если Строка.Данные.Количество < 0 Тогда

Строка.ЦветФона = RGB(255, 200, 200); // Светло-красный

ИначеЕсли Строка.Данные.Сумма > 100000 Тогда

Строка.Шрифт.Жирный = Истина;

КонецЕсли;

КонецЦикла;

6.2. Экспорт в другие форматы

Пользователи часто запрашивают возможность сохранения печатных форм в PDF, Excel или Word. Для этого:

  • 📄 Для PDF: используйте метод ТабДок.Записать("C:\Отчет.pdf", ТипФайлаТабличногоДокумента.PDF)
  • 📊 Для Excel: ТабДок.Записать("C:\Отчет.xlsx", ТипФайлаТабличногоДокумента.XLSX)
  • 🖼️ Для изображений: ТабДок.Записать("C:\Отчет.png", ТипФайлаТабличногоДокумента.PNG)

Важно: при экспорте в Excel проверьте, что:

  • Ширина колонок соответствует содержимому
  • Формулы корректно переносятся (если используются)
  • Числовые данные сохраняют формат (даты, валюты)

6.3. Печать штрихкодов и QR-кодов

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

  • 📦 Внешние компоненты (например, Barcode1C)
  • 🖼️ Встроенные механизмы (начиная с версии 8.3.14)
  • 🔗 Подключение шрифтов со штрихкодами

Пример генерации штрихкода EAN-13:

ШтрихКод = Новый ШтрихКод;

ШтрихКод.Тип = ТипШтрихКода.EAN13;

ШтрихКод.Значение = ДокументОбъект.Номер;

ТабДок.Рисунки.Добавить(ШтрихКод.ПолучитьИзображение());

Как проверить корректность штрихкода?

Сгенерированный штрихкод можно проверить с помощью любого сканера или мобильного приложения (например, Barcode Scanner для Android/iOS). Если код не считывается, проверьте: 1) Правильность указанного типа (EAN-8, EAN-13, Code128 и т.д.); 2) Корректность контрольной суммы; 3) Разрешение изображения (не менее 200 dpi для печати).

7. Тестирование и отладка печатных форм

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

Чек-лист для тестирования:

Печать на разных принтерах (лазерном, струйном, термическом)|Экспорт в PDF/Excel без искажений|Корректное отображение сумм прописью|Правильная работа условного форматирования|Совместимость с разными разрешениями экрана-->

Для отладки используйте:

  • 🐞 Сообщить() — для вывода промежуточных значений
  • 🔍 Режим отладки в конфигураторе (Отладка → Начать отладку)
  • 📋 Журнал регистрации (Администрирование → Журнал регистрации)

Типичные ошибки, которые выявляются при тестировании:

  • 📄 Переполнение страницы — когда данные выходят за границы листа. Решение: настройте автоматический перенос или уменьшите шрифт.
  • 🔢 Некорректные итоги — когда суммы в подвале не совпадают с табличной частью. Проверьте формулы в макете.
  • 🖼️ Искажение изображений — логотип или штрихкод отображаются размыто. Убедитесь, что разрешение рисунка не менее 300 dpi.

Для сложных форм рекомендуется создать тестовый документ со всеми возможными вариантами данных:

  • С большим количеством строк в табличной части
  • С отрицательными значениями
  • С пустыми полями (например, без НДС)
  • С максимально длинными наименованиями товаров
💡

Если форма печатается корректно в предварительном просмотре, но "съезжает" на принтере, проверьте настройки драйвера принтера: отключите масштабирование и установите печать в реальном размере (100%).

8. Автоматизация и интеграция

Печатные формы в можно интегрировать с другими системами или автоматизировать их генерацию. Рассмотрим основные сценарии.

8.1. Пакетная печать документов

Для печати нескольких документов одновременно:

Выборка = Документы.РеализацияТоваровУслуг.Выбрать();

Пока Выборка.Следующий() Цикл

ПечатнаяФорма = ПолучитьПечатнуюФорму(Выборка.Ссылка);

ПечатнаяФорма.Печать();

КонецЦикла;

Это удобно для:

  • 📦 Печати накладных по нескольким заказам
  • 📄 Генерации пакета счетов-фактур за период
  • 📋 Создания архива документов в PDF

8.2. Отправка форм по электронной почте

Автоматическая отправка печатных форм клиентам:

Письмо = Новый ПочтовоеСообщение;

Письмо.Тема = "Счет на оплату №" + Документ.Номер;

Письмо.Текст = "Добрый день! Прилагаем счет на оплату.";

Вложение = Новый ПочтовоеВложение("Счет.pdf", ,

Новый ДвоичныеДанные(ПечатнаяФорма.ПолучитьДвоичныеДанные("PDF")));

Письмо.Вложения.Добавить(Вложение);

Письмо.Получатели.Добавить(Документ.Контрагент.ЭлектроннаяПочта);

Письмо.Отправить();

Для этого потребуется:

  • 📧 Настроенный почтовый профиль в
  • 🔒 Права на отправку писем у пользователя
  • 📄 Корректно сгенерированная печатная форма в формате PDF

8.3. Интеграция с внешними системами

Печатные формы можно передавать в другие программы через:

  • 📂 COM-соединение (например, для Microsoft Word)
  • 🌐 HTTP-запросы (для облачных сервисов)
  • 📁 Файловый обмен (выгрузка в общую папку)

Пример выгрузки формы в Word:

Word = Новый COMОбъект("Word.Application");

ДокументWord = Word.Documents.Add();

ТабДок.Записать(ДокументWord.FullName, ТипФайлаТабличногоДокумента.DOCX);

Word.Visible = Истина;

💡

При интеграции с внешними системами всегда проверяйте кодировку текста (рекомендуется UTF-8) и формат дат/чисел, чтобы избежать ошибок интерпретации данных.

FAQ: Частые вопросы по печатным формам в 1С

🔹 Как добавить в печатную форму данные из связанного документа (например, номер заказа из реализации)?

Для этого нужно:

  1. В макете создать параметр для связанного документа (например, ЗаказПокупателя)
  2. В коде формы передать ссылку на связанный документ: ТабДок.Параметры.ЗаказПокупателя = ДокументОбъект.ЗаказПокупателя;
  3. В макете вывести нужные реквизиты через точку: =ЗаказПокупателя.Номер

Если связь не прямая, используйте запрос для получения данных.

🔹 Почему при печати пропадают последние строки таблицы?

Это типичная проблема, связанная с:

  • Неправильными настройками нижнего поля страницы (уменьшите его в параметрах макета)
  • Отсутствием переноса на новую страницу (добавьте условие в коде: Если ТабДок.ВысотаСтроки() > ТабДок.ВысотаСтраницы() Тогда ...)
  • Ограничением принтера (проверьте настройки драйвера)

Решение: в макете добавьте пустую строку в конце таблицы или настройте автоматический перенос.

🔹 Можно ли сделать печатную форму с изменяемой структурой (например, скрывать ненужные колонки)?

Да, это реализуется через:

  • Условное форматирование в макете (скрытие колонок через параметры)
  • Динамическое создание макета в коде (с проверкой условий)
  • Использование нескольких макетов для разных сценариев

Пример кода для скры