/crs-api

Библиотека взаимодействия с хранилищем 1С по HTTP

Primary Language1C EnterpriseMIT LicenseMIT

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С требуется:

  • Сервер хранилищ 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";
КлиентХранилища.ОбновитьПользователяХранилища(ПользовательХранилища);

Изменение роли пользователя хранилища

// ...
ИмяПользователя = "Иванов Иван";
ПользовательХранилища = КлиентХранилища.НайтиПользователя(ИмяПользователя);
// ...
ПользовательХранилища.Роль = РолиХранилища.Администратор;
КлиентХранилища.ОбновитьПользователяХранилища(ПользовательХранилища);

Получение списка пользователей хранилища

Для получения списка пользователей хранилища (включая "удаленных"):

// ...
СписокПользователей = КлиентХранилища.СписокПользователей();

СписокПользователей будет содержать массив объектов ПользовательХранилища.

Как вести разработку

Используется:

  • Русский вариант синтаксиса
  • Тестирование (пока не опубликовано)
  • Разработка по gitflow

Прежде чем кодить нужно:

  • Убедиться, что cуществует issue (или создать)
  • Обсудить идею с владельцем проекта

Текущие ограничения

На данный момент библиотека имеет следующие ограничения:

  • Новое хранилище 1С создается из встроенного шаблона конфигурации 1С (пустая конфигурация)

"Дорожная карта"

В планах реализовать:

  • Получение списка версий хранилища
  • Получение cf или cfe по версии хранилища
  • Создание нового хранилища из файла cf или cfe
  • Взаимодействия с версиями хранилища. Изменение меток, комментария
  • "Обрезка" хранилища

Лицензия

Используется лицензия MIT License