Обмен файлами через FTP-протокол остаётся востребованным инструментом для интеграции 1С:Предприятия с внешними системами, банками или контрагентами. Несмотря на появление современных API и облачных сервисов, многие организации по-прежнему используют FTP для передачи выписок, отчётности, прайс-листов или архивов. В этой статье разберём все актуальные способы отправки файлов на FTP-сервер непосредственно из 1С 8.3 — от стандартных механизмов до внешних компонент и программного кода.

Особенность работы с FTP в заключается в отсутствии встроенной графической утилиты для загрузки файлов: всё реализуется либо через внешние обработки, либо через программный код на встроенном языке. Это требует от пользователя базовых знаний конфигурирования или умения работать с готовыми решениями. Мы рассмотрим варианты для разных уровней подготовки — от простых до продвинутых, с учётом нюансов аутентификации, шифрования и обработки ошибок.

Важно: если ваша задача связана с обменом данными между базами 1С (например, синхронизацией складов или заказов), то FTP — не всегда оптимальное решение. В таких случаях лучше изучить возможности планов обмена, распределённых информационных баз или веб-сервисов. FTP целесообразен именно для передачи готовых файлов (XML, CSV, TXT, ZIP) во внешние системы.

1. Подготовка к отправке файлов: что нужно знать до начала

Прежде чем приступать к настройке, убедитесь, что у вас есть все необходимые данные для подключения к FTP-серверу. Без них любые попытки загрузки файлов обречены на ошибки. Вот минимальный набор параметров, которые должны быть у вас на руках:

  • 🔹 Адрес FTP-сервера — может выглядеть как ftp.example.com или IP-адрес (например, 192.168.1.100).
  • 🔑 Логин и пароль — учётные данные для доступа. Иногда серверы поддерживают анонимный доступ (логин anonymous), но это редкость для корпоративных систем.
  • 📁 Путь к целевой папке — например, /incoming/ или /upload/2026/. Уточните, нужно ли создавать папку заранее.
  • 🔒 Тип соединения — обычный FTP (порт 21), FTPS (FTP через SSL, порт 990) или SFTP (SSH, порт 22). Последние два обеспечивают шифрование.
  • 📡 Пассивный/активный режим — большинство современных серверов требует пассивный режим (PASV).

Если вы работаете с 1С:Предприятием в файловом варианте или на сервере 1С:Предприятия, проверьте, нет ли ограничений на исходящие соединения в настройках брандмауэра или антивируса. Корпоративные политики безопасности часто блокируют FTP-порты, что приводит к ошибкам типа «Не удалось установить соединение». Также убедитесь, что на сервере установлены актуальные корневые сертификаты (если используется FTPS).

⚠️ Внимание: Некоторые хостинг-провайдеры ограничивают количество одновременных FTP-подключений с одного IP. Если вы планируете отправлять файлы из в фоновом режиме (например, по расписанию), уточните лимиты у администратора сервера.

Для тестирования подключения можно использовать стандартные FTP-клиенты вроде FileZilla или WinSCP. Это поможет убедиться, что проблема не в сервере, а в настройках . Если подключение через внешний клиент работает, но не работает из — ищите ошибку в коде или настройках платформы.

📊 Какой протокол вы используете для передачи файлов из 1С?
Обычный FTP
FTPS (FTP через SSL)
SFTP (через SSH)
Не знаю, что это

2. Способ 1: Отправка через встроенную обработку «ЗагрузкаФайлаНаFTP»

Самый простой способ для пользователей без навыков программирования — использовать готовые обработки, которые идут в комплекте с некоторыми типовыми конфигурациями (например, 1С:Бухгалтерия или 1С:Управление торговлей). Одна из таких обработок — ЗагрузкаФайлаНаFTP.epf. Она позволяет загружать файлы без написания кода, через графический интерфейс.

