Работа с пользователями

В пользователи не привязаны к приложению, один и тот же пользователь может быть подключен сразу к нескольким приложениям. С точки зрения разработчика приложений и с точки зрения внешних систем пользователями управляет сервер.

Пользователем может являться как человек, который взаимодействует с приложением через клиентское приложение, так и информационная система, которая взаимодействует с приложением через программный интерфейс. Для целей администрирования пользователи объединяются в списки пользователей, причем каждый пользователь может входить в единственный список.

Средства встроенного языка для управления пользователями

Встроенный язык содержит несколько типов, которые позволяют управлять пользователями.

СпискиПользователей
Тип-одиночка, который позволяет из приложения управлять списками пользователей. Методы разделяются на две группы: выполняющие манипуляции списками через сервер и работающие с текущим приложением без обращения к серверу
СписокПользователей
Позволяет настроить список пользователей. Экземпляры типа СписокПользователей можно получить, например, методами:
  • СпискиПользователей.Найти()
  • СпискиПользователей.Создать()
  • СпискиПользователей.ПолучитьСписокПоУмолчанию()
ПользователиСервиса
Тип-одиночка, который позволяет из приложения управлять пользователями. Предназначен для работы с сервером
Пользователи, подключенные к приложению
Любое приложение содержит предопределенный элемент проекта Пользователи и несколько типов встроенного языка, которые позволяют подключать пользователей к приложению и управлять подключенными пользователями

Подробнее о типах, порождаемых элементом проекта вида «Пользователи»

Пример создания пользователя

В этом примере мы создадим пользователя с учетной записью Active Directory и подключим его к приложению.

пер ПредставлениеПользователя = "НовыйПользователь"
пер ЛогинAD = "AD_login"

знч СписокПользователей = СпискиПользователей.ПолучитьСписокПоУмолчанию()

пер Описание = новый ОписаниеПользователя(СписокПользователей.Ид, ПредставлениеПользователя)

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