Добавление команды «Печать» в 1С:Предприятие 8.3 — одна из самых востребованных задач при настройке интерфейса. Без этой функции пользователям приходится вручную экспортировать данные в Excel или PDF, что занимает время и увеличивает риск ошибок. В зависимости от объекта конфигурации (документ, справочник, отчет) и версии платформы способы интеграции кнопки могут отличаться.

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

Для опытных разработчиков приведены примеры кода с комментариями, включая работу с макетами печатных форм и динамическим формированием данных. Все решения протестированы на актуальных релизах платформы 1С:Предприятие 8.3.22+, но учтите: интерфейс конфигуратора может незначительно отличаться в зависимости от версии.

📊 Какой объект 1С вам чаще всего требуется настраивать?
Документы
Справочники
Отчеты
Обработки
Регламентные задания

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

Прежде чем добавлять команду «Печать», определитесь с тремя ключевыми моментами:

  1. Тип объекта — для документов, справочников и отчетов настройка отличается.
  2. Формат вывода — будете ли вы использовать стандартные макеты или создадите свой шаблон (например, в Word или Excel).
  3. Права пользователей — убедитесь, что у ролей есть доступ к печатным формам (настройка в Администрирование → Настройка прав).

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

Важно: если в конфигурации уже есть стандартные печатные формы (например, для документа РеализацияТоваровУслуг), их можно модифицировать, а не создавать с нуля. Это сэкономит время и снизит риск ошибок.

💡

Перед началом работ сделайте резервную копию конфигурации через Файл → Сохранить копию. Это позволит откатиться, если что-то пойдет не так.

2. Добавление команды «Печать» для документов

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

Способ 1: Использование конструктора печатных форм

  1. Откройте конфигуратор и найдите нужный документ (например, ПоступлениеТоваров).
  2. Перейдите на вкладку «Формы» и откройте основную форму документа.
  3. В панели инструментов формы нажмите «Добавить команду» и выберите «Печать».
  4. В свойствах команды укажите:
    • 📄 Действие — выберите Печать из списка.
    • 🖼️ Макет — укажите существующий макет или создайте новый через Добавить → Макет.
    • 🔧 Параметры — при необходимости передайте дополнительные данные (например, ПечататьПодписи = Истина).
  5. Способ 2: Программное добавление команды

    Если стандартный функционал не подходит, используйте код в модуле формы. Пример для документа СчетНаОплату:

    &НаКлиенте
    

    Процедура Печать(Команда)

    ПечатнаяФорма = Документы.СчетНаОплату.ПечатнаяФорма(Объект);

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

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

    Чтобы команда отобразилась на форме, добавьте её в коллекцию команд:

    &НаКлиенте
    

    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Команды.Добавить("Печать", Новый Команда("Печать"));

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

    Что делать, если команда не появляется на форме?

    Убедитесь, что:

    1. В свойствах команды установлен флаг Видимость = Истина.

    2. Команда добавлена в группу команд (например, ГруппаДействийФормы).

    3. Нет конфликтов с правами доступа (проверьте роль пользователя).

    3. Настройка печати для справочников

    Для справочников (например, Номенклатура или Контрагенты) команда «Печать» добавляется аналогично документам, но с нюансами:

    • 📋 Чаще всего печатают список элементов (например, прайс-лист), а не отдельную карточку.
    • 🔄 Для динамического формирования данных используйте запрос в модуле команды.
    • 📑 Макеты для справочников обычно создаются в ТабличныйДокумент или ТекстовыйДокумент.

Пример кода для печати списка номенклатуры:

&НаКлиенте

Процедура ПечатьСписка(Команда)

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

Запрос.Текст = "ВЫБРАТЬ

| Номенклатура.Наименование,

| Номенклатура.Артикул,

| Номенклатура.Цена

|ИЗ

| Справочник.Номенклатура КАК Номенклатура";

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

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

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

ТабДок.Очистить();

Макет.Вывести(ТабДок, Результат);

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

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

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

