0
lexushka
04.12.17
✎
15:54
|
Добрый день
Прошу прощения за название темы - очень хотелось ключевое слово УправлениеПечатьюКлиент.ВыполнитьКомандуПечати в ней поставить
Проблема
Есть внешняя печатная форма для УТ11 для печати Транспортной накладной
Там при вызове печати таких документов проверяется, а сформированы ли транспортные накладные, задаются вопросы и формируются…
Весь этот функционал не хотелось потерять
В итоге ВПФ вызывается как
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Товарно-транспортная накладная (1-Т)'");
НоваяКоманда.Идентификатор = "ТТН";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода();
Ну в основной форме обработки
&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
Все красиво вроде бы, но
Изначально это была обычная печатнаф форма с вызовом серверного метода
То есть:
Функция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыПечати) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТТН") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТТН",
НСтр("ru='Товарно-транспортная накладная (1-Т)'"),
СформироватьПечатнуюФормуТТН(МассивОбъектов, ОбъектыПечати, ПараметрыПечати));
ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыПечати.ПараметрыОтправки,
МассивОбъектов, КоллекцияПечатныхФорм);
КонецЕсли;
Соответственно, понасоздавав отсутствующие транспортные накладные я попытался напечатать их, передав вызов как
РеквизитФормыВЗначение("Объект").Печать(МассивОбъектов, УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм(ИдентификаторКоманды),ОбъектыПечати, ПараметрыВывода);
Код отрабатывает и даже Табличный докуемнт созадет, но не показывает :/
Попытка изучить документацию по БСП вывела меня на процедуру
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати
Но как-то мы с ней не задружились и мне по ее мотивам пришлось напистаь свой код:
&НаКлиенте
Процедура ВыполнитьКомандуПечати(ИмяМенеджераПечати, ИменаМакетов, МассивОбъектов, ВладелецФормы, ПараметрыПечати = Неопределено) Экспорт
// Проверим количество объектов.
Если НЕ ПроверитьКоличествоПереданныхОбъектов(МассивОбъектов) Тогда
Возврат;
КонецЕсли;
// Получим ключ уникальности открываемой формы.
КлючУникальности = Строка(Новый УникальныйИдентификатор);
ПараметрыОткрытия = Новый Структура("ИмяМенеджераПечати,ИменаМакетов,ПараметрКоманды,ПараметрыПечати,ИсточникДанных,ПараметрыИсточника");
ПараметрыОткрытия.ИмяМенеджераПечати = "";
ПараметрыОткрытия.ИменаМакетов = ИменаМакетов;
ПараметрыОткрытия.ПараметрКоманды = МассивОбъектов;
ПараметрыОткрытия.ПараметрыПечати = ПараметрыПечати;
ПараметрыОткрытия.ИсточникДанных = ИмяМенеджераПечати;
ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения", ИменаМакетов, МассивОбъектов);;
// Откроем форму печати документов.
ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, ВладелецФормы, КлючУникальности);
КонецПроцедуры
Он даже работает, но есть у меня чувство, что должна быть возможность сделать необходимое без собственного ведосипеда…
Не посоветуете?
Спасибо
|
|