Если вы не слышали ранее об Открытом Пакете Интеграций (что вполне вероятно), то небольшая вводная часть ниже, под катом. Для тех, кто уже знаком с ОПИ, данный раздел можно пропустить.
Открытый Пакет Интеграций (ОПИ) - это open-source набор методов для простой и быстрой интеграции с различными популярными API. Он состоит из аналогичных по функционалу 1С-расширения (CFE), OS-пакета и программы для Windows и Linux, которые предоставляют готовые функции для работы с целым набором различных онлайн-сервисов.
- ОПИ бесплатен и имеет открытый исходный код на GitHub. Вы всегда можете получить последнюю версию библиотеки на странице репозитория, а подписавшись - узнавать о выходе обновлений. Все релизы сопровождаются статьями на Инфостарт и разделами единой документации. На Инфостарт вы можете подписаться уже хоть сейчас, а про документацию я расскажу далее.
- Удобная единая документация. Она расположена на сайте opi.neocities.org и содержит в себе всю информацию, необходимую для работы: инструкции по предварительным действиям для начала интеграции, описания всех методов с параметрами и возвращаемыми значениями, примеры кода и т.д. Каждый API имеет там свой раздел.
- Простая установка. ОПИ распространяется во множестве вариантах: как XML файлы расширения, как EDT проект расширения, как файл расширения формата .cfe (версия 1С 8.3.9), как файл пакета для OneScript и еще в целом наборе пакетов и файлов для Windows и Linux. Из этого набора вы всегда сможете выбрать тот способ установки, который лучше подойдет для вашей конкретной задачи
На момент последнего обновления данной статьи, доступны следующие API:
Наиболее актуальную информацию можно посмотреть в репозитории или на вводной странице документации.
Google Drive - популярное облачное хранилище, один из сервисов Google Workspace. В этом обновлении были добавлены основные методы, позволяющие с ним взаимодействовать посредством API
Реализованные методы:
- Работа с файлами и папками
- Получение информации об объекте
- Получение списка каталогов
- Получение списка файлов
- Загрузка файлов
- Копирование файлов
- Обновление двоичных данных существующих файлов
- Скачивание (получение двоичных данных) файлов
- Создание каталогов
- Удаление объектов
- Работа с комментариями
- Получение комментария по ID
- Получение списка комментариев объекта
- Создание комментария
- Удаление комментария
Применение их, в целом и по смыслу, совпадает с таковыми у библиотеки для работы с Yandex Disk. API Яндекса мне нравится больше и функционал там шире, но вы можете выбрать (или даже уже используете) тот сервис, который вам более удобен - теперь они тут есть оба, а основные функции, будь то загрузить, скачать или удалить ничем особенно не отличаются. Зацеплю лишь некоторые основные моменты.
Общие токены на сервисы Google Workspace
До сегодняшнего релиза в Открытом пакете интеграций уже была библиотека из набора сервисов Google - это библиотека для планировщика Google Calendar. Если вы использовали её, то наверняка проходили довольно длинный и муторный процесс первоначальной регистрации и настройки всего необходимого перед началом работы, который описан в документации.
Повторять весь процесс целиком для вас, конечно же, будет не нужно - достаточно лишь выполнить два последних пункта: активировать API Google Drive и заново получить токен по ссылке из функции OPI_GoogleWorkspace.СформироватьСсылкуПолученияКода().
Важно
В зависимости от того, какие сервисы вы используете, зависит и количество необходимых разрешений при формировании ссылки получения токена. Определяется это параметрами функции СформироватьСсылкуПолученияКода - Calendar и Drive (на данный момент).
Разрешения тех API, которые вы не используете, необходимо передать как Ложь - значения по умолчанию для всех библиотек равны Истина
Данная функция не является методом для частого использования - она необходима лишь для стартовой настройки и потом больше не применяется. Так что, думаю, проблем с этим возникнуть не должно
Осторожное использование рекурсивных методов
Методы, отвечающие за получение списков объектов, а именно ПолучитьСписокКаталогов и ПолучитьСписокФайлов, рекурсивно отправляют запросы к Google Workspace до тех пор, пока те не закончатся.
Выполнение данных методов без отборов, в частности на дисках с большим количество файлов, может привести к тому, что а) все будет получаться очень долго, а найти в полученном ответе из тысяч файлов что-либо будет крайне сложно б) будет съедено очень много квоты выполнения запросов к сервису
Так что, несмотря на необязательность параметров отбора, таких как ИмяСодержит и Каталог, выполнять функции без них не рекомендуется (пусть и не воспрещается).
Блок работы с комментариями
Если с первой частью библиотеки, которая отвечает за работу с файлами и каталогами, все вполне понятно, то про комментарии лично я не знал до того, как увидел их описание в документации к API. Ничего сложного или невероятного в данном в функционале нет, остановимся на нем лишь вкратце.
Комментарии в Google Drive - небольшие текстовые заметки, которые можно оставлять применимо к файлам, лежащим на облачном диске. Нас они, в первую очередь, могут заинтересовать возможностью взаимодействия между пользователем из 1С и пользователем, который работает лишь напрямую с Drive через приложение или web-интерфейс.
Например, мы можем оставить комментарий через API из 1С по какому либо событию. Делается это вот таким простым кодом:
Идентификатор = "1rCyOc4A8VYw7DM3HV55P9BuKWayJOSvW";
Комментарий = "Новый комментарий";
Ответ = OPI_GoogleDrive.СоздатьКомментарий(Токен, Идентификатор, Комментарий);
И теперь этот комментарий будет виден всем пользователям, у которых есть доступ к файлу на диске
В свою очередь, комментарий, добавленный руками напрямую, может быть получен назад из 1С. Делается это также просто:
ИДФайла = "1rCyOc4A8VYw7DM3HV55P9BuKWayJOSvW";
Ответ = OPI_GoogleDrive.ПолучитьСписокКомментариев(Токен, ИДФайла);
Ничего особенного, но применение можно найти.
Немного новостей проекта
Про новую библиотеку рассказать больше особо нечего: методы как методы, API как API - все как всегда есть в документации
Расскажу немного про сам проект ОПИ. Последнее время я занимаюсь автоматизацией некоторых часто повторяющихся монотонных действий, которые приходится совершать в процессе разработки библиотеки.
Я уже рассказывал про автотесты в статье про портирование Открытого пакета интеграций на OneScript, но сейчас, помимо этого, сам процесс "внутренней кухни" поддержки двух схожих кодовых баз - 1С и OneScript - перенесен на Github Actions. А значит его видно теперь и снаружи.
Я обязательно посвящу этому отдельную статью, где расскажу, что это такое и зачем оно нужно, но, если вы уже некоторым образом в теме, то есть отдельные моменты, которые могут быть вам интересны уже сейчас. В частности, в моем workflow есть примеры реализации таких вещей как:
- Выполнение кода на OneScript внутри Github Actions для преобразования структуры кода проекта EDT в структуру кода пакета OneScript. В самом скрипте ничего особенного нет - на 1С же, но вот с кодом самого описания процесса запуска уже все не так однозначно.
Не буду пока подробно его разбирать, скажу лишь, что сама возможность запуска OneScript внутри Github Actions - это очень здорово. Будущее наступило, так сказать :)
- Выполнение тестирования asserts через 1testrunner. Прописано оно достаточно топорно, но это в угоду подробности логирования
- Принцип хранения, расшифровки и последующего шифрования данных, применяемых в тестах.
Смысл таков, что в репозитории хранится зашифрованный json с различными токенами и ключами. В процессе тестирования он расшифровывается, служит источником информации для тестов (тесты также могут записывать в него новую информацию - например, обновленные токены), после чего шифруется обратно и сохраняется в репозитории. Шифрование и расшифровка реализованы при помощи gpg.
- Пример передачи файлов-артефактов между процессами. Это необходимо в тех случаях, когда один и тот же файл должен передаваться между различными процессами обработки. У меня так, например, передается тот файл с ключами и токенами между процессами Расшифровка -> Тестирование -> Шифрование
Если же Github Actions вам пока ни о чем не говорит, то данный блок, тем не менее, может быть интересен в других двух случаях
- При создании форков этот workflow переходит в новый репозиторий, а значит его также можно использовать в своем ответвлении. Шаблон файла данных для тестирования я добавлю чуть позже.
- Если какой-то момент в использовании библиотеки остается для вас непонятным по документации, то глядя одним глазом в файл тестов, а другим - в результаты их выполнения внутри GA, можно получить прямой актуальный пример "программный код -> результат выполнения"
Код библиотеки для 1С и код библиотеки для OneScript - это один и тот же код, так что результаты этих тестов релевантны для обеих библиотек
Тестирование запускается довольно часто, а значит данные в результатах всегда будут актуальны.
Не всегда, правда, весь процесс тестирования целиком выполняется успешно, но только лишь по причине постоянных временных блокировок меня различными сервисами за чрезмерное их использование :Р
Так или иначе, теперь процесс тестирования стал более прозрачным для вас, а процесс сборки релизов - простым для меня. Посмотреть на это все можно по ссылке.
Ну а пока все.
Спасибо за внимание!
Репозиторий ОПИ: github.com/Bayselonarrend/OpenIntegrations
Последний релиз: github.com/Bayselonarrend/OpenIntegrations/releases/latest
Другие статьи про Открытый пакет интеграций на Инфостарт:
Мой GitHub: https://gitub.com/Bayselonarrend Лицензия MIT: https://mit-license.org