Имя: Пароль:
1C
1С v8
Как программно проверить флаг "Административные функции"
0 napagokc
 
24.01.13
08:22
Народ, подскажите, плз, как программно проверить установлен ли у роли флаг "Административные функции"?
1 Aleksey
 
24.01.13
08:26
ПользовательИнформационнойБазы (InfoBaseUser)
Роли (Roles)

Использование:
Только чтение.
Описание:
Тип: РолиПользователя. Содержит коллекцию ролей пользователя информационной базы.
Примечание:
Доступно только пользователю с административными правами.
2 napagokc
 
24.01.13
08:29
(1) Видимо, не поняли вопроса. Список пользователей и список ролей я получить могу. Мне нужно из списка ролей отфильтровать только те роли, которые имеют Административные функции. Как это сделать?
3 Aleksey
 
24.01.13
08:30
типа
РольАдминистратор = Метаданные.Роли.Администратор; //или как она там в конфигураторе у тебя задано

Пользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для каждого Пользователь Из Пользователи Цикл
  Если Пользователь.Роли.Содержит(РольАдминистратор) Тогда
....
4 napagokc
 
24.01.13
08:36
(3) Не понимаешь ты меня...
У меня есть список ролей и я знаю, какие из них имеют административные функции. В коде я действительно могу сделать фильтр по всем этим ролям, прописав их. Но я хочу сделать более универсально - чтобы не приходилось каждый раз править код, когда добавляется новая роль. То есть, хочу сделать проверку по всем ролям на наличие административных функций без привязок к пользователям или именам ролей.

Твой код смотрит конкретную роль, а потом проверяет есть ли она у пользователя. Это не то, что мне нужно
5 napagokc
 
24.01.13
08:38
(4) Мне нужно не наличие роли у пользователя проверить, а наличие Административных функций у роли
6 Fish
 
24.01.13
08:41
(5) может это поможет?
ПравоДоступа(<Право>, <ОбъектМетаданных>, <Пользователь/Роль>, <СтандартныйРеквизитСтандартнаяТабличнаяЧасть>)
7 Aleksey
 
24.01.13
08:41
(5) А как тебя понять, если " Административных функций " - было в 7-ке а в 8-ке НЕТ такой функции, поэтому априори не может быть ниодной роли с функцией "Административных функций"
8 Fish
 
24.01.13
08:42
+ (6) <Право> (обязательный)

Тип: Строка.
Название права доступа. Могут быть использованы следующие значения:
Администрирование (Administration) - администрирование информационной базы; требуется наличия права "Администрирование данных";
АдминистрированиеДанных (DataAdministration) - право на административные действия над данными;
9 napagokc
 
24.01.13
08:42
Вот вижу в СП такую шнягу, как "ПравоДоступа", есть даже пример:

Справочник = Метаданные.Справочники.Конкуренты;
Если Не ПравоДоступа("Чтение", Справочник) Тогда
   Текст = "ru = ""Доступ к данному справочнику закрыт!"";"
    + " en = ""Access denied!""";
   Предупреждение(НСтр(Текст));
КонецЕсли;

Но не вижу в правах Административных функций
10 Aleksey
 
24.01.13
08:43
(8) и где здесь "Административных функций "?
11 napagokc
 
24.01.13
08:43
Пока писал, мне уже накидали ответ ))
12 Aleksey
 
24.01.13
08:43
(9) Еше раз проснись, сходи умойся и заново скажи ты про 7-ку или 8-ку
13 Fish
 
24.01.13
08:44
(10) Возможно, имелось в виду право "Администрирование".
14 napagokc
 
24.01.13
08:44
(12) 1С8.2. Административные функции есть
15 Aleksey
 
24.01.13
08:45
(14) скриншот в студию
16 Aleksey
 
24.01.13
08:45
Пока что совсе непонятно чем речь
17 napagokc
 
24.01.13
08:47
18 Aleksey
 
24.01.13
08:52
Это какой то 8.0 наверное

что говорит о программе и главное режим совместимости
19 Fish
 
24.01.13
08:52
(17) Платформа какая? Сейчас специально посмотрел: 8.1 - называется "Административные функции", как у тебя, в 8.2 - уже "Администрирование"
20 Aleksey
 
24.01.13
08:54
в 8.2 в конфигураторе есть объект "Внешние источники данных" плюс в правах есть галка на "все функции". У тебя этого нет. Вывод. Явно не 8.2
21 napagokc
 
24.01.13
08:54
у меня 1С8.2.13.219
22 Aleksey
 
24.01.13
08:55
(21) Обнови до последней платформы и проблема будет решена
23 napagokc
 
24.01.13
08:57
(22) Конфигурация собственной разработки, все писалось с нуля. Обновлять версию 1С нельзя, т.к. крупный международный холдинг и нужно, чтобы тогда все филиалы разом обновились, а это, по разным причинам, нельзя сделать единовременно. Нужно работать с тем, что есть
24 napagokc
 
24.01.13
09:12
ПравоДоступа("Администрирование", Метаданные) - находит ВСЕ роли. Попробовал написать ПравоДоступа("АдминистративныеФункции", Метаданные), но выдалась ошибка - таких прав нет. :(
25 napagokc
 
24.01.13
10:13
Друзья, это победа!
После долгих мучений, бесполезного гугления (странно, но гугл не нашел ответа на мои вопросы, как бы я их не задавал), вчитывания в СП и экспериментов, я все-таки добился своего!!!

Для каждого Роль Из Метаданные.Роли Цикл
   Если ПравоДоступа("Администрирование", Метаданные, Роль) Тогда
       Сообщить("'" + Роль + "' Успех!");
   КонецЕсли;
КонецЦикла;