Работа с онлайн сервисами из консоли через OInt CLI

05.08.24

Интеграция - Облачные сервисы, хостинг

Примеры решения некоторых насущных проблем при работе с облачными сервисами, покрываемых CLI версией Открытого пакета интеграций - OInt CLI.

Я довольно часто пишу про Открытый пакет интеграций, и большинству данный проект известен как расширение для работы с облачными сервисами на базе платформы 1С:Предприятие. Однако, это лишь одна сторона проекта - самая известная, но не единственная. Поэтому, сегодня я хочу уделить больше внимания другой его части, моей любимой, если быть откровенным - приложению для командной строки OInt CLI, области его применения, решаемым задачам и принципу работы

 

Зачем нужен OInt CLI ?

 

Как уже было отмечено ранее, OInt CLI - это программа, приложение для командной строки. Но что оно умеет? Да, собственно, ровно все то же самое, что и оригинальный Открытый пакет интеграций - работать с облачными сервисами по Http. Набор методов OInt CLI и 1С расширения ОПИ практический полностью идентичен: сохранены имена функций и наборы параметров. Просто это работает из консоли и без 1С благодаря OneScript! 

 

В каких ситуациях OInt CLI может быть полезен:

  • Когда нужно быстро выполнить какую-либо манипуляцию с облачным сервисом без доступа к 1С
  • При тестировании и настройке сервиса для быстрой проверки результатов выполнения различных действий
  • Для подбора нужных методов и параметров под работу с 1С расширением ОПИ в дальнейшем
  • При автоматизации различных процессов, начиная с одиночных .bat файлов, заканчивая сложным CI/CD

 

Далее мы перейдем к конкретным примерам, но сначала пару слов про установку OInt CLI

 

Установка

 

OInt CLI доступен как на Windows, так и на Linux системах. Для его установки в каждом релизе ОПИ есть набор файлов, состоящий из двух .exe - Windows установщика и универсального исполняемого файла, .rpm пакета для Fedora/CentOS дистрибутивов и .deb пакета для дистрибутивов, основанных на Debian.

Вы можете просто скачать файл, подходящий для используемой вами системы

 

Как показывает статистика, чаще всего используется Windows версия OInt CLI - она же является самой простой в установке благодаря файлу установщика: Скачал -> Далее...Далее -> Готово

 

Приложение написано на OneScript, который, в свою очередь, требует .Net Framework 4.8. На всех более-менее современных версиях Windows он будет и так, а на Linux работает через Mono - прописан как зависимость внутри RPM и Deb-пакетов

Также, если вы пользуетесь OneScript и знаете, что такое OPM, то получить OInt CLI даже еще проще: он есть как пакет в OPM под именем oint-cli

 

opm install oint-cli

 

После установки одним из доступных способов, OInt CLI должен стать доступен для вызова в командной строке через команду oint (для Windows установщика может потребоваться перезагрузка)

 

Примеры работы

 

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

Начнем с простого - отправка отчета о выполнении какого-либо процесса в Telegram. Работать я буду просто в командной строке, но организовать вызов из других инструментов, думаю, не должно вызвать никаких дополнительных трудностей

Так как это первый пример, для начала, просто запустим oint и посмотрим, какой вывод мы на это получим

 

 

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

Выберем самую первую библиотеку - telegram. Для этого напишем oint telegram и посмотрим на результат

 

Вызов библиотеки без указания метода возвращает список доступных функций. Для удобства, они дополнительно разделены по видам решаемых задач, которые равны областям в коде ОПИ и разделам документации

 

 

Теперь мы можем перейти непосредственно к отправке сообщения в Telegram. Если необходим только текст - выбираем функцию ОтправитьТекстовоеСообщение

 

При вызове функции без опций, выводится справка по методу и его параметрам. Набор параметров, опять же, соответствует таковым в 1С. Теперь уже отправим сообщение



 

