Печать документов через печатные формы в 1С:Предприятие — одна из самых востребованных операций, с которой сталкиваются и бухгалтеры, и программисты, и обычные пользователи. Казалось бы, что может быть проще: открыл документ, нажал «Печать» — и готово. Но на практике всё не так гладко: формы не открываются, данные выводятся криво, а иногда и вовсе возникают ошибки типа «Не найдена печатная форма» или «Ошибка при формировании макета».

В этой статье разберём все способы вывода печати — от стандартных кнопок в интерфейсе до программного управления через встроенный язык. Особое внимание уделим типичным ошибкам и тому, как их избежать. Материал актуален для 1С 8.3 (включая последние релизы) и частично для 1С 8.2, но с учётом особенностей платформы.

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

📊 Какую версию 1С вы используете?
1С 8.3 (обычная форма)
1С 8.3 (управляемая форма)
1С 8.2
Не знаю

1. Стандартный вывод печати: кнопка «Печать» и её настройки

Самый простой способ распечатать документ — использовать встроенную кнопку Печать в форме документа. Она доступна почти во всех типовых конфигурациях (Бухгалтерия 3.0, УТ 11, ЗУП 3.1 и др.). Но даже здесь есть нюансы:

Во-первых, не все печатные формы видны по умолчанию. Например, в документе Реализация товаров и услуг может отображаться только форма Торг-12, хотя в системе заложены и Счёт-фактура, и УПД. Чтобы увидеть полный список, нажмите на стрелочку рядом с кнопкой «Печать» — там обычно скрыты дополнительные варианты.

Во-вторых, настройки печати зависят от прав пользователя. Если у вас нет прав на просмотр или редактирование печатной формы, кнопка может быть неактивна. Это часто бывает у пользователей с ролью Пользователь (без прав администратора).

  • 📄 Где искать кнопку: в верхней панели формы документа или в меню Ещё → Печать.
  • 🔧 Если кнопки нет: проверьте, не скрыта ли она в настройках интерфейса (Все функции → Настройки → Панель действий).
  • 🔒 Права доступа: для некоторых форм (например, Счёт-фактура с подписью) требуются дополнительные права.

Важно: В управляемых формах (1С 8.3) список печатных форм может динамически меняться в зависимости от статуса документа. Например, для Заказа покупателя форма Счёт на оплату может быть недоступна, пока документ не проведён.

💡

Если печатная форма открывается, но пустая — проверьте, не стоит ли в настройках принтера галочка «Печатать в файл». Это частая причина, почему документ не выводится на бумагу.

2. Выбор печатной формы: где хранятся шаблоны и как их добавить

Все печатные формы в хранятся в макетах конфигурации или в внешних файлах (например, .mxl или .ert). Чтобы понять, где искать нужную форму, разберёмся с их типами:

Встроенные печатные формы — заложены в типовой конфигурации и обновляются вместе с релизом. Например, Торг-12 или Акт выполненных работ. Их нельзя удалить, но можно модифицировать (с осторожностью!).

Дополнительные печатные формы — добавляются через обработки или расширения. Часто их подключают для специфических документов, например, Транспортная накладная (1-Т) или Универсальный передаточный документ (УПД).

Чтобы увидеть все доступные формы для документа:

  1. Откройте документ (например, Реализация товаров и услуг).
  2. Нажмите Ещё → Печатные формы → Настройка печатных форм.
  3. В открывшемся окне вы увидите список всех форм, включая скрытые.
Тип печатной формы Где хранится Как редактировать
Встроенная В макетах конфигурации (Общие макеты или макеты объекта) Только в режиме Конфигуратор (требуются права)
Дополнительная (из обработки) Внешний файл (.epf или .mxl) Через обработку Дополнительные печатные формы
Пользовательская (самостоятельно созданная) В базе данных или внешнем файле Через Конфигуратор → Объекты → Печатные формы

Если нужной формы нет в списке, её можно добавить:

  • 📥 Скачать готовый шаблон с сайта или партнёров (например, формы для Маркировки товаров).
  • 🛠️ Создать свою форму в Конфигураторе (потребуются знания встроенного языка).
  • 🔄 Подключить через обработку (например, Дополнительные печатные формы.epf).
Что делать, если печатная форма открывается, но данные не подтягиваются?

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

1. Соответствует ли структура макета структуре документа (например, в форме Торг-12 должны быть поля Покупатель, Поставщик, Товары).

2. Не сбились ли настройки связей в макете (в Конфигураторе откройте макет и проверьте параметры Источник данных).

3. Не блокирует ли вывод данных обработчик события ПередВыводом (если он есть в форме).

3. Программный вывод печатной формы: встроенный язык 1С

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

1. Метод Печать() — самый простой способ вызвать печать из кода:

ДокументОбъект.Печать();

Но он вызывает первую попавшуюся форму из списка, что не всегда удобно.

2. Метод ПолучитьМакет() + Вывести() — для точного контроля:

Макет = ДокументОбъект.ПолучитьМакет("Торг12");

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

