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


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

Первое с чего необходимо начать — для запускаемой команды указать вариант запуска внешней обработки «ОткрытиеФормы».
Все, это практически половина дела, теперь добавляем саму форму, в форме должно быть обязательно 3 реквизита и 3 параметра (параметры не обязательно):

ДополнительнаяОбработкаСсылка
ИдентификаторКоманды
ОбъектыНазначения

Данные реквизиты необходимо инициализировать в процедуре: «ПриСозданииНаСервере»
Примерно так:

ДополнительнаяОбработкаСсылка = Параметры.ДополнительнаяОбработкаСсылка;
ИдентификаторКоманды = Параметры.ИдентификаторКоманды;
ОбъектыНазначения.ЗагрузитьЗначения(Параметры.ОбъектыНазначения);

Выносить эти реквизиты на форму не обязательно и даже не желательно, чтобы пользователи их не попортили, они условно «Системные».
А вот на форму необходимо добавить и вынести все остальные необходимые вам реквизиты (параметры печати).
Добавляем на форму команду печать с следующим обработчиком:

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

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


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

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

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

Код вызова общей формы «ПечатьДокументов» возможно зависит от версии БСП, но в моем случае он выглядел именно так. Подсмотреть его можно в общем модуле «ДополнительныеОтчетыИОбработкиКлиент» процедура «ВыполнитьСерверныйМетодОбработки».
Как видно из текста команды, вместо параметра «ОбъектыНазначения» мы подсовываем структуру с непосредственно самими объектами и с дополнительными параметрами печати и единственное, что нам остается в нашей процедуре «Печать» разобрать этот параметр обратно на составляющие:

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

Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ИмяМакетаВнешнейФормы") Тогда

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

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

3 Comments

  1. davdykin

    Если это твоя 2-ая печатная форма на УФ, пока не нашел статью, это был не «Вот и вся хитрость.» а маленький пушной зверек.. гигантских размеров.

    Reply
  2. mikhailovaew

    кажется, у Поручка на эту тему весьма развернутая статья.

    Reply
  3. Team leader

    В ту же тему :

    https://infostart.ru/public/502742/

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *