Создание внешней печатной формы под Управляемое Приложение (Управление Торговлей 11.1.1.11)

Создание внешней печатной формы под Управляемое Приложение (Управление Торговлей 11.1.1.11)

Здесь будет рассмотрен один из способов создания внешней печатной формы под Управляемое Приложение (Управление Торговлей 11.1.1.11).

Во-первых, регистрация внешней обработки, отчета, печатной формы под УТ 11 отличается от регистрации таких же отчетов, печатных форм, обработок под обычное приложение.

Первое, что необходимо сделать, в модуле обработки прописать функцию СведенияОВнешнейОбработке

Функция СведенияОВнешнейОбработке () Экспорт

ПараметрыРегистрации = Новый Структура ;

МассивНазначений = Новый Массив ; МассивНазначений . Добавить ( "Документ.РеализацияТоваровУслуг" );

ПараметрыРегистрации . Вставить ( "Вид" , "ПечатнаяФорма" ); //возможны варианты - ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов, ПараметрыРегистрации . Вставить ( "Назначение" , МассивНазначений ); ПараметрыРегистрации . Вставить ( "Наименование" , "Акт приема-передачи" ); //имя под kt обработка зарегистрирована будет в справочнике внешних обработок ПараметрыРегистрации . Вставить ( "Версия" , "1.1" ); ПараметрыРегистрации . Вставить ( "БезопасныйРежим" , ЛОЖЬ); ПараметрыРегистрации . Вставить ( "Информация" , "Дополнительная печатная форма к документу РеализацияТоваровУслуг " );

//команды ТаблицаКоманд = Новый ТаблицаЗначений ; ТаблицаКоманд . Колонки . Добавить ( "Представление" ); //как будет выглядеть описание печ.формы для пользователя ТаблицаКоманд . Колонки . Добавить ( "Идентификатор" ); //имя нашего макета ТаблицаКоманд . Колонки . Добавить ( "Использование" ); //ВызовСерверногоМетода ТаблицаКоманд . Колонки . Добавить ( "ПоказыватьОповещение" ); //Истина ТаблицаКоманд . Колонки . Добавить ( "Модификатор" ); //ПечатьМХL

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

ПараметрыРегистрации . Вставить ( "Команды" , ТаблицаКоманд );

Далее, если используем вызов серверного метода, то в модуле обработки добавляем процедуру печати

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

//здесь объект, который будет распечатан содержится в параметре МассивОбъектов, можно либо перебрать массив и распечатать каждый:

Для Каждого ТекущийДокумент Из МассивОбъектов Цикл

//либо воспользоваться запросом:

//это пример запроса, не использовать

Запрос = Новый Запрос (); Запрос . УстановитьПараметр ( "МассивОбъектов" , МассивОбъектов ); Запрос . Текст = "ВЫБРАТЬ | * |ИЗ | Документ.РасходнаяНакладная КАК РасходнаяНакладная |ГДЕ | РасходнаяНакладная.Ссылка В (&МассивОбъектов)

//Или, если всегда будет распечатывать только один объект, можно прописать:

СсылкаНаОбъект = МассивОбъектов [ 0 ];

Если используется клиентский метод то создаем форму обработки и соответсвующую процедуру

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

СсылкаНаОбъект = ОбъектыНазначения [ 0 ];

//Далее либо процедуру печати пишем здесь, при необходимости можно прописать обращение к серверной процедуре

Лично я столкнулся с такой штукой, у меня есть печатная форма, которая использует шаблон Word, в обычном приложении труда не составит написать соответствующую процедурку, которая выгрузит шаблон в соответствующее приложение и заполнит его . В УП это должно происходить на клиенте, соответственно я в процедуре Печать прописываю запуск нужного мне приложения, а шаблон, который хранится в макете, можно вытащить на сервере.

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

СсылкаНаОбъект = ОбъектыНазначения [ 0 ]; НазваниеФайла = ПолучитьИмяВременногоФайла ( "doc" ); Макет = ВернутьМакет ( ); Макет . Записать ( НазваниеФайла ); mWordObject = Новый COMObject ( "Word.Application" ); Попытка WordDoc = mWordObject . Documents . Add ( НазваниеФайла ); Исключение

&НаСервере Функция ВернутьМакет ( ) СсылкаНаОбъект = РеквизитФормыВЗначение ( "Объект" ); Макет = СсылкаНаОбъект . ПолучитьМакет ( "МакетАкт" ); Возврат Макет ;КонецФункции

В довесок выкладываю несколько внешних печатных форм, форм для заполнения ТЧ документов под управляемое приложение (УТ11.1.1.11), т.к предприятие на котором работую, специфичное, обработки содержат минимальный необходимый код.

📎📎📎📎📎📎📎📎📎📎