Каркас обработчика печати

БСП (стандартные подсистемы) / Печать

//Вызывается на сервере: процедура Печать в модуле менеджера документа
//РеализацияТоваровУслуг. БСП вызывает её, когда пользователь выбрал печатные
//формы; каждая печатная форма - макет с именем. Параметры: МассивОбъектов -
//документы для печати; ПараметрыПечати - произвольные параметры вызова;
//КоллекцияПечатныхФорм - таблица (по ней же и спрашивает НужноПечататьМакет);
//ОбъектыПечати - заполняется при выводе областей; ПараметрыВывода - настройки
//вывода
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм,
                 ОбъектыПечати, ПараметрыВывода) Экспорт
    //Истина, если пользователь выбрал именно эту печатную форму
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм,
                          "ТОРГ12") Тогда
        ТабличныйДокумент = СформироватьТОРГ12(МассивОбъектов, ОбъектыПечати);
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
                          КоллекцияПечатныхФорм,
            "ТОРГ12", "ТОРГ-12", ТабличныйДокумент, ,
            "Документ.РеализацияТоваровУслуг.ПФ_MXL_ТОРГ12");
    КонецЕсли;
КонецПроцедуры

//Без БСП - коллекцию собирает вызывающий код, а вопрос «нужно ли печатать» -
//это поиск строки с именем макета в таблице (колонки ИмяМакета,
//СинонимМакета, ТабличныйДокумент - как в описании КоллекцияПечатныхФорм)
КоллекцияПечатныхФорм = Новый ТаблицаЗначений;
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяМакета");
КоллекцияПечатныхФорм.Колонки.Добавить("СинонимМакета");
КоллекцияПечатныхФорм.Колонки.Добавить("ТабличныйДокумент");
Строка = КоллекцияПечатныхФорм.Добавить();
Строка.ИмяМакета = "ТОРГ12";
НужноПечатать = КоллекцияПечатныхФорм.Найти("ТОРГ12", "ИмяМакета") <>
    Неопределено;
//НужноПечатать = Да
Сообщить("НужноПечатать = " + НужноПечатать);
НужноПечатать = КоллекцияПечатныхФорм.Найти("СчётНаОплату", "ИмяМакета") <>
    Неопределено;
//НужноПечатать = Нет
Сообщить("НужноПечатать = " + НужноПечатать);