В переменную %token% я заранее, за кадром, установил токен бота, а переменные %date% и %time% - это стандартные переменные в CMD, содержащие текущую дату и время системы

В качестве идентификатора чата тут выступает имя канала через @, но и числовые ID для отправки в чаты и личные сообщения пользователям также сюда подходят

 

Если же кроме текста необходимо отправлять еще и некоторый файл (например, какой-нибудь лог), то это будет ненамного сложнее: вместо функции ОтправитьТекстовоеСообщение просто вызывается функция ОтправитьДокумент с дополнительным параметром пути к файлу

 

В итоге мы получаем такое же сообщение, но уже с файлом. Слишком большой документ таким образом не пошлешь, но это уже ограничение API Telegram, а не самого OInt. Для отправки логов и текстовых файлов с результатами какого-либо процесса вполне подойдет

 

 

Теперь посмотрим более комплексный пример - отправка файла в облако

В наборе методов ОПИ есть решения для работы с тремя облачными сервисами: Google Drive, Yandex.Disk и Dropbox. Сразу стоит оговориться, что если подразумевается отправлять небольшие файлы (до 2 ГБ), то подойдет любое из них. При необходимости отправки больших файлов здесь отпадает Yandex.Disk, так как его API не имеет функционала для загрузки частями (т.н. Chunked Uploads)

В качестве примера я выбрал Google Drive, работа с которым позволит нам не только взглянуть на отправку файла, но и разобрать такой момент, как обновление временного токена доступа - с него и начнем

Если в случае с Telegram, который мы рассматривали первым, токен для бота выдается раз и навсегда, то большинство других сервисов токены выдает лишь на определенное время - их необходимо периодически обновлять

Для обновления токена сервиса Google  Drive в данном примере, необходимо вызвать функцию ОбновитьТокен из общего набора (библиотеки) google

 

oint google ОбновитьТокен --id %clientid% --secret %clientsecret% --refresh %refresh%

 

В нее передается ClientID, ClientSecret и RefreshToken - секретные данные для обновления. Далее, в рамках этого этапа, полученный в ответе JSON необходимо будет сохранить в файл. Для этого в OInt CLI есть универсальный для всех функций параметр --out (его описание можно увидеть на главной странице при вызове oint), в котором указывается путь к файлу для сохранения. Также можно воспользоваться и стандартной конструкцией ">", но тогда файл будет сохранен в кодировке оболочки, а не в UTF-8, как в случае с --out. Это может вызвать проблемы с использованием таких файлов из oint и других утилит на OneScript в дальнейшем

 

 

Но JSON ответа - это не чистое значение токена, которое нам необходимо. Для обработки подобных случаев, когда требуется разбор JSON в конечные значения, в составе OInt есть функция РазложитьJSON из набора tools

Вызвать функцию РазложитьJSON можно двумя способами: без указания имени поля JSON - тогда будет выведен весь список доступных полей и значений, где можно найти необходимые, и с указанием имени поля - тогда уже вернется конкретное его значение, которое можно будет куда-нибудь записать и использовать. Вот как это выглядит в нашем примере с ответом сервера по обновлению токена, записанным в newtoken.json

 

 

Теперь мы можем использовать новый токен из параметра %token%. Осталось лишь отправить файл на диск



 

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

 

Полный набор команд:

oint google ОбновитьТокен --id %clientid% --secret %clientsecret% --refresh %refresh% --out C:/newtoken.json
oint tools РазложитьJSON --json C:/newtoken.json --enc CP866 --name access_token > token.tmp
set /p token=<token.tmp
oint gdrive ЗагрузитьФайл --token %token% --file C:/log.txt --props "{'MIME':'text/plain','Имя':'log.txt','Родитель':'root'}"

 

Подытожив

Мы рассмотрели простой случай с отправкой данных в Telegram, а также обновление токена, разбор JSON и передачу JSON параметра в случае с отправкой файла на облачный диск Google Drive. Ничего больше экстраординарного в других методах на данный момент встретить нельзя - принцип схож, просто выбирайте функции под свои конкретные нужды

