Мы часто пользуемся протоколом FTP при передаче файлов или загрузке страниц интернета. В системах 1С тоже достаточно часто используется этот механизм для обмена данными с другими приложениями или между конфигурациями. На практике вы не раз столкнетесь с необходимостью воспользоваться заложенными в платформе 1С 8.3 механизмами работы с FTP. К этому необходимо быть готовым и знать основные приемы и принципы.
Заложенные в платформу объекты для FTP
Для того чтобы работать с протоколом FTP в технологическую платформу уже заложены некоторые инструменты. Они доступны в любой конфигурации, если версия вашей платформы 8.3 и выше. Рассмотреть их подробнее, узнать их методы и возможности вы сможете с помощью синтакс-помощника, нажав клавиши CTRL + F1 в конфигураторе. Вот эти объекты:
- FTPСоединение. Предназначен для соединения с серверами и выполнения основных действий – отправке данных через FTP;
- FTPФайл. Получает информацию о структуре каталогов и файлов на сервере, но не позволяет читать содержимое или производить запись. Дает доступ к информации о реквизитах:
- Имя;
- Путь;
- Расширение;
- Размер и прочее.
- ИнтернетПрокси – объект предназначен для настройки параметров соединения с сервером FTP через прокси;
- ЗащищенноеСоединениеOpenSSL – создает специальное соединение по FTP с использованием сертификата для большей безопасности.
Перед тем как производить какие-либо действия с файлами, нам необходимо осуществить подключение к FTP-серверу или ресурсу в интернете. Для этого нам нужно узнать адрес, логин и пароль, под которыми можно зайти на ресурс, и рабочий каталог. По умолчанию объект FTPСоединение использует 21 порт для FTP и 990 для защищенных FTPS. Если у вас используются другие порты – придется их указывать вручную.
Адрес= "172.16.83.22";
Логин = "administrator ";
Пароль = "pass123";
Каталог = "\testFTPConnect";
FTPСоединение = Новый FTPСоединение(Адрес,,Логин,Пароль);
По результатам выполнения этого кода должно произойти подключение 1С к указанному ресурсу. Зачастую на этом моменте появляется проблема с тем, что программа долго подключается к FTP серверу. С большой долей вероятности решить эту проблему поможет попытка запустить соединение в пассивном режиме. Для этого в момент создания объекта FTPСоединение задать параметр № 6 в значение «Истина».
FTPСоединение = Новый FTPСоединение(Адрес,,Логин,Пароль,,Истина);
Работа с файлами на FTP сервере
После того как FTP соединение установлено, мы можем работать с файлами на удаленном ресурсе из 1С. Перед тем как что-то добавлять или удалять, необходимо посмотреть, какие файлы уже существуют на FTP-сервере. В этом нам поможет метод «НайтиФайлы», который помещает все найденные файлы в общий массив. После этого нам останется только обойти в цикле все элементы на FTP-сервере через 1С:
ФайлыНаРесурсе = FTPСоединение.НайтиФайлы("/");
Для каждого ФайлНаСервере из ФайлыНаРесурсе цикл
// требуемые действия с файлами
КонецЦикла;
Перенести файл с локального компьютера, на котором запущена программа 1С, через FTP на сервер можно несколькими путями. Также вы можете создавать на ресурсе и новые файлы, формируя их программно – этот вариант отлично подойдет для ведения логов. Простые примеры алгоритма выгрузки данных из 1С на FTP создания файлов на сервере:
- Перенос уже существующего файла:
ФайлСЛокальногоПК = «D:\test1.txt»;
Connect.Записать(ФайлСЛокальногоПК, «test1.txt»);
- Создание файла и его запись через FTP:
НовыйДокументFTP = Новый ТекстовыйДокумент;
НовыйДокументFTP.ДобавитьСтроку(«Тестируем создание файла»);
ВременныйФайлFTP = ПолучитьИмяВременногоФайла(«txt»);
НовыйДокументFTP.Записать(ВременныйФайлFTP);
FTPСоединение.Записать(ВременныйФайлFTP, «test1.txt»);
После того как выяснили, как отправить файл через FTP, займемся обратным алгоритмом. Чтобы скачать на свой компьютер файл с сервера, можно воспользоваться следующим алгоритмом:
- Сформировать имя временного файла;
ВременноеХранДляФайла = ПолучитьИмяВременногоФайла(«txt»);
- Считать данные из файла на сервере во временный файл;
FTPСоединение.Получить(«test.txt»,ВременноеХранДляФайла);
- Записать считанные данные в текстовый документ в нужное место;
НовыйТекстДокумент = Новый ТекстовыйДокумент; НовыйТекстДокумент.Прочитать(ВременноеХранДляФайла,«windows-1251»); НовыйТекстДокумент.Записать(«C:\textFTP.txt»);
Также необходимо знать, как работать с каталогами на сервере через FTP. Существуют следующие основные операции:
- Получение текущей папки:
Сообщить(FTPСоединение.ТекущийКаталог());
- Создание папки:
FTPСоединение.СоздатьКаталог(«/1/new»);
- Открытие нужного нам пути:
FTPСоединение.УстановитьТекущийКаталог(«/1/new»);
- Переименование папки или перемещение файла. Для последнего необходимо прописать путь вместе с именем и расширением файла:
FTPСоединение.Переместить(«/1/new», «/1/new1»)
FTPСоединение.Переместить(«/1/new1/ NewFile1.txt», «/1/old/NewFile1.txt»)
- Удаление каталога:
FTPСоединение.Удалить(«/1/old»);
- Аналогично удаляются и файлы:
FTPСоединение.Удалить(«/1/ new/ NewFile2.txt»);
В платформе 8.3 существуют все возможности, чтобы организовать обмен данными через FTP прямо из 1С. Помните, что для стабильной работы правильно написанного кода в 1С мало. Необходим доступ к серверу и настройка прав для учетной записи, от которой запускают 1С. После этих действий ничего не помешает вам настроить синхронизацию данных 1С через FTP-протокол.
консультация эксперта
самые свежие новости 1 раз в месяц