Как вывести кнопку «Печать» при открытии табличного документа в управляемых формах 1С?

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

При разработке собственных печатных форм с помощью конструктора печати разработчики часто сталкиваются с ситуацией, когда сформированный макет открывается во встроенном окне просмотра платформы. В таком окне нет привычной командной панели с кнопками «Печать», «Сохранить» или «Количество копий», из-за чего пользователям приходится вызывать печать через системное меню «Файл — Печать» или сочетание клавиш Ctrl+P.

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

Почему в окне табличного документа нет кнопки «Печать»?

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

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

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

  1. Создать собственную управляемую форму предварительного просмотра с необходимыми кнопками.
  2. Отправлять документ на принтер напрямую программным методом без открытия окна предварительного просмотра.
  3. Внедрить подсистему «Печать» из состава БСП.

Вариант 1. Создание собственной формы предварительного просмотра

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

Разберем по шагам создание такой формы в конфигураторе:

  1. В ветке метаданных Общие формы добавим новую форму, назовем ее, например, ФормаПросмотраПечатныхФорм.
  2. На вкладке Реквизиты создадим основной реквизит ПечатнаяФорма с типом ТабличныйДокумент.
  3. Перетащим реквизит ПечатнаяФорма в элементы формы — платформа создаст элемент типа Поле табличного документа.
  4. В свойствах элемента установим флаг ТолькоПросмотр в значение Истина, чтобы пользователь не мог случайно отредактировать сформированный документ.
  5. В свойствах формы настроим командную панель и добавим пользовательские команды: Печать и СохранитьВФайл.

Посмотрим на пример программного кода в модуле созданной формы:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// Получаем переданный табличный документ из параметров открытия
	Если Параметры.Свойство("ТабличныйДокумент") Тогда
		ПечатнаяФорма = Параметры.ТабличныйДокумент;
	КонецЕсли;
	
	// Настраиваем параметры отображения
	ПечатнаяФорма.ОтображатьСетку = Ложь;
	ПечатнаяФорма.ОтображатьЗаголовки = Ложь;
	ПечатнаяФорма.Защита = Истина;
	ПечатнаяФорма.АвтоМасштаб = Истина;
	
КонецПроцедуры

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

&НаКлиенте
Процедура КомандаСохранитьВФайл(Команда)
	
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
	Диалог.Заголовок = "Выберите путь для сохранения документа";
	Диалог.Фильтр = "Документ PDF (*.pdf)|*.pdf|Таблица Excel (*.xlsx)|*.xlsx";
	
	Оповещение = Новый ОписаниеОповещения("ПослеВыбораФайлаДляСохранения", ЭтотОбъект);
	Диалог.Показать(Оповещение);
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеВыбораФайлаДляСохранения(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	
	Если ВыбранныеФайлы <> Неопределено И ВыбранныеФайлы.Количество() > 0 Тогда
		ПутьКФайлу = ВыбранныеФайлы[0];
		
		Если СтрЗаканчивается(НРег(ПутьКФайлу), ".pdf") Тогда
			ПечатнаяФорма.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF);
		Иначе
			ПечатнаяФорма.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

Теперь в модуле команды документа вместо вызова ТабличныйДокумент.Показать() вызываем открытие нашей формы:


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

Вариант 2. Прямая печать без предварительного просмотра

Если для пользователей не требуется предварительный визуальный контроль документа на экране, можно отправить документ сразу на принтер. Для этого на клиенте вызывается метод Напечатать() объекта ТабличныйДокумент.

Метод принимает системное перечисление РежимИспользованияДиалогаПечати:

  1. Использовать — перед печатью всегда открывается окно выбора принтера, настройки полей и количества копий.
  2. НеИспользовать — печать выполняется мгновенно на принтер по умолчанию без вывода диалоговых окон.
  3. ИспользоватьПриНеобходимости — диалог открывается только в том случае, если принтер по умолчанию не настроен или параметры печати не определены.

Рассмотрим пример вызова команды прямой печати:


&НаКлиенте
Процедура ПечатьНаПринтер(ТабличныйДокумент)
	
	ТабличныйДокумент.КоличествоЭкземпляров = 1;
	ТабличныйДокумент.АвтоМасштаб = Истина;
	ТабличныйДокумент.ИмяПараметровПечати = "ПараметрыПечати_РасходнаяНакладная";
	
	// Вызов диалога печати
	ТабличныйДокумент.Напечатать(РежимИспользованияДиалогаПечати.Использовать);
	
КонецПроцедуры

Обратите внимание: использование свойства ИмяПараметровПечати позволяет платформе запоминать индивидуальные настройки печати конкретного пользователя (выбранный принтер, масштаб, ориентацию листа) в системном хранилище и применять их при последующих вызовах.

Вариант 3. Использование подсистемы «Печать» из БСП

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

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

Подсистему «Печать» можно перенести автономно даже в работающую базу данных. Для ее работы не обязательно объединять тяжелые справочники конфигурации (такие как «Пользователи» или «Организации») — достаточно перенести только базовые служебные модули подсистем «Базовая функциональность» и «Управление печатью».

← На главную