Работа с FTP в 1С 8.3 и 8.2 — примеры кода основных действий
FTP (англ. File Transfer Protocol — протокол передачи файлов) — стандартный протокол, предназначенный для передачи файлов по TCP-сетям (например, Интернет). FTP часто используется для загрузки сетевых страниц и других документов с частного устройства разработки на открытые сервера хостинга.
В 1С очень часто появляется потребность в работе со стандартным протоколом передачи файлов — FTP. Особенно актуален этот момент для обмена данными как с другими конфигурациями, так и другими системами. FTP часто используется для настройки обмена в 1С.
Ниже я рассмотрю основные методы работы с этим протоколом из 1С 8.3. Читайте также — статья по работе с обычной файловой системой ОС.
Содержание
Подключение к FTP из 1С
Рассмотрим работу 1С через FTP, для начала подключимся и авторизируемся, указываем каталог для работы на сервере с помощью объекта FTPСоединение:
АдресСайта = "1.1.1.1" ; Порт = 21; Логин = "login"; Пароль = "password"; ИмяКаталога = "/data/1c"; FTPСоединение = Новый FTPСоединение(АдресСайта,Порт,Логин,Пароль); FTPСоединение.УстановитьТекущийКаталог(ИмяКаталога);
Далее мы будем рассматривать методы уже созданного объекта — FTPСоединение.
Получение файла с FTP
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Допустим, дальше проверим наличие текстового файла, получим его с FTP и сохраним на диск:
Если FTPСоединение .НайтиФайлы("file.txt").Количество() = 0 тогда Возврат; КонецЕсли; ВременныйФайл = ПолучитьИмяВременногоФайла("txt"); FTPСоединение .Получить("file.txt",ВременныйФайл ); ТекстовыйДок = Новый ТекстовыйДокумент; ТекстовыйДок.Прочитать(ИмяФайла, "windows-1251"); ТекстовыйДок.Записать("C:\file.txt");
Запись файла на FTP из 1С 8
Рассмотрим другое действие — запись на файловый сервер :
ТекстовыйДок = Новый ТекстовыйДокумент; ТекстовыйДок.ДобавитьСтроку("тест); ВременныйФайл = ПолучитьИмяВременногоФайла( "txt"); ТекстовыйДок.Записать(ВременныйФайл); FTPСоединение .Записать(ВременныйФайл,"file.txt");
Переименование /перемещение файла на FTP
Можно использовать метод объекта в 1C — Переместить() для этих двух видов операции.
Переименование:
FTPСоединение .Переместить("text.txt","text_new.txt" );
Перемещение:
FTPСоединение .Переместить("/data/text.txt","/data/1c/text.txt" );
Удаление файла на FTP из 1С
Удаление — самая простая операция, делается очень легко:
FTPСоединение .Удалить("/data/text.txt" );
Другие статьи по конфигурированию 1С.
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
СПРОСИТЕ в комментариях!
Вадим:
Нестабильно работает FTPСоединение .Переместить(“/data/text.txt”,”/data/1c/text.txt” );…
То отрабатывает FTPСоединение.Переместить(Файл.ПолноеИмя, ДругойКаталог + Файл.Имя), то отрабатывает FTPСоединение.Переместить(ФТП.ТекущийКаталог() + Файл.Имя, ДругойКаталог + Файл.Имя)…
Теперь вдруг перестали оба метода работать..И даже Удалить(Файл.ПолноеИмя) не работает…
P.S. Где файл -FTPФайл.
Никита:
У меня тоже не получилось 🙁 в итоге сделал методом «Записать» и потом «удалить»
Кирилл:
Странно, неделю назад делал — всё отлично отрабатывало.
Jolaushi:
Как получить файлы на компьютер с ftp сервера если не текстовые файлы а архивы например?
Кирилл:
Используйте не «ТекстовыйДок = Новый ТекстовыйДокумент;»
А «Новый Файл», там похожий синтаксис.
Никита:
Указать тип его например: FTPСоединение.НайтиФайлы(Каталог,»*.zip») выбираем все файлы, первый файл с 0 по индексу.
Василий:
Проблема в доступе к нужной папке на ftp-сервере.
сервер = «31.170.164.115»;
порт = 21;
логин = «******************»;
пароль = «************************»;
каталог = «/public_html»;
ftp = новый ftpСоединение(сервер,порт,логин,пароль);
http://ftp.УстановитьТекущийКаталог(каталог);
Если в каталоге указать «/», то подключение проходит. Если указать каталог /public_html для загрузки файлов, то выдается ошибка «ошибка аутентификации при доступе к ресурсу. Access denied to remote resource». В ftp-клиенте поставил все права на чтение и запись для всех, пробовал разные варианты пути, включая те, которые указаны в FAQ хостинг-провайдера — не пашет. Наверно вопрос скорее к хостинг-провайдеру, но подумал, может вы сталкивались
Кирилл:
Нет, к сожалению, не сталкивался. В админке хостера почти всегда можно задать права на папку — возможно поиграть с этими параметрами?
Аноним:
Попробуй /public_html/
Александр:
Каталог нужно указывать обязательно со слэшем в конце:
http://ftp.УстановитьТекущийКаталог(/public_html/);
У меня так работает. 🙂
Аноним:
/public_html/
Максим:
Добрый день! Скажите, пожалуйста, а может ли играть роль «@» в имени пользователя? У меня на сервере имя фтп пользователя автоматически создается вида имя@домен. И с 1с ни как не могу подключится, хотя другие программы типа фаилзиллы работают норм. А к другому серверу где имя пользователя без @ Все работает через 1с. Пробовал заменить @ на %40 не помогло. Может кто сталкивался с таким?
Кирилл:
Здравствуйте!
Сам не сталкивался, но 1С часто на какие то «спец. символы» не очень адекватно реагирует, к сожалению 🙁
Михаил:
Добрый день.
А как быть с sFTP? Есть поддержка?
Аноним:
есть
Лукас:
Нету, есть поддержка FTPS, но не SFTP, это вообще 2 разных, не похожих друг на друга протокола. И вообще что подразумевается по SFTP — Simple file transfer protocol или SSH File Transfer Protocol, аббревиатура одинаковая, а протоколы тоже разные
Litvinovaa333:
У вас в разделе записи файла » пропущена)
Мелкий:
День добрый. У меня работает только если просто пишу /. Добавляя его в конец адреса не помогает. Что за ерунда?
Юрий Харитонов:
Несколько лет назад 1С обещала ввести поддержку протокола SFTP и до сих пор нет, несмотря на непрерывные обновления и конфигураций и платформ 🙁 Приходится пользоваться сторонними прокладками типа WinSCP Чистый FTP протокол уже мало где используется, только в рекомендациях 1С
Table.Clear():
А никто не знает, сколько максимум файлов можно получить с помощью функции НайтиФайлы?