При разработке и доработке конфигураций 1С часто возникает задача добавить новую печатную форму к уже существующей. При этом важно не загромождать интерфейс отдельными кнопками для каждого документа или макета, а вывести все доступные варианты в единое выпадающее меню кнопки Печать.
Реализация такого поведения зависит от архитектуры вашей конфигурации: используется ли в ней функционал Библиотеки стандартных подсистем (БСП) или стандартный командный интерфейс платформы. Разберем подробно оба варианта реализации.
Если в коде используется процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт, значит, в конфигурации задействована подсистема печати БСП. Чтобы в выпадающем списке отображалось несколько печатных форм, выполним следующие шаги:
ДобавитьКомандыПечати должна располагаться строго в модуле менеджера объекта метаданных (документа или справочника), а не в модуле объекта или формы.ДобавитьКомандыПечати необходимо добавить столько элементов в коллекцию КомандыПечати, сколько печатных форм требуется вывести пользователю.Рассмотрим пример правильного заполнения команд печати в модуле менеджера:
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
// Первая печатная форма
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "Документ1";
КомандаПечати.Представление = НСтр("ru = 'Документ 1'");
КомандаПечати.Обработчик = "УправлениеПечатьюКлиент.ВыполнитьКомандуПечати";
КомандаПечати.Порядок = 10;
// Вторая печатная форма
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "Документ2";
КомандаПечати.Представление = НСтр("ru = 'Документ 2'");
КомандаПечати.Обработчик = "УправлениеПечатьюКлиент.ВыполнитьКомандуПечати";
КомандаПечати.Порядок = 20;
КонецПроцедуры
Формирование самих табличных документов выполняется в экспортной процедуре Печать того же модуля менеджера, где по значению параметра ИдентификаторКоманды определяется, какой именно макет формировать.
Разберем по шагам, что нужно проверить на стороне формы, если команды не появились в подменю:
ПриСозданииНаСервере должен присутствовать вызов инициализации подсистемы:
УправлениеПечатью.ПриСозданииНаСервере(ЭтотОбъект, Элементы.ГруппаПечать);
Подключаемый_ВыполнитьКомандуПечати и Подключаемый_ВыполнитьКомандуПечатиНаПринтер.Если печать реализована стандартными средствами платформы без использования БСП, выпадающее меню формируется через механизм групп командных панелей.
Выполним настройку по следующему алгоритму:
ПечатьДокумент1 и ПечатьДокумент2).Командная панель формы.Печать или Панель действий.Печать;Не изменяет.Истина, обе команды автоматически сгруппируются в общее выпадающее подменю Печать.Использование описанных подходов позволяет аккуратно объединить любое количество печатных форм в единое меню и сделать интерфейс программы удобным для пользователей.