Если вы не слышали ранее об Открытом Пакете Интеграций (что вполне вероятно), то небольшая вводная часть ниже, под катом. Тем, кто уже знаком с ОПИ, данный раздел можно пропустить.
Открытый Пакет Интеграций (ОПИ, 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-агента
Примеры кода
Подробнее о каждом из методов, а также о работе с 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
Вступайте в нашу телеграмм-группу Инфостарт