Как открыть форму внешней обработки или отчета программно

В статье рассматривается способ программного обращения к внешней обработке или отчету и открытие его формы для отображения пользователю.

Программное открытие внешней обработки

Программное открытие внешней обработки состоит из нескольких этапов:

  1. Помещение внешней обработки во временное хранилище;
  2. Передача внешней обработки на сервер;
  3. Подключение внешней обработки на сервере;
  4. Открытие формы подключенной обработки на клиенте.

Рассмотрим описанные действия на примере. Открытие обработки производится при нажатии на кнопку (процедура КомандаОткрытьВнешнююОбработку()).

&НаКлиенте
Процедура КомандаОткрытьВнешнююОбработку(Команда)

// Создание описания оповещения. В указанную процедуру будет передано управление после помещения файла во временное хранилище
ОписаниеОповещения = Новый ОписаниеОповещения(«ПоместитьФайлВХранилищеЗавершение», ЭтотОбъект);
// Этап 1. Помещение обработки во временное хранилище
НачатьПомещениеФайла(ОписаниеОповещения, , «D:МояОбработка.epf», Ложь);

КонецПроцедуры

&НаКлиенте
Процедура ПоместитьФайлВХранилищеЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт

// Этап2. Передача адреса временного хранилища на сервер для подключения обработки
ИмяВнешнейОбработки = ПодключитьВнешнююОбработкуНаСервере(Адрес);
// Этап 4. Откроем форму подключенной внешней обработки
ОткрытьФорму(«ВнешняяОбработка.» + ИмяВнешнейОбработки + «.Форма»);

КонецПроцедуры

&НаСервере
Функция ПодключитьВнешнююОбработкуНаСервере(АдресХранилища)

// Этап 3. Подключение внешней обработки из временного хранилища
Возврат ВнешниеОбработки.Подключить(АдресХранилища);

КонецФункции

Для передачи файлов с клиента на сервер (и наоборот) предназначено временное хранилище. Помещение файла во временное хранилище осуществляется методом

НачатьПомещениеФайла(<ОписаниеОповещенияОЗавершении>, <Адрес>, <НачальноеИмяФайла>, <Интерактивно>, <УникальныйИдентификаторФормы>)
После успешного помещения файла во временное хранилище происходит передача управления в процедуру, указанную в описании оповещения (параметр <ОписаниеОповещенияОЗавершении>).

Далее вызывается серверная процедура ПодключитьВнешнююОбработкуНаСервере(), в которой осуществляется подключение внешней обработки функцией Подключить() менеджера внешних обработок. В первом параметре содержится адрес временного хранилища с внешней обработкой. Функция возвращает имя подключенной внешней обработки, по которому к ней можно будет обращаться.

Заключительным этапом осуществляется открытие внешней обработки методом ОткрытьФорму().

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

В представленном примере внешняя обработка должна храниться по фиксированному пути и иметь определенное имя: «D:МояОбработка.epf». Для предоставления пользователю возможности интерактивно выбрать внешнюю обработку необходимо немного доработать код:

НачатьПомещениеФайла(ОписаниеОповещения, , , Истина);

Программное открытие внешнего отчета

Алгоритм программного открытия формы внешнего отчета идентичен открытию формы внешней обработки. Отличие заключается в том, что для подключения отчета необходимо использовать тип ВнешниеОтчетыМенеджер вместо типа ВнешниеОбработкиМенеджер.

Рассмотрим пример. Открытие отчета производится при нажатии на кнопку (процедура КомандаОткрытьВнешнийОтчет()):

&НаКлиенте
Процедура КомандаОткрытьВнешнийОтчет(Команда)

// Создание описания оповещения. В указанную процедуру будет передано управление после помещения файла во временное хранилище
ОписаниеОповещения = Новый ОписаниеОповещения(«ПоместитьФайлВХранилищеЗавершение», ЭтотОбъект);
// Этап 1. Помещение отчета во временное хранилище
НачатьПомещениеФайла(ОписаниеОповещения, , «D:МойОтчет.erf», Ложь);

КонецПроцедуры

&НаКлиенте
Процедура ПоместитьФайлВХранилищеЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт

// Этап2. Передача адреса временного хранилища на сервер для подключения обработки
ИмяВнешнегоОтчета = ПодключитьВнешнийОтчетНаСервере(Адрес);
// Этап 4. Откроем форму подключенной внешней обработки
ОткрытьФорму(«ВнешнийОтчет.» + ИмяВнешнегоОтчета + «.Форма»);

КонецПроцедуры

&НаСервере
Функция ПодключитьВнешнийОтчетНаСервере(АдресХранилища)

// Этап 3. Подключение внешней обработки из временного хранилища
Возврат ВнешниеОтчеты.Подключить(АдресХранилища);

КонецФункции

Оцените статью