Приветствую Вас ГостьЧетверг, 28.03.2024, 18:08

Каталог статей


Когда неверно работает РольДоступна()

В БСП (1С:Библиотека стандартных подсистем 8.2) если у пользователя есть полные права, то остальные роли игнорируются. Т.е. если у пользователя полные права и роль "Роль1", а в коде стоит проверка "Если РольДоступна("Роль1")..." то у пользователя эта проверка может не сработать. В этом случае надо добавлять так же в условие проверку на РольДоступна("ПолныеПрава")

Во всем виновата процедура "ОбновитьРолиПользователей" в общем модуле "УправлениеДоступомСлужебный". Для Администратора все роли стираются и заполняются обязательными и дополнительными ролями:

Если Администраторы[ТекущийПользователь] <> Неопределено Тогда
    ТекущиеНовыеРоли = НовыеРоли;
    НовыеРоли = ТекущиеНовыеРоли.Скопировать(Новый Массив);
    Для Каждого КлючИЗначение Из ОбязательныеРолиАдминистратора Цикл
        НовыеРоли.Добавить().Роль = КлючИЗначение.Ключ;
    КонецЦикла;
    Для Каждого КлючИЗначение Из ДополнительныеРолиАдминистратора Цикл
        Если ТекущиеНовыеРоли.Найти(КлючИЗначение.Ключ, "Роль") = Неопределено Тогда
            Продолжить;
        КонецЕсли;
        НовыеРоли.Добавить().Роль = КлючИЗначение.Ключ;
    КонецЦикла;    
КонецЕсли;

Если хотим, чтобы наши роли автоматически добавлялись для администратора, тогда надо добавить после этого код типа:

//Если для пользователя выбраны "наши" дополнительные роли, то добавляем их в таблицу "НовыеРоли"
    ВыбранныеДополнительныеРоли = Новый Массив;
    Для Каждого Стр Из ТекущиеНовыеРоли Цикл
        Если ВРег(Лев(Стр.Роль, 4)) = "ДОП_" Тогда
            ВыбранныеДополнительныеРоли.Добавить(Стр.Роль);
        КонецЕсли;
    КонецЦикла;
    Для Каждого Стр Из ВыбранныеДополнительныеРоли Цикл
        НовыеРоли.Добавить().Роль = Стр;
    КонецЦикла;

В этом случае все наши роли должны начинаться с "ДОП_". Этот код можно добавить в расширение, заменяя стандартную процедуру.

Категория: Администрирование | Добавил: leshic (03.07.2019)
Просмотров: 1008 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [40]
Администрирование [34]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [27]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0