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

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

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

Реализация такого поведения зависит от архитектуры вашей конфигурации: используется ли в ней функционал Библиотеки стандартных подсистем (БСП) или стандартный командный интерфейс платформы. Разберем подробно оба варианта реализации.

Вариант 1. Реализация через подсистему «Печать» (БСП)

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

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

Рассмотрим пример правильного заполнения команд печати в модуле менеджера:


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

	// Первая печатная форма
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "Документ1";
	КомандаПечати.Представление = НСтр("ru = 'Документ 1'");
	КомандаПечати.Обработчик = "УправлениеПечатьюКлиент.ВыполнитьКомандуПечати";
	КомандаПечати.Порядок = 10;

	// Вторая печатная форма
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "Документ2";
	КомандаПечати.Представление = НСтр("ru = 'Документ 2'");
	КомандаПечати.Обработчик = "УправлениеПечатьюКлиент.ВыполнитьКомандуПечати";
	КомандаПечати.Порядок = 20;

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

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

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

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

Вариант 2. Реализация через стандартные команды платформы (без БСП)

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

Выполним настройку по следующему алгоритму:

  1. В дереве метаданных у нужного документа в ветке Команды создадим две отдельные команды (например, ПечатьДокумент1 и ПечатьДокумент2).
  2. В свойствах каждой команды настроим параметры:
    • Тип параметра команды: ссылка на текущий документ;
    • Группа: выберем значение Командная панель формы.Печать или Панель действий.Печать;
    • Режим изменения данных: Не изменяет.
  3. Откроем редактор формы документа и проанализируем командную панель:
    • Если у командной панели свойство Автозаполнение установлено в Истина, обе команды автоматически сгруппируются в общее выпадающее подменю Печать.
    • Если автозаполнение отключено, создадим в командной панели элемент с видом Группа — Подменю, зададим ему заголовок «Печать» и перетащим созданные команды внутрь этой группы.

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

← На главную