Информацию по всем методам, также как и в случае с расширением для 1С, можно найти в документации: там есть и примеры вызываемых команд, и соотношение CLI опций с параметрами для 1С и OneScript

 

 

Скачать OInt CLI и расширение ОПИ для 1С можно на Github по ссылкам ниже
 

 

Также не забывайте ставить звездочку этому и другим открытым репозиториям, если они вам понравилась! Проектам это помогает в развитии, а вам - в отслеживании новостей о выходе новых версий

 

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

 

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

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

 

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

 

 

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

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

ОПИ API интеграция CLI консоль devops cicd onescript os облако сервисы обмен

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

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

См. также

Облачные сервисы, хостинг Системный администратор Бесплатно (free)

Рассматриваем переход от классической инфраструктуры к облачным моделям и причины, по которым бизнес все чаще выбирает PaaS: скорость внедрения, снижение затрат и отказоустойчивость. Разбираем, какую роль Kubernetes играет в автоматизации, масштабировании и управлении контейнеризированными приложениями, а также можно ли считать 1С Cloud Native-приложением. На примере архитектуры кластера 1С показываем, как компоненты сервера упаковываются в контейнеры, какие ограничения возникают из-за монолитной природы 1С и как их можно обходить. В финальной части объясняем, как Prometheus, Grafana, Loki/ELK и другие инструменты мониторинга помогают контролировать состояние сервиса и делать облачную платформу удобнее для бизнеса.

02.06.2026    854    militarymax    0    

1

Перенос данных 1C Облачные сервисы, хостинг Программист 1С 8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Бесплатно (free)

Если нужно выгрузить данные базы 1С: БП в формате data_dump, без конфигурации, можно воспользоваться типовым функционалом "Переход в облачный сервис". Но вы можете столкнуться с тем, что в начале выгрузки типовая обработка пишет ошибку. Ошибка связана с тем, что в справочнике "Предопределенные варианты отчетов" могут быть дубли. Это служебный справочник, и его данные можно редактировать или удалять только программно. Типовая обработка удаления помеченных объектов не поможет в этом случае. Там просто нет объектов из этого справочника, даже если они помечены на удаление. Написанная мной обработка поможет удалить некорректные элементы справочника буквально в пару кликов.

29.05.2026    376    27    Kilgure    2    

2

WEB-интеграция Облачные сервисы, хостинг 1С 8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Россия Абонемент ($m)

Внешняя обработка предназначена для автоматической выгрузки файлов из локального или серверного каталога на Яндекс.Диск через официальный REST API Яндекса. Решение удобно использовать для регулярной передачи отчетов, обменных файлов, архивов, выгрузок из 1С и других документов в облачное хранилище без ручного копирования через браузер или клиент Яндекс.Диска.

3 стартмани

18.05.2026    1151    10    Rom_Kat    0    

5

Облачные сервисы, хостинг Системный администратор Программист Бесплатно (free)

Рассказываем, как родилась идея готового облака 1С и какие инновации сделали его полноценной PaaS-платформой. Материал будет полезен тем, кто ищет способ упростить взаимодействие с 1С, сохранив масштабируемость и надежность корпоративных систем.

14.04.2026    1037    militarymax    0    

2

Облачные сервисы, хостинг WEB-интеграция Программист Бесплатно (free)

Очереди сообщений – это инструмент обмена данными между системами. На примере Yandex Message Queue разбираем, как брокер от Яндекс.Облака помогает решать практические задачи. Даем бесплатную библиотеку для 1С, которая упрощает работу с YandexMQ и другими SQS-сервисами.

17.11.2025    4320    leemuar    38    

28

Облачные сервисы, хостинг Программист 1С:Предприятие 8 Абонемент ($m)

