Защищенный обмен через SSH и SFTP для 1С (open-source)

20.10.25

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Библиотека для работы с протоколами SSH и SFTP на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

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

 
 Что такое Открытый Пакет Интеграций

 

Открытый Пакет Интеграций (ОПИ, OpenIntegrations) - это open-source набор методов для простой и быстрой интеграции с различными популярными API. Он состоит из аналогичных по функционалу 1С-расширения (CFE), OS-пакета и консольного приложения для Windows и Linux, которые предоставляют готовые функции для работы с целым набором различных онлайн-сервисов.


  • ОПИ бесплатен и имеет открытый исходный код на GitHub. Вы всегда можете получить последнюю версию библиотеки на странице репозитория, а подписавшись - узнавать о выходе обновлений. Все релизы сопровождаются статьями на Инфостарт и разделами единой документации. На Инфостарт вы можете подписаться уже хоть сейчас, а про документацию я расскажу далее.

 

 


 

  • Удобная единая документация. Она расположена на сайте openintegrations.dev и содержит в себе всю информацию, необходимую для работы: инструкции по предварительным действиям для начала интеграции, описания всех методов с параметрами и возвращаемыми значениями, примеры кода и т.д. Каждый API имеет там свой раздел.

 

 

 

  • Простая установка. ОПИ распространяется во множестве вариантах: как XML файлы расширения, как EDT проект расширения, как файл расширения формата .cfe (версия 1С 8.3.9), как файл пакета для OneScript и еще в целом наборе пакетов и файлов для Windows и Linux. Из этого набора вы всегда сможете выбрать тот способ установки, который лучше подойдет для вашей конкретной задачи

 

На момент последнего обновления данной статьи, доступны следующие API:

Наиболее актуальную информацию можно посмотреть в репозитории или на вводной странице документации.

 

SSH (Secure Shell) — это криптографический сетевой протокол, предназначенный для безопасного удалённого управления компьютерами и передачи данных по незащищенным сетям. В частности, он известен как стандарт при администрировании Unix-подобных систем

 

SFTP (SSH File Transfer Protocol) — это популярный протокол безопасной передачи файлов, работающий поверх, соответственно, SSH

 

Да, SFTP работает именно поверх SSH и, вопреки похожему названию и области применения, к FTP/FTPS прямого отношения не имеет. И, разумеется, интересовать нас сегодня будет в первую очередь именно он - SFTP, так как передача файлов при помощи данного протокола является довольно распространенная задачей при работе с 1С. А работа с SSH, в свою очередь, будет приятным дополнительны бонусом, так как не добавлять возможности выполнения произвольных команд, когда SFTP без SSH все равно не работает, не было никаких причин

 

SFTP

Как правило, для работы с SFTP из 1С используется либо COM-объект WinSCP, либо просто внешний клиент, который подключает удаленную директорию как виртуальный диск или каталог, а обмен с 1С происходит при помощи обычных файловых операций. Оба эти подхода имеют ряд очевидных минусов: WinSCP работает только на Windows и требует регистрации в системе, а отдельные клиенты нуждаются в установке и при работе не отдают никакой информации о своем состоянии напрямую в 1С

Библиотека SFTP в составе ОПИ призвана устранить эти недостатки. Она, как и другие не-http библиотеки Открытого пакета интеграций, основана на внешней компоненте (на Rust), которая лежит в общем макете набором сразу для всех основных ОС: x32 и x64 Windows и Linux. Никакой дополнительной установки, кроме установки самого расширения ОПИ, не требуется, работа происходит при помощи функций общего модуля OPI_SFTP

 

Доступны следующие методы:

  • Основные методы
    • Открытие соединения
    • Закрытие соединения
    • Изменение пути (перемещение/переименование) файла или каталога
  • Работа с директориями
    • Получение списка объектов в директории
    • Создание новой директории
    • Удаление директории
    • Получение имени текущего каталога
  • Работа с файлами
    • Загрузка файла
    • Удаление файла
    • Сохранение файла с сервера на диск
    • Получение файла с сервера в виде двоичных данных
    • Получение метаданных файла


Поддерживается создание соединения через sock и http-прокси, авторизация по логину и паролю, ключу и через ssh-агента

