Получение файла с сервера в 1С 8.3

Курс

Получение файла с сервера

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

В процедуре, которая будет вызвана после получения файла первым параметром будет объект типа ОписаниеПереданногоФайла. Свойство ПолноеИмя данного объекта будет содержать полный путь к файлу на клиенте, куда он был записан. Этот путь будет совпадать с третьим параметром метода НачатьПолучениеФайлаССервера.

Получение файла с диалогом выбора

Можно предоставить пользователю самому выбрать куда записать файл через диалог выбора файла. Для этого первым параметром нужно передать адрес файла во временном хранилище. Вторым нужно указать имя файла, под которым будет предложено записать файл, только имя, без полного пути. При необходимости пользователь может изменить его. Третьим параметром нужно передать объект ПараметрыДиалогаПолученияФайлов. Данный объект похож на объект ДиалогВыбораФайла, но имеет только 3 свойства:

  • Заголовок — заголовок диалогового окна.
  • Каталог — каталог по умолчанию, в котором будет предложено сохранить файл.
  • ВыборКаталога — если данный параметр равен Истина, то будет предложено выбрать каталог, а не файл.

В результате пользователю будет предложено или открыть или сохранить файл:

Если выбрать Сохранить, то будет предложено выбрать путь к файлу, куда он должен быть записан:

Если выбрать Открыть, то файл будет открыт приложением, которое ассоциировано с данным типом файла. Приложение определяется по расширению файла. При этом файл не будет записан на диск.

Если второй параметр с именем файла не был указан:

То можно будет только сохранить файл на диск:

Можно не указывать последний параметр с объектом ПараметрыДиалогаПолученияФайлов, диалог все равно будет открыт:

Получение файла из базы данных

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

В данном реквизите хранятся двоичные данные файла.

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

Асинхронный метод через обещание

Есть аналогичный асинхронный метод ПолучитьФайлССервераАсинх, который вместо описания оповещения использует обещание. В этом случае не нужно в параметрах передавать описание оповещения, а обещание вернет объект ОписаниеПереданногоФайла (в случае использования диалога вернет Неопределено):

Получение сразу нескольких файлов

Если нужно за один раз получить с сервера сразу несколько файлов, то можно воспользоваться методом НачатьПолучениеФайловССервера. Первым параметром нужно передать описание оповещения с именем процедуры, которая будет вызвана после получения файлов. Вторым нужно указать массив объектов ОписаниеПередаваемогоФайла. Данный объект имеет 2 свойства:

  • Имя — может быть как полный путь к файлу, так и только имя файла, с которым файл должен быть записан на клиента.
  • Хранение — адрес файла во временном хранилище или навигационная ссылка на реквизит объекта.

Третьим параметром нужно указать путь к каталогу на клиенте, в который будут записаны все файлы.

Можно в объекте ОписаниеПередаваемогоФайла в свойстве Имя указать полный путь к файлу. В этом случае параметр Каталог можно не указывать. Даже если он будет указан, то он будет проигнорирован.

У данного метода тоже есть вариант с диалогом выбора файла. В этом случае у объекта ПараметрыДиалогаПолученияФайлов свойство ВыборКаталога должно быть равно Истина. В диалоге нужно будет выбрать каталог, куда будут записаны файлы. Имена файлов будут получены из объектов ОписаниеПередаваемогоФайла:

Архивирование полученных файлов

Полученные с сервера файлы можно сразу поместить в архив. Для этого параметром нужно передать объект ПараметрыПолученияАрхиваФайлов. У данного объекта нужно в свойстве ИмяАрхива указать имя архива:

В результате файлы будут получены с сервера, помещены в архив Архив.zip, а архив будет записан на диск клиента в выбранный пользователем каталог.

Архив формируется на сервере. Сначала все файлы будут помещены во временный каталог сервера, заархивированы и архив будет передан на клиента.

Если у объекта ОписаниеПередаваемогоФайла в свойстве Имя был указан путь к файлу, а не просто имя, то в архиве будет воссоздана структура каталогов.

ПолучитьФайлыССервераАсинх

У метода НачатьПолучениеФайловССервера тоже есть асинхронный аналог через обещание — ПолучитьФайлыССервераАсинх:

Служебные объекты

Рассмотрим служебные объекты, которые используются при получении файлов с сервера.

ПараметрыДиалогаПолученияФайлов

Объект ПараметрыДиалогаПолученияФайлов используется для описания параметров диалогового окна, с помощью которого пользователь может выбрать путь на диске, куда будут записаны полученные файлы.

Данный объект имеет следующие свойства:

  • Заголовок
  • Каталог
  • ВыборКаталога

Данные свойства аналогичны свойствам объекта ДиалогВыбораФайла. Свойство ВыборКаталога имеет тип Булево и определяет что нужно будет выбрать: Истина — нужно выбрать каталог, куда будут записаны все файлы; Ложь — нужно выбрать путь к одному файлу.

Для метода НачатьПолучениеФайловССервера свойство ВыборКаталога должно быть равно Истина, иначе придется выбирать путь для каждого полученного с сервера файла.

ОписаниеПереданногоФайла

Объект ОписаниеПереданногоФайла содержит описание файла, который был получен с сервера. Можно сказать, что он является результатом для методов НачатьПолучениеФайлаССервера и НачатьПолучениеФайловССервера (во втором случае это будет массив объектов ОписаниеПереданногоФайла).

Данный объект имеет следующие свойства:

  • Имя — имя файла на клиенте без полного пути.
  • ПолноеИмя — полный путь к файлу на клиенте.
  • Хранение — адрес временного хранилища, где хранится файл.
  • Идентификатор — уникальный идентификатор файла.

ОписаниеПередаваемогоФайла

Объект ОписаниеПередаваемогоФайла используется для описания одного из файлов для метода НачатьПолучениеФайловССервера.

Данный объект имеет 2 свойства:

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

Затем массив таких объектов передается в метод НачатьПолучениеФайловССервера.

ПараметрыПолученияАрхиваФайлов

Объект ПараметрыПолученияАрхиваФайлов используется для описания настроек архивирования полученных с сервера файлов. Если данный объект указан одним из параметров метода НачатьПолучениеФайловССервера, то все полученные файлы будут помещены в архив.

Объект имеет 2 свойства:

  • ИмяАрхива — имя полученного архива без полного пути.
  • Режим — данная настройка используется только для веб-клиента.

Синхронные методы

Все выше рассмотренные методы являются асинхронными. Также есть аналогичные синхронные методы: ПолучитьФайл и ПолучитьФайлы. Данные методы считаются устаревшими, поэтому не будем их рассматривать. Методу ПолучитьФайлы на замену пришел метод НачатьПолучениеФайлов, но и он теперь считается устаревшим.


Подписывайтесь на группу ВКонтакте , где я публикую ссылки на новые статьи с данного сайта, а также интересные материалы с других ресурсов по программированию в 1С
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Используя этот сайт, Вы даете согласие на использование cookies. На данном этапе Вы можете отказаться от использования cookies, настроив необходимые параметры в своем браузере.
ok