Имя: Пароль:
1C
1С v8
1С 8.3.9 Содержимое роли. (На какие объекты дается разрешение, получить одним запросом)
0 ZUM
 
28.08.17
12:19
Добрый день, Коллеги!

Вот задался вопросом можно ли получить содержимое роли 1С "одним махом".

Сейчас делаю так:


            Для каждого лРоль из Метаданные.Роли Цикл
                Для Каждого лОбъектКоллекции из Метаданные.Справочники Цикл
                    ЕстьПраво = ПравоДоступа("Чтение", лОбъектКоллекции, лРоль);
                    Если ЕстьПраво Тогда
                        .............
                    КонецЕсли;
                КонецЦикла;
            КонецЦикла;

Обхожу каждый объект и проверяю несколько прав....
Получается длинновато.

Если кто то делал или делает иначе, поделитесь пожалуйста опытом.
1 yzimin
 
28.08.17
12:24
Если БСП, то рег.сведений Права ролей
2 aleksonic
 
28.08.17
12:38
(0) Конечно задавался.
Ну не одним махом, но минут за 10 сделаешь.

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

Далее по аналогии все другие объекты прокручиваешь
Для объекта БизнесПроцессы будет другой набор        
        Чтение                                = ПравоДоступа("Чтение", Объект, ТекущаяРоль);
        Добавление                            = ПравоДоступа("Добавление", Объект, ТекущаяРоль);
        Изменение                             = ПравоДоступа("Изменение", Объект, ТекущаяРоль);
        Удаление                              = ПравоДоступа("Удаление", Объект, ТекущаяРоль);
        Просмотр                              = ПравоДоступа("Просмотр", Объект, ТекущаяРоль);
        ИнтерактивноеДобавление               = ПравоДоступа("ИнтерактивноеДобавление", Объект, ТекущаяРоль);
        Редактирование                        = ПравоДоступа("Редактирование", Объект, ТекущаяРоль);
        ИнтерактивноеУдаление                 = ПравоДоступа("ИнтерактивноеУдаление", Объект, ТекущаяРоль);
        ИнтерактивнаяПометкаУдаления          = ПравоДоступа("ИнтерактивнаяПометкаУдаления", Объект, ТекущаяРоль);
        ИнтерактивноеСнятиеПометкиУдаления    = ПравоДоступа("ИнтерактивноеСнятиеПометкиУдаления", Объект, ТекущаяРоль);
        ИнтерактивноеУдалениеПомеченных       = ПравоДоступа("ИнтерактивноеУдалениеПомеченных", Объект, ТекущаяРоль);
        ВводПоСтроке                          = ПравоДоступа("ВводПоСтроке", Объект, ТекущаяРоль);
        ИнтерактивнаяАктивация                = ПравоДоступа("ИнтерактивнаяАктивация", Объект, ТекущаяРоль);
        Старт                                 = ПравоДоступа("Старт", Объект, ТекущаяРоль);
        ИнтерактивныйСтарт                    = ПравоДоступа("ИнтерактивныйСтарт", Объект, ТекущаяРоль);
3 aleksonic
 
28.08.17
12:41
(0) Как без такого инструмента админить базы с большим количеством объектов и ролей.
Нужно анализировать и роли и объекты, и пользователей.
Массово обрабатывать пользователей, актуализировать переводы, увольнения и пр.
4 ZUM
 
28.08.17
14:19
(3) В том то и фокус, что если этого всего много, получается очень громоздко анализировать.

Если у тебя 300 ролей и 1500 пользователей и объектов в конфе больше 1000. Таким (0) способом построение матрицы конфиктов займет кучу времени.

Нужно все разносить по регистрам и переодически апдейтить...
5 aleksonic
 
28.08.17
14:22
(4)
Если все разом получить, то такой объем и проанализировать не получится, а вот по одной роли, пользователю или объекту работает очень быстро.
Это и есть самая частая задача, проанализировать какие роли дают доступ к объекту и у кого есть эти роли.
Зачем обслуживать регистр?
6 ZUM
 
28.08.17
14:32
(5) Товарищи аудиторы хотя матрицу конфликтов ролей.... (вывести те роли которые не могут быть использованы одновременно у одного пользователя/профиля(ей))
    и еще по пользователям и еще в он-лайн режиме :)
    т.е. нужно проанализировать все роли и всех
    пользователей и быстро....
7 aleksonic
 
28.08.17
14:46
Анализ ролей и пользователей (профилей) не сложно.
В отрыве от Объекта и Права ничего никому не дадут.
8 aleksonic
 
28.08.17
15:00
Тут будет несколько иначе:    

Для каждого ТекПользователь Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
        РолиПользователя = ТекПользователь.Роли;
        Для каждого ТекущаяРольПользователя Из РолиПользователя Цикл
                ...;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
9 Мыш
 
28.08.17
15:04
В (1) всё сказали уже.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.