Проверка наличия роли у пользователя

Публикация № 1085518

Администрирование - Информационная безопасность - Роли и права

проверка права роли

4
Допустим, мы добавили новую роль в конфигурацию. Потом добавили её в профиль группы доступа и назначили соответствующую группу доступа пользователю. Однако, в конфигурациях на основе БСП все известные программные проверки данной роли при включении пользователя в предопределенную группу доступа "Администраторы" не работают. В статье приведено решение данной задачи.

 

Проверка с помощью функции глобального контекста РольДоступна()

Если в программном коде необходимо проверить установлена ли какая-либо роль у текущего пользователя, то можно воспользоваться функцией глобального контекста РольДоступна(<Роль>), которая возвращает значение Истина, если указанная в скобках роль доступна и Ложь, если не доступна. 

Однако, в конфигурациях на основе БСП при включении пользователя в предопределенную группу доступа Администраторы, пользователю назначаются только две роли: Полные права и Администрирование (в этом можно убедиться с помощью Конфигуратора: Администрирование - Пользователи - Пользователь - Прочие). Все остальные роли отключаются вне зависимости от того, включен ли пользователь в какие-либо еще группы доступа. Система считает, что другие роли этому пользователю не нужны. Поэтому функция РольДоступна() возвращает в этом случае Ложь, что не подходит для решения нашей задачи.

 

Проверка с помощью функций БСП

Проверить наличие роли можно также с помощью функций БСП: Пользователи.РолиДоступны() и УправлениеДоступом.ЕстьРоль(). Но данные функции для полноправного пользователя (с ролями Полные права или Администратор системы) вернут всегда Истину независимо от того, назначена ли данная роль пользователю или нет:

 

Можно было пойти по легкому пути, скопировать данные функции и убрать в них проверку на полноправного пользователя, но мы не ищем легких путей это бы нам не помогло, так как функция Пользователи.РолиДоступны() все равно используют функцию глобального контекста РольДоступна(), а функция УправлениеДоступом.ЕстьРоль() слишком громоздка (текст функции около 300 строк при этом текст основного запроса около 200 строк).

Таким образом, все перечисленные известные функции не подходят для решения нашей задачи.

 

Решение

Для решения этой задачи в любой конфигурации на базе БСП я использую свою функцию:

Функция ЕстьРоль(ИмяРоли, Пользователь = Неопределено) Экспорт

	Если Пользователь = Неопределено Тогда
		Пользователь = ПользователиКлиентСервер.ТекущийПользователь();
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	1 
		|ИЗ
		|	Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПрофилиГруппДоступа.Роли КАК ПрофилиГруппДоступаРоли
		|		ПО ГруппыДоступаПользователи.Ссылка.Профиль = ПрофилиГруппДоступаРоли.Ссылка
		|ГДЕ
		|	ПрофилиГруппДоступаРоли.Роль.Имя = &Роль
		|	И ГруппыДоступаПользователи.Пользователь = &Пользователь";
	
	Запрос.УстановитьПараметр("Пользователь", Пользователь);
	Запрос.УстановитьПараметр("Роль", ИмяРоли);
	
	УстановитьПривилегированныйРежим(Истина);
	РезультатЗапроса = Запрос.Выполнить();
	УстановитьПривилегированныйРежим(Ложь);
	
	Если РезультатЗапроса.Пустой() Тогда
		Возврат Ложь;		
	Иначе	
		Возврат Истина;		
	КонецЕсли;
	
КонецФункции

Буду признателен, если Вы будите делиться своим опытом решения данной задачи.

4

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. dhurricane 29.06.19 23:18 Сейчас в теме
Признаться, содержание поста я нахожу несколько... странным.

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

Во-вторых, неожиданный путь решения Вы выбрали. Не подошла Вам стандартная функция "УправлениеДоступом.ЕстьРоль" тем, что она первым делом проверяет, полные права ли у пользователя. Не первым ли делом на ум приходит простейший из путей решения проблемы - скопировать функцию, удалив у нее лишние проверки? Опять же, и привязки к Документообороту в этом случае не было бы.
2. ignat013 29.06.19 23:45 Сейчас в теме
Стандартная РольДоступна чем не удовлетворила?
4. ni_cola 181 03.07.19 15:13 Сейчас в теме
3. V1V 113 30.06.19 14:24 Сейчас в теме
Пользователи.РолиДоступны() может проверять для выбранного пользователя.
5. ni_cola 181 03.07.19 15:13 Сейчас в теме
(3) Для полноправного не может
6. rudnitskij 05.07.19 12:54 Сейчас в теме
То есть, если у пользователя есть роль Полные права, то функция РольДоступна() вернёт Ложь, даже если ему эта роль назначена через профиль доступа. Поэтому эта функция нам не подходит...
А вот хр.... не совсем так. Или может, не во всех конфигурациях.
А может, не на всех версиях платформы. У меня на 1С:Предприятие 8.3 (8.3.13.1644) возвращает ложь или истина в зависимости от наличия доп прав - при том, что у моего юзера полные права
7. dhurricane 05.07.19 13:00 Сейчас в теме
(6) В конфигурациях на основе БСП в штатном режиме при включении пользователя в предопределенную группу доступа "Администратор", пользователю назначаются только 2 роли: ПолныеПрава и Администрирование. Все остальные отключаются вне зависимости от того, включен ли пользователь в какие-либо еще группы доступа. Поэтому-то функция "РольДоступна" возвращает Ложь.

Возможность назначить такому пользователю нужную роль через конфигуратор конечно остается, но в будущем в определенные моменты она вновь может "слететь".
8. korelski 8 05.12.19 08:48 Сейчас в теме
если добавить в свой общий модуль расширения "Функция ЕстьРоль() Экспорт", то система выдаст ошибку, что такая функция уже есть. Поэтому рациональнее использовать свое наименование, что-нибудь на подобии ЕстьРольПользователя( бла бла бла
А так схема рабочая и главное быстродействующая.
Оставьте свое сообщение

См. также

Права пользователя исключительно на просмотр (чтение) для УТ 11.4 35

Статья Программист Нет файла v8 v8::Права УТ11 Россия Бесплатно (free) Роли и права

Простая и понятная инструкция по шагам для создания профиля группы доступа «Только чтение» для УТ 11.4. Выполняется в режиме пользователя, без использования конфигуратора и снятия базы с поддержки.

21.11.2019    2577    Aleksandr55555    4       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 рублей

Типичные ошибки при разработке прав доступа 109

Статья Программист Нет файла v8 v8::Права Бесплатно (free) Роли и права

Рассмотрим самые распространенные ошибки в разработке прав доступа.

02.10.2019    9063    YPermitin    45       

Назад в прошлое! Небольшие заметки по администрированию пользователей в УПП 74

Статья Системный администратор Программист Стажер Нет файла v8 УПП1 Бесплатно (free) Роли и права

Небольшие заметки по функционалу "Администрирование пользователей" конфигурации "Управление производственным предприятием" версии 1.3. Затрагиваются такие темы как: роли, профили доступа, дополнительные права, настройки пользователей и ограничения доступа на уровне записей (RLS).

06.06.2019    8697    YPermitin    18       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Подсистема БСП «Управление доступом», основные объекты и регистры 113

Статья Программист Нет файла v8 v8::УФ v8::Права 1cv8.cf Бесплатно (free) БСП (Библиотека стандартных подсистем) Роли и права

Основные принципы работы подсистемы «Управление доступом» из состава БСП. Виды доступа, ограничение доступа на уровне записей. Описание основных объектов и регистров, используемых подсистемой.

23.05.2019    12270    ids79    8       

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS) 178

Статья Программист Нет файла v8 v8::Права Бесплатно (free) Практика программирования БСП (Библиотека стандартных подсистем) Роли и права

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    22060    ids79    9       

INFOSTART MEETUP Krasnodar. 14 февраля 2020 г. Промо

Краснодар станет первым в 2020 году местом, где пройдет региональная встреча IT-специалистов сообщества Инфостарт. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Стоимость участия - 5000 рублей. Цена действительна до 26.12.2019.

Влияние настройки роли на потребление памяти 152

Статья Системный администратор Программист Нет файла v8::Права 1cv8.cf Бесплатно (free) Роли и права

На днях разбирался с проблемой с потреблением памяти процессами конфигуратора и rphost. Как оказалось - причина в настройках ролей. Один поворот не туда, и настройки роли приводят к чрезмерному потреблению оперативки.

29.01.2019    10704    mickey.1cx    14       

Управление доступом: роли, права, профили, группы доступа, функциональные опции, RLS 241

Статья Системный администратор Программист Нет файла v8::Права Бесплатно (free) Роли и права

В 1С достаточно много механизмов, отвечающих за доступ к данным. Группы доступа, профили групп доступа, роли, права доступа, функциональные опции, RLS. Иногда сложно сразу понять, зачем все это нужно, как эти элементы друг с другом связаны и как ими пользоваться.

11.10.2017    73390    ekaruk    14       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Использование подсистемы "Управление доступом" из состава БСП версии 2.2+ 234

Статья Системный администратор Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования БСП (Библиотека стандартных подсистем) Роли и права

В статье описана последовательность манипуляций с подсистемой "Управление доступом" из библиотеки стандартных подсистем "1С" (БСП), результатом которых является реализация возможности настройки ограничения доступа к данным на уровне записей таблиц базы данных (RLS), применяя в качестве разграничителя доступа (критерия ограничения) любой из справочников конфигурации. Данная статья полезна для разработчиков, которые имеют дело либо с одной из типовых конфигураций "1С" (таких как "Бухгалтерия предприятие 3.0" или "Управление торговлей 11"), либо собираются внедрять (или дорабатывать) указанную выше подсистему в какую-либо другую конфигурацию.

18.11.2014    60213    Bassgood    84       

Распределение ролей пользователей к информационной базе для проверки аудиторами в типовых конфигурациях БП, ЗУП, ЗКБУ и БГУ. 5

Статья Системный администратор Нет файла v8 1cv8.cf Россия Windows Бесплатно (free) Роли и права

В данной статье мы рассмотрим методику создания ролей пользователей к информационным базам для проверки аудиторами в типовых конфигурациях .

13.05.2014    23696    OV_GCompany    5       

Сдача регламентированной отчетности из программ 1С Промо

Сдача регламентированной отчетности из программ "1С" во все контролирующие органы без выгрузок и загрузок в другие программы. Для групп компаний действуют специальные предложения.

от 1500 руб.

УТ 10.3 Контролируем остатки автоматически 10

Статья Программист Нет файла v8 УТ10 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия УУ Windows Учет ТМЦ Бесплатно (free) Роли и права

Один из менеджеров довольно крупной торговой конторы стройматериалов озадачил сделать ему так, чтобы "Торговля" сама предупреждала его о минимальном остатке товара на складах, так как "я сам постоянно забываю смотреть отчеты по точкам заказам и остаткам товаров, много организационной работы". Раньше немного занимался Delphi для души и немного для работы, сейчас же больше полугода работаю с 1С, и первое, что мне пришло в голову это Таймер на главной форме с запросом проверяющем остатки и выдающим предупреждение.

25.10.2012    15796    aleksxx    5       

Объявление на взнос наличными 0402001 для УТ (БЕЗ пароля на пароли) 18

Отчеты и формы Бухгалтер Внешняя обработка (ert,epf) v8 УТ10 Россия БУ Кассовые операции Бесплатно (free) Роли и права

Объявление на взнос наличными 0402001. Вступает в силу с 1 сентября 2008 года. Для конфигурации "Управление торговлей 10.3" Подключается внешней печатной формой к документу Расходный кассовый ордер. 03092008 Обновление версии: Добавлена форма ввода физ.лица и источника поступления; Введенные значения автоматически прописываются в документ РКО Каждый правит под себя!

28.08.2008    12844    159    mdzen    8