Универсальная выгрузка отчетов 1С в облако (Яндекс.Диск, Mail.ru) по расписанию. Любые отчеты на СКД и обычные. Вычисляемые параметры, макросы имен, 5 форматов, полная история. Обычные формы 8.2+. Тестировалась на платформе 8.3.25.1394 в режиме совместимости 8.3.12.

2 стартмани

20.10.2025    1497    4    daka    4    

5

Облачные сервисы, хостинг Бесплатно (free)

Работа с системами 1С в облаке открывает новые горизонты для эффективного управления компанией. Цель данного обзора — проанализировать доступные на рынке облачные сервисы и помочь выбрать решение, которое наилучшим образом соответствует задачам и потребностям вашего бизнеса.

16.10.2025    2292    osa1C    1    

3

Облачные сервисы, хостинг Программист 1С:Предприятие 8 Россия Абонемент ($m)

При выгрузке данных базы 1С для фреш (пункт меню в разделе Администрирование Выгрузка для сервиса или перейти в облачный сервис) столкнулся с кучей ошибок, связанных с дубликатами в справочниках. Обработка позволяет удалить элемент справочника, для которого есть замечания дублирования.

1 стартмани

07.04.2025    1812    3    AlexHelmer    0    

1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. uno-c 272 05.08.24 11:30 Сейчас в теме
Мое почтение! Хоть мне и удобнее писать самому по первичной документации API, тем не менее Ваши работы вызывают уважение.
mbx_baza; +1 Ответить
2. bayselonarrend 3201 05.08.24 11:32 Сейчас в теме
3. aximo 2699 05.08.24 17:34 Сейчас в теме
Не побоюсь написать, но все-таки и-старт остается единственным вменяемым профильным ресурсом, где можно почерпнуть что- нибудь интересное - даже в «режиме ознакомления»
mbx_baza; +1 Ответить
4. bayselonarrend 3201 05.08.24 17:36 Сейчас в теме
5. KPOXOTO3ABP 7 23.08.24 19:58 Сейчас в теме
Будет ли уместным задать вопрос. Использую вашу библиотеку для работы интернет сервисами и столкнулся с проблемой.
Ситуация массовый трекинг Почты России
через "WinHttp.WinHttpRequest.5.1" запрос работает
а через 1С нет.
Веб сервис идет с переадресацией:
Первичный адрес "https://tracking.russianpost.ru/fc?wsdl"
затем пересылает на "https://tracking.russianpost.ru/tracking-web-static/fc_wsdl.xml"
после чего выдает ошибку 405
А вот при использовании WinHttp.WinHttpRequest.5.1 ошибки нет.
Не подскажете куда копать?
Какой то авторизации там тоже нет, она сидит в XML теле запроса:
Запрос = НСтр("ru = '<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:pos=""http://fclient.russianpost.org/postserver"" xmlns:fcl=""http://fclient.russianpost.org"">
|<soapenv:Header/>
|<soapenv:Body>
| <pos:ticketRequest>
| <request>
| <fcl:Item Barcode = ""80098299076642""/>
|<fcl:Item Barcode = ""80098299076543""/>
|<fcl:Item Barcode = ""80098299076574""/>
|<fcl:Item Barcode = ""80098299076581""/>
| </request>
| <login>*****</login>
| <password>*****</password>
| <language>RUS</language>
| </pos:ticketRequest>
|</soapenv:Body>
|</soapenv:Envelope>'");
6. KPOXOTO3ABP 7 24.08.24 07:38 Сейчас в теме
(5) Сам спросил сам отвечу - проблема была в том что пытался установить защищенное соединение. Оно не нужно в этом случае. Без него ответ приходит сразу и без переадресации.
bayselonarrend; +1 Ответить
7. bayselonarrend 3201 24.08.24 10:02 Сейчас в теме
(6) Да, пропустил вчера вопрос. Хотя как связан обмен с Почтой России и ОПИ я не понял о_О
Для отправки сообщения требуется регистрация/авторизация