Как реализовать печать документа в управляемых формах 1С:Бухгалтерия 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При переходе с обычных форм (например, из БП 2.0) на управляемые формы в 1С:Бухгалтерия 3.0 разработчики часто сталкиваются с тем, что старые механизмы печати, такие как УниверсальныеМеханизмы.НапечататьДокумент, больше не работают. В управляемом приложении разделение кода на клиентскую и серверную части требует иного подхода к формированию и выводу печатных форм. Рассмотрим, как правильно организовать этот процесс, начиная от простого вывода на экран и заканчивая использованием стандартов Библиотеки стандартных подсистем (БСП).

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

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

Проанализируем программный код в модуле формы. Нам потребуется команда, которая вызывает серверную функцию:


&НаКлиенте
Процедура Печать(Команда)
    // Получаем сформированный табличный документ с сервера
    ТабДок = ПечатьНаСервере();
    
    // Выводим документ на экран пользователю
    ТабДок.Показать("Печать квитанции");
КонецПроцедуры

&НаСервере
Функция ПечатьНаСервере()
    // Преобразуем данные формы в объект для вызова метода печати
    ДокументОбъект = РеквизитФормыВЗначение("Объект");
    
    // Вызываем функцию печати из модуля объекта
    ТабДок = ДокументОбъект.Печать("Квитанция");
    Возврат ТабДок; 
КонецФункции

Обратите внимание, что в модуле объекта процедура Печать должна быть объявлена как Экспортная и возвращать сформированный табличный документ. В самом коде формирования макета важно заполнить параметры и области, после чего вернуть готовый объект ТабДок.

Способ 2: Использование стандартов БСП (Модуль менеджера)

В современных конфигурациях, таких как БП 3.0, логику печати рекомендуется выносить из модуля объекта в модуль менеджера. Это позволяет формировать печатные формы без создания «тяжелого» объекта документа в памяти (без вызова РеквизитФормыВЗначение), работая напрямую со ссылками. Это значительно повышает производительность системы, особенно при групповой печати.

Разберем основные преимущества этого подхода:

  1. Оптимизация запросов: В модуль менеджера передается массив ссылок. Вы можете получить данные для всех документов одним запросом, вместо того чтобы выполнять запросы в цикле для каждого объекта.
  2. Унификация: Использование подсистемы «Управление печатью» из БСП предоставляет пользователю стандартное окно предпросмотра, где доступны функции сохранения в PDF, отправки по почте и редактирования.

Для вызова стандартной печатной формы (например, ТОРГ-12) из внешней обработки или другого документа, следует использовать метод УправлениеПечатьюКлиент.ВыполнитьКомандуПечати. Это избавит вас от необходимости «изобретать велосипед».

Программная отправка на принтер без показа формы

Иногда требуется отправить документ на печать сразу, минуя окно предварительного просмотра. Для этого у объекта ТабличныйДокумент существует метод Напечатать(). Рассмотрим важный нюанс: данный метод доступен только на Клиенте. Попытка вызвать его на сервере может привести к ошибке или к тому, что документ уйдет на принтер, установленный непосредственно на сервере (что редко нужно конечному пользователю).

Пример кода для прямой печати:


&НаКлиенте
Процедура ПечатьНаПринтер(Команда)
    ТабДок = ПечатьНаСервере();
    // РежимИспользованияПринтера.Использовать выводит диалог выбора принтера
    // РежимИспользованияПринтера.НеИспользовать печатает на принтер по умолчанию
    ТабДок.Напечатать(РежимИспользованияПринтера.Использовать);
КонецПроцедуры

Важные настройки табличного документа

Чтобы печатная форма выглядела профессионально и корректно отображалась у пользователя, проанализируем необходимые свойства объекта ТабличныйДокумент, которые стоит задать перед возвратом его на клиент:

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

← На главную