![]() |
![]() |
![]() |
|
Почему может не работать метод ПравоДоступа | ☑ | ||
---|---|---|---|---|
0
MNS_Ротерта
11.12.09
✎
14:03
|
ДоступАдминистративныхПрав = Ложь;
ДоступАктивныеПользователи = Ложь; Для каждого ТекРольПользователя Из ПользователиИнформационнойБазы.ТекущийПользователь().Роли Цикл Если ПравоДоступа("Администрирование", ТекРольПользователя,) Тогда ДоступАдминистративныхПрав = Истина; КонецЕсли; Если ПравоДоступа("АктивныеПользователи", ТекРольПользователя,) Тогда ДоступАктивныеПользователи = Истина; КонецЕсли; КонецЦикла; У пользователя одна роль РМК. И у нее нет ни административных прав ни просмотра активных пользователей. Почему в условия все таки входит отладчик? Что не так я могу делать? |
|||
1
MNS_Ротерта
11.12.09
✎
14:14
|
народ у всех выходной уже что ли? :(
|
|||
2
Axel2009
11.12.09
✎
14:19
|
Глобальный контекст
ПравоДоступа (AccessRight) Синтаксис: ПравоДоступа(<Право>, <Объект метаданных>, <Пользователь/Роль>) |
|||
3
MNS_Ротерта
11.12.09
✎
14:19
|
У меня один вариант это глючит платформа 1С
|
|||
4
Axel2009
11.12.09
✎
14:19
|
Описание:
Показывает установку права доступа к объекту метаданных для текущего пользователя. Вызов метода всегда требует административных прав, если явно указан третий параметр - Пользователь/Роль, права которого проверяются. Если пользователь не указан, то проверяются права текущего пользователя, и для этого наличие административных прав не требуется. |
|||
5
MNS_Ротерта
11.12.09
✎
14:20
|
(2) а что я не правильно то сделал. Право указал, Роль как бъект метаданных тоже. третий параметр не нужен так как для текущего юзера хочу определить право доступа
|
|||
6
Axel2009
11.12.09
✎
14:21
|
2ой параметр что надо указывать?
|
|||
7
MNS_Ротерта
11.12.09
✎
14:24
|
(6) объект метаданных надо указывать. А я что указал.
Метаданные.Роли.РМК = ТекРольПользователя равно в отладчике истина. |
|||
8
Невский Александр
11.12.09
✎
14:26
|
(0) а если еще использовать РольДоступна?
|
|||
9
MNS_Ротерта
11.12.09
✎
14:27
|
(8) Так у меня несколько ролей. Можно конечно сделать на рольдоступна("полныеправа") но это не совсем то что мне надо :(
|
|||
10
Axel2009
11.12.09
✎
14:27
|
ДоступАдминистративныхПрав = Ложь;
ДоступАктивныеПользователи = Ложь; Для каждого ТекРольПользователя Из ттт.Роли Цикл Если ПравоДоступа("Администрирование", Метаданные,) Тогда ДоступАдминистративныхПрав = Истина; КонецЕсли; Если ПравоДоступа("АктивныеПользователи", Метаданные,) Тогда ДоступАктивныеПользователи = Истина; КонецЕсли; КонецЦикла; |
|||
11
MNS_Ротерта
11.12.09
✎
14:28
|
Кстати тоже любопытно например следующий момент
МассивСоединений = ПолучитьСоединенияИнформационнойБазы(); Для Каждого Соединение Из МассивСоединений Цикл Если Соединение.Пользователь.УникальныйИдентификатор = ТекПользовательОбмена.УникальныйИдентификатор Тогда Сообщить("В информационной базе найден не законченный сеанс обмена. Обмен при закрытии смены не будет запущен", СтатусСообщения.Информация); ЗавершитьРаботуСистемы(Ложь); КонецЕсли; КонецЦикла; Если убрать УникальныйИдентификатор то Соединение.Пользователь <> ТекПользовательОбмена Тоже любопытный глюк |
|||
12
Axel2009
11.12.09
✎
14:28
|
тьфу, цикл убираем нафик
|
|||
13
Axel2009
11.12.09
✎
14:30
|
потому что COMObject при сравнивании и есть COMObject, а не ссылка на пользователя.
|
|||
14
MNS_Ротерта
11.12.09
✎
14:31
|
(12) без цикла сработало хотя не понятно конечно почему мой вариант с циклом не отрабатывал.
|
|||
15
Невский Александр
11.12.09
✎
14:36
|
(14) может он все роли брал, а не только разрешенные для этого пользователя?
|
|||
16
Axel2009
11.12.09
✎
14:37
|
(14) наверна потому что у Ролей нет такого права "Администрирование"
попробуйте такое провернуть Если ПравоДоступа("Вывод", Метаданные.Справочники.Банки,) Тогда ПроверкаВыводаБанки = Истина; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |