Текущий пользователь 1с 8.3 на клиенте. Как получить информацию о ролях конфигурации
- АКТУАЛЬНЫЕ РЕЛИЗЫ 1С
- ПРИМЕРЫ КОДА НА ПЛАТФОРМЕ 1С
Роли, права доступа в 1С 8.x
Как узнать, доступна ли определенная роль текущему пользователю?
Если Не РольДоступна("Менеджер") Тогда Сообщить("Просмотр заявок от покупателей не разрешен!"); КонецЕсли;Как получить информацию о ролях конфигурации?
Функция СписокВозможныхРолейКонфигурации() СписокРолей = новый СписокЗначений; РолиКонфигурации = Метаданные.Роли; Для каждого Роль из РолиКонфигурации Цикл СписокРолей.Добавить(Роль.Имя); КонецЦикла; Возврат СписокРолей; КонецФункцииКак выполнить код без проверки прав?
1. Использовать привилегированный модуль 2. Размещение программного кода, который должен выполняться БЕЗ КОНТРОЛЯ ОГРАНИЧЕНИЙ, в общий модуль с установкой у модуля флага ПРИВИЛЕГИРОВАННЫЙ. Использовать привилегированный режим исполнения программного кода Аналогичный режиму работы кода привилегированных модулей. Режим можно включить/выключить средствами встроенного языка: УстановитьПривилегированныйРежим(<Включить>) Параметр <Включить> (обязательный) Тип: Булево. Определяет, будет ли включен привилегированный режим: Истина - включить режим; Ложь - выключить режим. функция ПривилегированныйРежим() позволяет определить, включен привилегированный режим, или нет. Использование привилегированного режима позволяет, во-первых, ускорить работу, так как не будут накладываться ограничения на доступ к данным, а во-вторых, позволяет выполнять операции с данными от лица пользователей, которым эти данные недоступны. Привилегированный режим рекомендуется использовать тогда, когда с логической точки зрения нужно отключить проверку прав, или когда можно отключить проверку прав, чтобы ускорить работу. Допустимо использовать привилегированный режим тогда, когда работа с данными от лица некоторого пользователя не нарушает установленные для этого пользователя права доступа.
5
Когда требуется более тонкая настройка доступа, на помощь приходит механизм RLS - Record Level Security.
Конфигурации системы «1С:Предприятие» 8 изначально позиционировалась как программа для многофирменного учета, и один из...
3
Начиная с платформы 8.0 системы 1С Предприятие, существует возможность ограничивать права доступа пользователей на уровне записей. Для этого используется механизм RLS (Record Level Security). Такая «тонкая» настройка может быть...
3
Часто встречаю вопросы касаемые программного создания и настройки прав пользователей. В этот статье я приведу примеры для Обычного и Управляемого приложений, которые программно создают пользователя в...
2
Вопрос: У меня добавлен новый пользователь.
Создаю новый интерфейс (копированием существующего) и указываю этот интерфейс в качестве основного для данного пользователя.
Проблема в том, что созданный новый интерфейс...
Параметры сеансы 1С 8.3 — переменная, в которой хранится значение нужного параметра на время сеанса пользователя. По сути, это некая глобальная переменная, привязанная к сеансу текущего пользователя.
Использование параметров сеанса в 1С
Параметры сеанса задаются только программно, универсального интерфейса для установки параметров сеанса в системе нет. Обычно они задаются при старте системы, в «Модуле сеанса». Если параметр не определен, во время обращения к нему будет вызвана ошибка.
Пример установки параметра сеанса 1С
Рассмотрим типичный пример использования параметров сеанса — установку текущего пользователя. Пример я возьму из подготовки к .
В древе метаданных создадим новый параметр сеанса — ТекущийПользователь, назначим ему тип — СправочникСсылка.ФизическиеЛица:
Получите 267 видеоуроков по 1С бесплатно:
В модуле сеанса создадим процедуру, в которой будет определяться текущий параметр сеанса:
Код процедуры:
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры) //ищем физ. лицо по имени пользователя ТекПользователь = Справочники. ФизическиеЛица. НайтиПоНаименованию(ИмяПользователя() ) ; //если не нашли - создадим нового Если ТекПользователь. Пустая() Тогда НовПользователь = Справочники. ФизическиеЛица. СоздатьЭлемент() ; НовПользователь. Наименование = ИмяПользователя() ; НовПользователь. Записать() ; ТекПользователь = НовПользователь. Ссылка; КонецЕсли ; //присваиваем параметру сеанса ТекущийПользователь ссылку на справочник физ.лиц ПараметрыСеанса. ТекущийПользователь = ТекПользователь; КонецПроцедурыРассматриваемы параметры в 1С:Предприятие представлены в виде объекта метаданных. По существу, это не что иное, как глобальная переменная, привязанная к текущему сеансу.
Глобальная переменная – такая же переменная, как и любая другая, но особенность ее в том, что обратиться к ней можно из любой точки программы, а в случае с параметром сеанса это работает только в пределах текущего сеанса.
Поскольку параметр сеанса является объектом метаданных, он имеет определенные особенности:
- Он может быть определенного типа. Разрешенные типы определяются платформой. Перечень их достаточно обширный, но даже если в данном списке нет нужного для вас, всегда можно сериализовать значение и хранить его в параметре в виде строки.
- Права на него, как и на любой другой объект метаданных, можно ограничивать ролями (как на запись, так и на чтение). При этом существует особенность при использовании его в RLS, но об этом будет написано ниже.
- Он имеет ограничение на объем помещаемых данных в сериализованном виде. Их объем не должен превышать 4 Гб.
Если тип параметра сеанса:
- ФиксированныйМассив
- ФиксированнаяКоллекция
- ФиксированнаяСтруктура
Тогда значение элемента коллекции может быть Неопределено.
Основная область параметров – применение их значений в запросах RLS (ограничение доступа на уровне записей).
Например, нам нужно в запросе RLS установить условие по текущему пользователю. Для этого заводим параметр сеанса «ТекущийПользователь», из кода встроенного языка устанавливаем значение:
ПараметрыСеанса.ТекущийПользователь = <значение>
Таблица.Пользователь = &ТекущийПользователь
При таком использовании параметра сеанса права на чтение параметра не учитываются, однако можно попытаться получить их значение из встроенного языка:
ТекущийПользователь = ПараметрыСеанса.ТекущийПользователь;
Установить параметр сеанса, то есть его значение, можно только программно и только на сервере. Для этого с клиента потребуется вызвать серверную процедуру. При обращении к параметру сеанса (установка, получение), если параметр не инициализирован, будет вызвана процедура УстановкаПараметровСеанса в модуле сеанса. Данная процедура имеет один параметр ТребуемыеПараметры – массив устанавливаемых идентификаторов параметров сеанса. УстановкаПараметровСеанса вызывается также при установке соединения с информационной базой до вызова всех остальных обработчиков. В этом случае ТребуемыеПараметры будет равен Неопределено.
Рекомендовано использовать отложенную (ленивую) инициализацию, то есть инициализировать параметры сеанса по требованию, а не при старте системы, так как не все параметры сеанса требуются непосредственно при старте системы. Отложенная инициализация выполняется так:
Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса) Если ИменаПараметровСеанса Неопределено Тогда Если ИмяПараметра = "ТекущийПользователь" Тогда ПараметрыСеанса.ТекущийПользователь = ; ИначеЕсли ИмяПараметра = " ТекущаяОрганизация" Тогда ПараметрыСеанса.ТекущаяОрганизация = ; // и т.д. КонецЕсли; КонецЕсли; КонецПроцедурызначение>значение>>Так как параметр сеанса привязан к сеансу, не получится обратиться к параметру сеанса из метода, выполняющегося в фоне, поскольку это будет уже другой сеанс. Этот нюанс может стать неожиданностью, поэтому лучше к нему подготовиться заранее, передав нужное значение как параметр метода и инициализировав из параметра сеанса в начале процедуры.