Чтобы найти и запустить обработку:

  1. Откройте 1С:Предприятие в режиме 1С:Предприятие (не конфигуратор!).
  2. Перейдите в меню Файл → Открыть....
  3. Выберите файл обработки ЗагрузкаФайлаНаFTP.epf (обычно он лежит в папке с шаблонами или в каталоге ).
  4. Заполните поля:
    • 📌 Адрес FTP-сервера — например, ftp.example.ru.
    • 👤 Пользователь и Пароль.
    • 📂 Путь на сервере — папка, куда будет загружен файл (например, /incoming/).
    • 📄 Локальный файл — путь к файлу на вашем компьютере или сервере .
  5. Нажмите Загрузить.
  6. Если обработка отсутствует в вашей конфигурации, её можно скачать с портала 1С:ИТС или из открытых источников (например, Инфостарт). Обратите внимание, что некоторые обработки требуют доработки под конкретные версии платформы. Например, в 1С 8.3.20+ могут возникнуть проблемы с шифрованием при использовании FTPS.

    Имя файла не содержит кириллицу или пробелы|

    Путь на FTP-сервере указан с учётом регистра (Linux чувствителен к этому)|

    Пароль не содержит специальные символы, которые могут конфликтовать с URL-кодировкой|

    Файл не заблокирован другим процессом (например, антивирусом)-->

    3. Способ 2: Программная отправка через встроенный язык 1С

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

    Пример кода для загрузки файла на FTP:

    
    

    // Создаём объект FTP-соединения

    Прокси = Новый ИнтернетПрокси("ftp.example.com", 21, "", "");

    FTP = Новый FTPСоединение(Прокси, "username", "password",,, Истина); // Последний параметр - пассивный режим

    // Указываем локальный файл и путь на сервере

    ЛокальныйФайл = "C:\Temp\report.xml";

    УдаленныйПуть = "/incoming/report_20260520.xml";

    // Загружаем файл

    Попытка

    FTP.ЗагрузитьФайл(ЛокальныйФайл, УдаленныйПуть);

    Сообщить("Файл успешно загружен на FTP-сервер!");

    Исключение

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

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

    Разберём ключевые параметры:

    • 🔧 ИнтернетПрокси — указываем адрес сервера и порт (21 для FTP, 990 для FTPS).
    • 🔐 FTPСоединение — создаём соединение с логином/паролем. Последний параметр Истина включает пассивный режим.
    • 📁 ЗагрузитьФайл — метод для отправки файла. Первый параметр — локальный путь, второй — путь на сервере.

    Для FTPS (FTP через SSL) код будет немного отличаться:

    Прокси = Новый ИнтернетПрокси("ftp.example.com", 990, "", "", Новый ЗащищенноеСоединениеOpenSSL());
    

    FTP = Новый FTPСоединение(Прокси, "username", "password",,, Истина);

    Обратите внимание: для работы с FTPS на сервере должны быть установлены корневые сертификаты. Если сервер использует самоподписанный сертификат, его нужно добавить в хранилище сертификатов через конфигуратор.

    ⚠️ Внимание: При использовании SFTP (SSH) встроенные объекты не подходят — потребуется внешняя компонента (см. следующий раздел).
    💡

    Если файл загружается долго, добавьте в код отображение прогресса с помощью метода УстановитьОбработчикОжидания(). Это предотвратит зависание интерфейса .

    4. Способ 3: Использование внешних компонент для SFTP и расширенных возможностей

    Встроенные средства не поддерживают SFTP (FTP через SSH) и имеют ограничения по работе с FTPS. Если ваш сервер требует SFTP или вам нужны дополнительные функции (например, рекурсивная загрузка папок, проверка контрольных сумм), придётся подключать внешние компоненты. Наиболее популярные решения:

    Компонента Поддерживаемые протоколы Особенности Стоимость
    AddIn.FTP (от 1С-Битрикс) FTP, FTPS, SFTP Простая интеграция, документация на русском Платная (от 5 000 руб.)
    SecureBlackbox FTP, FTPS, SFTP, SCP Широкие возможности шифрования, поддержка прокси Платная (от 10 000 руб.)
    Rebex Tiny SFTP SFTP, SCP Бесплатная для некоммерческого использования Условно-бесплатная
    1С:SFTP-клиент (от партнёров) SFTP Оптимизирована для 1С 8.3, есть примеры кода Платная (от 3 000 руб.)

    Пример кода для загрузки файла через AddIn.FTP:

    // Подключаем компоненту (предварительно её нужно установить)
    

    FTPClient = Новый AddInObject("AddIn.FTPClient");

    // Настраиваем соединение

    FTPClient.Host = "sftp.example.com";

    FTPClient.Port = 22;

    FTPClient.Username = "user";

    FTPClient.Password = "password";

    FTPClient.Protocol = 2; // 2 - SFTP

    // Загружаем файл

    Результат = FTPClient.UploadFile("C:\Temp\file.xml", "/upload/file.xml");

    Если Результат = 0 Тогда

    Сообщить("Файл загружен успешно!");

    Иначе

    Сообщить("Ошибка: " + FTPClient.ErrorMessage);

    КонецЕсли;

    Преимущества внешних компонент:

    • 🔐 Поддержка SFTP и современных методов шифрования.
    • 📈 Возможность работы с большими файлами (более 2 ГБ).
    • 🔄 Реализация рекурсивной загрузки папок.
    • 🛡️ Поддержка прокси-серверов и сложных сетевых конфигураций.

    Недостатки:

    • 💰 Дополнительные затраты на покупку компоненты.
    • 🔧 Необходимость регистрации DLL/COM-объектов на сервере .
    • 📚 Потребность в изучении документации (хотя большинство поставляется с примерами для ).
    ⚠️ Внимание: При использовании внешних компонент на сервере 1С:Предприятия (например, в клиент-серверном варианте) убедитесь, что компонента установлена на серверной части, а не только на клиентском компьютере. Иначе код будет работать в 1С:Предприятии, но не будет выполняться в фоновых задачах.

    5. Способ 4: Автоматизация через регламентные задания

    Если файлы нужно отправлять регулярно (например, ежедневно в 23:00), удобно настроить регламентное задание. Это позволит избежать ручного запуска и минимизирует риск ошибок из-за человеческого фактора. Алгоритм настройки:

    1. Создайте обработку с кодом загрузки файла на FTP (см. раздел 3).
    2. В конфигураторе откройте ветку Общие → Регламентные задания.
    3. Создайте новое задание, укажите:
      • 📅 Расписание (например, «Каждый день в 23:00»).
      • 🔄 Метод выполнения — выберите вашу обработку.
      • 👤 Пользователь — от имени кого будет выполняться (должен иметь права на доступ к FTP и файлам).
    4. Сохраните и запустите задание в тестовом режиме.
    5. Пример кода для регламентного задания (с логированием):

      Процедура ВыполнитьЗадание() Экспорт
      
      

      Попытка

      // Код загрузки файла (см. раздел 3)

      FTP.ЗагрузитьФайл(ЛокальныйФайл, УдаленныйПуть);

      // Логируем успех

      ЗаписьЛога("FTP", , , "Файл " + УдаленныйПуть + " загружен успешно");

      Исключение

      ЗаписьЛога("FTP", , , "Ошибка загрузки: " + ОписаниеОшибки());

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

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

      Нюансы работы регламентных заданий:

      • 🕒 Задания выполняются на сервере , поэтому все пути к файлам должны быть доступны с сервера (не локальные пути пользователя!).
      • 🔒 Если FTP-сервер требует взаимодействия (например, подтверждение сертификата), регламентное задание не сможет его обработать — нужна полная автоматизация.
      • 📤 Для отслеживания ошибок настройте журнал регистрации в или отправку уведомлений на email.
      Как проверить, что регламентное задание работает?

      Откройте журнал регистрации (Администрирование → Журнал регистрации) и отфильтруйте события по имени вашего задания. Если задание не запускается, проверьте:

      1. Права пользователя, от имени которого выполняется задание.

      2. Настройки расписания (возможно, указано неверное время или дата).

      3. Доступность сервера в указанное время (некоторые хостеры выключают серверы ночью для экономии ресурсов).

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

      При работе с FTP из пользователи часто сталкиваются с типичными ошибками. Мы собрали наиболее распространённые случаи и способы их устранения.

      Ошибка Возможная причина Решение
      Не удалось установить соединение с сервером
      • Неверный адрес или порт сервера.
      • FTP-сервер недоступен.
      • Брандмауэр блокирует исходящие соединения.
      • Проверьте адрес и порт через FileZilla.
      • Уточните у администратора, не блокируется ли FTP трафик.
      • Попробуйте отключить брандмауэр временно для теста.
      Ошибка аутентификации (530)
      • Неверный логин/пароль.
      • Учётная запись заблокирована на сервере.
      • Проверьте регистр в логине/пароле (особенно если сервер на Linux).
      • Сбросьте пароль через панель управления хостингом.
      Не удалось создать файл на сервере (550)
      • Не хватает прав на запись в папку.
      • Неверный путь (папка не существует).
      • Проверьте права доступа к папке через FTP-клиент.
      • Убедитесь, что путь указан относительно корневой директории пользователя.
      Timeout при соединении
      • Сервер не отвечает в установленное время.
      • Медленное интернет-соединение.
      • Увеличьте таймаут в коде: FTP.Таймаут = 60;
      • Проверьте стабильность сети.
      Ошибка сертификата (при FTPS) Сервер использует самоподписанный сертификат. Добавьте сертификат в хранилище через конфигуратор (Администрирование → Сертификаты).

      Критическая ошибка: Если при загрузке большого файла (>100 МБ) «зависает» без ошибок, проблема может быть в ограничении памяти для фоновых задач. В таком случае увеличьте параметр /MaxMemory в файле запуска или разбейте файл на части.

      Для диагностики ошибок полезно включать логирование FTP-соединения. Например, в коде перед подключением добавьте:

      FTP.Журналировать = Истина;
      

      FTP.ИмяФайлаЖурнала = "C:\Temp\ftp_log.txt";

      Это создаст файл с подробным протоколом обмена данными, что поможет выявить проблему.

      7. Безопасность при работе с FTP из 1С

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

      • 🔒 Используйте FTPS или SFTP вместо обычного FTP. Даже если сервер поддерживает только FTP, настаивайте на переходе на защищённый протокол.
      • 🔑 Храните пароли в безопасном месте:
        • Не вписывайте пароли прямо в код обработки.
        • Используйте хранилище паролей (ПолучениеПароля()) или внешние системы типа 1С:ДиректБанк.
      • 📜 Логируйте только необходимую информацию — не записывайте в лог содержимое передаваемых файлов, особенно если это персонифицированные данные.
      • 🚪 Ограничивайте доступ к папкам на FTP-сервере:
        • Настройте права так, чтобы пользователь имел доступ только к своей папке.
        • Отключите возможность просмотра чужих файлов (chmod 750 для Linux).

      Если вы передаёте файлы с персональными данными (ФИО, паспортные данные, СНИЛС), обязательно:

      • 🔐 Шифруйте файлы перед отправкой (например, в архив с паролем).
      • 📋 Ведите журнал передачи данных (кто, когда и какие файлы отправил).
      • 📄 Заключите с контрагентом соглашение о конфиденциальности (NDA).
    ⚠️ Внимание: С 1 сентября 2026 года в России действуют обновлённые требования к защите персональных данных (ФЗ-152). Передача таких данных по незащищённому FTP может считаться нарушением, если не приняты дополнительные меры шифрования. Уточните актуальные требования у юриста вашей компании.

    FAQ: Частые вопросы по отправке файлов на FTP из 1С

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

    Да, если в вашей конфигурации есть обработка ЗагрузкаФайлаНаFTP.epf. Она позволяет загружать файлы через графический интерфейс без написания кода. Если обработки нет, её можно скачать с портала 1С:ИТС или Инфостарт.

    Для 1С:Бухгалтерии также доступна стандартная обработка «Выгрузка данных в электронном виде» (меню Файл → Выгрузить данные), которая поддерживает отправку на FTP для некоторых форматов (например, выписок банка).

    Как отправить файл на FTP с кириллическим именем?

    Встроенные объекты (FTPСоединение) плохо работают с кириллицей в именах файлов. Рекомендации:

    1. Переименуйте файл перед отправкой, используя транслит (например, отчет.xmlotchet.xml).
    2. Используйте внешние компоненты (например, AddIn.FTP), которые корректно обрабатывают кодировку.
    3. Если сервер поддерживает UTF-8, укажите кодировку явно в настройках соединения.

    Пример кода для транслитерации имени файла:

    Функция Транслит(Строка)
    

    Замена = Новый Соответствие;

    Замена.Вставить("а", "a"); Замена.Вставить("б", "b"); // ... добавьте все буквы

    Результат = "";

    Для каждого Символ Из Строка Цикл

    Если Замена.СодержитКлюч(НижнийРег(Символ)) Тогда

    Результат = Результат + Замена[НижнийРег(Символ)];

    Иначе

    Если Символ <> " " Тогда

    Результат = Результат + Символ;

    КонецЕсли;

    КонецЕсли;

    КонецЦикла;

    Возврат Результат;

    КонецФункции

    Как отправить файл на FTP из 1С, если сервер требует двухфакторную аутентификацию (2FA)?

    Встроенные средства не поддерживают двухфакторную аутентификацию (например, по SMS или через Google Authenticator). Варианты решений:

    • 🔑 Используйте ключи SSH вместо пароля (для SFTP). Большинство внешних компонент (например, SecureBlackbox) поддерживают аутентификацию по ключу.
    • 🤖 Автоматизируйте ввод второго фактора через сторонние сервисы (например, AutoIt или Python-скрипт, который будет эмулировать действия пользователя).
    • 📧 Попросите администратора FTP-сервера создать отдельного пользователя без 2FA специально для автоматизированных задач (с ограниченными правами).

    Если 2FA обязательна, рассмотрите альтернативные способы передачи файлов: REST API, электронная почта или облачные хранилища (Yandex Диск, Google Drive) с поддержкой 2FA.

    Можно ли отправить файл на FTP из 1С:Зарплата и Управление Персоналом?

    Да, в 1С:ЗУП также можно отправлять файлы на FTP, но стандартных обработок для этого нет. Вам потребуется:

    1. Написать собственную обработку с использованием FTPСоединение (см. раздел 3).
    2. Или подключить внешнюю компоненту (например, для отправки отчётности в ПФР или ФНС).

    Часто в ЗУП FTP используется для:

    • 📤 Выгрузки реестров для банков (зарплатные проекты).
    • 📊 Передачи отчётности в госорганы (если не используется 1С:Отчётность).
    • 🔄 Обмена данными с бухгалтерией (например, передача проводок по зарплате).

    Пример: отправка реестра на выплату зарплаты в банк:

    // Формируем файл реестра
    

    Реестр = ПолучитьРеестрЗарплаты();

    Реестр.Записать("C:\Temp\salary_202605.xml");

    // Отправляем на FTP банка

    FTP = Новый FTPСоединение(Прокси, "bank_user", "bank_pass",,, Истина);

    FTP.ЗагрузитьФайл("C:\Temp\salary_202605.xml", "/upload