Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут!

Работа с FTP в 1С 8.3 и 8.2 — примеры кода основных действий

FTP (англ. File Transfer Protocol — протокол передачи файлов) — стандартный протокол, предназначенный для передачи файлов по TCP-сетям (например, Интернет). FTP часто используется для загрузки сетевых страниц и других документов с частного устройства разработки на открытые сервера хостинга.

В 1С очень часто появляется потребность в работе со стандартным протоколом передачи файлов — FTP. Особенно актуален этот момент для обмена данными как с другими конфигурациями, так и другими системами. FTP часто используется для настройки обмена в 1С.

Ниже я рассмотрю основные методы работы с этим протоколом из 1С 8.3. Читайте также — статья по работе с обычной файловой системой ОС.

ФТП и 1С

Подключение к FTP из 1С

Рассмотрим работу 1С через FTP, для начала подключимся и авторизируемся, указываем каталог для работы на сервере с помощью объекта FTPСоединение:

АдресСайта = "1.1.1.1" ;
Порт = 21;
Логин = "login";
Пароль = "password";
ИмяКаталога = "/data/1c";
FTPСоединение = Новый FTPСоединение(АдресСайта,Порт,Логин,Пароль);
FTPСоединение.УстановитьТекущийКаталог(ИмяКаталога);

Далее мы будем рассматривать методы уже созданного объекта — FTPСоединение.

Получите 267 видеоуроков по 1С бесплатно:

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

Допустим, дальше проверим наличие текстового файла, получим его с 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. Мы работаем в Москве и области.
Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 12 на “Работа с FTP в 1С 8.3 и 8.2 — примеры кода основных действий
  1. Нестабильно работает FTPСоединение .Переместить(“/data/text.txt”,”/data/1c/text.txt” );…
    То отрабатывает FTPСоединение.Переместить(Файл.ПолноеИмя, ДругойКаталог + Файл.Имя), то отрабатывает FTPСоединение.Переместить(ФТП.ТекущийКаталог() + Файл.Имя, ДругойКаталог + Файл.Имя)…
    Теперь вдруг перестали оба метода работать..И даже Удалить(Файл.ПолноеИмя) не работает…
    P.S. Где файл -FTPФайл.

    Ответить

    • У меня тоже не получилось 🙁 в итоге сделал методом «Записать» и потом «удалить»

      Ответить

      • Странно, неделю назад делал — всё отлично отрабатывало.

        Ответить

  2. Как получить файлы на компьютер с ftp сервера если не текстовые файлы а архивы например?

    Ответить

    • Используйте не «ТекстовыйДок = Новый ТекстовыйДокумент;»

      А «Новый Файл», там похожий синтаксис.

      Ответить

    • Указать тип его например: FTPСоединение.НайтиФайлы(Каталог,»*.zip») выбираем все файлы, первый файл с 0 по индексу.

      Ответить

  3. Проблема в доступе к нужной папке на ftp-сервере.

    сервер = «31.170.164.115»;
    порт = 21;
    логин = «******************»;
    пароль = «************************»;
    каталог = «/public_html»;
    ftp = новый ftpСоединение(сервер,порт,логин,пароль);
    http://ftp.УстановитьТекущийКаталог(каталог);

    Если в каталоге указать «/», то подключение проходит. Если указать каталог /public_html для загрузки файлов, то выдается ошибка «ошибка аутентификации при доступе к ресурсу. Access denied to remote resource». В ftp-клиенте поставил все права на чтение и запись для всех, пробовал разные варианты пути, включая те, которые указаны в FAQ хостинг-провайдера — не пашет. Наверно вопрос скорее к хостинг-провайдеру, но подумал, может вы сталкивались

    Ответить

    • Нет, к сожалению, не сталкивался. В админке хостера почти всегда можно задать права на папку — возможно поиграть с этими параметрами?

      Ответить

    • Попробуй /public_html/

      Ответить

  4. Добрый день! Скажите, пожалуйста, а может ли играть роль «@» в имени пользователя? У меня на сервере имя фтп пользователя автоматически создается вида имя@домен. И с 1с ни как не могу подключится, хотя другие программы типа фаилзиллы работают норм. А к другому серверу где имя пользователя без @ Все работает через 1с. Пробовал заменить @ на %40 не помогло. Может кто сталкивался с таким?

    Ответить

    • Здравствуйте!
      Сам не сталкивался, но 1С часто на какие то «спец. символы» не очень адекватно реагирует, к сожалению 🙁

      Ответить

  5. Добрый день.
    А как быть с sFTP? Есть поддержка?

    Ответить

Добавить комментарий:

Ваш e-mail не будет опубликован.