Создание печатных форм в 1С:Предприятие — одна из самых востребованных задач среди пользователей и разработчиков. Без грамотно оформленных документов невозможно вести бухгалтерию, торговлю или кадровый учет. Однако стандартные шаблоны далеко не всегда покрывают специфические требования бизнеса: может не хватать полей, нужна особая структура или корпоративный дизайн.
Эта статья поможет разобраться, как сделать печатную форму документа в 1С с нуля — от простейших изменений через конструктор до написания собственного кода на встроенном языке. Мы рассмотрим все этапы: от подготовки макета в Word/Excel до интеграции формы в конфигурацию, а также типичные ошибки, которые приводят к сбоям при печати. Особое внимание уделим актуальным версиям платформы 1С:Предприятие 8.3 и 9.0, где механизмы работы с формами претерпели изменения.
Неважно, нужно ли вам добавить логотип компании в счет-фактуру или полностью переработать ТОРГ-12 — здесь вы найдете пошаговые инструкции с примерами кода и визуальными схемами. А если вы никогда не занимались программированием в 1С, не переживайте: первые два раздела посвящены решениям без написания скриптов.
1. Подготовка: что нужно знать перед созданием печатной формы
Прежде чем приступать к редактированию или созданию формы с нуля, определитесь с ключевыми параметрами:
- 📄 Тип документа: для какого объекта конфигурации нужна форма (например,
Документ.РеализацияТоваровУслугилиСправочник.Контрагенты). - 🖼️ Источник данных: какие реквизиты и табличные части должны выводиться (название, количество, цена, ИНН контрагента и т.д.).
- 📏 Формат вывода: нужна ли форма для печати на бумаге, сохранения в PDF или отправки по email.
- 🔄 Частота использования: форма будет использоваться разово (например, для отчета) или ежедневно (счета, накладные).
Если вы работаете с типовыми конфигурациями (1С:Бухгалтерия, 1С:УТ, 1С:ЗУП), проверьте, нет ли уже готовой формы в поставке. Часто достаточно немного доработать существующий шаблон. Например, в 1С:Бухгалтерия 3.0 печатные формы документов хранятся в ветке Администрирование → Печатные формы, отчеты и обработки.
⚠️ Внимание: В последних версиях платформы (начиная с 8.3.20) изменился механизм работы с макетами печатных форм. Теперь для сложных форм рекомендуется использовать систему компоновки данных (СКД) вместо устаревших текстовых шаблонов. Это касается отчетов и документов с динамической структурой.
Также учтите, что для некоторых регламентированных документов (например, счет-фактура или ТОРГ-12) существуют строгие требования к полям и их расположению. Их нарушение может привести к проблемам при проверках. Всегда сверяйтесь с актуальными образцами на сайте ФНС или в КонсультантПлюс.
2. Способ 1: Редактирование через конструктор печатных форм (без программирования)
Самый простой способ адаптировать печатную форму — использовать встроенный конструктор печатных форм. Он доступен в большинстве типовых конфигураций и позволяет изменить расположение полей, добавить логотип или текстовые блоки без написания кода.
Чтобы открыть конструктор:
- Перейдите в режим
Конфигуратор(для этого запустите 1С с удержанием клавишиShift). - Найдите нужный документ в дереве объектов (например,
Документы → РеализацияТоваровУслуг). - В палитре свойств документа откройте вкладку
Формыи выберитеПечатные формы. - Нажмите кнопку
Конструктор печатной формы.
В открывшемся окне вы увидите макет формы, где можно:
- 📍 Перетаскивать поля мышью для изменения их расположения.
- 🖌️ Изменять шрифты, выравнивание и цвета через панель инструментов.
- 📎 Добавлять статичный текст (например, заголовки или примечания).
- 🖼️ Вставлять изображения (логотип компании) через меню
Вставка → Картинка.
После редактирования сохраните форму и обновите базу (Конфигурация → Обновить конфигурацию базы данных). Теперь при печати документа будет использоваться ваш шаблон.
⚠️ Внимание: Конструктор печатных форм имеет ограничения. Он не позволяет:
- Добавлять вычисляемые поля (например, сумму прописью).
- Менять логику заполнения (например, скрывать строки табличной части при определенных условиях).
- Работать с динамическими данными (например, подгружать актуальный курс валюты).
Для таких задач потребуется редактировать форму вручную через код (см. раздел 4).
Если в конструкторе не отображаются нужные поля, проверьте, добавлены ли они в макет формы (вкладка
Макетыв свойствах документа). Иногда требуется сначала обновить макет черезКонструктор макета.3. Способ 2: Использование внешних обработок для печатных форм
Если вы не хотите изменять конфигурацию или нуждаетесь в гибкости (например, для тестирования разных вариантов форм), используйте внешние обработки. Это отдельные файлы с расширением
.epf, которые можно подключать к базе без ее модификации.Преимущества внешних обработок:
- 🔄 Легко обновлять и заменять без изменения конфигурации.
- 📂 Можно хранить несколько вариантов форм для разных случаев.
- 🛠️ Подходят для распределенных баз (например, когда форма нужна только в одном филиале).
Чтобы создать внешнюю обработку:
- В режиме
КонфигураторвыберитеФайл → Новый → Внешняя обработка.- В открывшемся окне укажите название (например,
ПечатнаяФормаСчетаФактуры).- На вкладке
Основнаядобавьте команду для вызова формы (кнопкаДобавить команду).- В модуле обработки напишите код для формирования печатной формы (пример см. ниже).
Пример кода для внешней обработки (печать счета-фактуры):
Процедура ПечатьСчетаФактуры(Документ)Макет = Документ.ПолучитьМакет("ПечатнаяФормаСчетаФактуры");
Таблица = Макет.ПолучитьТаблицу("ОсновнаяТаблица");
// Заполнение шапки
Таблица.ВывестиСекцию("Шапка");
Таблица.Параметры.Номер = Документ.Номер;
Таблица.Параметры.Дата = Документ.Дата;
// Заполнение табличной части
Для Каждого Строка Из Документ.Товары Цикл
Таблица.ВывестиСекцию("СтрокаТаблицы");
Таблица.Параметры.Наименование = Строка.Номенклатура;
Таблица.Параметры.Количество = Строка.Количество;
Таблица.Параметры.Цена = Строка.Цена;
КонецЦикла;
// Вывод подвала
Таблица.ВывестиСекцию("Подвал");
// Отображение формы
ТекстФормы = Новый ТекстовыйДокумент;
ТекстФормы.УстановитьТекст(Таблица.ПолучитьТекст());
ТекстФормы.Показать();
КонецПроцедуры
Готовую обработку сохраните в файл и подключите в пользовательском режиме через
Файл → Открыть. Теперь форма будет доступна при выборе документа.Указать название обработки|Добавить команду для вызова формы|Создать макет формы (если нужен)|Написать процедуру заполнения макета|Протестировать вывод на печать-->
4. Способ 3: Ручное программирование печатной формы на встроенном языке
Для полного контроля над печатной формой потребуется редактировать ее непосредственно в модуле документа или модуле менеджера. Этот способ подходит для сложных форм с динамической логикой, вычисляемыми полями или интеграцией с внешними системами.
Основные этапы:
- Создание макета: определите структуру формы в виде табличного документа или текстового шаблона.
- Написание кода: в модуле документа добавьте процедуру, которая будет формировать форму.
- Привязка к кнопке: свяжите процедуру с командой печати в форме документа.
Пример создания печатной формы для документа
РеализацияТоваровУслуг:Шаг 1. Создание макета
Откройте документ в конфигураторе, перейдите на вкладку
Макетыи добавьте новый макет типаТабличный документ. Назовите его, например,ПечатнаяФормаНакладной. В макете создайте секции:
Шапка— для заголовка документа.СтрокаТаблицы— для вывода строк табличной части.Подвал— для итогов и подписей.Шаг 2. Код для заполнения макета
В модуле документа добавьте процедуру:
Процедура ПечатьНакладной(Кнопка)Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("ПечатнаяФормаНакладной");
Таблица = Макет.ПолучитьТаблицу("ОсновнаяТаблица");
// Заполнение шапки
Таблица.Параметры.НомерДокумента = Номер;
Таблица.Параметры.ДатаДокумента = Формат(Дата, "ДФ=dd.MM.yyyy");
Таблица.Параметры.Контрагент = Контрагент.Наименование;
Таблица.ВывестиСекцию("Шапка");
// Заполнение табличной части
Для Каждого СтрокаТоваров Из Товары Цикл
Таблица.Параметры.Наименование = СтрокаТоваров.Номенклатура.Наименование;
Таблица.Параметры.Количество = СтрокаТоваров.Количество;
Таблица.Параметры.Цена = СтрокаТоваров.Цена;
Таблица.Параметры.Сумма = СтрокаТоваров.Сумма;
Таблица.ВывестиСекцию("СтрокаТаблицы");
КонецЦикла;
// Заполнение подвала
Таблица.Параметры.ИтоговаяСумма = Итог("СуммаДокумента");
Таблица.Параметры.СуммаПрописью = ЧислоПрописью(Итог("СуммаДокумента"),,,"руб.");
Таблица.ВывестиСекцию("Подвал");
// Отображение формы
ТекстФормы = Новый ТекстовыйДокумент;
ТекстФормы.УстановитьТекст(Таблица.ПолучитьТекст());
ТекстФормы.Показать("Печатная форма накладной");
// Сохранение в PDF (опционально)
Если Вопрос("Сохранить в PDF?", Вопрос.ДаНет) = КодВопроса.Да Тогда
ТекстФормы.Записать("C:\Temp\Накладная_" + Номер + ".pdf", ТипФайлаPDF.Портрет);
КонецЕсли;
КонецПроцедуры
Шаг 3. Привязка к кнопке
В форме документа добавьте кнопку
Печать накладнойи свяжите ее с процедуройПечатьНакладной.⚠️ Внимание: При работе с динамическими данными (например, курсами валют или остатками на складе) всегда проверяйте актуальность информации на момент печати. В коде используйте функции вродеТекущаяДата()илиПолучитьКурсВалюты(), а не фиксированные значения.Как добавить логотип компании в печатную форму?
1. Поместите файл логотипа (например,
logo.png) в каталог шаблонов 1С или в ресурсы конфигурации.2. В макете формы добавьте секцию для изображения и укажите путь к файлу через параметр
Таблица.Картинка("Путь\К\Файлу.png").3. В коде заполнения макета свяжите параметр с картинкой:
Таблица.Параметры.Логотип = Новый Картинка("C:\Шаблоны\logo.png");4. Настройте размеры изображения через свойства секции в макете (например,
Ширина=100,Высота=50).5. Работа с системой компоновки данных (СКД) для сложных форм
Для документов с динамической структурой (например, отчетов с группировками или документов с изменяемым набором полей) удобнее использовать систему компоновки данных (СКД). Она позволяет:
- 📊 Гибко настраивать группировки и итоги.
- 🔍 Фильтровать данные по условиям.
- 📈 Строить диаграммы и сводные таблицы.
Пример создания печатной формы через СКД:
- В конфигураторе откройте объект, для которого нужна форма (например, документ
ПоступлениеТоваров).- Перейдите на вкладку
Отчетыи добавьте новый отчет с типомСистема компоновки данных.- В конструкторе СКД настройте:
- Источник данных (запрос к документам).
- Структуру отчета (группировки по контрагентам, номенклатуре и т.д.).
- Поля вывода (наименование, количество, сумма).
- На вкладке
Настройкиукажите параметры вывода (ориентация страницы, шрифты).- Сохраните отчет и свяжите его с командой печати в форме документа.
Преимущество СКД в том, что пользователи могут самостоятельно настраивать вид формы через интерфейс
Настройки отчета, не обращаясь к программисту.
Способ создания формы Сложность Гибкость Когда использовать Конструктор печатных форм ⭐ (просто) Низкая Для мелких правок стандартных форм Внешние обработки ⭐⭐ (средне) Средняя Для тестирования или распределенных баз Ручное программирование ⭐⭐⭐ (сложно) Высокая Для уникальных форм с логикой Система компоновки данных (СКД) ⭐⭐⭐ (сложно) Очень высокая Для динамических отчетов и документов 6. Типичные ошибки и их исправление
Даже опытные разработчики сталкиваются с проблемами при создании печатных форм. Вот самые распространенные ошибки и способы их устранения:
- 🖨️ Форма печатается пустой или с ошибками:
Проверьте:
- Правильно ли указан
ИсточникДанныхв макете.- Нет ли опечаток в названиях параметров (например,
Таблица.Параметры.НомерДокументаvsТаблица.Параметры.Номер).- Доступны ли данные на момент печати (например, если документ не проведен, некоторые реквизиты могут быть пустыми).
- 📄 Неправильное форматирование текста или чисел:
Используйте функции форматирования:
Формат(Дата, "ДФ=dd.MM.yyyy") // для датФормат(Сумма, "ЧДЦ=2; ЧРЗ= ") // для чисел (2 знака после запятой)
- 🖼️ Логотип или картинки не отображаются:
Убедитесь, что:
- Путь к файлу указан корректно (лучше использовать относительные пути или ресурсы конфигурации).
- Файл изображения находится в доступной папке (например,
C:\Шаблоны\).- В макете для секции с картинкой указаны правильные размеры.
- 📑 Длинные таблицы обрезаются при печати:
Настройте параметры страницы в макете:
Таблица.Параметры.ОриентацияСтраницы = ОриентацияСтраницы.Альбомная;Таблица.Параметры.ВысотаСтраницы = 297; // для формата A4
Если форма работает некорректно в тонком клиенте или веб-клиенте, проверьте совместимость используемых функций. Некоторые методы (например, работа с
COM-объектами) могут не поддерживаться.Всегда тестируйте печатную форму в том же режиме, в котором она будет использоваться (тонкий клиент, веб-клиент, мобильное приложение). Некоторые элементы (например, шрифты или выравнивание) могут отображаться по-разному.
7. Экспорт печатных форм в PDF и другие форматы
Часто печатные формы нужно не только распечатать, но и сохранить в электронном виде (например, для отправки по email). В 1С есть встроенные механизмы для экспорта в
Excel,HTMLи другие форматы.Способы экспорта:
- 📄 Сохранение в PDF:
ТекстФормы.Записать("C:\Отчеты\Документ.pdf", ТипФайлаPDF.Портрет);- 📊 Экспорт в Excel:
ТекстФормы.Записать("C:\Отчеты\Документ.xlsx", ТипФайлаXLSX.Таблица);- 🌐 Генерация HTML (для отправки по email):
HTML = ТекстФормы.ПолучитьHTML();Письмо = Новый Почта;
Письмо.Текст = HTML;
Письмо.Отправить();
Для автоматизации отправки документов по email можно использовать планировщик задач 1С или внешние обработки. Например, чтобы отправлять счета-фактуры контрагентам в конце дня:
Процедура ОтправитьСчетаПоEmail()Выборка = Документы.РеализацияТоваровУслуг.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Статус = "Проведен" И НЕ Выборка.Отправлен Тогда
ПечатнаяФорма = ПолучитьПечатнуюФорму(Выборка.Ссылка);
ОтправитьEmail(Выборка.Контрагент.Email, "Счет-фактура №" + Выборка.Номер, ПечатнаяФорма);
Выборка.Отправлен = Истина;
Выборка.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
⚠️ Внимание: При экспорте вArial Unicode MS.8. Оптимизация и ускорение печати больших документов
Если печатная форма содержит сотни или тысячи строк (например, инвентаризационная опись большого склада), ее генерация может занимать много времени. Чтобы ускорить процесс:
- 🚀 Используйте пакетную печать:
Instead of generating one large document, split it into parts:
Для Индекс = 1 По КолвоСтраниц ЦиклТаблица.Очистить();
// Заполнение данных для текущей страницы
Таблица.Вывести();
ТекстФормы.Добавить(Таблица.ПолучитьТекст());
КонецЦикла;
- 🗃️ Кэшируйте часто используемые данные:
Если в форме многократно обращаются к одним и тем же справочникам (например, номенклатуре), загрузите их заранее в массив:
СправочникНоменклатуры = Справочники.Номенклатура.Выбрать();Пока СправочникНоменклатуры.Следующий() Цикл
КэшНоменклатуры.Добавить(СправочникНоменклатуры.Ссылка, СправочникНоменклатуры.Наименование);
КонецЦикла;
- 📉 Отключите ненужные вычисления:
Если в форме есть сложные вычисляемые поля (например, сумма прописью для каждой строки), рассчитывайте их только при необходимости:
Если НужноВычислятьСуммуПрописью ТогдаТаблица.Параметры.СуммаПрописью = ЧислоПрописью(Сумма);
КонецЕсли;
Для особо крупных документов (более 10 000 строк) рассмотрите возможность генерации формы на стороне сервера 1С или с использованием фоновых задач, чтобы не блокировать интерфейс пользователя.
FAQ: Частые вопросы по печатным формам в 1С
Как добавить в печатную форму поле, которого нет в документе?
Если нужно вывести данные, которых нет в самом документе (например, остатки на складе или курс валюты на дату документа), используйте один из способов:
- Добавьте вычисляемый реквизит в документ через конфигуратор.
- Получите данные напрямую в коде формы через запрос:
Запрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| КурсыВалют.Курс КАК Курс
|ИЗ
| РегистрСведений.КурсыВалют КАК КурсыВалют
|ГДЕ
| КурсыВалют.Валюта = &Валюта
| И КурсыВалют.Дата = &Дата";
Запрос.УстановитьПараметр("Валюта", Документ.Валюта);
Запрос.УстановитьПараметр("Дата", Документ.Дата);
Результат = Запрос.Выполнить();
Таблица.Параметры.КурсВалюты = Результат.Получить()[0].Курс;
Можно ли сделать печатную форму с QR-кодом?
Да, для генерации QR-кода в печатной форме:
- Подключите внешнюю компоненту для работы с QR (например, BarcodeLib или ZXing.NET).
- В коде формы сгенерируйте QR и вставьте его как картинку:
QR = Новый Картинка(ПолучитьQRКод(Документ.Номер + "|" + Документ.Дата));Таблица.Параметры.QRCode = QR;
- В макете добавьте секцию для вывода изображения QR-кода.
Готовые обработки для генерации QR-кодов можно найти на Инфостарте или 1С:ИТС.
Почему при печати из веб-клиента форма отображается некорректно?
Проблемы в веб-клиенте обычно связаны с:
- Неподдерживаемыми шрифтами (используйте стандартные шрифты типа
ArialилиTimes New Roman).- Слишком сложными макетами (упростите структуру, избегайте вложенных таблиц).
- Ограничениями браузера (попробуйте обновить браузер или использовать тонкий клиент).
Для диагностики включите режим отладки в веб-клиенте и проверьте логи на сервере 1С.
Как сделать печатную форму для нескольких документов одновременно?
Для пакетной печати:
- Создайте обработку с таблицей, куда пользователь сможет добавить нужные документы.
- В цикле формируйте печатную форму для каждого документа и объединяйте их в один файл:
ОбщийДокумент = Новый ТекстовыйДокумент;Для Каждого Док Из СписокДокументов Цикл
Текст