Типы встроенного языка, порождаемые элементом проекта вида «Пользователи»

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

Этот элемент проекта создает . Его не видно в структуре проекта. Но во встроенном языке существует несколько типов для работы с его данными:

  • Пользователи
  • Пользователи.Ссылка
  • Пользователи.Объект
  • Пользователи.Данные

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

Тип Пользователи доступен на сервере.

Он содержит методы для работы с пользователями, подключенным в приложение и ссылками на них. Например, Найти(), ПолучитьСсылку(), Подключить(), СделатьАдминистратором().

Также он позволяет пересчитать ключи доступа — ПересчитатьКлючиДоступа() (подробнее).

Этот тип не имеет конструктора и имеет единственный экземпляр, обращение к которому выполняется по имени типа:

// Получить менеджера пользователей
пер МенеджерПользователей = Пользователи

Модуль пользователей

Поскольку Пользователи — это предопределенный элемент проекта, который вам недоступен, вы не можете изменять непосредственно его модули. Однако вы можете расширить этот предопределенный элемент проекта, добавив в свой проект элемент вида Пользователи. И уже у этого своего элемента вы можете создать модуль.

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

Вы можете расширить этот тип, добавив в него собственные публичные методы. Например, метод, возвращающий список пользователей-администраторов:

// Возвращает список пользователей-администраторов
@ВПроекте
метод Администраторы(): Массив<Пользователи.Ссылка>
   пер Администраторы: Массив<Пользователи.Ссылка>

   // Получить список пользователей-администраторов.
   // ...

   возврат Администраторы
;

Этот метод будет доступен в других модулях:

// Вызов метода разработчика у менеджера пользователей
пер СписокАдминистраторов = Пользователи.Администраторы()

Тип Пользователи.Ссылка

Тип Пользователи.Ссылка доступен и на клиенте, и на сервере.

Он предназначен для описания ссылки на одного подключенного пользователя.

Он имеет конструктор новый Пользователи.Ссылка(), который позволяет создать новую ссылку по Ууид и метод ЗагрузитьОбъект(), который есть только на сервере и который позволяет получить экземпляр (Пользователи.Объект) из ссылки (Пользователи.Ссылка).

Тип Пользователи.Объект

Тип Пользователи.Объект доступен на сервере.

Экземпляр этого типа содержит данные одного подключенного пользователя и предназначен только для их чтения.

Модуль пользователя

Поскольку Пользователи — это предопределенный элемент проекта, который вам недоступен, вы не можете изменять непосредственно его модули. Однако вы можете расширить этот предопределенный элемент проекта, добавив в свой проект элемент вида Пользователи. И уже у этого своего элемента вы можете создать модуль.

Модуль, расширяющий тип Пользователи.Объект, называется модулем пользователя. Он исполняется на сервере. В нем вы можете обработать такие события как:

  • ПослеПодключения
  • ПослеИзменения
  • ПослеОтключения

Вы можете расширить этот тип, добавив в модуль пользователя собственные публичные методы. Например, метод, обновляющий сведения о пользователе:

@ВПроекте
метод ОбновитьСведенияПользователя()
    // Записать сведения о пользователе в отдельный справочник.
    // ...
;

Этот метод будет доступен в других модулях:

// Вызов собственного метода пользователя
// В переменной Администратор находится значение типа Пользователи.Объект
Администратор.ОбновитьСведенияПользователя()

Тип Пользователи.Данные

Тип Пользователи.Данные доступен на сервере.

Он используется только в обработчике события Пользователи.Объект.ПослеИзменения.

Он не имеет конструктора. сам создает экземпляр этого типа при наступлении упомянутого события. Он передает в обработчик события экземпляр этого типа, наполненный «старыми» значениями.