Типы встроенного языка, порождаемые элементом проекта вида «Пользователи»
В любом проекте есть пользователи. Это предопределенный элемент проекта, который описывает пользователей, подключенных к приложению.
Этот элемент проекта создает , но в структуре проекта он не отображается. Во встроенном языке существует несколько типов для работы с его данными:
- Пользователи,
- Пользователи.Ссылка,
- Пользователи.Объект,
- Пользователи.Данные.
Тип Пользователи
Тип Пользователи доступен на сервере.
Он содержит методы для работы с пользователями, подключенными к приложению, и ссылками на них. Например, Найти(), ПолучитьСсылку(), Подключить(), СделатьАдминистратором().
Он также позволяет пересчитать ключи доступа — ПересчитатьКлючиДоступа() (подробнее).
Этот тип не имеет конструктора и имеет единственный экземпляр, обращение к которому выполняется по имени типа:
// Получить менеджера пользователей
пер МенеджерПользователей = Пользователи
Тип Пользователи.Ссылка
Тип Пользователи.Ссылка доступен и на клиенте, и на сервере.
Он предназначен для описания ссылки на одного подключенного пользователя.
Он имеет конструктор новый Пользователи.Ссылка(), который позволяет создать новую ссылку по Ууид, и метод ЗагрузитьОбъект(), который есть только на сервере и который позволяет получить экземпляр (Пользователи.Объект) из ссылки (Пользователи.Ссылка).
Тип Пользователи.Объект
Тип Пользователи.Объект доступен на сервере.
Экземпляр этого типа содержит данные одного подключенного пользователя и предназначен только для их чтения.
Тип Пользователи.Данные
Тип Пользователи.Данные доступен на сервере.
Он используется только в обработчике события Пользователи.Объект.ПослеИзменения.
Он не имеет конструктора. сам создает экземпляр этого типа при наступлении упомянутого события. Он передает в обработчик события экземпляр этого типа, наполненный «старыми» значениями.
Подписки на события пользователей и собственные методы
Вы можете изменять стандартное поведение типа (создавая подписки на его события) и расширять его функциональность (добавляя собственные методы). Это можно сделать в любом общем модуле, модуле типа-одиночки или в статическом методе других модулей.
@НаСервере
@Подписка(Событие{Пользователи.Объект.ПослеИзменения})
статический метод ПослеИзменения(Источник: Пользователи.Объект, До: Пользователи.Данные)
// Обработка события
;
Вы можете расширить функциональность типа, добавив в него собственные публичные методы. Например, пусть в общем модуле ПользователиКлиентИСервер определен метод Администраторы(), который возвращает список пользователей-администраторов:
@ВПроекте
метод Администраторы(): Массив<Пользователи.Ссылка>
пер Администраторы: Массив<Пользователи.Ссылка>
// Получаем список пользователей-администраторов
// ...
возврат Администраторы
;
Этот метод будет доступен в других модулях:
пер СписокАдминистраторов = Основное::ПользователиКлиентИСервер.Администраторы()