ТабличныйДокумент.Вывести(Макет);

3. Использование ДополнительныеОтчетыИОбработки — если форма подключена через обработку:

Обработка = ДополнительныеОтчетыИОбработки.Получить("ПечатнаяФормаУПД");

Обработка.Выполнить(ДокументОбъект.Ссылка);

Пример полного кода для печати Счёта-фактуры с предварительной проверкой:

Процедура ПечатьСчетаФактуры(ДокументСсылка)

ДокументОбъект = ДокументСсылка.ПолучитьОбъект();

Если НЕ ДокументОбъект.Проведен() Тогда

Предупреждение("Документ не проведён! Печать невозможна.");

Возврат;

КонецЕсли;

Макет = ДокументОбъект.ПолучитьМакет("СчетФактура");

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

ТабличныйДокумент.Вывести(Макет);

ТабличныйДокумент.Показать();

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

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

Документ проведён|Права пользователя достаточны|Макет существует в конфигурации|Данные документа заполнены корректно-->

4. Типичные ошибки при выводе печати и их решения

Даже в типовых конфигурациях печать может работать со сбоями. Разберём самые распространённые ошибки и способы их исправления:

Ошибка: «Не найдена печатная форма»

  • 🔍 Причина 1: Форма удалена или переименована в конфигурации.
  • 🔍 Причина 2: Неверное имя макета в коде (например, опечатка в ПолучитьМакет("Торг-12") вместо "Торг12").
  • 🔧 Решение: Проверьте список макетов в Конфигураторе (раздел Объекты → Документы → [ВашДокумент] → Макеты).

Ошибка: «Ошибка при формировании макета»

  • 📝 Причина: Повреждён макет или не совпадает структура данных.
  • 🔧 Решение: Восстановите макет из резервной копии или пересоздайте его. Если ошибка возникает после обновления — сравните макет с типовой конфигурацией.

Ошибка: Печатная форма открывается пустой

  • 🖼️ Причина 1: Не заполнены обязательные реквизиты документа (например, Контрагент или Товары).
  • 🖼️ Причина 2: В макете не прописаны связи с данными (проверьте параметры ИсточникДанных).
  • 🔧 Решение: Откройте макет в Конфигураторе и проверьте привязки полей.

Ошибка: Печать «зависает» или долго формируется

  • Причина: Слишком большой объём данных (например, документ с тысячей строк товаров).
  • 🔧 Решение: Оптимизируйте макет (уберите ненужные колонки) или разбейте печать на части.
⚠️ Внимание: Если после обновления 1С перестали работать печатные формы, проверьте Журнал регистрации на наличие ошибок типа "Не найден метод объекта". Это может означать, что структура документа изменилась, а макеты не адаптированы.

5. Настройка печати для пакетной обработки документов

Иногда требуется распечатать не один документ, а целую группу — например, все Счета-фактуры за месяц. Для этого используют пакетную печать. В типовых конфигурациях (например, Бухгалтерия 3.0) есть встроенная обработка Печать документов, но её функциональности часто не хватает.

Алгоритм пакетной печати через код:

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

Пример кода для пакетной печати Торг-12:

Процедура ПечатьПачкиДокументов()

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| РеализацияТоваровУслуг.Ссылка КАК Ссылка

|ИЗ

| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

|ГДЕ

| РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода";

Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ТекущаяДата()));

Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ТекущаяДата()));

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

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

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

Макет = ДокументОбъект.ПолучитьМакет("Торг12");

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

ТабличныйДокумент.Вывести(Макет);

ТабличныйДокумент.Показать();

КонецЦикла;

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

Для сохранения в PDF вместо Показать() используйте:

ТабличныйДокумент.Записать("C:\Temp\Торг12_" + Формат(ДокументОбъект.Номер, "ЧГ=0") + ".pdf");
⚠️ Внимание: При пакетной печати больших объёмов данных (более 100 документов) может возникнуть переполнение памяти. В этом случае разбейте задачу на части или используйте Фоновое задание.
💡

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

6. Печать в внешние файлы: PDF, Excel, Word

Иногда печатную форму нужно не распечатать, а сохранить в файл для отправки по почте или архивирования. В есть встроенные механизмы для экспорта в PDF, Excel и другие форматы.

Сохранение в PDF:

ТабличныйДокумент.Записать("C:\Temp\Документ.pdf", ТипФайлаТабличногоДокумента.PDF);

Экспорт в Excel:

ТабличныйДокумент.Записать("C:\Temp\Документ.xlsx", ТипФайлаТабличногоДокумента.XLSX);

Печать в Word (через OLE):

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

Word.Documents.Add();

Word.Selection.TypeText(ТекстДокумента);

Word.ActiveDocument.SaveAs("C:\Temp\Документ.docx");

Word.Quit();

Для управляемых форм (1С 8.3) экспорт в PDF и Excel работает через метод Показать() с параметром:

