К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как отправить файл на FTP-сервер из 1С

Как отправить файл на FTP-сервер из 1С: объект FTPСоединение, пример кода на встроенном языке, проверка результата, типичные ошибки и частые вопросы.

Передача файлов на FTP-сервер из 1С — типовая задача при обмене данными с поставщиками, выгрузке отчётов, прайс-листов, заказов или бэкапов. Платформа 1С:Предприятие имеет встроенный механизм работы с FTP — объект FTPСоединение, поэтому внешние компоненты и сторонние программы не нужны.

Всё делается средствами встроенного языка: создаётся соединение с указанием сервера, логина и пароля, затем вызывается метод записи файла. Ниже разобраны подготовка параметров, рабочий пример кода, обработка ошибок и способы проверить, что файл действительно дошёл до сервера.

Материал подойдёт разработчикам и администраторам, которые настраивают обмен в типовых или самописных конфигурациях. Код приведён для управляемого приложения, но в обычных формах логика та же.

Что понадобится перед настройкой

Для успешной отправки нужны четыре обязательных параметра, которые выдаёт администратор FTP-сервера или хостинг-провайдер: адрес сервера (имя хоста или IP), порт (по умолчанию 21), имя пользователя и пароль. Если используется пассивный режим или нестандартный порт, это тоже нужно уточнить заранее.

Проверьте, что с компьютера или сервера, где работает 1С, доступен FTP-сервер: порт не должен быть закрыт файрволом или антивирусом. Простейший тест — подключиться любым FTP-клиентом (например, FileZilla) с той же машины и с теми же учётными данными. Если внешний клиент не подключается, проблема в сети или учётных данных, а не в коде 1С.

Дополнительно убедитесь, что у учётной записи FTP есть права на запись в целевой каталог. Частая ситуация: подключение успешно, но файл не записывается из-за отсутствия прав на папку.

Адрес и портХост и порт FTP-сервера

Стандартный порт 21, уточнить у администратора

Учётные данныеЛогин и пароль

Проверить вход через FTP-клиент

Права на каталогРазрешение записи

Попробовать загрузить файл вручную

Доступность сетиОткрытый порт

Проверить файрвол и антивирус на машине с 1С

Объект FTPСоединение: основа механизма

Встроенный язык 1С предоставляет объект FTPСоединение, который создаётся конструктором Новый FTPСоединение(...). В конструктор передаются параметры: сервер, порт, имя пользователя, пароль, а также необязательные параметры — прокси и таймаут.

После создания объекта доступны методы работы с сервером: Записать() — отправка файла, Получить() — скачивание, НайтиФайлы() — список файлов в каталоге, Удалить() — удаление, СоздатьКаталог() — создание папки. Для задачи отправки нужен только Записать().

Пример кода отправки файла

Ниже минимальный рабочий пример процедуры, которую можно разместить в общем модуле или модуле формы обработки. Процедура принимает путь к локальному файлу и имя, под которым файл будет сохранён на сервере.

Процедура ОтправитьФайлНаFTP(ЛокальныйФайл, ИмяНаСервере) Экспорт

Попытка

Соединение = Новый FTPСоединение(

"ftp.example.com", // сервер

21, // порт

"ftp_user", // логин

"Пароль123", // пароль

, // прокси (не используется)

, // пассивный режим

30); // таймаут, сек

Соединение.Записать(ЛокальныйФайл, ИмяНаСервере);

Сообщить("Файл успешно отправлен: " + ИмяНаСервере);

Исключение

Сообщить("Ошибка отправки: " + ОписаниеОшибки());

КонецПопытки;

КонецПроцедуры

Вызов выглядит так: ОтправитьФайлНаFTP("C:\Выгрузки\orders.xml", "/inbox/orders.xml"). Путь на сервере указывается от корня FTP-каталога пользователя, с прямыми слэшами. Если целевая папка не существует, её нужно создать заранее методом СоздатьКаталог() или вручную.

Порядок действий при отправке
  1. 1
    Получите у администратора хост, порт, логин и пароль FTP
  2. 2
    Проверьте подключение сторонним FTP-клиентом с той же машины
  3. 3
    Создайте в коде объект FTPСоединение с этими параметрами
  4. 4
    Вызовите метод Записать с путём к локальному файлу и именем на сервере
  5. 5
    Проверьте наличие файла на сервере методом НайтиФайлы или через FTP-клиент

Пассивный режим и таймауты

Если соединение устанавливается, но передача файла зависает или обрывается, чаще всего причина в активном/пассивном режиме. За NAT и файрволами обычно требуется пассивный режим — он включается соответствующим параметром конструктора FTPСоединение (передаётся Истина).

Таймаут стоит задавать явно, особенно для больших файлов. Значение по умолчанию может быть недостаточным при медленном канале, и передача оборвётся с ошибкой. Для файлов в десятки мегабайт разумно ставить таймаут в несколько минут и тестировать на реальном объёме.

Обработка ошибок и проверка результата

Любую работу с FTP оборачивайте в конструкцию Попытка...Исключение: сеть нестабильна, сервер может быть недоступен, а без обработки ошибки пользователь получит аварийное завершение. Текст ошибки из ОписаниеОшибки() записывайте в журнал регистрации или выводите пользователю — это ускорит диагностику.

