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