|
|||||||
Программно открыть внешнюю обработку
Время создания: 13.09.2016 19:46
Автор: its
Текстовые метки: 1c.client_server
Раздел: Программирование - 1с - client-server
Запись: xintrea/mytetra_anatolean/raw/master/base/1473785165bhhbsikk6w/text.html на bitbucket.org
|
|||||||
|
|||||||
В версии 8.2 приложение не работает непосредственно с локальными файлами, расположенными на компьютере. Файлы должны находиться на сервере. Поэтому для открытия внешней обработки нужно выполнить следующую последовательность действий:
Чтобы передать файл на сервер, его нужно поместить во временное хранилище. Для этого сначала на клиенте, в обработчике команды открытия внешней обработки, методом глобального контекстаПоместитьФайл() мы помещаем файл из локальной файловой системы во временное хранилище. В четвертом параметре этого метода указывается признак интерактивного режима выбора файла внешней обработки. Если этот параметр Истина, то появляется диалог выбора файла, в котором можно выбрать файл для помещения в хранилище. В нашем примере этот параметр - Ложь, а путь к файлу, данные из которого будут помещены во временное хранилище, явно задан во втором параметре метода. При вызове метода ПоместитьФайл() первым его параметром, АдресХранилища, мы указываем пустую строку. После выполнения метода в нее будет помещен путь к файлу внешней обработки во временном хранилище. Этот путь мы используем для того, чтобы подключить внешнюю обработку. Подключение внешней обработки выполняется на сервере методом Подключить() менеджера внешних обработок. В качестве параметра ему передается путь к файлу внешней обработки во временном хранилище - АдресХранилища. Возвращает этот метод имя подключенной внешней обработки, - ИмяОбработки, - которое мы используем для того, чтобы открыть форму этой обработки. Для открытия формы внешней обработки используется метод глобального контекста ОткрытьФорму(), в который передается имя формы в виде следующей строки: "ВнешняяОбработка."+ ИмяОбработки +".Форма". В приведенном варианте открывается основная форма обработки. Можно открыть также и неосновную форму обработки - об этом рассказывается ниже. &НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) //Помещаем обработку во временном хранилище АдресХранилища = ""; Результат = ПоместитьФайл(АдресХранилища, "C:\ВнешняяОбработка.epf", , Ложь); ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);
// Откроем форму подключенной внешней обработки ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма"); КонецПроцедуры &НаСервере Функция ПодключитьВнешнююОбработку(АдресХранилища) Возврат ВнешниеОбработки.Подключить(АдресХранилища); КонецФункции При работе в внешними обработками нужно учитывать, что по-умолчанию они запускаются в безопасном режиме исполнения программного кода. Это значит, что некоторые возможности встроенного языка будут для них недоступны. Если есть уверенность, что внешняя обработка не содержит вредоносного кода, ее можно подключить в обычном режиме исполнения программного кода. Для этого используется третий параметр метода Подключить() менеджера внешних обработок. Подробнее о режиме безопасного исполнения программного кода можно прочитать в документации: 1С:Предприятие 8.2. Руководство разработчика, Раздел 5.5.4.3: Объекты конфигурации - Ветвь конфигурации «Общие» - Роли и права доступа - Безопасный режим работы. Подробнее об использовании метода ПоместитьФайл() можно прочитать в синтакс-помощнике: Глобальный контекст - Процедуры и функции работы с файлами. Подробнее об использовании метода Подключить() можно прочитать в синтакс-помощнике: Прикладные объекты - Внешние обработки и отчеты - ВнешниеОбработкиМенеджер - Методы. Как получить неосновную форму обработки? Чтобы во встроенном языке получить форму объекта конфигурации можно использовать метод глобального контекста ПолучитьФорму(). Первым параметром в этот метод передается Имя формы. Оно может быть представлено двумя способами:
Таким образом чтобы получить форму, не назначенную основной для обработки, можно использовать первый способ и явно указывать имя нужной формы: Копировать в буфер обмена ФормаОбработки = ПолучитьФорму("Обработка.РасчетДанных.Форма.Форма2"); В данном примере получается форма с именем Форма2 для обработки РасчетДанных. Если же нужно получить ту форму, которая назначена основной формой обработки, можно использовать второй способ: Копировать в буфер обмена ОсновнаяФормаОбработки = ПолучитьФорму("Обработка.РасчетДанных.Форма"); Подробнее об использовании метода ПолучитьФорму() можно прочитать в синтакс-помощнике: Глобальный контекст - Процедуры и функции интерактивной работы. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|