Пользователи
В «1С:Шине» пользователи не привязаны к приложению, один и тот же пользователь может быть подключен сразу к нескольким приложениям. С точки зрения разработчика приложений и с точки зрения внешних систем пользователями управляет сервер.
Пользователем может являться как человек, который взаимодействует с приложением через клиентское приложение, так и информационная система, которая взаимодействует с приложением через программный интерфейс. Для целей администрирования пользователи объединяются в списки пользователей, причем каждый пользователь может входить в единственный список.
Средства встроенного языка для управления пользователями
Встроенный язык содержит несколько типов, которые позволяют управлять пользователями.
-
СпискиПользователей
Тип-одиночка, который позволяет из приложения управлять списками пользователей. Методы делятся на две группы: выполняющие манипуляции списками через сервер и работающие с текущим приложением без обращения к серверу.
-
СписокПользователей
Позволяет настроить список пользователей. Экземпляры типа
СписокПользователей
можно получить, например, методами:СпискиПользователей.Найти()
,СпискиПользователей.Создать()
,СпискиПользователей.ПолучитьСписокПоУмолчанию()
.
-
ПользователиСервиса
Тип-одиночка, который позволяет из приложения управлять пользователями. Предназначен для работы с сервером.
Пример создания пользователя
В этом примере мы создадим пользователя с учетной записью Active Directory и подключим его к приложению.
метод СоздатьИПодключить(ЛогинAD: Строка, ПредставлениеПользователя: Строка): Пользователи.Объект
знч СписокПользователей = СпискиПользователей.ПолучитьСписокПоУмолчанию()
пер Описание = новый ОписаниеПользователяСервиса(СписокПользователей.Ид, ПредставлениеПользователя)
если не ЛогинAD.Пусто()
пер СервисAD = новый СервисУчетныхЗаписей(
ВидСервисаУчетныхЗаписей.ActiveDirectory, "AD_ID"
)
Описание = Описание.СУчетнымиЗаписями(
{новый УчетнаяЗапись(ЛогинAD, СервисAD)}
)
;
// Описание сразу содержит идентификатор, с которым будет создан пользователь сервиса.
ПользователиСервиса.Создать(Описание)
// Обратите внимание! Если между созданием пользователя и подключением
// (в том числе в процессе подключения) произойдет исключение,
// то пользователь будет создан в сервисе, но не будет подключен к приложению.
// При повторном выполнении приведенный здесь код выдаст ошибку,
// т. к. нельзя иметь двух пользователей, подключенных к одному и тому же
// логину Active Directory.
// Поэтому в реальной жизни следует использовать один из вариантов:
// Вариант 1 — задавать заранее логин и проверять, что пользователь
// с таким логином не существует. Если существует, то подключать в приложение.
// Найти пользователя по логину можно с помощью метода
// `ПользователиСервиса.НайтиПоЛогину(Логин, ИдСпискаПользователей)`
// Вариант 2 — не создавать пользователя сервиса автоматически,
// а предлагать администратору выбрать из существующих.
пер ПользовательПриложения = Пользователи.Подключить(Описание.Ид)
возврат ПользовательПриложения
;