Примеры кода

 
Загрузка файла (с http-прокси и авторизацией по логину и паролю)
 
 Получение ДД файла с сервера (без прокси, с авторизацией по ключу)

 

Подробнее о каждом из методов, а также о работе с SFTP в целом можно узнать в соответствующем разделе онлайн-документации

 

SSH

С SSH все еще проще: помимо функций открытия/закрытия и проверки соединения, которые совпадают с таковыми у SFTP, там есть всего один метод - ВыполнитьКоманду

    Хост = "172.33.0.13";
    Порт = "2222";

    ИспользоватьПрокси = Истина;
    НастройкиПрокси    = Неопределено;
    ВидАвторизации     = "По логину и паролю";

    Если ВидАвторизации = "По логину и паролю" Тогда

        Логин  = "bayselonarrend";
        Пароль = "12we...";

        НастройкиSSH = OPI_SSH.ПолучитьНастройкиЛогинПароль(Хост, Порт, Логин, Пароль);

    ИначеЕсли ВидАвторизации = "По ключу" Тогда

        Логин         = "bayselonarrend";
        ПриватныйКлюч = "./ssh_key";
        ПубличныйКлюч = "./ssh_key.pub";

        НастройкиSSH = OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, ПриватныйКлюч, ПубличныйКлюч);

    Иначе

        Логин        = "bayselonarrend";
        НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин);

    КонецЕсли;

    Если ИспользоватьПрокси Тогда

        ТипПрокси = "http"; // http, socks5, socks4

        АдресПрокси  = "127.0.0.1";
        ПортПрокси   = "8071";
        ЛогинПрокси  = "proxyuser";
        ПарольПрокси = "12we...";

        НастройкиПрокси = OPI_SSH.ПолучитьНастройкиПрокси(АдресПрокси, ПортПрокси, ТипПрокси, ЛогинПрокси, ПарольПрокси);

    КонецЕсли;

    Соединение = OPI_SSH.ОткрытьСоединение(НастройкиSSH, НастройкиПрокси);

    Если OPI_SSH.ЭтоКоннектор(Соединение) Тогда
        Результат = OPI_SSH.ВыполнитьКоманду(Соединение, "whoami");
    Иначе
        Результат = Соединение; // Ошибка соединения
    КонецЕсли;

 

Как понятно из названия, данный метод позволяет выполнить команду sh на удаленном сервере. Кстати, при работе с SFTP вы также можете использовать этот метод: обе библиотеки имеют общий формат соединения, так что соединение, созданное в модуле SFTP, будет работать и для выполнения произвольных команд в модуле SSH

Как и в случае с остальными библиотеками, больше информации можно найти в документации

 

Ну, а на этом все! Хочу только еще раз напомнить, что ОПИ - это не только расширение для 1С, но и пакет для OneScript, и даже консольное приложение (независимое от 1С:Предприятие) для Windows и Linux. Также призываю попробовать серверную версию ОПИ - Melezh. Она позволяет запускать http-сервер и вызывать методы любых библиотек Открытого пакета интеграций удаленно, со встроенным логированием и возможностью тонкой настройки - там недавно вышло большое обновление (подробнее по ссылкам: раз, два)

 

Ссылки на остальные ресурсы Открытого пакета интеграций будут ниже

Спасибо за внимание!

 

 Если вам нравится ОПИ, то не забывайте поддерживать его на GitHub, Инфостарт и Boosty (ссылка в репозитории)!

 

 

Репозиторий ОПИ: github.com/Bayselonarrend/OpenIntegrations

Последний релиз: github.com/Bayselonarrend/OpenIntegrations/releases/latest

Документация: openintegrations.dev

 
 Куда жать и где скачать?

 

Другие статьи про Открытый пакет интеграций на Инфостарт:

 

 

 Мой GitHub:    https://gitub.com/Bayselonarrend 
 OpenYellow:    https://openyellow.org
 Лицензия MIT:  https://mit-license.org

Вступайте в нашу телеграмм-группу Инфостарт

sftp ssh обмен файлы компонента

См. также

НДС 22% Учетные задачи ККМ Файловый обмен (TXT, XML, DBF), FTP 1С 8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Бухгалтерский учет Налоговый учет НДС Платные (руб)

Готовое обновление для конфигурации 1С:Управление торговлей 10.3, 1С:Комплексная автоматизация 1.1 , 1С:Управление производственным предприятием 1.3 обеспечивающее полную поддержку новой ставки НДС 22%. Для 1С:УТ 10.3 реализована поддержка печати чеков ККМ, а также Правила обмена с 1С:БП 3.0. Решение встраивает необходимые изменения в перечисления и документы, включая торговые операции и печатные формы.

12200 руб.

16.12.2025    7886    83    0    

78

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 руб.

12.06.2017    159177    951    317    

479

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.267.x) и БП 3.0 (3.0.194.x). Правила подходят для версии ПРОФ и КОРП.

38000 34200 руб.

15.12.2021    33224    247    64    

188

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

50050 руб.

25.02.2015    187137    352    287    

413

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

58000 руб.

29.10.2018    62206    80    130    

78

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 3, УНФ 3 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

16531 руб.

18.02.2016    201379    668    543    

560

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.25.x).

38000 34200 руб.

23.07.2020    66916    311    88    

250
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 1064 20.10.25 12:22 Сейчас в теме
Отлично! Давненько вы не публиковались.
bayselonarrend; +1 Ответить
2. orfos 219 28.11.25 16:11 Сейчас в теме
Отличная новость! Обязательно попробую в деле и отпишусь.
3. Escamed 05.02.26 14:04 Сейчас в теме
(2) Добрый день! работает? получилось попробовать?
4. maks_20 172 06.03.26 09:32 Сейчас в теме
Попробовал подключение к sftp, что-то не взлетело. При этом с winscp с того же сервера заходит нормально. Точную ошибку могу при необходимости посмотреть.
5. bayselonarrend 3105 06.03.26 09:35 Сейчас в теме
(4) Да, без ошибки не очень понятно)
Еще можете попробовать предрелизную версию текущую - я там немного менял авторизацию SSH. Если проблема была в ней, то может помочь
https://jenkins.openintegrations.dev/job/OpiBuild/job/OpiRelease/
6. maks_20 172 06.03.26 09:45 Сейчас в теме
(5) Ошибка с таким текстом: "TCP error: Direct connection error: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера. (os error 10060)". В обработке для теста такой кусок кода:

НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиЛогинПароль(Хост, Порт, Логин, Пароль);
Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP);


Если OPI_SFTP.ЭтоКоннектор(Соединение) Тогда

Путь = "test.txt";
Результат = OPI_SFTP.ПолучитьДанныеФайла(Соединение, Путь);

Иначе
Результат = Соединение; // Ошибка соединения
КонецЕсли
7. bayselonarrend 3105 06.03.26 09:51 Сейчас в теме
(6)
Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера. (os error 10060)


Хм, ну такая ошибка обычно возникает, когда какой-то неправильный адрес или порт. Т.е. когда клиент пытается стучать туда, где нет сервера, который ждет запроса. Если у вас в хосте localhost, попробуйте 127.0.0.1 и проверьте, что порт корректный
8. bayselonarrend 3105 06.03.26 09:56 Сейчас в теме
(6) А, да, еще из-за файрвола такое может быть
9. maks_20 172 06.03.26 10:09 Сейчас в теме
(8) меня просто смутило, что с winscp при этом корректно коннектится (с той же машинки, где и 1с). Сейчас попробую с другой сети запустить подключение.
10. maks_20 172 06.03.26 10:41 Сейчас в теме
(8) Да, Вы правы. Дело было в фаерволе. После донастройки все взлетело. Подскажите, пожалуйста, если файл находится в подкаталоге, правильно я понимаю, что путь нужно указывать в этой части:

Путь = "/Каталог/Подкаталог/test.txt";
Результат = OPI_SFTP.ПолучитьДанныеФайла(Соединение, Путь);
11. bayselonarrend 3105 06.03.26 10:42 Сейчас в теме
12. bayselonarrend 3105 06.03.26 10:45 Сейчас в теме
(10) Если нужно будет качать/загружать большие файлы, то я бы рекомендовал еще обновить расширение по ссылке выше. Или сделать это после выхода релиза 1.33.0 - это будет сегодня вечером или завтра

В этом обновлении были изменения по sftp в том числе, скорость загрузки стала заметно выше
Для отправки сообщения требуется регистрация/авторизация