В статье рассматривается способ программного обращения к внешней обработке или отчету и открытие его формы для отображения пользователю.
Программное открытие внешней обработки
Программное открытие внешней обработки состоит из нескольких этапов:
- Помещение внешней обработки во временное хранилище;
- Передача внешней обработки на сервер;
- Подключение внешней обработки на сервере;
- Открытие формы подключенной обработки на клиенте.
Рассмотрим описанные действия на примере. Открытие обработки производится при нажатии на кнопку (процедура КомандаОткрытьВнешнююОбработку()).
&НаКлиенте
Процедура КомандаОткрытьВнешнююОбработку(Команда)
// Создание описания оповещения. В указанную процедуру будет передано управление после помещения файла во временное хранилище
ОписаниеОповещения = Новый ОписаниеОповещения(«ПоместитьФайлВХранилищеЗавершение», ЭтотОбъект);
// Этап 1. Помещение обработки во временное хранилище
НачатьПомещениеФайла(ОписаниеОповещения, , «D:МояОбработка.epf», Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПоместитьФайлВХранилищеЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
// Этап2. Передача адреса временного хранилища на сервер для подключения обработки
ИмяВнешнейОбработки = ПодключитьВнешнююОбработкуНаСервере(Адрес);
// Этап 4. Откроем форму подключенной внешней обработки
ОткрытьФорму(«ВнешняяОбработка.» + ИмяВнешнейОбработки + «.Форма»);
КонецПроцедуры
&НаСервере
Функция ПодключитьВнешнююОбработкуНаСервере(АдресХранилища)
// Этап 3. Подключение внешней обработки из временного хранилища
Возврат ВнешниеОбработки.Подключить(АдресХранилища);
КонецФункции
Для передачи файлов с клиента на сервер (и наоборот) предназначено временное хранилище. Помещение файла во временное хранилище осуществляется методом
НачатьПомещениеФайла(<ОписаниеОповещенияОЗавершении>, <Адрес>, <НачальноеИмяФайла>, <Интерактивно>, <УникальныйИдентификаторФормы>)
После успешного помещения файла во временное хранилище происходит передача управления в процедуру, указанную в описании оповещения (параметр <ОписаниеОповещенияОЗавершении>).
Далее вызывается серверная процедура ПодключитьВнешнююОбработкуНаСервере(), в которой осуществляется подключение внешней обработки функцией Подключить() менеджера внешних обработок. В первом параметре содержится адрес временного хранилища с внешней обработкой. Функция возвращает имя подключенной внешней обработки, по которому к ней можно будет обращаться.
Заключительным этапом осуществляется открытие внешней обработки методом ОткрытьФорму().
Данный код будет отрабатывать без ошибок даже в том случае, если у пользователя нет прав на открытие внешних обработок.
В представленном примере внешняя обработка должна храниться по фиксированному пути и иметь определенное имя: «D:МояОбработка.epf». Для предоставления пользователю возможности интерактивно выбрать внешнюю обработку необходимо немного доработать код:
НачатьПомещениеФайла(ОписаниеОповещения, , , Истина);
Программное открытие внешнего отчета
Алгоритм программного открытия формы внешнего отчета идентичен открытию формы внешней обработки. Отличие заключается в том, что для подключения отчета необходимо использовать тип ВнешниеОтчетыМенеджер вместо типа ВнешниеОбработкиМенеджер.
Рассмотрим пример. Открытие отчета производится при нажатии на кнопку (процедура КомандаОткрытьВнешнийОтчет()):
&НаКлиенте
Процедура КомандаОткрытьВнешнийОтчет(Команда)
// Создание описания оповещения. В указанную процедуру будет передано управление после помещения файла во временное хранилище
ОписаниеОповещения = Новый ОписаниеОповещения(«ПоместитьФайлВХранилищеЗавершение», ЭтотОбъект);
// Этап 1. Помещение отчета во временное хранилище
НачатьПомещениеФайла(ОписаниеОповещения, , «D:МойОтчет.erf», Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПоместитьФайлВХранилищеЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
// Этап2. Передача адреса временного хранилища на сервер для подключения обработки
ИмяВнешнегоОтчета = ПодключитьВнешнийОтчетНаСервере(Адрес);
// Этап 4. Откроем форму подключенной внешней обработки
ОткрытьФорму(«ВнешнийОтчет.» + ИмяВнешнегоОтчета + «.Форма»);
КонецПроцедуры
&НаСервере
Функция ПодключитьВнешнийОтчетНаСервере(АдресХранилища)
// Этап 3. Подключение внешней обработки из временного хранилища
Возврат ВнешниеОтчеты.Подключить(АдресХранилища);
КонецФункции