Если нужно печатать карточку элемента справочника, используйте стандартный метод ПечатнаяФорма():

ПечатнаяФорма = Справочники.Номенклатура.ПечатнаяФорма(Объект);

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

Создан макет печатной формы|Настройка прав на макет для пользователей|Команда добавлена в форму списка или элемента|Тестирование на пустых и заполненных данных-->

4. Печать отчетов и обработок

Для отчетов команда «Печать» обычно уже есть в стандартной поставке, но её можно модифицировать. Например, добавить вывод в PDF или изменить ориентацию страницы.

Как настроить печать для отчета:

  1. Откройте отчет в конфигураторе (например, ОборотноСальдоваяВедомость).
  2. Перейдите на вкладку «Формы» и откройте основную форму.
  3. Найдите команду «Печать» в дереве элементов или добавьте её вручную.
  4. В модуле команды используйте метод Печать() для объекта ТабличныйДокумент:
    Процедура Печать(Команда)
    

    Результат = ПолучитьРезультат();

    ТабДок = Результат.Вывести();

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

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

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

Важно: при печати больших отчетов (более 1000 строк) используйте метод ТабДок.НачатьПечать() с последующим постраничным выводом, чтобы избежать зависания системы.

💡

Для отчетов с группировками (например, по контрагентам) настройте параметр ПечататьГруппировки = Истина, чтобы сохранить структуру данных.

5. Работа с макетами печатных форм

Макеты определяют, как будут выглядеть данные на бумаге. В 1С 8.3 поддерживаются несколько типов макетов:

Тип макета Назначение Пример использования
ТабличныйДокумент Таблицы, отчеты с сеткой Прайс-лист, оборотно-сальдовая ведомость
ТекстовыйДокумент Произвольный текст с полями Договор, счет на оплату
HTMLДокумент Верстка с тегами <table>, <div> Интерактивные формы для веб-клиента
ActiveDocument Внешние файлы (Word, Excel) Шаблоны договоров в формате .docx

Как создать макет для печатной формы:

  1. В конфигураторе откройте объект (например, документ СчетНаОплату).
  2. Перейдите на вкладку «Макеты» и нажмите «Добавить».
  3. Выберите тип макета (например, ТабличныйДокумент).
  4. Настройте структуру:
    • 📏 Для таблиц используйте области (шапка, тело, подвал).
    • 🔤 Для текста добавьте поля-заменители (например, {Документ.Номер}).
    • 🎨 Для оформления используйте стили (шрифт, цвет, границы).
  5. Пример кода для заполнения макета данными:

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

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

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

    // Добавляем динамические данные

    ТабДок.Область("Номер").Параметры.Значение = Объект.Номер;

    ТабДок.Область("Дата").Параметры.Значение = Формат(Объект.Дата, "ДФ=dd.MM.yyyy");

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

    💡

    Для сложных макетов (например, с логотипом компании) экспортируйте шаблон в Excel, настройте его там, а затем импортируйте обратно в 1С через ЗагрузитьИзФайла().

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

    При настройке печати в 1С 8.3 часто возникают следующие проблемы:

    1. Команда «Печать» не появляется на форме

    • Причина: Не добавлена в коллекцию команд или отсутствуют права.
    • Решение: Проверьте:
      Команды.Добавить("Печать", Новый Команда("Печать"));

      и настройки ролей в Администрирование → Права.

    2. Печатная форма пустая или содержит ошибки

    • Причина: Неверно заполнен макет или отсутствуют данные.
    • Решение: Отладьте код заполнения макета:
      Макет.Вывести(ТабДок, Объект, Истина); // Третий параметр - отладка

    3. Печать «зависает» на больших документах

    • Причина: Слишком много данных выводится за один раз.
    • Решение: Используйте постраничный вывод:
      ТабДок.НачатьПечать();
      

      Для Каждого Страница Из ТабДок.Страницы Цикл

      ТабДок.ПечатьСтраницу(Страница);

      КонецЦикла;

    4. Не печатаются кириллические символы

    • Причина: Неверная кодировка в макете или принтере.
    • Решение: Установите шрифт с поддержкой кириллицы (например, Arial) в свойствах ТабличныйДокумент.Шрифт.
    💡

    Если печатная форма открывается, но не отправляется на принтер, проверьте драйвер принтера и настройки по умолчанию в Windows.

    7. Дополнительные возможности печати

    Помимо базовой функции, в 1С 8.3 можно настроить:

    • 🖨️ Печать в PDF: используйте компоненту ПечатьВPDF():
      ТабДок.Записать("C:\Temp\Документ.pdf", ТипФайлаPDF.PDF);
    • 📧 Отправка по email: интегрируйте с Почта или ИнтернетПочта:
      Письмо = Новый Почта;
      

      Письмо.Текст = "Документ во вложении";

      Письмо.Вложения.Добавить("C:\Temp\Документ.pdf");

      Письмо.Отправить("client@example.com");

    • 🔄 Пакетная печать: для печати нескольких документов за раз:
      Для Каждого Док Из Документы.СчетНаОплату.Выбрать() Цикл
      

      ПечатнаяФорма = Документы.СчетНаОплату.ПечатнаяФорма(Док);

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

      КонецЦикла;

    • 📱 Печать на мобильных устройствах: для 1С:Мобильная платформа используйте специализированные макеты с адаптивной версткой.

