Добавление печати в печатные формы 1С:Предприятие — задача, с которой рано или поздно сталкивается каждый разработчик или бухгалтер. Без корректно настроенной печати документы теряют юридическую силу, а компании рискуют получить штрафы за несоответствие требованиям законодательства. Но если вы никогда не работали с макетами форм или языком 1С, процесс может показаться сложным.
На практике существует несколько способов вставить печать — от ручного редактирования макета в режиме Конфигуратор до программного управления через встроенный язык. Выбор метода зависит от версии платформы (8.3, 8.3.20+), типа документа (счет, акт, договор) и даже от формата печати (PDF, Excel, непосредственная печать на принтере). В этой статье разберём все актуальные подходы с учётом последних обновлений 1С, а также типичные ошибки, из-за которых печать"съезжает" или не отображается вовсе.
Особое внимание уделим двум ключевым моментам: соответствию печати нормам ГОСТ Р 7.0.97-2016 (для официальных документов) и адаптивности — чтобы печать корректно отображалась как на экране, так и при выводе на бумагу разных форматов. Если вы работаете с облачной версией 1С:Фреш, часть настроек может отличаться — об этом тоже расскажем отдельно.
Прежде чем переходить к инструкциям, проверьте:
- 🔹 Версию вашей платформы (
Справка → О программе). Способы для 8.2 и 8.3 различаются кардинально. - 🔹 Права доступа: для редактирования макетов нужен режим
Конфигураторс правами администратора. - 🔹 Формат печати: если документ выводится в Excel, печать добавляется иначе, чем для PDF или прямой печати.
1. Добавление печати через редактор макета (без программирования)
Самый простой способ — отредактировать макет печатной формы вручную. Он подходит для типовых конфигураций (1С:Бухгалтерия, 1С:Зарплата и Управление Персоналом), где не требуется сложная логика размещения. Алгоритм работает для управляемых и обычных форм, но с нюансами.
Шаги для управляемых форм (актуально для 8.3.10+):
- Откройте конфигуратор (
Файл → Конфигураторили запустите 1С с ключом/Config). - Перейдите в раздел
Объекты → Документы → [ВашДокумент] → Печатные формы. - Выберите нужную форму (например,
ПечатнаяФормаСчетНаОплату) и откройте её макет двойным кликом. - В редакторе макета добавьте графический элемент:
Вставка → Рисунок. - Загрузите файл печати в формате
.pngили.jpg(рекомендуемый размер — 150×150 пикселей, разрешение 300 dpi). - Расположите рисунок в нужном месте (обычно внизу документа, справа) и зафиксируйте его положение с помощью привязок (
Формат → Привязки).
Для обычных форм (8.2 или 8.3 в режиме совместимости) путь будет другим:
Объекты → Документы → [ВашДокумент] → Формы → ФормаДокумента → Макет.
Здесь редактор макетов упрощён, и для точного позиционирования печати может потребоваться правка кода формы.
⚠️ Внимание: Если печать добавляется в документ, которыйlater будет выгружаться в PDF или Excel, проверьте настройку ПечатьВФоновомРежиме в параметрах макета. При значении Истина графические элементы могут не отображаться в экспортированных файлах.
Убедитесь, что файл в формате PNG с прозрачным фоном|Разрешение не менее 300 dpi для печати|Размер изображения соответствует реальному размеру печати (обычно 30–50 мм)|Цветовая схема — CMYK для профессиональной печати|Файл назван латиницей без пробелов (например, pechat_ooo.png)
-->
2. Программное добавление печати через встроенный язык
Если печать нужно вставлять динамически (например, в зависимости от организации или типа документа), придётся писать код на встроенном языке 1С. Этот метод гибкий, но требует знаний основ программирования. Рассмотрим два сценария: для управляемых и обычных форм.
Для управляемых форм (8.3.8+) используйте обработчик события ПриКомпоновкеРезультата:
Процедура ПечатнаяФормаСчетНаОплатуПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
// Добавляем печать в нижний колонтитул
ОбластьКолонтитул = ДокументРезультат.Колонтитулы.Низ;
Картинка = Новый Картинка(ПутьКФайлуПечати); // Например,"C:\Pechati\pechat.png"
ОбластьКолонтитул.Рисунки.Добавить(Картинка, ТипРасположенияКартинки.ПоКонтуру, 10, 10, 50, 50);
КонецПроцедуры
Для обычных форм код вставляется в модуль объекта:
Процедура Печать(ТабличныйДокумент)
// Загружаем макет
Макет = Документы.[ВашДокумент].ПечатнаяФормаСчетНаОплату.ПолучитьМакет("Макет");
// Добавляем печать
ТабличныйДокумент.ВывестиМакет(Макет);
ТабличныйДокумент.Рисунки.Добавить(Новый Картинка(ПутьКФайлуПечати), 10, 10, 50, 50);
КонецПроцедуры
Где взять ПутьКФайлуПечати? Оптимальные варианты:
- 📁 Хранить печать в
КаталогеИнформационнойБазы(путь получается черезКаталогИБ). - 🖼 Внедрять изображение прямо в конфигурацию как
ДвоичныеДанные(черезХранилищеЗначений). - ☁ Подгружать из облачного хранилища (для 1С:Фреш).
⚠️ Внимание: При программном добавлении печати в PDF через ЗаписьPDF координаты указываются в пунктах (1 пункт = 1/72 дюйма), а не в пикселях! Чтобы печать не"уползла", используйте формулу:
РазмерВПунктах = РазмерВМм * 72 / 25.4;
Если печать отображается размыто при печати на принтере, увеличьте разрешение исходного файла до 600 dpi и сохраните его в формате TIFF с компрессией LZW.
3. Настройка печати для разных организаций
В реальных базах часто ведётся учёт по нескольким юридическим лицам, и у каждого — своя печать. Чтобы не править макет вручную при смене организации, используйте условное добавление печати через код.
Пример для управляемых форм:
Процедура ПечатнаяФормаАктВыполненныхРаботПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Организация = ДанныеРасшифровки.Параметры.Получить("Организация");
ПутьКПечати ="";
Если Организация.Наименование ="ООО Ромашка" Тогда
ПутьКПечати = КаталогИБ +"\Pechati\romashka.png";
ИначеЕсли Организация.Наименование ="ИП Иванов" Тогда
ПутьКПечати = КаталогИБ +"\Pechati\ivanov.png";
КонецЕсли;
Если ПутьКПечати <>"" Тогда
Картинка = Новый Картинка(ПутьКПечати);
ДокументРезультат.НижнийКолонтитул.Рисунки.Добавить(Картинка, ТипРасположенияКартинки.ПоКонтуру, 10, 10, 40, 40);
КонецЕсли;
КонецПроцедуры
Для хранения путей к печатям удобно использовать справочник"Организации" с реквизитом ПутьКПечати (тип Строка). Тогда код упрощается:
ПутьКПечати = Организация.ПутьКПечати;
Альтернативный подход — хранить сами изображения печатей в справочнике как ДвоичныеДанные:
Картинка = Новый Картинка(Организация.Печать.ПолучитьДвоичныеДанные);
⚠️ Внимание: В облачной версии 1С:Фреш прямой доступ к файловой системе ограничен. Для загрузки печатей используйте механизм ХранилищеДополнительнойИнформации или подключите внешнее хранилище через 1С:Диск.
4. Печать в PDF и Excel: особенности и ошибки
При экспорте документа в PDF или Excel печать может пропадать или искажаться. Это связано с тем, что внешние форматы обрабатывают графику иначе, чем внутренний механизм 1С. Разберём типичные проблемы и решения.
Проблема 1: Печать не отображается в PDF.
✅ Решение: Используйте метод ЗаписьPDF с явным указанием рисунка:
ЗаписьPDF = Новый ЗаписьPDF;
ЗаписьPDF.НачатьДокумент;
ЗаписьPDF.НачатьСтраницу;
//... вывод данных документа...
ЗаписьPDF.Рисунок(Новый Картинка(ПутьКПечати), 100, 100, 200, 200); // Координаты в пунктах!
ЗаписьPDF.ЗакончитьСтраницу;
ЗаписьPDF.ЗакончитьДокумент;
Проблема 2: Печать в Excel выводится как пустой квадрат.
✅ Решение: Для Excel используйте метод ВставитьРисунок с параметром ТипВставкиРисунка.Встроенный:
ТаблицаExcel = Новый ТабличныйДокумент;
ТаблицаExcel.Вывести(МакетДокумента);
//...
ТаблицаExcel.ВставитьРисунок(Новый Картинка(ПутьКПечати), 1, 1, ТипВставкиРисунка.Встроенный);
Проблема 3: Печать"съезжает" при изменении масштаба документа.
✅ Решение: Зафиксируйте положение печати относительно ячейки или края страницы. В макете установите привязки:
- 📍 По левому краю:
Лево = 10 мм от края. - 📍 По нижнему краю:
Низ = 20 мм от низа страницы.
Критичный нюанс для PDF: если документ содержит несколько страниц, печать будет дублироваться на каждой. Чтобы добавить её только на последнюю страницу, используйте обработчик ПриОкончанииСтраницы с проверкой номера страницы.
| Формат вывода | Метод добавления печати | Типичные ошибки | Решение |
|---|---|---|---|
| Непосредственная печать | ТабличныйДокумент.Рисунки.Добавить |
Печать обрезается по краям | Установите поля страницы не менее 15 мм |
ЗаписьPDF.Рисунок |
Печать не видна | Проверьте координаты (в пунктах!) и слой | |
| Excel | ВставитьРисунок |
Печать выводится как ссылка | Используйте ТипВставкиРисунка.Встроенный |
| HTML (веб-клиент) | Тег <img> в макете |
Печать растягивается | Задайте фиксированные размеры в пикселях |
5. Динамическая печать: изменение в зависимости от условий
Иногда печать нужно не просто вставить, а модифицировать в зависимости от данных документа. Например:
- 🔴 Добавлять штамп"Копия" на неоригинальные экземпляры.
- 🔵 Менять цвет печати для черновых версий.
- 🟢 Подставлять печать контрагента в договорах.
Реализуется это через комбинацию кода и графических примитивов. Пример добавления штампа"Копия":
Процедура ПечатнаяФормаДоговорПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Если ДанныеРасшифровки.Параметры.Получить("ЭтоКопия") Тогда
// Добавляем полупрозрачный текст"КОПИЯ"
Текст = ДокументРезультат.ДобавитьТекст;
Текст.УстановитьТекст("КОПИЯ");
Текст.Шрифт.Размер = 48;
Текст.Шрифт.Цвет = Новый Цвет(255, 0, 0, 100); // Красный, 40% прозрачности
Текст.Положение = Новая Точка(100, 100); // Координаты в пунктах
Текст.УголПоворота = 45; // Под углом
КонецЕсли;
КонецПроцедуры
Для изменения цвета печати используйте метод ИзменитьЦвет:
Картинка = Новый Картинка(ПутьКПечати);
Картинка.ИзменитьЦвет(Новый Цвет(0, 0, 255)); // Синий цвет
⚠️ Внимание: При динамическом изменении печати (например, добавлении текста поверх) итоговое изображение может потерять чёткость. Для критичных документов лучше заранее подготовить несколько вариантов печатей (например,
1. В справочнике"Контрагенты" добавьте реквизит"Печать" типа"ХранилищеЗначений". 2. При загрузке договора проверяйте, заполнен ли реквизит: КартинкаКонтрагента = Новый Картинка(Контрагент.Печать.ПолучитьДвоичныеДанные); ДокументРезультат.Рисунки.Добавить(КартинкаКонтрагента, 300, 10, 50, 50); КонецЕсли; 3. Для автоматической подгрузки печатей по ИНН интегрируйтесь с сервисами вроде"Контур.Фокус" или"СБИС".pechat_original.png и pechat_copy.png) и подставлять нужную.
Как добавить печать контрагента автоматически?
Если Контрагент.Печать.Заполнено Тогда
6. Типичные ошибки и их исправление
Даже опытные разработчики сталкиваются с проблемами при работе с печатями в 1С. Вот топ-5 ошибок и способы их устранения:
1. Печать не отображается в предварительном просмотре, но печатается на принтере.
🔧 Причина: В настройках макета отключён показ графики в режиме предварительного просмотра.
🔧 Решение: В редакторе макета перейдите в Сервис → Параметры → Показывать рисунки и включите опцию.
2. Печать выводится в виде красного крестика.
🔧 Причина: Неверный путь к файлу или отсутствие прав на чтение.
🔧 Решение: Проверьте путь через Сообщить(ПутьКПечати) и права доступа к папке.
3. Печать растягивается или сжимается.
🔧 Причина: В макете не зафиксированы размеры рисунка.
🔧 Решение: В свойствах рисунка установите СохранятьПропорции = Истина и зафиксируйте ширину/высоту.
4. Печать не видна в PDF, но есть в печатной форме.
🔧 Причина: При экспорте в PDF не указан слой для рисунка.
🔧 Решение: Используйте ЗаписьPDF.НачатьСлой("Печать") перед добавлением рисунка.
5. Печать дублируется на каждой странице многостраничного документа.
🔧 Причина: Рисунок добавлен в колонтитул, который повторяется на всех страницах.
🔧 Решение: Добавляйте печать в основной текст документа с привязкой к последней странице.
⚠️ Внимание: В последних версиях 1С:Предприятие 8.3.22+ изменился механизм работы с графикой в PDF. Если вы используете ЗаписьPDF, обновите код согласно официальной документации (требуется авторизация на сайте 1С:ИТС).
Перед внедрением печати в рабочую базу протестируйте её вывод на всех типах документов (счета, акты, договора) и во всех форматах (печать, PDF, Excel).
7. Альтернативные способы: внешние обработки и расширения
Если стандартные методы не подходят (например, в сильно доработанных конфигурациях), рассмотрите альтернативные подходы:
1. Внешние обработки печати.
Многие партнёры 1С предлагают готовые обработки для гибкой настройки печатей. Популярные решения:
- 📄 "Универсальная печатная форма" (от Инфостарт).
- 🖼 "Печати и подписи для 1С" (от Кодерлайн).
Преимущество: не требуется правка конфигурации. Недостаток: платная лицензия.
2. Расширения конфигурации.
С версии 8.3.15+ можно доработать печатные формы через расширения, не меняя основную конфигурацию. Пример:
- Создайте новое расширение (
Конфигуратор → Расширения → Добавить). - В расширении переопределите модуль печатной формы.
- Добавьте код для вставки печати (аналогично примерам выше).
3. Интеграция с внешними системами.
Для корпоративных решений печать можно подгружать из:
- 📂 1С:Документооборот (если он используется в компании).
- ☁ Облачных хранилищ (1С:Диск, Яндекс.Диск).
- 🏢 Систем электронного документооборота (Диадок, Контур.Диадок).
⚠️ Внимание: При использовании внешних обработок или расширений убедитесь, что они совместимы с вашей версией платформы. Например, обработки для 8.3.18 могут не работать в 8.3.22 из-за изменений в API.
FAQ: Частые вопросы по работе с печатями в 1С
Можно ли вставить печать в 1С без доступа к конфигуратору?
Да, но с ограничениями. В пользовательском режиме (1С:Предприятие) вы можете:
- 📑 Использовать внешние печатные формы (если они поддерживаются вашей конфигурацией).
- 🖼 Вставить печать как подпись в документы Word/Excel, если 1С интегрирована с Microsoft Office.
Однако для полноценной вставки печати в макеты всё равно потребуется доступ к Конфигуратору или помощь администратора.
Как сделать печать полупрозрачной, чтобы текст документа был виден сквозь неё?
Для этого нужно модифицировать изображение печати до загрузки в 1С. Сделайте следующее:
- Откройте файл печати в графическом редакторе (Photoshop, GIMP).
- Добавьте альфа-канал (прозрачность) и уменьшите непрозрачность до 50–70%.
- Сохраните в формате
PNG-24с поддержкой прозрачности. - Загрузите в макет 1С.
В коде 1С прозрачность изображений не регулируется — это делается на уровне исходного файла.
Почему печать в PDF выводится с низким качеством?
Это связано с настройками экспорта в PDF. Проверьте:
- 📏 Разрешение изображения: печать должна быть не менее 300 dpi.
- 🖨 Параметры
ЗаписьPDF: используйтеКачествоПечати.Высокое:
ЗаписьPDF.КачествоПечати = КачествоПечати.Высокое;
Если проблема сохраняется, экспортируйте документ в PDF через виртуальный принтер (например, PDF24 или doPDF).
Как вставить печать в форму документа, а не в печатную форму?
Для отображения печати на экране в форме документа (например, в карточке счета) используйте элемент управления ПолеHTMLДокумента или ПолеКартинки:
- Откройте форму документа в конфигураторе.
- Добавьте элемент
ПолеКартинкина форму. - В модуле формы пропишите загрузку изображения:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)Картинка = Новый Картинка(ПутьКПечати);
ЭлементыФормы.Печать.Картинка = Картинка;
КонецПроцедуры
⚠️ Учтите, что такое решение не подходит для печати на бумаге — только для отображения на экране.
Можно ли в 1С автоматически подставлять печать в зависимости от типа документа?
Да, это реализуется через условную логику в коде печатной формы. Пример для управляемых форм:
Процедура ПечатнаяФормаПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
ТипДокумента = ДанныеРасшифровки.Параметры.Получить("ТипДокумента");
Если ТипДокумента ="Счет" Тогда
ПутьКПечати = КаталогИБ +"\Pechati\schet.png";
ИначеЕсли ТипДокумента ="Договор" Тогда
ПутьКПечати = КаталогИБ +"\Pechati\dogovor.png";
КонецЕсли;
Картинка = Новый Картинка(ПутьКПечати);
ДокументРезультат.Рисунки.Добавить(Картинка, 10, 10, 50, 50);
КонецПроцедуры
Для гибкости храните соответствие типов документов и печатей в справочнике или регистре сведений.