Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Обработка печати на клиенте ( УправлениеПечатьюКлиент.ВыполнитьКомандуПечати )

Обработка печати на клиенте ( УправлениеПечатьюКлиент.ВыполнитьКомандуПечати )
Я
   lexushka
 
04.12.17 - 15:54
Добрый день
Прошу прощения за название темы - очень хотелось ключевое слово УправлениеПечатьюКлиент.ВыполнитьКомандуПечати в ней поставить

Проблема

Есть внешняя печатная форма для УТ11 для печати Транспортной накладной
Там при вызове печати таких документов проверяется, а сформированы ли транспортные накладные, задаются вопросы и формируются…

Весь этот функционал не хотелось потерять

В итоге ВПФ вызывается как

ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();

НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Товарно-транспортная накладная (1-Т)'");
НоваяКоманда.Идентификатор = "ТТН";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода();

Ну в основной форме обработки

&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт

Все красиво вроде бы, но

Изначально это была обычная печатнаф форма с вызовом серверного метода
То есть:

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

Соответственно, понасоздавав отсутствующие транспортные накладные я попытался напечатать их, передав вызов как

РеквизитФормыВЗначение("Объект").Печать(МассивОбъектов, УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм(ИдентификаторКоманды),ОбъектыПечати, ПараметрыВывода);

Код отрабатывает и даже Табличный докуемнт созадет, но не показывает :/    

Попытка изучить документацию по БСП вывела меня на процедуру
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати

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


    
    // Откроем форму печати документов.
    ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, ВладелецФормы, КлючУникальности);
    
КонецПроцедуры

Он даже работает, но есть у меня чувство, что должна быть возможность сделать необходимое без собственного ведосипеда…

Не посоветуете?

Спасибо
 
 

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует