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

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

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

Почему макет не появляется на форме автоматически

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

Способ 1. Быстрое создание через конструктор печати

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

  1. В дереве метаданных конфигуратора найдем наш документ и нажмем по нему правой кнопкой мыши.
  2. В контекстном меню выберем пункт Конструкторы, а затем — Конструктор печати.
  3. Следуя указаниям мастера, определим имя новой команды, укажем реквизиты шапки и табличной части, которые должны быть выведены на печать.
  4. На завершающем шаге конструктор автоматически создаст подчиненную объекту команду, сгенерирует макет (или переопределит существующий) и добавит типовой алгоритм выборки данных запросом.

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

Способ 2. Создание команды печати средствами платформы без конструктора

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

Выполним реализацию по шагам:

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

Функция СформироватьПечатнуюФорму(СсылкаНаДокумент) Экспорт

	ТабДокумент = Новый ТабличныйДокумент;
	ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Документ_Печать";
	
	Макет = Документы.НашНовыйДокумент.ПолучитьМакет("Макет");
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьШапка.Параметры.Номер = СсылкаНаДокумент.Номер;
	ОбластьШапка.Параметры.Дата = СсылкаНаДокумент.Дата;
	ТабДокумент.Вывести(ОбластьШапка);
	
	Возврат ТабДокумент;

КонецФункции
  1. В модуле созданной команды опишем клиентский обработчик и вызов сервера:

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

&НаСервере
Функция ПолучитьТабличныйДокументНаСервере(СсылкаНаДокумент)
	
	Возврат Документы.НашНовыйДокумент.СформироватьПечатнуюФорму(СсылкаНаДокумент);
	
КонецФункции

Способ 3. Подключение через Библиотеку стандартных подсистем (БСП)

Если разработка ведется в типовой или доработанной конфигурации (ERP, КА, УТ, БП, ЗУП), стандартные команды платформы напрямую не используются. Печать строится через централизованную подсистему «Печать» БСП.

Рассмотрим порядок интеграции объекта в механизм БСП:

  1. В модуле менеджера документа создадим экспортную процедуру регистрации команд:

Процедура ДобавитьКомандыПечати(КомандыПечати, ПараметрыПечати) Экспорт

	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "ПечатьАкта";
	КомандаПечати.Представление = НСтр("ru = 'Акт приема-передачи'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;

КонецПроцедуры
  1. В том же модуле менеджера реализуем процедуру формирования печатной формы, принимающую коллекцию печатных форм:

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПечатьАкта") Тогда
		ТабличныйДокумент = СформироватьАкт(МассивОбъектов, ОбъектыПечати);
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм,
			"ПечатьАкта",
			НСтр("ru = 'Акт приема-передачи'"),
			ТабличныйДокумент
		);
	КонецЕсли;

КонецПроцедуры
  1. Зарегистрируем новый документ в процедуре ПриОпределенииОбъектовСКомандамиПечати общего модуля УправлениеПечатьюПереопределяемый. После этого кнопка автоматически появится в типовом подменю «Печать».

Диагностика: почему кнопка печати не появляется или заблокирована

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

  1. Отключено автозаполнение командной панели. Если в свойствах формы документа или свойствах элемента командной панели флаг Автозаполнение сброшен в значение Ложь, добавленные команды объекта не появятся на экране сами. Потребуется вручную перетащить команду из панели доступных команд в элементы формы.
  2. Свойство доступности элемента. Проверим свойства кнопки на форме или команды: значение свойства Доступность должно быть установлено в Истина. Также кнопка может программно блокироваться обработчиками формы при открытии.
  3. Документ еще не записан. Большинство механизмов печати завязано на получение данных из базы по постоянной ссылке. Если документ новый (Объект.Ссылка.Пустая()), стандартные алгоритмы либо отключают кнопку печати, либо принудительно запрашивают сохранение объекта перед выполнением операции.
  4. Ограничения прав доступа. Проверим права роли текущего пользователя. Для отображения команды печати у пользователя должно быть право Просмотр или Использование для соответствующей команды метаданных, а также права на чтение макета и самого документа.
  5. Влияние функциональных опций. Если команда или документ включены в состав функциональной опции, отключенной в пользовательском режиме (значение опции равно Ложь), платформа автоматически исключает связанные кнопки из видимости интерфейса.
← На главную