Как добавить предварительный просмотр перед печатью:

ТабДок.Показать(); // Открывает окно предварительного просмотра

Если ТабДок.Модифицирован() Тогда

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

КонецЕсли;

Как печатать на терминальном сервере?

На терминальных серверах (RDP) печать настраивается через перенаправление принтера. Убедитесь, что:

1. В настройках RDP включено перенаправление локальных устройств.

2. Драйвер принтера установлен на сервере.

3. В 1С используется универсальный драйвер (например, Microsoft XPS Document Writer для тестирования).

8. Автоматизация печати через регламентные задания

Если нужно печатать документы по расписанию (например, ежедневные отчеты), используйте регламентные задания:

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

    Документы = Документы.ОтчетОПродажах.ВыбратьПоПериоду(НачалоДня(ТекущаяДата()), КонецДня(ТекущаяДата()));

    Для Каждого Док Из Документы Цикл

    ПечатнаяФорма = Документы.ОтчетОПродажах.ПечатнаяФорма(Док);

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

    КонецЦикла;

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

Нюансы:

  • 🕒 Для заданий, выполняемых ночью, проверьте, что принтер включен и доступен.
  • 📂 Сохраняйте копии отчетов в файл перед печатью (на случай сбоя принтера).
  • 🔄 Используйте Попытка...Исключение для обработки ошибок:
    Попытка
    

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

    Исключение

    ЗаписатьЖурналРегистрации("Ошибка печати: " + ОписаниеОшибки());

    КонецПопытки;

💡

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

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

1. Можно ли добавить печать для пользовательского отчета?

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

Процедура Печать(Команда)

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

Макет = ПолучаемМакет("Основной");

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

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

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

2. Как печатать только выделенные строки в таблице?

Используйте свойство ТекущиеДанные формы:

ВыделенныеСтроки = ЭлементыФормы.Таблица.ТекущиеДанные;

Для Каждого Строка Из ВыделенныеСтроки Цикл

// Формируем данные для печати

КонецЦикла;

3. Почему печатная форма открывается в новом окне, а не печатается?

Проверьте, какой метод используется:

  • ТабДок.Показать() — открывает предварительный просмотр.
  • ТабДок.Печать() — отправляет напрямую на принтер.

4. Как изменить ориентацию страницы на альбомную?

Настройте параметры ТабличныйДокумент:

ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Альбомная;

5. Можно ли печатать на двух сторонах листа?

Да, но это настраивается на уровне драйвера принтера. В коде 1С можно только отправить команду:

ТабДок.ПараметрыПечати.ДвусторонняяПечать = Истина;

Поддерживается не всеми моделями принтеров.