gifts2017

Передача параметров во внешнюю печатную форму (управляемое приложение)

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

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

Первое с чего необходимо начать - для запускаемой команды указать вариант запуска внешней обработки "ОткрытиеФормы".
Все, это практически половина дела, теперь добавляем саму форму, в форме должно быть обязательно 3 реквизита и 3 параметра (параметры не обязательно):
ДополнительнаяОбработкаСсылка
ИдентификаторКоманды
ОбъектыНазначения

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

	
ПараметрыИсточника = Новый Структура;
ПараметрыИсточника.Вставить("ИдентификаторКоманды", ИдентификаторКоманды);
ПараметрыИсточника.Вставить("ОбъектыНазначения", ОбъектыНазначенияПараметр);
ПараметрыИсточника.Вставить("БезопасныйРежим", Ложь);

ПараметрыОткрытия = Новый Структура("ИсточникДанных,ПараметрыИсточника");
ПараметрыОткрытия.ИсточникДанных = ДополнительнаяОбработкаСсылка;
ПараметрыОткрытия.ПараметрыИсточника = ПараметрыИсточника;

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

		МассивОбъектов = МассивОбъектовНазначения.ОбъектыНазначения;
		ДополнительныеПараметрыПечати = МассивОбъектовНазначения.ДополнительныеПараметрыПечати;

Вот и вся хитрость.
Для примера во вложении разместил форму "Приходная накладная" для "УТ 11" с указанием ответственного принявшего товар.





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

Наименование Файл Версия Размер
Приходная накладная 34
.epf 18,48Kb
25.08.14
34
.epf 18,48Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Призрак (davdykin) 25.08.14 14:11
Если это твоя 2-ая печатная форма на УФ, пока не нашел статью, это был не "Вот и вся хитрость." а маленький пушной зверек.. гигантских размеров.
2. mikhailovaew (mikhailovaew) 28.08.14 11:50
кажется, у Поручка на эту тему весьма развернутая статья.