https://github.com/otymko/crs-api
Библиотека взаимодействия с хранилищем 1С по HTTP
https://github.com/otymko/crs-api
checkbsl crs hacktoberfest onescript oscript-library
Last synced: 15 days ago
JSON representation
Библиотека взаимодействия с хранилищем 1С по HTTP
- Host: GitHub
- URL: https://github.com/otymko/crs-api
- Owner: otymko
- License: mit
- Created: 2020-10-18T08:08:35.000Z (over 5 years ago)
- Default Branch: develop
- Last Pushed: 2021-11-18T20:14:38.000Z (about 4 years ago)
- Last Synced: 2025-05-25T05:52:59.487Z (9 months ago)
- Topics: checkbsl, crs, hacktoberfest, onescript, oscript-library
- Language: 1C Enterprise
- Homepage:
- Size: 94.7 KB
- Stars: 37
- Watchers: 12
- Forks: 10
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CRS API - библиотека взаимодействия c сервером хранилищ 1С по HTTP
[](https://github.com/otymko/crs-api/releases)
[](https://open.checkbsl.org/dashboard?id=crs-api)
[](https://open.checkbsl.org/dashboard?id=crs-api)
[](https://open.checkbsl.org/dashboard?id=crs-api)
[](https://github.com/otymko/crs-api/blob/develop/LICENSE.md)
## Краткое описание
Библиотека позволяет напрямую взаимодействовать с сервером хранилища 1С по протоколу HTTP.
В библиотеке не используется пакетный режим запуска 1С.
## Область применения
Библиотека используется для централизованного управления хранилищами 1С. С помощью проекта например можно:
* Управлять пользователями хранилищ в едином месте.
P.S. Для этого требуется написать веб приложение на базе [OneScript.Web](https://github.com/EvilBeaver/OneScript.Web).
## Установка
### С помощью `opm`
В консоли нужно выполнить команду:
```sh
opm install crs-api
```
### Из файла
Собираем вручную или качаем пакет из раздела `Релизы`. Для установки из файла, в консоли выполняем команду:
```sh
opm install -f /path/to/crs-api.osxp
```
## Примеры
### Версия сервера хранилищ 1С
Для запроса версии сервера хранилищ 1С:
```bsl
АдресХранилища = "http://localhost/repo/repo.1cc";
ВерсияСервераХранилища = МенеджерХранилищ.ВерсияСервераХранилища(АдресХранилища);
```
После выполнения, `ВерсияСервераХранилища` содержит версию сервера хранилища. Например: `8.3.12.1855`.
В случае возникновения будет вызвано исключение.
### Проверка существования хранилища 1С
Для проверки существования хранилища 1С:
```bsl
АдресХранилища = "http://localhost/repo/repo.1ccr";
ИмяХранилища = "MyTrade";
ВерсияПлатформы = "8.3.15.1855";
ХранилищеСуществует = МенеджерХранилищ.ХранилищеСуществует(АдресХранилища, ИмяХранилища, ВерсияПлатформы);
```
Если хранилище существует, то значение переменной `ХранилищеСуществует` будет `Истина`.
### Создание нового хранилища 1С
Для создания нового хранилища 1С требуется:
* Сервер хранилищ 1С опубликованный на веб-сервере
```bsl
АдресХранилища = "http://localhost/repo/repo.1ccr";
ИмяХранилища = "MyTrade";
ВерсияПлатформы = "8.3.15.1855";
Пользователь = "Администратор";
Пароль = "qwerty12345";
Результат = МенеджерХранилищ.НовоеХранилище1C(АдресХранилища, ИмяХранилища,
ВерсияПлатформы, Пользователь, Пароль);
Сообщить(Результат); // ИмяХранилища
```
В результате на сервере хранилищ 1С будет создано новое хранилище 1С с именем `MyTrade`.
Хранилище будет доступно по адресу: `http://localhost/repo/repo.1ccr/MyTrade`.
Если хранилище не было создано, `Результат` будет равен `Неопределено`.
### Подключение к хранилищу 1С
```bsl
АдресХранилища = "http://localhost/repo/repo.1ccr";
ВерсияПлатформы = "8.3.15.1855";
ИмяХранилища = "MyTrade";
Пользователь = "Администратор";
Пароль = "qwerty12345";
КлиентХранилища = Новый КлиентХранилища(АдресХранилища, ВерсияПлатформы);
КлиентХранилища.Подключиться(Пользователь, Пароль, ИмяХранилища);
```
В результате с помощью `КлиентХранилища` теперь можно будет выполнять основное взаимодействие с хранилищем.
При ошибке подключения (сервер хранилища недоступен) будет вызвано исключение. При успешном подключении:
```bsl
// ...
КлиентПодключен = КлиентХранилища.АвторизацияПройдена(); // КлиентПодключен будет равен Истина при успешном подключении
```
### Создание пользователя хранилища
Пример создания нового пользователя хранилища:
```bsl
// ...
ИмяПользователя = "Иванов Иван";
Пароль = "12345";
Роль = РолиХранилища.Разработчик;
КлиентХранилища.СоздатьПользователя(ИмяПользователя, Пароль, Роль);
```
В случае неудачи будет вызвано исключение с текстом ошибки.
У `РолиХранилища` доступны значения:
* `ТолькоПросмотр` - дополнительных прав в хранилище не выдано
* `Разработчик` - возможность захвата объектов в хранилище
* `РазработчикРасширенный` - возможность захвата объектов и изменения состава версий в хранилище
* `Администратор` - полные права без ограничений
### Поиск пользователя хранилища
Существующего пользователя хранилища можно найти по его имени.
```bsl
ИмяПользователя = "Иванов Иван";
ПользовательХранилища = КлиентХранилища.НайтиПользователя(ИмяПользователя);
```
Если пользователь найден, то `ПользовательХранилища` будет содержать объект со свойствами:
* `Идентификатор` - идентификатор пользователя в хранилище, принимает значение формата GUID
* `Имя` - имя пользователя
* `ХешПароля` - хеш пароля пользователя
* `Роль` - роль в хранилище
* `Активен` - признак авторизации пользователя
* `Удален` - признак деактивации пользователя
Если пользователь не найден, то `ПользовательХранилища` будет равен `Неопределено`.
### Удаление пользователя хранилища
Для удаления пользователя в хранилище, нужно знать его идентификатор.
```bsl
// ...
ИмяПользователя = "Иванов Иван";
ПользовательХранилища = КлиентХранилища.НайтиПользователя(ИмяПользователя);
КлиентХранилища.УдалитьПользователя(ПользовательХранилища.Идентификатор);
```
При неуспешном удалении (деактивации) будет вызвано исключение с текстом ошибки.
### Восстановление пользователя хранилища
Для восстановления существующего пользователя в хранилище, нужно знать его идентификатор.
```bsl
// ...
ИмяПользователя = "Иванов Иван";
ПользовательХранилища = КлиентХранилища.НайтиПользователя(ИмяПользователя);
КлиентХранилища.ВосстановитьПользователя(ПользовательХранилища.Идентификатор);
```
При неуспешном удалении (деактивации) будет вызвано исключение с текстом ошибки.
### Изменение пользователя хранилища
Изменение пользователя может понадобиться для следующего:
* Изменение имени пользователя
* Смена пароля
* Изменение роли
В случае неудачи изменения данных пользователя будет вызвано исключение с текстом ошибки.
#### Изменение имени пользователя хранилища
```bsl
// ...
ИмяПользователя = "Иванов Иван";
ПользовательХранилища = КлиентХранилища.НайтиПользователя(ИмяПользователя);
// ...
ПользовательХранилища.Имя = "Иванов И.И.";
КлиентХранилища.ОбновитьПользователяХранилища(ПользовательХранилища);
```
#### Изменение пароля пользователя хранилища
```bsl
// ...
ИмяПользователя = "Иванов Иван";
ПользовательХранилища = КлиентХранилища.НайтиПользователя(ИмяПользователя);
// ...
ПользовательХранилища.Пароль = "qwerty51";
КлиентХранилища.ОбновитьПользователяХранилища(ПользовательХранилища);
```
#### Изменение роли пользователя хранилища
```bsl
// ...
ИмяПользователя = "Иванов Иван";
ПользовательХранилища = КлиентХранилища.НайтиПользователя(ИмяПользователя);
// ...
ПользовательХранилища.Роль = РолиХранилища.Администратор;
КлиентХранилища.ОбновитьПользователяХранилища(ПользовательХранилища);
```
### Получение списка пользователей хранилища
Для получения списка пользователей хранилища (включая "удаленных"):
```bsl
// ...
СписокПользователей = КлиентХранилища.СписокПользователей();
```
`СписокПользователей` будет содержать массив объектов `ПользовательХранилища`.
### Получение список версий в хранилище
Для получения списка версий в хранилище:
```bsl
// ...
СписокВерсийВХранилище = КлиентХранилища.СписокВерсий();
```
`СписокВерсийВХранилище` будет содержать массив объектов `ВерсияХранилища`. Из объекта `ВерсияХранилища` доступны следующие свойства:
* `Идентификатор` - внутренний идентификатор версии (GUID)
* `Номер` - порядковый номер версии
* `Дата` - дата создания версии
* `ВнутренняяВерсия` - внутренняя версия конфигурации
* `Версия` - версия конфигурации
* `Пользователь` - автор версии
* `Версия1С` - номер версии платформы 1С, под которой была создана версия
* `Комментарий` - комментарий к версии хранилища
* `Данные` - данные конфигурации, пока закрытый пакет
## Как вести разработку
Разработка ведется в репозитории [otymko/crs-api](https://github.com/otymko/crs-api), issue и PR нужно создавать именно в нем.
Используется:
* Русский вариант синтаксиса
* Тестирование (пока не опубликовано)
* Разработка по `gitflow`
Прежде чем `кодить` нужно:
* Убедиться, что cуществует issue (или создать)
* Обсудить идею с владельцем проекта
## Текущие ограничения
На данный момент библиотека имеет следующие ограничения:
* Новое хранилище 1С создается из встроенного шаблона конфигурации 1С (пустая конфигурация)
## "Дорожная карта"
В планах реализовать:
* Получение списка версий хранилища
* Получение `cf` или `cfe` по версии хранилища
* Создание нового хранилища из файла `cf` или `cfe`
* Взаимодействия с версиями хранилища. Изменение меток, комментария
* "Обрезка" хранилища
## Лицензия
Используется лицензия [MIT License](LICENSE)