Skip to content
/ crs-api Public

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

License

Notifications You must be signed in to change notification settings

otymko/crs-api

Repository files navigation

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

GitHub release Статус Порога Качества Покрытие Технический долг GitHub license

Краткое описание

Библиотека позволяет напрямую взаимодействовать с сервером хранилища 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