ТабличныйДокумент.Показать("Печать в PDF", "", Истина);
Формат Метод сохранения Ограничения
PDF Записать(..., ТипФайлаТабличногоДокумента.PDF) Требует лицензию на 1С:Предприятие (в демо-режиме не работает).
Excel (XLSX) Записать(..., ТипФайлаТабличногоДокумента.XLSX) Не поддерживает формулы и сложное форматирование.
Word (DOCX) Через COMОбъект("Word.Application") Работает только при установленном Microsoft Word.
HTML Записать(..., ТипФайлаТабличногоДокумента.HTML) Подходит для веб-отчётов, но не для официальных документов.

Важно: При сохранении в PDF проверьте, что в настройках принтера не стоит галочка «Печатать в файл» — это может конфликтовать с программным экспортом.

7. Динамическое изменение печатных форм: события и обработчики

Иногда стандартной печатной формы недостаточно — нужно динамически менять данные перед выводом. Например:

  • Добавить логотип компании.
  • Скрыть некоторые колонки для определённых пользователей.
  • Подставить дополнительные реквизиты.

Для этого используют обработчики событий печатной формы. Основные события:

  • ПередВыводом — выполняется перед формированием макета.
  • ПриКомпоновкеРезультата — для форм на базе СКД (системы компоновки данных).
  • ПослеВывода — для финальных правок.

Пример: добавление логотипа в форму Торг-12:

Процедура Торг12ПередВыводом(Макет, ДанныеДляПечати, ПараметрыВывода)

// Добавляем картинку в шапку документа

Картинка = Новый Картинка("C:\Logo\company_logo.png");

Макет.Область("Шапка").Картинка = Картинка;

// Меняем текст в зависимости от контрагента

Если ДанныеДляПечати.Контрагент.Наименование = "ООО Ромашка" Тогда

Макет.Область("Заголовок").Параметры.Текст = "Специальные условия для ООО Ромашка";

КонецЕсли;

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

Чтобы подключить обработчик:

  1. Откройте макет печатной формы в Конфигураторе.
  2. Перейдите на вкладку Модуль.
  3. Добавьте процедуру с именем ПередВыводом (или другое событие).
⚠️ Внимание: Изменения в печатных формах через обработчики сбрасываются при обновлении конфигурации. Чтобы сохранить правки, используйте расширения или внешние обработки.

8. Печать через расширения: безопасное кастомизирование

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

Как добавить печатную форму через расширение:

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

Пример: добавление новой печатной формы Счёт на оплату (кастомный):

// В модуле расширения

Процедура ПечатьСчётНаОплатуКастомный(ДокументОбъект) Экспорт

Макет = Документы.ЗаказПокупателя.ПолучитьМакет("СчётНаОплатуКастомный");

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

ТабличныйДокумент.Вывести(Макет, ДокументОбъект);

ТабличныйДокумент.Показать();

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

Чтобы форма появилась в списке печатных форм документа, добавьте её в Подсистему печатных форм через расширение.

  • 🔄 Преимущества расширений:
    • Сохраняются при обновлении 1С.
    • Можно отключать/включать без перезапуска базы.
  • ⚠️ Ограничения:
    • Не все объекты можно модифицировать (зависит от версии платформы).
    • Сложные изменения могут потребовать правки оригинальной конфигурации.
💡

Расширения — самый безопасный способ кастомизации печатных форм, если вы не хотите терять изменения при обновлениях.

FAQ: Частые вопросы по печати в 1С

Почему при печати вылетает ошибка «Недостаточно памяти»?

Это происходит, если документ слишком большой (много строк или сложный макет). Решения:

  • Разбейте печать на части (например, по 50 документов за раз).
  • Упростите макет — уберите ненужные колонки или графику.
  • Используйте Фоновое задание для пакетной печати.
Как сделать, чтобы печатная форма открывалась автоматически при проведении документа?

Добавьте вызов печати в обработчик события ПослеЗаписи или ПриПроведении:

Процедура ПослеЗаписи(Отказ)

Если ЭтотОбъект.Проведен() Тогда

ЭтотОбъект.Печать();

КонецЕсли;

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

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

Можно ли печать из 1С направить на конкретный принтер?

Да, для этого используйте метод НастройкаПечати:

ТабличныйДокумент.НастройкаПечати.ИмяПритера = "HP LaserJet 1020";

ТабличныйДокумент.Печать();

Имя принтера должно точно совпадать с тем, что указано в настройках Windows.

Как экспортировать печатную форму в Excel с сохранением форматирования?

Стандартный экспорт в XLSX сохраняет данные, но теряет часть форматирования. Для точного экспорта:

  • Используйте COMОбъект("Excel.Application") для ручного форматирования.
  • Либо экспортируйте в PDF, а затем конвертируйте в Excel через сторонние инструменты.
Почему в печатной форме не отображаются кириллические символы?

Проблема обычно в шрифтах:

  • Проверьте, что в макете используется шрифт с поддержкой кириллицы (например, Arial или Times New Roman).
  • Если экспортируете в PDF, убедитесь, что в настройках принтера не стоит PCL — используйте PostScript.