Платформа 1С:Предприятие 8.x имеет в своем составе собственный FTP-клиент. Очень часто его используют для передачи файлов обмена между компьютерами по сети.
Сегодня в статье напишем небольшую обработку с функциями чтения списка файлов на FTP-сервере, а также загрузки и сохранения файлов.
Как уже говорилось ранее, обработка будет получать список файлов, а также загружать файлы на FTP-сервер и скачивать их.
Внешне форма обработки выглядит следующим образом:
Структура метаданных обработки следующая:
В табличной части "Файлы" записывается список файлов на FTP-сервере, а в реквизитах обработки вводится информация для аутентификации на FTP-сервере и его адрес. Перейдем к рассмотрению работы обработки.
Листинг команды получения списка файлов следующий:
Если FTPКлиент = Неопределено Тогда FTPКлиент = Новый FTPСоединение(Сервер, 21, Логин, Пароль, , , 30); КонецЕсли; Результат = FTPКлиент.НайтиФайлы("/", "*.*"); Файлы.Очистить(); Для Каждого Стр Из Результат Цикл НовСтр = Файлы.Добавить(); НовСтр.Файл = Стр.ПолноеИмя; КонецЦикла;
В конструктор FTP-соединения передаются введенные в реквизиты данные для соединения с FTP-сервером. Метод "НайтиФайлы" получает список файлов в заданном каталоге (первый параметры). Второй параметр - строка шаблона для поиска файлов.
Программный код достаточно простой:
Если FTPКлиент = Неопределено Тогда FTPКлиент = Новый FTPСоединение(Сервер, 21, Логин, Пароль, , , 30); КонецЕсли; Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.Заголовок = "Загрузка файла"; Если ДиалогОткрытияФайла.Выбрать() Тогда ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла; Иначе Текст = "Файл не выбран"; Предупреждение(Текст); Возврат; КонецЕсли; FTPКлиент.Записать(ПутьКФайлу, "/"+СтрЗаменить(ДиалогОткрытияФайла.ПолноеИмяФайла, ДиалогОткрытияФайла.Каталог, ""));
Выбирается файл на диске и с помощью метода "Записать" передается на сервер. Первый параметр - путь к файлу на диске, второй - имя файла на FTP-сервере.
Посмотрим программный код команды:
Если FTPКлиент = Неопределено Тогда FTPКлиент = Новый FTPСоединение(Сервер, 21, Логин, Пароль, , , 30); КонецЕсли; Режим = РежимДиалогаВыбораФайла.ВыборКаталога; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.ПолноеИмяФайла = ""; ДиалогОткрытияФайла.Заголовок = "Выберите каталог"; Если ДиалогОткрытияФайла.Выбрать() Тогда Каталог = ДиалогОткрытияФайла.Каталог; Иначе Текст = "Каталог не выбран"; Предупреждение(Текст); Возврат; КонецЕсли; FTPКлиент.Получить(ЭлементыФормы.Файлы.ТекущиеДанные.Файл, Каталог + СтрЗаменить(ЭлементыФормы.Файлы.ТекущиеДанные.Файл, "/", "\"));
Общий принцип тот же. Сначала пользователь выбирает путь сохранения файла, затем этот путь передается в метод "Получить" во второй параметр. В первом параметре указывается путь к файлу на FTP-сервере.
На этом задачу можно считать решенной. Обработку из примера Вы можете скачать по ссылке.