gifts2017

Вывод табличных документов в общую форму "Печать документов" (УФ)

Опубликовал Алексей Шаламов (Alekseyshalam) в раздел Программирование - Практика программирования

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

Зачастую, создавая какой-нибудь отчет на управляемых формах, необходимо выводить получившийся табличный документ в приглядную для пользователя форму. Тут возникает вопрос: выводить в форму отчета или в какую то общую форму. Хочу поделиться своим решением.

Создал внешний отчет, в нем создал макет, вывожу этот макет в табличный документ, обращаюсь к процедуре ТабДокумент.Показать()

 

Получил не очень лицеприятную печатную форму.
С мыслями, раз уж есть общая форма и в обычном интерфейсе можно было любые табличные документы выводить, то не могли разработчики 1С пойти на регресс, решил разобраться, как все таки вывести в общую форму "печать документов" табличный документ.
В общем модуле "УправлениеПечатьюКлиент" нашел процедуру ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов)

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


Оставалось только правильно параметры передать. В итоге в моем внешнем отчете в модуле формы две функции:
1) Формирует табличный документ
2) Выводит табличный документ в общую форму.

&НаСервере
Функция ВывестиВОбщуюФормуПечатьДокументовНаСервере()
	//Создаем табличный документ, выводим в него все, что нам необходимо.
	ТабДокумент = Новый ТабличныйДокумент;
	Макет = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Макет");
	ОблШапка = Макет.ПолучитьОбласть("Шапка");
	ТабДокумент.Вывести(ОблШапка);
	Возврат ТабДокумент;
КонецФункции

&НаКлиенте
Процедура ВывестиВОбщуюФормуПечатьДокументов(Команда)
	ТабДокумент = ВывестиВОбщуюФормуПечатьДокументовНаСервере();	
	КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Макет");
	ПечатнаяФорма = УправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, "Макет");
	ПечатнаяФорма.СинонимМакета = "Макет";
	ПечатнаяФорма.ТабличныйДокумент = ТабДокумент;
	ПечатнаяФорма.ИмяФайлаПечатнойФормы = "Макет";
	
	ОбластиОбъектов = Новый СписокЗначений;
	УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов);
	ТабДокумент.показать();
КонецПроцедуры

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Вывод табличных документов в общую форму "Печать документов"
.erf 7,63Kb
25.09.15
5
.erf 7,63Kb 5 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Михаил Зенков (Gizmo_Magvai) 22.04.16 10:32
Спасибо!!!! Очень помогло.
2. Сергей Видякин (badboychik) 04.07.16 16:28
А как в ней обработать свою расшифровку?
3. Александр Лопатин (lopatin) 04.07.16 16:49
А я описывал, как вывести в эту форму результат печати, перед этим показав пользователю форму с запросом дополнительных данных: http://infostart.ru/public/502742/
4. Александр Лопатин (lopatin) 04.07.16 17:13
(2) badboychik, Вы про создание своих расшифровок программным путем?

Не думаю, что это стоит делать с общей формой ПечатьДокумента
5. Денис Коробов (Torin57) 09.09.16 16:01
Занудствую, конечно. В процедуре на клиенте после "УправлениеПечатьюКлиент.ПечатьДокументов" строка "ТабДокумент.показать()" лишняя.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа