Защищенный обмен через 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 обмен файлы компонента

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Перенос данных 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    160738    967    318    

482

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

Переносите справочную информацию, остатки и документы из УПП 1.3 в Бухгалтерию 3.0 с помощью готовых правил. Переносится более 50 видов документов. Простой интерфейс и понятные настройки.

42000 руб.

15.12.2021    34182    259    64    

194

Перенос данных 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    188223    359    289    

418

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

Перенос данных из БП 2 в БП 3 готовые правила конвертации данных (КД 2), сэкономьте свое время! | Выполнить переход с БП 2 на БП 3 в ситуациях, когда простым обновлением перейти не получается | Переносится вся справочная информация, документы за выбранный период, а также начальные остатки на выбранную дату (то есть можно еще и свертку базы сделать при переносе) | Есть фильтр по организациям при выгрузке данных | Перенос можно проверить перед покупкой прямо на вашем сервере! Обращайтесь за проверкой!

50600 руб.

21.05.2019    58062    81    131    

73

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

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

58000 руб.

15.04.2019    84025    225    175    

161

Перенос данных 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    62793    82    132    

81

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 10 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

85400 руб.

05.10.2022    13447    15    8    

16
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 1092 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 3165 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 3165 06.03.26 09:51 Сейчас в теме
(6)
Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера. (os error 10060)


Хм, ну такая ошибка обычно возникает, когда какой-то неправильный адрес или порт. Т.е. когда клиент пытается стучать туда, где нет сервера, который ждет запроса. Если у вас в хосте localhost, попробуйте 127.0.0.1 и проверьте, что порт корректный
8. bayselonarrend 3165 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 3165 06.03.26 10:42 Сейчас в теме
12. bayselonarrend 3165 06.03.26 10:45 Сейчас в теме
(10) Если нужно будет качать/загружать большие файлы, то я бы рекомендовал еще обновить расширение по ссылке выше. Или сделать это после выхода релиза 1.33.0 - это будет сегодня вечером или завтра

В этом обновлении были изменения по sftp в том числе, скорость загрузки стала заметно выше
13. derbenevSlava1C 03.04.26 13:53 Сейчас в теме
Подскажите пожалуйста, как подключиться с помощью данного расширения к SFTP, если в WinSCP подключение выполняется по логину/паролю с использованием SshHostKeyFingerprint
14. bayselonarrend 3165 03.04.26 14:01 Сейчас в теме
(13) Здравствуйте. Библиотека не проверяет Fingerprint, полученный от сервера. Вы можете просто подключиться по логину и паролю, отсутсвие проверки на клиенте не должно влиять на сервер SFTP.

Если вам это нужно по каким-то правилам инфобеза или вроде того, то можете создать Issue на добавление такой функции https://github.com/Bayselonarrend/OpenIntegrations/issues
Для отправки сообщения требуется регистрация/авторизация