Имя: Пароль:
1C
1С v8
Поведение функции РольДоступна()
0 ildary
 
20.12.16
08:43
Уважаемые специалисты, подскажите пожалуйста, как обойти эту проблему:

в конфигурацию добавил новую роль "_ИзменениеДопДанных" и для проверки этой роли применяю оператор РольДоступна( "_ИзменениеДопДанных" ), но вижу, что возвращается ложь, как у пользователя с полными правами, так и у урезанного, но эта роль привязана не к нему, а к его группе. То есть есть некий профиль _Пользователь, который привязан к группе доступа _Пользователь, в которую входит группа пользователей _Опт, а в этой группе _Опт есть пользователь Иванов, и вот у Иванова РольДоступна( "_ИзменениеДопДанных" ) возвращает Ложь.
1 DrZombi
 
гуру
20.12.16
08:48
(0) обнови роль для всей группы :)
2 Лефмихалыч
 
20.12.16
08:48
открой пользователя в конфигураторе и посмотри, есть ли реально у него эта роль. Наверняка нету.
3 DrZombi
 
гуру
20.12.16
08:49
>>>  и вот у Иванова РольДоступна( "_ИзменениеДопДанных" ) возвращает Ложь

Это означает, что пользователю "Иванову", не назначена роль. В конфигураторе :)
4 Лефмихалыч
 
20.12.16
08:49
роли могут не назначаться у пользователей с полными правами, если это все на БСП
5 Stepa86
 
20.12.16
08:52
+(4) Поэтому правильнее юзать ПравоДоступа( . А еще правильнее проверять не через строку РольДоступна( "_ИзменениеДопДанных" ) а через метаданные РольДоступна( Метаданные.Роли._ИзменениеДопДанных )
6 ildary
 
20.12.16
08:53
Прошу прощения, что не сказал, что речь идет о БСП (УТ11). В конфигураторе ничего не назначал, обновление вспомогательных данных (ИнструментыРазработчикаОбновлениеВспомогательныхДанных) делал.

(5) а ПравоДоступа() будет работать для сложной схемы Роль-Профиль-ГруппаДоступа-ГруппаПользователей-Пользователь?
7 Лефмихалыч
 
20.12.16
08:59
(6) адова каша. Группа пользователей не дает ни каких прав.
Смотря, что и зачем ты там проверяешь - так сразу не ответить на твой вопрос
8 ildary
 
20.12.16
09:16
(7) Если зайти в справочник пользователей, с включенной опцией использовать группы, то всех пользователей можно раскидать по группам. При этом присваивать группы доступа можно не пользователям поименно, а их группам (открыть группу пользователя, перейти на закладку "права доступа".

А проверяю я права в совсем другом месте - некая обработка при открытии в зависимости от ролей пользователя показывает или скрывает кнопки на своей форме. Я начал делать проверку прав с помощью РольДоступна() и увидел, что она работает не так, как ожидалось.
9 VladZ
 
20.12.16
09:23
РольДоступна не проверяет наличие роли у группы. Проверяется доступность роли для текущего пользователя (без учета группы).
10 VladZ
 
20.12.16
09:24
(6) Вот такие дикие схемы " Роль-Профиль-ГруппаДоступа-ГруппаПользователей-Пользователь" - нужно проверять самому (дописывать код)
11 ildary
 
20.12.16
09:36
(10) автор дикой схемы - фирма 1С. Я в ней ничего не менял, я ей только пользуюсь.

Я нашел - в модуле УправлениеДоступом есть функция ЕстьРоль() и она делает то, что мне нужно.

Учебники по новым конфигурациям (УТ11, БП3, ERP) - должны содержать на заглавной странице - "Забудьте все, что вы учили ранее".
12 VladZ
 
20.12.16
09:38
(11) Учебники по новым конфигурациям (УТ11, БП3, ERP) должны сжигаться вместе с новыми конфигурациями...
13 ildary
 
20.12.16
09:39
(12) читаю и плАчу. Но справедливости ради - побившись башкой об конфигуратор - найти решение все-таки можно.
14 ildary
 
20.12.16
09:42
Резюме - функция РольДоступна() в новых конфигурациях годится только как РольДоступна( "ПолныеПрава" ) - для проверки на админа
15 Лодырь
 
20.12.16
09:43
(12) Вместе с авторами?
16 Лефмихалыч
 
20.12.16
09:46
(12) язычник-старовер
17 VladZ
 
20.12.16
09:53
(15) Ну, была такая мысль, не скрою.  НО озвучивать не стал  ибо статья.