Загрузка файла в хранилище значения на управляемых формах

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

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

Рассмотрим пример работы с этой процедурой.

Во-первых, нам понадобится реквизит управляемой формы АдресВХранилище. Туда будет записан адрес файла во временном хранилище. Этот реквизит мы сможем прочитать и на клиенте, и на сервере.

Загрузка файла в хранилище значения на управляемых формах

После этого создаем кнопку, команду и процедуру НаКлиенте, которую вызывает эта кнопка (кнопку можно заменить на другой элемент управления).  В процедуре размещаем следующий код:

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

И, наконец, начинаем помещение файла на сервер. При этом вызывается диалоговое окно выбора файла с теми параметрами, которые мы указали.

Теперь создадим процедуру, которую будем вызывать после завершения помещения файла во временное хранилище:

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

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

Теперь осталось только перед записью объекта получить файл из временного хранилища и поместить его в реквизит с типом ХранилищеЗначения.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *