1С 8.3 FTP
Данные > Примеры кода 1С > 1С 8.3 FTP
В 1С 8.3 FTP используется для организации обмены файлами между компьютерами по локальной сети и интернету. FTP-сервер - это сервер, работающий по протоколу передачи файлов File Transfer Protocol (семейство TCP/IP), который часто используется разными клиентами и программами, в том числе и 1С 8.3 для выгрузки файлов для интернет-магазинов, корпоративных сайтов, прайс-листов, обмена документов, хранения архивов. Главная особенность протокола FTP в том, что он использует множественное (как минимум - двойное) подключение.
Отличие FTP от HTTP:
- Основан на сессиях работы
- Встроена аутентификация пользователей
- Изначально предусмотрен для передачи
- Модель соединения - двойное подключение
- Поддерживает текстовый и двоичный режимы передачи
- Поддерживает операции над файловой системой
Оглавление:
Подключение к FTP серверу в 1С 8.3:
&НаСервере
Функция ПодключениеКFTPСерверу()
// Параметры: IP-адрес, порт, имя, пароль, прокси, пассивный режим, таймаут, незащищенное соединение
FTPСоединение = Новый FTPСоединение("192.168.1.100", 21, "user", "123", Неопределено, Истина, 0, Неопределено);
// Если у ftp сервера нет возможности обращаться к нам - следует использовать пассивный режим работы.
Возврат FTPСоединение;
КонецФункции
Функция ПодключениеКFTPСерверу()
// Параметры: IP-адрес, порт, имя, пароль, прокси, пассивный режим, таймаут, незащищенное соединение
FTPСоединение = Новый FTPСоединение("192.168.1.100", 21, "user", "123", Неопределено, Истина, 0, Неопределено);
// Если у ftp сервера нет возможности обращаться к нам - следует использовать пассивный режим работы.
Возврат FTPСоединение;
КонецФункции
Поиск файлов по FTP в 1С 8.3:
&НаСервере
Процедура ПоискФайловПоFTP(Команда)
FTPСоединение = ПодключениеКFTPСерверу();// См.выше
FTPСоединение.УстановитьТекущийКаталог("/");
// Поиск файла по его полному адресу (используются прямые слеши!)
Файлы = FTPСоединение.НайтиФайлы("/BACKUP/05_04_2020.xml");
Если Файлы.Количество() > 0 Тогда
Файл = Файлы[0];
// Получение информации о файле:
Сообщить("Имя файла: " + Файл.ПолноеИмя);
Сообщить("Это файл: " + Файл.ЭтоФайл());
Сообщить("Это каталог: " + Файл.ЭтоКаталог());
Сообщить("Размер файла/каталога: " + Файл.Размер() + " байт");
Сообщить("...только чтение: " + Файл.ПолучитьТолькоЧтение());
Сообщить("...скрытый: " + Файл.ПолучитьНевидимость());
Сообщить("...время изменения: " + Файл.ПолучитьВремяИзменения());
КонецЕсли;
// Поиск папок и файлов в корневом каталоге
// Параметры: Каталог поиска "/"-корень, любые файлы (можно задать маску *)
Файлы = FTPСоединение.НайтиФайлы("/", "*");
Для Каждого Файл Из Файлы Цикл
Сообщить(Файл.ПолноеИмя);// Показ всех файлов в цикле
КонецЦикла;
// Поиск файлов с расширением .xml в папке BACKUP
Файлы = FTPСоединение.НайтиФайлы("/BACKUP","*.xml");
КонецПроцедуры
Процедура ПоискФайловПоFTP(Команда)
FTPСоединение = ПодключениеКFTPСерверу();// См.выше
FTPСоединение.УстановитьТекущийКаталог("/");
// Поиск файла по его полному адресу (используются прямые слеши!)
Файлы = FTPСоединение.НайтиФайлы("/BACKUP/05_04_2020.xml");
Если Файлы.Количество() > 0 Тогда
Файл = Файлы[0];
// Получение информации о файле:
Сообщить("Имя файла: " + Файл.ПолноеИмя);
Сообщить("Это файл: " + Файл.ЭтоФайл());
Сообщить("Это каталог: " + Файл.ЭтоКаталог());
Сообщить("Размер файла/каталога: " + Файл.Размер() + " байт");
Сообщить("...только чтение: " + Файл.ПолучитьТолькоЧтение());
Сообщить("...скрытый: " + Файл.ПолучитьНевидимость());
Сообщить("...время изменения: " + Файл.ПолучитьВремяИзменения());
КонецЕсли;
// Поиск папок и файлов в корневом каталоге
// Параметры: Каталог поиска "/"-корень, любые файлы (можно задать маску *)
Файлы = FTPСоединение.НайтиФайлы("/", "*");
Для Каждого Файл Из Файлы Цикл
Сообщить(Файл.ПолноеИмя);// Показ всех файлов в цикле
КонецЦикла;
// Поиск файлов с расширением .xml в папке BACKUP
Файлы = FTPСоединение.НайтиФайлы("/BACKUP","*.xml");
КонецПроцедуры
Скачивание файлов по FTP в 1С 8.3:
&НаСервере
Процедура СкачиваниеФайловПоFTP(Команда)
FTPСоединение = ПодключениеКFTPСерверу();// См.выше
FTPСоединение.УстановитьТекущийКаталог("/");
// Внимание: Используются прямые слеши!
ОткудаЧтоКачаем="BACKUP/05_04_2020.xml";
КудаЧтоКачаем=КаталогДокументов() + "/05_04_2020.xml";
FTPСоединение.Получить(ОткудаЧтоКачаем, КудаЧтоКачаем);
Сообщить("Файл скачан с FTP и сохранен в " + КудаЧтоКачаем);
КонецПроцедуры
Процедура СкачиваниеФайловПоFTP(Команда)
FTPСоединение = ПодключениеКFTPСерверу();// См.выше
FTPСоединение.УстановитьТекущийКаталог("/");
// Внимание: Используются прямые слеши!
ОткудаЧтоКачаем="BACKUP/05_04_2020.xml";
КудаЧтоКачаем=КаталогДокументов() + "/05_04_2020.xml";
FTPСоединение.Получить(ОткудаЧтоКачаем, КудаЧтоКачаем);
Сообщить("Файл скачан с FTP и сохранен в " + КудаЧтоКачаем);
КонецПроцедуры
Передача файлов по FTP в 1С 8.3:
&НаСервере
Процедура ПередачаФайловПоFTP(Команда)
FTPСоединение = ПодключениеКFTPСерверу();// См.выше
FTPСоединение.УстановитьТекущийКаталог("/");
// Создание файла
ТекстФайл = Новый ТекстовыйДокумент;
ТекстФайл.УстановитьТекст("Тестирование работы с FTP");
ТекстФайл.Записать(КаталогДокументов() + "\Test_05_04_2020.txt",КодировкаТекста.UTF8);
// Внимание: Используются прямые слеши!
ОткудаЧтоКачаем=КаталогДокументов() + "/Test_05_04_2020.txt";
КудаЧтоКачаем="BACKUP/Test_05_04_2020.txt";
FTPСоединение.Записать(ОткудаЧтоКачаем, КудаЧтоКачаем);
Сообщить("Файл загружен на FTP и сохранен в " + КудаЧтоКачаем);
КонецПроцедуры
Процедура ПередачаФайловПоFTP(Команда)
FTPСоединение = ПодключениеКFTPСерверу();// См.выше
FTPСоединение.УстановитьТекущийКаталог("/");
// Создание файла
ТекстФайл = Новый ТекстовыйДокумент;
ТекстФайл.УстановитьТекст("Тестирование работы с FTP");
ТекстФайл.Записать(КаталогДокументов() + "\Test_05_04_2020.txt",КодировкаТекста.UTF8);
// Внимание: Используются прямые слеши!
ОткудаЧтоКачаем=КаталогДокументов() + "/Test_05_04_2020.txt";
КудаЧтоКачаем="BACKUP/Test_05_04_2020.txt";
FTPСоединение.Записать(ОткудаЧтоКачаем, КудаЧтоКачаем);
Сообщить("Файл загружен на FTP и сохранен в " + КудаЧтоКачаем);
КонецПроцедуры
Выгрузка файлов по FTP в 1С 8.3:
&НаСервере
Процедура ВыгрузкаФайловПоFTP(Команда)
// Параметры соединения;
СерверFTP = "192.168.1.100";
ПортFTP = 21;
ИмяПользователяFTP = "user";
ПарольПользователяFTP = "123";
FTP_Cоединение = Новый FTPСоединение(СерверFTP, ПортFTP, ИмяПользователяFTP, ПарольПользователяFTP,,, 20);
Попытка
FTP_Cоединение.УстановитьТекущийКаталог(".");//строковый параметр означает корневой каталог, можно указать папку "\НазваниеПапки";
// Отсюда сайт подгружает данные:
FTP_Cоединение.Записать(КаталогДокументов(), "Test_05_04_2020.txt"); //второй параметр, название файла с расширением .txt, .csv, .xml
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ".txt файл, находящийся в каталоге: " + КаталогДокументов() + " был успешно загружен на FTP сервер!";
Сообщение.Сообщить();
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось подключиться к FTP_серверу! Описание ошибки: " + ОписаниеОшибки();
Сообщение.Сообщить();
КонецПопытки;
КонецПроцедуры
Процедура ВыгрузкаФайловПоFTP(Команда)
// Параметры соединения;
СерверFTP = "192.168.1.100";
ПортFTP = 21;
ИмяПользователяFTP = "user";
ПарольПользователяFTP = "123";
FTP_Cоединение = Новый FTPСоединение(СерверFTP, ПортFTP, ИмяПользователяFTP, ПарольПользователяFTP,,, 20);
Попытка
FTP_Cоединение.УстановитьТекущийКаталог(".");//строковый параметр означает корневой каталог, можно указать папку "\НазваниеПапки";
// Отсюда сайт подгружает данные:
FTP_Cоединение.Записать(КаталогДокументов(), "Test_05_04_2020.txt"); //второй параметр, название файла с расширением .txt, .csv, .xml
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ".txt файл, находящийся в каталоге: " + КаталогДокументов() + " был успешно загружен на FTP сервер!";
Сообщение.Сообщить();
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось подключиться к FTP_серверу! Описание ошибки: " + ОписаниеОшибки();
Сообщение.Сообщить();
КонецПопытки;
КонецПроцедуры
Прочие функции FTP сервера в 1С 8.3:
&НаСервере
Процедура ПрочиеФункцииFTPСервера(Команда)
FTPСоединение = ПодключениеКFTPСерверу();// См.выше
FTPСоединение.УстановитьТекущийКаталог("/");
// Создание нового каталога по FTP
FTPСоединение.СоздатьКаталог("/Start");
// Удаление каталог по FTP (вместе с файлами)
FTPСоединение.Удалить("/BACKUP");
// Удаление одного файла по FTP (по его пути)
FTPСоединение.Удалить( "/BACKUP/Test_05_04_2020.xml");
// Удаление нескольких файлов по FTP (по маске)
FTPСоединение.Удалить("/BACKUP","*.txt");
// Переименование файла или каталога по FTP
// Параметры: Старое имя. Новое мия
FTPСоединение.Переместить("/Start","/Finish");
КонецПроцедуры
Процедура ПрочиеФункцииFTPСервера(Команда)
FTPСоединение = ПодключениеКFTPСерверу();// См.выше
FTPСоединение.УстановитьТекущийКаталог("/");
// Создание нового каталога по FTP
FTPСоединение.СоздатьКаталог("/Start");
// Удаление каталог по FTP (вместе с файлами)
FTPСоединение.Удалить("/BACKUP");
// Удаление одного файла по FTP (по его пути)
FTPСоединение.Удалить( "/BACKUP/Test_05_04_2020.xml");
// Удаление нескольких файлов по FTP (по маске)
FTPСоединение.Удалить("/BACKUP","*.txt");
// Переименование файла или каталога по FTP
// Параметры: Старое имя. Новое мия
FTPСоединение.Переместить("/Start","/Finish");
КонецПроцедуры
Работа с FTP через bat-файл (пример от Jоhn):
Доступ:
Для того чтобы обратиться к ftp через bat-файл дополнительно нужен txt-файл с описанием ftp.
Создание ftp.bat:
содержание bat - файла:
ftp -i -s:D:\commands.txt
Описание commands.txt для выгрузки на ftp:
open ftp.test.ru
пользователь
пароль
put D:\выгружаемый_файл.txt
quit
Описание commands.txt для загрузки c ftp:
open ftp.test.ru
пользователь
пароль
lcd D:\
get загружаемый_файл.txt
quit
// В этом случае загружаемый_файл.txt выгрузиться из корня ftp в корень диска D:\
Описание commands.txt для удаления всех файлов c ftp:
open ftp.test.ru
пользователь
пароль
mdelete *
quit
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник