Перейти к основному содержимому

Пользователи

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

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

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

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

  • СпискиПользователей

    Тип-одиночка, который позволяет из приложения управлять списками пользователей. Методы делятся на две группы: выполняющие манипуляции списками через сервер и работающие с текущим приложением без обращения к серверу.

  • СписокПользователей

    Позволяет настроить список пользователей. Экземпляры типа СписокПользователей можно получить, например, методами:

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

    Тип-одиночка, который позволяет из приложения управлять пользователями. Предназначен для работы с сервером.

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

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

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

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

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

если не ЛогинAD.Пусто()
пер СервисAD = новый СервисУчетныхЗаписей(
ВидСервисаУчетныхЗаписей.ActiveDirectory, "AD_ID"
)
Описание = Описание.СУчетнымиЗаписями(
{новый УчетнаяЗапись(ЛогинAD, СервисAD)}
)
;

// Описание сразу содержит идентификатор, с которым будет создан пользователь сервиса.
ПользователиСервиса.Создать(Описание)

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

пер ПользовательПриложения = Пользователи.Подключить(Описание.Ид)

См. также