Печатные формы в 1С:Предприятие — это неотъемлемая часть работы с документами, отчетностью и первичными бухгалтерскими регистрами. Без грамотно настроенных шаблонов невозможно сформировать счет-фактуру, товарную накладную или акт выполненных работ в соответствии с законодательными требованиями. Однако многие пользователи сталкиваются с трудностями: стандартные формы не подходят под специфику бизнеса, требуется добавить логотип компании или изменить порядок вывода данных.
Эта статья поможет разобраться, как создать печатную форму в 1С с нуля — от простого макета в конструкторе до сложных решений с использованием встроенного языка. Мы рассмотрим все этапы: подготовку данных, настройку внешнего вида, связь с документами и нюансы печати для разных версий платформы. Особое внимание уделим типичным ошибкам, которые приводят к искажению выводимой информации или полному отсутствию печати.
Вы узнаете:
- 📄 Как выбрать между конструктором и ручным программированием формы
- 🖼️ Где хранятся шаблоны печатных форм в конфигурации 1С
- 🔧 Какие инструменты платформы ускоряют разработку макетов
- 📝 Как связать форму с конкретным документом или справочником
1. Подготовка: что нужно знать перед созданием формы
Прежде чем приступать к разработке, определитесь с ключевыми параметрами будущей печатной формы. От этого зависит выбор инструмента (конструктор или программный код) и структура макета.
Основные вопросы для самопроверки:
- 📌 Форма будет использоваться для одного типа документа или универсальной?
- 🖨️ Требуется ли поддержка разных принтеров (лазерных, термических, этикеток)?
- 📊 Нужно ли выводить табличные данные с группировкой?
- 🔒 Будут ли в форме конфиденциальные данные, требующие защиты?
Важно понимать, что в 1С:Предприятие 8.3 печатные формы могут быть двух типов:
- Внешние печатные формы — хранятся отдельно от конфигурации в файлах
.epfили.erf. Подходят для доработок без изменения типовой конфигурации. - Встроенные печатные формы — являются частью конфигурации и редактируются в режиме
Конфигуратор. Используются для глубокой интеграции с бизнес-логикой.
Критическое отличие платформы 8.3 от 7.7: в современных версиях печатные формы построены на основе системы компоновки данных (СКД), что позволяет гибко настраивать вывод информации без глубокого программирования.
2. Способы создания печатной формы в 1С
Существует три основных подхода к созданию печатных форм, каждый из которых имеет свои плюсы и минусы. Выбор метода зависит от ваших навыков и требований к функциональности.
| Метод | Сложность | Гибкость | Когда использовать |
|---|---|---|---|
| Конструктор печатных форм | Низкая | Ограниченная | Для простых форм без сложной логики |
Редактирование в режиме Конфигуратор |
Средняя | Высокая | Для интеграции с бизнес-процессами |
| Программное создание (1С-код) | Высокая | Максимальная | Для нестандартных решений с динамическим контентом |
Рассмотрим каждый метод подробнее.
2.1. Конструктор печатных форм
Самый простой способ, доступный даже пользователям без навыков программирования. Чтобы открыть конструктор:
- Перейдите в режим
1С:Предприятие - Откройте нужный документ (например,
Реализация товаров и услуг) - Нажмите
Печать → Настройка печатной формы - Выберите
Конструктор печатной формы
В конструкторе вы можете:
- 📝 Добавлять текстовые блоки и поля из документа
- 🖼️ Вставлять логотип компании (формат
.jpgили.png) - 📊 Настраивать табличные части с автоматическим заполнением
- 🎨 Менять шрифты, выравнивание и отступы
Если в конструкторе не хватает полей для вывода, проверьте права доступа к реквизитам документа в настройках ролей пользователей.
2.2. Редактирование в конфигураторе
Для более глубокой настройки потребуется доступ к режиму Конфигуратор. Здесь печатные формы хранятся в ветке Общие → Печатные формы или привязаны к конкретным объектам (документам, справочникам).
Алгоритм создания:
- Откройте конфигуратор (
Файл → Конфигуратор) - Найдите раздел
Общие макетыилиПечатные формыв дереве объектов - Создайте новый макет типа
Табличный документилиТекстовый документ - Настройте структуру с помощью визуального редактора
- Привяжите макет к документу через свойство
Печатные формы
Преимущество этого метода — возможность использовать вычисляемые поля и условное форматирование. Например, можно сделать так, чтобы строка с итоговой суммой выделялась жирным шрифтом только при превышении определенного порога.
2.3. Программное создание на встроенном языке
Для сложных форм с динамическим контентом (например, когда нужно выводить разные блоки в зависимости от условий) требуется написание кода. Основные объекты, с которыми предстоит работать:
ТабличныйДокумент— для структурированных данныхТекстовыйДокумент— для произвольного текстаМакет— для хранения шаблоновЗапрос— для получения данных из базы
Пример кода для создания простой формы:
Процедура ПечатьДокумента(ДокументОбъект)
Макет = Документы.РеализацияТоваровУслуг.ПечатнаяФормаТорг12();
ТабДок = Новый ТабличныйДокумент;
ТабДок.Вывести(Макет);
// Заполняем шапку документа
ТабДок.Параметры.Заполнить(ДокументОбъект);
// Выводим табличную часть
Область = ТабДок.Область("Товары");
Для Каждого СтрокаТоваров Из ДокументОбъект.Товары Цикл
Область.Параметры.НоваяСтрока();
Область.Параметры.НомерСтроки = СтрокаТоваров.НомерСтроки;
Область.Параметры.Номенклатура = СтрокаТоваров.Номенклатура;
Область.Параметры.Количество = СтрокаТоваров.Количество;
Область.Вывести();
КонецЦикла;
ТабДок.Показать();
КонецПроцедуры
Программный метод позволяет создавать формы с динамической логикой, например, скрывать ненужные разделы в зависимости от типа документа или прав пользователя.
3. Работа с макетами: от простого к сложному
Макет — это основа любой печатной формы в 1С. Он определяет структуру документа: где будут расположены заголовки, таблицы, подписи и прочие элементы. Макеты создаются в специальном редакторе, который доступен как в режиме Конфигуратор, так и при работе с внешними формами.
Типы макетов в 1С:
- 📄
Табличный документ— для структурированных данных с ячейками - 📝
Текстовый документ— для произвольного текста (например, договоров) - 🖼️
HTML-документ— для веб-ориентированных форм - 📊
Двоичные данные— для хранения шаблонов в формате.xlsxили.docx
Для большинства бухгалтерских документов (счета-фактуры, накладные) используется Табличный документ. Его ключевые особенности:
- Поддержка объединенных ячеек для заголовков
- Автоматическое растягивание строк при большом объеме данных
- Возможность добавления графических элементов (логотипы, штрихкоды)
- Поддержка формул для вычисляемых полей
Как добавить логотип в макет?
1. В режиме редактирования макета выберите Вставка → Рисунок. 2. Загрузите файл логотипа (рекомендуемый формат — .png с прозрачным фоном). 3. Настройте размеры и позиционирование относительно текста. 4. Привяжите рисунок к параметру макета, чтобы он подтягивался динамически из настроек организации.
При работе с табличными макетами важно правильно настроить области — именованные фрагменты, которые будут заполняться данными. Например, область "Шапка" для реквизитов документа, "Товары" для табличной части, "Подвал" для итогов.
Пример структуры макета для счета-фактуры:
┌───────────────────────────────────────┐
│ ШАПКА │
│ Логотип | Название организации │
│ Адрес | ИНН/КПП │
├───────────────────────────────────────┤
│ ТОВАРЫ │
│ № | Наименование | Кол-во | Цена | Сумма│
├───────────────────────────────────────┤
│ ПОДВАЛ │
│ ИТОГО: [СуммаПрописью] │
│ Руководитель: ________ /ФИО/ │
└───────────────────────────────────────┘
4. Связь печатной формы с документом
Созданный макет нужно привязать к конкретному документу или справочнику, чтобы форма стала доступна пользователям. Это можно сделать двумя способами:
4.1. Привязка через свойства объекта
В режиме Конфигуратор:
- Найдите нужный документ в дереве объектов (например,
Документы → РеализацияТоваровУслуг) - Откройте свойства документа
- Перейдите на закладку
Печатные формы - Добавьте новую форму и укажите созданный макет
- Настройте параметры вызова (где форма будет отображаться в меню
Печать)
Для внешних печатных форм (.epf) привязка осуществляется через меню Все функции → Печатные формы и отчеты в режиме 1С:Предприятие.
4.2. Динамическая привязка через код
Если требуется гибкое управление доступом к формам, можно использовать программную привязку. Например, чтобы форма была видна только для определенных типов документов:
Процедура ДокументОбъектПередЗаписью(Отказ)
Если ДокументОбъект.ВидДокумента = ВидДокумента.СчетФактура Тогда
ДокументОбъект.ДополнительныеПрава.ПечатныеФормы.Добавить("СчетФактураСЛоготипом");
КонецЕсли;
КонецПроцедуры
Такой подход позволяет:
- 🔒 Ограничивать доступ к формам по ролям пользователей
- 📌 Показывать разные формы для разных видов документов
- 🔄 Динамически менять набор форм в зависимости от статуса документа
Привязан ли макет к документу в конфигураторе?|Отображается ли форма в меню "Печать"?|Правильно ли заполняются параметры при предварительном просмотре?|Есть ли права у пользователей на доступ к форме?-->
5. Типичные ошибки и их решение
Даже опытные разработчики сталкиваются с проблемами при создании печатных форм. Рассмотрим наиболее распространенные ошибки и способы их устранения.
| Проблема | Возможная причина | Решение |
|---|---|---|
Форма не отображается в меню Печать |
Неправильная привязка макета к документу | Проверьте свойства документа в конфигураторе, раздел Печатные формы |
| Данные в форме не обновляются | Не передан объект документа в параметры макета | Убедитесь, что в коде вызывается ТабДок.Параметры.Заполнить(ДокументОбъект) |
| Искажение таблиц при печати | Неверные настройки страницы или полей | Настройте параметры страницы в макете: Файл → Параметры страницы |
| Медленная генерация формы | Сложные запросы или большие объемы данных | Оптимизируйте запрос или разбейте форму на несколько простых |
Особое внимание требуют формы с большими табличными частями (более 1000 строк). В таких случаях:
- 📊 Используйте постраничный вывод данных
- 🔄 Настройте автоматическое разбиение на тома
- 🖨️ Тестируйте печать на принтере, а не только в режиме предварительного просмотра
Если при печати "съезжают" колонки в таблице, проверьте настройки шрифта: все ячейки должны использовать моноширинный шрифт (например, Courier New) или иметь фиксированную ширину.
Еще одна частая проблема — некорректное отображение сумм прописью. Это происходит из-за:
- Отсутствия функции преобразования чисел в слова в конфигурации
- Неправильной локализации (например, украинский вместо русского)
- Ошибок в коде, где не учитываются копейки
Решение — использовать стандартную функцию ЧислоПрописью():
ТекстСуммы = ЧислоПрописью(ДокументОбъект.СуммаДокумента, ,
"рубль,рубля,рублей,,копейка,копейки,копеек,2");
6. Оптимизация и расширенные возможности
Когда базовая печатная форма готова, можно улучшить ее функциональность с помощью дополнительных инструментов платформы 1С.
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-кодов
Для логистических документов (например, этикеток или транспортных накладных) часто требуется вывод штрихкодов. В 1С это реализуется через:
- 📦 Внешние компоненты (например, 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. Автоматизация и интеграция
Печатные формы в 1С можно интегрировать с другими системами или автоматизировать их генерацию. Рассмотрим основные сценарии.
8.1. Пакетная печать документов
Для печати нескольких документов одновременно:
Выборка = Документы.РеализацияТоваровУслуг.Выбрать();
Пока Выборка.Следующий() Цикл
ПечатнаяФорма = ПолучитьПечатнуюФорму(Выборка.Ссылка);
ПечатнаяФорма.Печать();
КонецЦикла;
Это удобно для:
- 📦 Печати накладных по нескольким заказам
- 📄 Генерации пакета счетов-фактур за период
- 📋 Создания архива документов в PDF
8.2. Отправка форм по электронной почте
Автоматическая отправка печатных форм клиентам:
Письмо = Новый ПочтовоеСообщение;
Письмо.Тема = "Счет на оплату №" + Документ.Номер;
Письмо.Текст = "Добрый день! Прилагаем счет на оплату.";
Вложение = Новый ПочтовоеВложение("Счет.pdf", ,
Новый ДвоичныеДанные(ПечатнаяФорма.ПолучитьДвоичныеДанные("PDF")));
Письмо.Вложения.Добавить(Вложение);
Письмо.Получатели.Добавить(Документ.Контрагент.ЭлектроннаяПочта);
Письмо.Отправить();
Для этого потребуется:
- 📧 Настроенный почтовый профиль в 1С
- 🔒 Права на отправку писем у пользователя
- 📄 Корректно сгенерированная печатная форма в формате
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С
🔹 Как добавить в печатную форму данные из связанного документа (например, номер заказа из реализации)?
Для этого нужно:
- В макете создать параметр для связанного документа (например,
ЗаказПокупателя) - В коде формы передать ссылку на связанный документ:
ТабДок.Параметры.ЗаказПокупателя = ДокументОбъект.ЗаказПокупателя; - В макете вывести нужные реквизиты через точку:
=ЗаказПокупателя.Номер
Если связь не прямая, используйте запрос для получения данных.
🔹 Почему при печати пропадают последние строки таблицы?
Это типичная проблема, связанная с:
- Неправильными настройками нижнего поля страницы (уменьшите его в параметрах макета)
- Отсутствием переноса на новую страницу (добавьте условие в коде:
Если ТабДок.ВысотаСтроки() > ТабДок.ВысотаСтраницы() Тогда ...) - Ограничением принтера (проверьте настройки драйвера)
Решение: в макете добавьте пустую строку в конце таблицы или настройте автоматический перенос.
🔹 Можно ли сделать печатную форму с изменяемой структурой (например, скрывать ненужные колонки)?
Да, это реализуется через:
- Условное форматирование в макете (скрытие колонок через параметры)
- Динамическое создание макета в коде (с проверкой условий)
- Использование нескольких макетов для разных сценариев
Пример кода для скры