Имя: Пароль:
1C
 
как можно браться к Метаданным Роли
0 razerw
 
06.07.16
15:59
Подскажите пожалуйста, а как можно браться к Метаданным Роли
Например я хочу сравнивать.
1 Nuobu
 
06.07.16
16:01
(0) На "Вы" и с улыбочкой.
2 razerw
 
06.07.16
16:06
я серьезно
3 lodger
 
06.07.16
16:10
права роли через метаданные нельзя посмотреть. читайте СП.
Права (Rights)
Использование:

Только чтение.
Описание:

Тип: Неопределено.


Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:

Данное свойство всегда имеет значение Неопределено, т.к. во встроенном языке не предусмотрена работа со значением данного свойства.
Для получения прав можно использовать методы глобального контекста ПравоДоступа и ПараметрыДоступа().
4 xXeNoNx
 
06.07.16
16:12
Почему тем называется: "роли", а не "Метаданные"?
5 lodger
 
06.07.16
16:15
(4) лучше "ОбъектМетаданных: Роль, СП не предлагать".
6 xXeNoNx
 
06.07.16
16:16
+(4) Впрочем, судя по предшествующим темам, с этим проблема
7 Nuobu
 
06.07.16
16:23
(0) Что сравнить хочешь?
8 xXeNoNx
 
06.07.16
16:26
(7) шо шо, там же написано - Например
9 Beretta
 
06.07.16
16:28
(3) Ему не посмотреть, ему браться. А то, как браться, СП не описывает :(
10 FIXXXL
 
06.07.16
16:30
(0) БСП максимум что вытягивает по ролям, доступ чтения и изменения
11 lodger
 
06.07.16
16:34
(9) описывает. "во встроенном языке не предусмотрена работа со значением данного свойства"
12 xXeNoNx
 
06.07.16
16:37
&НаКлиенте
Процедура Сформировать(Команда)
    ПолучитьПрава();
КонецПроцедуры

&НаСервере
Процедура ПолучитьПрава()
    
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    *    
    |    Поместить врТабИсх
    |ИЗ
    |    &ТабИсх как ТабИсх;
    |ВЫБРАТЬ
    |    *    
    |    Поместить врТабКон
    |ИЗ
    |    &ТабКон КАК ТабКон;
    |
    |
    |ВЫБРАТЬ
    |    *
    |ИЗ
    |    врТабИсх    
    |    ПОЛНОЕ СОЕДИНЕНИЕ
    |        врТабКон
    |    ПО врТабКон.Роль = врТабИсх.Роль
    |
    |
    |";
    
    Запрос.УстановитьПараметр("ТабИсх", ВыбратьПраваПользователя(Объект.ПользовательИсх));
    Запрос.УстановитьПараметр("ТабКон", ВыбратьПраваПользователя(Объект.ПользовательКон));
    
    ВЫборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Сообщить(Выборка.Роль);
    КонецЦикла;
    
    
КонецПроцедуры


&НаСервере
Функция ВыбратьПраваПользователя(Польз)
    СпрПользователи = Справочники.Пользователи;
    Таб = новый ТаблицаЗначений;
    Таб.Колонки.Добавить("Пользователь");
    Таб.Колонки.Добавить("Роль");
    
    Роли = ПользователиИнформационнойБазы;
    МассивПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
    Для Каждого пользователь из МассивПользователей Цикл
        спПольз = СпрПользователи.НайтиПоНаименованию(СокрЛП(Пользователь));
        Для Каждого Роль из Метаданные.Роли Цикл                  
            Если (Пользователь.Роли.Содержит(Роль) = 0) или (СпПольз.Должность.Пустая()) Тогда
                Продолжить;
            КонецЕсли;
            НоваяСтрока = Таб.Добавить();
            НоваяСтрока.Пользователь = СпПольз.Должность;
            НоваяСтрока.Роль = Роль.Имя;    
        КонецЦикла;
    КонецЦикла;
    возврат Таб;
КонецФункции
13 xXeNoNx
 
06.07.16
16:37
+(12) На, сравнивай