crs-api
crs-api copied to clipboard
Библиотека взаимодействия с хранилищем 1С по HTTP
CRS API - библиотека взаимодействия c сервером хранилищ 1С по HTTP
Краткое описание
Библиотека позволяет напрямую взаимодействовать с сервером хранилища 1С по протоколу HTTP. В библиотеке не используется пакетный режим запуска 1С.
Область применения
Библиотека используется для централизованного управления хранилищами 1С. С помощью проекта например можно:
- Управлять пользователями хранилищ в едином месте.
P.S. Для этого требуется написать веб приложение на базе OneScript.Web.
Установка
С помощью opm
В консоли нужно выполнить команду:
opm install crs-api
Из файла
Собираем вручную или качаем пакет из раздела Релизы
. Для установки из файла, в консоли выполняем команду:
opm install -f /path/to/crs-api.osxp
Примеры
Версия сервера хранилищ 1С
Для запроса версии сервера хранилищ 1С:
АдресХранилища = "http://localhost/repo/repo.1cc";
ВерсияСервераХранилища = МенеджерХранилищ.ВерсияСервераХранилища(АдресХранилища);
После выполнения, ВерсияСервераХранилища
содержит версию сервера хранилища. Например: 8.3.12.1855
.
В случае возникновения будет вызвано исключение.
Проверка существования хранилища 1С
Для проверки существования хранилища 1С:
АдресХранилища = "http://localhost/repo/repo.1ccr";
ИмяХранилища = "MyTrade";
ВерсияПлатформы = "8.3.15.1855";
ХранилищеСуществует = МенеджерХранилищ.ХранилищеСуществует(АдресХранилища, ИмяХранилища, ВерсияПлатформы);
Если хранилище существует, то значение переменной ХранилищеСуществует
будет Истина
.
Создание нового хранилища 1С
Для создания нового хранилища 1С требуется:
- Сервер хранилищ 1С опубликованный на веб-сервере
АдресХранилища = "http://localhost/repo/repo.1ccr";
ИмяХранилища = "MyTrade";
ВерсияПлатформы = "8.3.15.1855";
Пользователь = "Администратор";
Пароль = "qwerty12345";
Результат = МенеджерХранилищ.НовоеХранилище1C(АдресХранилища, ИмяХранилища,
ВерсияПлатформы, Пользователь, Пароль);
Сообщить(Результат); // ИмяХранилища
В результате на сервере хранилищ 1С будет создано новое хранилище 1С с именем MyTrade
.
Хранилище будет доступно по адресу: http://localhost/repo/repo.1ccr/MyTrade
.
Если хранилище не было создано, Результат
будет равен Неопределено
.
Подключение к хранилищу 1С
АдресХранилища = "http://localhost/repo/repo.1ccr";
ВерсияПлатформы = "8.3.15.1855";
ИмяХранилища = "MyTrade";
Пользователь = "Администратор";
Пароль = "qwerty12345";
КлиентХранилища = Новый КлиентХранилища(АдресХранилища, ВерсияПлатформы);
КлиентХранилища.Подключиться(Пользователь, Пароль, ИмяХранилища);
В результате с помощью КлиентХранилища
теперь можно будет выполнять основное взаимодействие с хранилищем.
При ошибке подключения (сервер хранилища недоступен) будет вызвано исключение. При успешном подключении:
// ...
КлиентПодключен = КлиентХранилища.АвторизацияПройдена(); // КлиентПодключен будет равен Истина при успешном подключении
Создание пользователя хранилища
Пример создания нового пользователя хранилища:
// ...
ИмяПользователя = "Иванов Иван";
Пароль = "12345";
Роль = РолиХранилища.Разработчик;
КлиентХранилища.СоздатьПользователя(ИмяПользователя, Пароль, Роль);
В случае неудачи будет вызвано исключение с текстом ошибки.
У РолиХранилища
доступны значения:
-
ТолькоПросмотр
- дополнительных прав в хранилище не выдано -
Разработчик
- возможность захвата объектов в хранилище -
РазработчикРасширенный
- возможность захвата объектов и изменения состава версий в хранилище -
Администратор
- полные права без ограничений
Поиск пользователя хранилища
Существующего пользователя хранилища можно найти по его имени.
ИмяПользователя = "Иванов Иван";
ПользовательХранилища = КлиентХранилища.НайтиПользователя(ИмяПользователя);
Если пользователь найден, то ПользовательХранилища
будет содержать объект со свойствами:
-
Идентификатор
- идентификатор пользователя в хранилище, принимает значение формата GUID -
Имя
- имя пользователя -
ХешПароля
- хеш пароля пользователя -
Роль
- роль в хранилище -
Активен
- признак авторизации пользователя -
Удален
- признак деактивации пользователя
Если пользователь не найден, то ПользовательХранилища
будет равен Неопределено
.
Удаление пользователя хранилища
Для удаления пользователя в хранилище, нужно знать его идентификатор.
// ...
ИмяПользователя = "Иванов Иван";
ПользовательХранилища = КлиентХранилища.НайтиПользователя(ИмяПользователя);
КлиентХранилища.УдалитьПользователя(ПользовательХранилища.Идентификатор);
При неуспешном удалении (деактивации) будет вызвано исключение с текстом ошибки.
Восстановление пользователя хранилища
Для восстановления существующего пользователя в хранилище, нужно знать его идентификатор.
// ...
ИмяПользователя = "Иванов Иван";
ПользовательХранилища = КлиентХранилища.НайтиПользователя(ИмяПользователя);
КлиентХранилища.ВосстановитьПользователя(ПользовательХранилища.Идентификатор);
При неуспешном удалении (деактивации) будет вызвано исключение с текстом ошибки.
Изменение пользователя хранилища
Изменение пользователя может понадобиться для следующего:
- Изменение имени пользователя
- Смена пароля
- Изменение роли
В случае неудачи изменения данных пользователя будет вызвано исключение с текстом ошибки.
Изменение имени пользователя хранилища
// ...
ИмяПользователя = "Иванов Иван";
ПользовательХранилища = КлиентХранилища.НайтиПользователя(ИмяПользователя);
// ...
ПользовательХранилища.Имя = "Иванов И.И.";
КлиентХранилища.ОбновитьПользователяХранилища(ПользовательХранилища);
Изменение пароля пользователя хранилища
// ...
ИмяПользователя = "Иванов Иван";
ПользовательХранилища = КлиентХранилища.НайтиПользователя(ИмяПользователя);
// ...
ПользовательХранилища.Пароль = "qwerty51";
КлиентХранилища.ОбновитьПользователяХранилища(ПользовательХранилища);
Изменение роли пользователя хранилища
// ...
ИмяПользователя = "Иванов Иван";
ПользовательХранилища = КлиентХранилища.НайтиПользователя(ИмяПользователя);
// ...
ПользовательХранилища.Роль = РолиХранилища.Администратор;
КлиентХранилища.ОбновитьПользователяХранилища(ПользовательХранилища);
Получение списка пользователей хранилища
Для получения списка пользователей хранилища (включая "удаленных"):
// ...
СписокПользователей = КлиентХранилища.СписокПользователей();
СписокПользователей
будет содержать массив объектов ПользовательХранилища
.
Получение список версий в хранилище
Для получения списка версий в хранилище:
// ...
СписокВерсийВХранилище = КлиентХранилища.СписокВерсий();
СписокВерсийВХранилище
будет содержать массив объектов ВерсияХранилища
. Из объекта ВерсияХранилища
доступны следующие свойства:
-
Идентификатор
- внутренний идентификатор версии (GUID) -
Номер
- порядковый номер версии -
Дата
- дата создания версии -
ВнутренняяВерсия
- внутренняя версия конфигурации -
Версия
- версия конфигурации -
Пользователь
- автор версии -
Версия1С
- номер версии платформы 1С, под которой была создана версия -
Комментарий
- комментарий к версии хранилища -
Данные
- данные конфигурации, пока закрытый пакет
Как вести разработку
Разработка ведется в репозитории otymko/crs-api, issue и PR нужно создавать именно в нем.
Используется:
- Русский вариант синтаксиса
- Тестирование (пока не опубликовано)
- Разработка по
gitflow
Прежде чем кодить
нужно:
- Убедиться, что cуществует issue (или создать)
- Обсудить идею с владельцем проекта
Текущие ограничения
На данный момент библиотека имеет следующие ограничения:
- Новое хранилище 1С создается из встроенного шаблона конфигурации 1С (пустая конфигурация)
"Дорожная карта"
В планах реализовать:
- Получение списка версий хранилища
- Получение
cf
илиcfe
по версии хранилища - Создание нового хранилища из файла
cf
илиcfe
- Взаимодействия с версиями хранилища. Изменение меток, комментария
- "Обрезка" хранилища
Лицензия
Используется лицензия MIT License