После отправки полезно убедиться, что файл реально на месте. Надёжный способ — вызвать НайтиФайлы(ИмяНаСервере) и проверить, что массив результатов не пустой, а размер файла совпадает с локальным. Дополнительно можно сверить размер через свойство Размер() найденного файла.

Контрольные точки

Как проверить, что файл дошёл

Файл в целевом каталоге
Норма

НайтиФайлы возвращает файл с нужным именем

Тревожный признак

Массив результатов пуст — файл не записался

Размер файла
Норма

Размер на сервере равен размеру локального файла

Тревожный признак

Размер меньше — передача оборвалась

Открытие файла
Норма

Файл скачивается и открывается без ошибок

Тревожный признак

Файл повреждён или пустой

Типичные ошибки и их причины

Ошибка «Не удалось подключиться к серверу» почти всегда означает неверный хост/порт, закрытый файрвол или недоступность сервера. Ошибка авторизации (коды вида 530) — неверный логин или пароль, иногда — ограничение по IP на стороне сервера.

Отдельная группа проблем — кодировка имён файлов. Русские буквы в именах могут искажаться, если сервер работает в другой кодировке. Безопасное решение — формировать имена файлов латиницей, без пробелов и спецсимволов, например по шаблону order_000123_20260115.xml.

Типичные ошибки
01
Хранение пароля прямо в коде — учётные данные видны всем с доступом к конфигуратору
02
Отправка без Попытка/Исключение — сбой сети приводит к аварийному завершению сеанса
03
Русские буквы и пробелы в имени файла — искажение имён и недоступность файла на сервере
04
Отсутствие проверки результата — пользователь думает, что файл ушёл, а передача оборвалась
05
Нулевой или маленький таймаут — большие файлы не успевают передаться

Альтернативные способы отправки

Если встроенного объекта недостаточно (например, требуется FTPS/SFTP с шифрованием, которое FTPСоединение напрямую не поддерживает), есть варианты: вызов внешней утилиты командной строки (curl, WinSCP в скриптовом режиме) через ЗапуститьПриложение(), либо переход на другой протокол обмена — HTTP-запросы или веб-сервисы.

Выбор зависит от требований безопасности: обычный FTP передаёт логин, пароль и данные в открытом виде, поэтому для конфиденциальных файлов (банковские выписки, персональные данные) открытый FTP через интернет использовать не стоит — нужен SFTP, FTPS или защищённый канал VPN.

Сравнение способов отправки

FTPСоединение (встроенный)

Простой код без внешних программ; подходит для внутренней сети. Ограничение — нет нативной поддержки SFTP/FTPS

Внешняя утилита (curl, WinSCP)

Поддерживает SFTP и FTPS; требует установки утилиты и передачи команд через ЗапуститьПриложение

HTTP/веб-сервисы

Шифрование через HTTPS, удобная авторизация; требует доработки приёмной стороны

Частые вопросы

Можно ли отправить файл на FTP из 1С без программирования?

В типовых конфигурациях встречаются готовые механизмы обмена через FTP (например, обмен с сайтом или выгрузка прайсов), где достаточно указать параметры сервера в настройках. Если такого механизма нет, без доработки кода отправку не настроить — потребуется обработка или расширение.

Поддерживает ли 1С протоколы SFTP и FTPS?

Объект FTPСоединение работает с классическим FTP и не поддерживает шифрованные варианты напрямую. Для SFTP/FTPS используют внешние утилиты (WinSCP, curl), вызываемые из кода 1С, либо переходят на обмен по HTTPS.

Почему файл отправляется, но на сервере он пустой или обрезанный?

Чаще всего передача обрывается по таймауту или из-за нестабильного канала. Увеличьте таймаут в конструкторе соединения, включите пассивный режим и после отправки сверяйте размер файла на сервере с локальным.

Как отправить файл в конкретную папку на FTP-сервере?

Путь к папке указывается прямо во втором параметре метода Записать: например, "/upload/2026/file.xml". Если папки не существует, создайте её методом СоздатьКаталог перед записью, иначе получите ошибку.

Можно ли отправлять файлы на FTP по расписанию?

Да. Оберните процедуру отправки в регламентное задание (в клиент-серверном режиме) или вызывайте её из обработчика ожидания в файловом варианте. Учётные данные при этом храните вне кода — в защищённых настройках.

Что делать, если ошибка «соединение отклонено» возникает только на сервере 1С, а с моего компьютера всё работает?

В клиент-серверном режиме код на сервере выполняется на сервере 1С, и сетевой доступ проверять нужно именно с него. Проверьте файрвол сервера, маршрутизацию и то, что код выполняется в серверной процедуре, а не на клиенте.

Итог

Что важно запомнить

Отправка файла на FTP из 1С делается объектом FTPСоединение и методом Записать. Обязательно: обработка ошибок через Попытка/Исключение, проверка файла на сервере после отправки, латиница в именах файлов и защищённое хранение пароля. Для конфиденциальных данных используйте шифрованные протоколы вместо открытого FTP.