Как подключить печать документа к стандартному механизму печати УТ 11.3
УТ 11.3;
Задача состоит в том, чтобы запрограммировать вывод на печать документа (например, счета на оплату) в табличный документ общей формы стандартного механизма печати УТ 11.3:
1) В модуле формы объекта нашего документа размещаем следующие куски кода:
В процедуре ПриСозданииНаСервере добавляем:
УправлениеПечатью.ПриСозданииНаСервере(ЭтотОбъект); // вторым параметром можно указать группу формы, где будет размещаться кнопа печати. По умолчанию кнопка разместится в командной панели формы.Добавляем следующую процедуру, если ее еще нет:
&НаКлиенте2) В модуле менеджера нашего документа добавляем следующие куски кода:
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Объект);
КонецПроцедуры
Добавляем процедуру генерации команд печати, если ее еще нет, и размещаем в ней код, который касается нашей печати:
Процедура ДобавитьКомандыПечати(КомандыПечати) ЭкспортДобавляем следующую процедуру, если ее еще нет, и размещаем в ней код, который касается нашей печати:
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "СчетНаОплату";
КомандаПечати.Представление = "Счет на оплату";
КомандаПечати.Порядок = 1;
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетНаОплату") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СчетНаОплату",
"Счет на оплату",
СформироватьСчетНаОплату(МассивОбъектов, ОбъектыПечати, ПараметрыПечати));
КонецЕсли;
ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);
КонецПроцедуры
Осталось добавить функцию самой печати, которая возвращает заполненный табличный документ и вызывается из вышеприведенной процедуры "Печать":Функция СформироватьСчетНаОплату(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
ТабличныйДокумент = Новый ТабличныйДокумент;
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.СчетНаОплату.ПФ_MXL_СчетНаОплату");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьСтрокаТаб = Макет.ПолучитьОбласть("СтрокаТаб");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
Для Каждого ТекДокумент Из МассивОбъектов Цикл
ТекПорядковыйНомерДокумента = ТекПорядковыйНомерДокумента + 1;
Если ТекПорядковыйНомерДокумента > 1 Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
СведенияОбОрганизации = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ТекДокумент.Организация, ТекДокумент.Дата);
ОбластьШапка.Параметры.Организация = ТекДокумент.Организация;
ТабличныйДокумент.Вывести(ОбластьШапка);
// Здесь программируется заполнение параметров областей и вывод их в табличный документ3) Теперь покажем, как можно вызвать печать данного документа не из самого документа (по кнопке из командной панели), а вообще из другого места, например, из формы какой-либо обработки, но используя уже вышеприведенную функцию печати. Для этого на форме данной обработки размещаем команду со следующим кодом:
КонецЦикла;
ТабличныйДокумент.ТолькоПросмотр = Истина;
ТабличныйДокумент.ПолеСверху = 5;
ТабличныйДокумент.ПолеСнизу = 5;
ТабличныйДокумент.ПолеСлева = 5;
ТабличныйДокумент.ПолеСправа = 5;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетНаОплату";
Возврат ТабличныйДокумент;
КонецФункции
&НаКлиентеП.С. подробное описание вышеприведенных функций и их параметров вы можете увидеть в самой конфигурации, воспользовавшись поиском.
Процедура КомандаПечатьСчетаНаОплату(Команда)
ИмяМенеджераПечати = "Документ.СчетНаОплату";
ИменаМакетов = "СчетНаОплату";
ДополнительныеПараметрыПечати = Новый Структура(); // здесь можно передать необходимые дополнительные параметры, которые будут видны в функции печати
ПараметрыПечати = Новый Структура("ЗаголовокФормы,Идентификатор,ДополнительныеПараметры","Счет на оплату","СчетНаОплату",ДополнительныеПараметрыПечати);
МассивОбъектов = Новый Массив();
МассивОбъектов.Добавить(ТекущийСчетНаОплатуСсылка); // ссылка на документ, который необходимо распечатать. Можно добавить в данный массив сколько угодно документов для печати
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(ИмяМенеджераПечати, ИменаМакетов, МассивОбъектов, ЭтотОбъект, ПараметрыПечати);
КонецПроцедуры