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