Skip to content
/ crs-api Public

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

License

Notifications You must be signed in to change notification settings

otymko/crs-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

645fabe · May 13, 2021

History

83 Commits
May 13, 2021
Oct 18, 2020
Oct 18, 2020
May 13, 2021
Oct 25, 2020
Oct 26, 2020
Oct 26, 2020
Oct 26, 2020
Oct 26, 2020
Oct 18, 2020
Oct 27, 2020
May 13, 2021
May 13, 2021
Oct 25, 2020

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