Программно создать объект обработки

В версии 8.2 приложение не работает непосредственно с локальными файлами, расположенными на компьютере. Файлы должны находиться на сервере.

Поэтому для открытия внешней обработки нужно выполнить следующую последовательность действий:

  • Передать файл внешней обработки на сервер
  • Подключить внешнюю обработку
  • Открыть форму внешней обработки

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

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

При вызове метода ПоместитьФайл() первым его параметром, АдресХранилища , мы указываем пустую строку. После выполнения метода в нее будет помещен путь к файлу внешней обработки во временном хранилище. Этот путь мы используем для того, чтобы подключить внешнюю обработку.

Подключение внешней обработки выполняется на сервере методом Подключить() менеджера внешних обработок. В качестве параметра ему передается путь к файлу внешней обработки во временном хранилище — АдресХранилища . Возвращает этот метод имя подключенной внешней обработки, — ИмяОбработки , — которое мы используем для того, чтобы открыть форму этой обработки.

Для открытия формы внешней обработки используется метод глобального контекста ОткрытьФорму() , в который передается имя формы в виде следующей строки: "ВнешняяОбработка."+ ИмяОбработки +".Форма" . В приведенном варианте открывается основная форма обработки. Можно открыть также и неосновную форму обработки — об этом рассказывается в вопросе Как получить неосновную форму обработки?.

Читайте также  Сколько весит винда 7 на флешку

При работе в внешними обработками нужно учитывать, что по-умолчанию они запускаются в безопасном режиме исполнения программного кода. Это значит, что некоторые возможности встроенного языка будут для них недоступны. Если есть уверенность, что внешняя обработка не содержит вредоносного кода, ее можно подключить в обычном режиме исполнения программного кода. Для этого используется третий параметр метода Подключить() менеджера внешних обработок.

Подробнее о режиме безопасного исполнения программного кода можно прочитать в документации: 1С:Предприятие 8.2. Руководство разработчика , Раздел 5.5.4.3: Объекты конфигурации — Ветвь конфигурации «Общие» — Роли и права доступа — Безопасный режим работы .

Подробнее об использовании метода ПоместитьФайл() можно прочитать в синтакс-помощнике: Глобальный контекст — Процедуры и функции работы с файлами.

Подробнее об использовании метода Подключить() можно прочитать в синтакс-помощнике: Прикладные объекты — Внешние обработки и отчеты — ВнешниеОбработкиМенеджер — Методы.

Для работы с внешними обработками (а внешняя печатная форма тоже является внешней обработкой) существует объект ВнешниеОбработки.

Рассмотрим два возможных случая:

Внешняя обработка хранится на диске отдельно от информационной базы

Для программного открытия внешней обработки в 1С нужно знать адрес ее файла. Зная его, можно либо открыть форму обработки, либо получить объект обработки для проведения с ним дальнейших действий (например, для вызова экспортных функций из модуля объекта).

Открытие формы внешней обработки

Для программного открытия формы внешней обработки в 1С используется функция ПолучитьФорму() объекта ВнешниеОбработки. Функция имеет несколько параметров. Рассмотрим простое открытие основной формы обработки:

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

Открытие внешней обработки как объекта

Для того чтобы получить внешнюю обработку как объект используется функция Создать() объекта ВнешниеОбработки.

По умолчанию все обработки открываются в безопасном режиме. Чтобы его отключить, используются следующие параметры:

Читайте также  Самые красивые значки стим

Внешняя обработка или печатная форма сохранена в информационной базе

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

Для открытия внешней обработки нужно:

  1. Получить ее из хранилища.
  2. Сохранить файл с обработкой на диск.
  3. Открыть форму или получить объект обработки.
  4. Если мы имеем дело с внешней печатной формой, то можно заполнить стандартный реквизит СсылкаНаОбъект и вызвать экспортную функцию Печать.

//В переменной СпрСсылка находится ссылка на элемент справочника ВнешниеОбработки
ДвДанные = СпрСсылка . ХранилищеВнешнейОбработки . Получить ( ) ;
АдресФайла = ПолучитьИмяВременногоФайла ( ) ;
ДвДанные . Записать ( АдресФайла ) ;
ОбъектОбработки = ВнешниеОбработки . Создать ( АдресФайла , Ложь ) ;

//Для внешней печатной формы. СсылкаНаОбъект содержит ссылку на элемент, которому принадлежит печатная форма

ОбъектОбработки . СсылкаНаОбъект = СсылкаНаОбъект ;
ТабДок = ОбъектОбработки . Печать ( ) ;

Просто открыть форму обработки можно так:
Код 1C v 8.2 УП

А вот открыть форму обработки с передачей параметров:

А в форме обработки, которую открыли, эта ссылка будет доступна через коллекцию "Параметры".
Т.е. так: Код 1C v 8.2 УП

В обработчике ПриСозданииНаСервере() можно проверить наличие переданных параметров с помощью
Код 1C v 8.2 УП

Внимание! : Параметры формы доступны только в событии формы "ПриСозданииНаСервере". Т.е. в других процедурах ты с этой ссылкой работать не получится!

Тут два варианта:
1) Создать реквизит формы, допустим, с именем "СсылкаНаДокумент". И в событии "ПриСозданииНаСервере" заполнить этот реквизит.
Код 1C v 8.2 УП
И дальше уже работать с ним.

2) Создать не реквизит формы, а параметр (закладка "Параметры" — там же рядом с закладками "Реквизиты" и "Команды"). Назвать его надо будет так же, как ключ структуры, используемый в коде открытия формы (в моем примере — "ДокСсылка"). И в свойствах этого параметра установить флаг "Ключевой параметр". Тогда к этому параметру можно будет обращаться так, как я писал выше — Параметры.ДокСсылка
Но уже не только в событии "ПриСозданииНаСервере", а в любой процедуре модуля формы.

Ссылка на основную публикацию
Adblock
detector