@ВПроекте @НаСервере метод ПолныеПраваНаСправочникДляАутентифицированных(): РазрешениеДоступа возврат новый РазрешениеДоступа( [новый КлючДоступаДляАутентифицированных.Объект()], [Сущность.Право.Создание, Сущность.Право.Чтение, Сущность.Право.Изменение, Сущность.Право.Удаление]) ; @ВПроекте @НаСервере метод ПолныеПраваНаСправочникДляРуководителя(): РазрешениеДоступа возврат новый РазрешениеДоступа( [новый КлючДоступаРуководителя.Объект()], [Сущность.Право.Создание, Сущность.Право.Чтение, Сущность.Право.Изменение, Сущность.Право.Удаление]) ; @ВПроекте @НаСервере метод ПолныеПраваНаРегистрСведенийДляРуководителя(): РазрешениеДоступа возврат новый РазрешениеДоступа( [новый КлючДоступаРуководителя.Объект()], [Сущность.Право.Чтение, Сущность.Право.Изменение]) ; @ВПроекте @НаСервере @ДоступноСКлиента метод ЭтоАдминистраторПриложения(): Булево знч ТекущийПользователь = Пользователи.ТекущийПользователь если ТекущийПользователь == Неопределено возврат Ложь ; знч Запрос = Запрос{ ВЫБРАТЬ Администратор ИЗ Пользователи ГДЕ Ссылка == %ТекущийПользователь } возврат Запрос.Выполнить().Единственный().Администратор ; @ВПроекте @НаСервере @ДоступноСКлиента метод ПолучитьТекущегоСотрудника(): Сотрудники.Ссылка? знч ТекущийПользователь = Пользователи.ТекущийПользователь если ТекущийПользователь == Неопределено возврат Неопределено ; знч Запрос = Запрос{ ВЫБРАТЬ ПЕРВЫЕ 1 Ссылка ИЗ Сотрудники ГДЕ Пользователь == %ТекущийПользователь } возврат Запрос.Выполнить().ЕдинственныйИлиУмолчание()?.Ссылка ; @ВПроекте @НаСервере @ДоступноСКлиента метод ПолучитьДанныеТекущегоПользователя(): ДанныеПользователя знч Запрос = Запрос{ ВЫБРАТЬ Пользователи.Ссылка КАК Пользователь, Пользователи.Администратор КАК ЭтоАдминистраторПриложения, Сотрудники.Ссылка.ЗаменитьNull(Неопределено) КАК Сотрудник, Сотрудники.Роль.ЗаменитьNull(Неопределено) КАК Роль, Сотрудники.Регион.ЗаменитьNull(Неопределено) КАК Регион ЗАПОЛНИТЬ ДанныеПользователя ИЗ Пользователи КАК Пользователи ЛЕВОЕ СОЕДИНЕНИЕ Сотрудники КАК Сотрудники ПО Пользователи.Ссылка == Сотрудники.Пользователь ГДЕ Пользователи.Ссылка == %{Пользователи.ТекущийПользователь} УПОРЯДОЧИТЬ ПО Пользователи.Ссылка } возврат Запрос.Выполнить().ЕдинственныйИлиУмолчание() ?? новый ДанныеПользователя() ; @ВПодсистеме @НаСервере метод СоздатьПользователя( Представление: Строка, Логин: Строка, ЗапретитьВход: Булево = Ложь): Пользователи.Ссылка если Представление.Пусто() выбросить новый ИсключениеНедопустимыйАргумент("Представление не может быть пустым") ; если Логин.Пусто() выбросить новый ИсключениеНедопустимыйАргумент("Логин не может быть пустым") ; знч СписокПользователей = СпискиПользователей.ПолучитьСписокПоУмолчанию() // Проверим, что пользователь с этим логином ещё не существует знч МассивОписанийПользователей = СпискиПользователей.ПолучитьПользователей(СписокПользователей.Ид) для Описание из МассивОписанийПользователей если Описание.Логин == Логин выбросить новый ИсключениеВыполнения("Пользователь с логином %Логин уже существует") ; ; знч Описание = новый ОписаниеПользователя(СписокПользователей.Ид, Представление, Логин) // Создаём пользователя ПользователиСервиса.Создать(Описание) // Подключение созданного пользователя к приложению знч СсылкаНаПользователя = Пользователи.Подключить(Описание.Ид).Ссылка // Запретим пользователю вход, если нужно если ЗапретитьВход Пользователи.ЗапретитьВход(СсылкаНаПользователя, Истина) ; возврат СсылкаНаПользователя ;