Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Роли и права доступа (http://forums.kuban.ru/f1040/roli_i_prava_dostupa-8566176.html)

stpd 29.12.2017 08:22

Роли и права доступа
 
Господа и дамы, парни и девчата!
Есть вот такой кусок кода:
//Откроем форму только для просмотра если нет прав на редактирование
Если РольДоступна("Администратор") = Ложь И РольДоступна("МДМ_Администратор") = Ложь Тогда
ЭтаФорма.Элементы.Список.ТолькоПросмотр = Истина;
КонецЕсли;
Проблема заключается в том, что у пользователя, у которого эти роли точно есть - эти два условия говорят "Нет" и форма закрывается таки для редактирования. Вопрос: почему это может происходить?

iMoxa 29.12.2017 08:58

Как вариант: роль есть, а прав нет.

stpd 29.12.2017 09:48

И тогда РольДоступна() будет возвращать Ложь?

Ткачик 29.12.2017 10:17

[quote=stpd;45156830]у пользователя, у которого эти роли точно есть - эти два условия говорят "Нет" и форма закрывается таки для редактирования[/quote] Русское народное блюдо - каша в голове: роли [b]есть[/b], а ответ - [b]"Нет"[/b]?

И вишенкой на торте - форма [b]"закрывается"[/b] вместо "открывается".

Попробуйте сформулировать вопрос более осмысленно.

iMoxa 29.12.2017 10:20

(2) Если бы возвращалась Ложь, то выражение РольДоступна("...") = Ложь было бы истинно.

nordbox 29.12.2017 10:22

Ну правильно )))
>>Проблема заключается в том, что у пользователя, у которого эти роли точно есть
Если РольДоступна("Администратор") = Ложь И РольДоступна("МДМ_Администратор") = Ложь Тогда
ЭтаФорма.Элементы.Список.ТолькоПросмотр = Истина;
КонецЕсли;

(0) А где Иначе?

stpd 29.12.2017 10:30

Ребята, ребята - не гоните! Если кто не понимает 1С-вского, перевожу на русский: Если у текущего пользователя нет прав Администратора или МДМ_Администратора - форма открывается в режиме "Только просмотр".
Так вот, как я уже сказал - права у текущего пользователя есть. А форма все равно открывается в режиме "Только просмотр". Вопрос пока остается - как такое может быть?

stpd 29.12.2017 10:32

(5) А зачем здесь Иначе?

nordbox 29.12.2017 10:33

+5 я не один раз сталкивался с загадочными логическими конструкциями в 1с, особенно на СКД )

nordbox 29.12.2017 10:38

Еще попробуй для начала:
Если РольДоступна("Администратор") = Ложь Тогда
ЭтаФорма.Элементы.Список.ТолькоПросмотр = Истина;
КонецЕсли;
потом попробуй
Если РольДоступна("Администратор") = Ложь ИЛИ РольДоступна("МДМ_Администратор") = Ложь Тогда
ЭтаФорма.Элементы.Список.ТолькоПросмотр = Истина;
КонецЕсли;

iMoxa 29.12.2017 10:42

Матерь Божья!
У чела есть роль и [b]РольДоступна("Администратор")[/b] возвращает [b]ИСТИНУ[/b].
А он ее в условии с [b]ЛОЖЬЮ [/b]сравнивает.
Естественно, что результат операции [b]ИСТИНА = ЛОЖЬ[/b] - есть [b]ЛОЖЬ[/b].

stpd 29.12.2017 10:49

Твою мать! Как я сам не увидел-то! :) iMoxa, респект.

Uho 29.12.2017 11:10

руки оторвать тому, кто пишет такой код.

PS. а автор сейчас вернется, ибо дело не в (10)

Uho 29.12.2017 11:13

Если обе роли доступны, то условие не выполняется.
Если хотя бы одна роль доступна, то условие не выполняется
Если обе роли недоступны, то условие выполняется.

ТолькоПросмотр устанавлиевается только на список, а не на форму, а автор пишет, что вся форма становится нередактируемой, значит дело вообще не в этом куске кода.

iMoxa 29.12.2017 11:18

(12)(13) По крайней мере Автор понял, что дело не в этом участке кода.

stpd 29.12.2017 11:20

(12) Да, дело не в этом.
(13) 'Если обе роли недоступны, то условие выполняется.' - и устанавливается ТолькоПросмотр.
Да, только на список. Но это приводит к тому, что блокируется работа с этим списком (это справочник) - невозможно ни добавить, ни удалить, ни изменить...

stpd 29.12.2017 11:22

Я почему сюда пришел - полез было в RLS, да коллеги сказали "Брось!" - я и бросил :) Решил информацию покопать.

stpd 29.12.2017 11:30

Я тогда переформулирую вопрос:
При отладке оба РольДоступна() возвращают Ложь.
Хотя в наборе прав пользователя обе эти роли есть.
Возможно ли такое (возможно, ибо я собственными глазами это наблюдаю)? И если да, то почему?

iMoxa 29.12.2017 11:46

(17) прямо в конфигураторе в ролях галочки стоят?

stpd 29.12.2017 11:50

Падажди - а при чем здесь в ролях галочки?
Проверяется наличие роли у пользователя - такая роль в Конфигураторе имеет место быть. И пользователю она присвоена.
Какие галочки ты имеешь в виду?

iMoxa 29.12.2017 12:18

(19) В конфигураторе у пользователя роли можешь посмотреть? Именно в конфигураторе у пользователя эта роль отмечена галочкой на закладке прочее?

stpd 29.12.2017 12:53

МДМ_Администратор помечено, Администратор - нет.
Причем - ребята, все заработало...
Че было - не знаю.
Всем спасибо, тема закрыта.

EarlyBird 01.01.2018 18:11

вот почитаешь такое, и поневоле задумаешься,
всё-таки есть здравое зерно в предложении ввести лицензии на отлов 1Сников

bma1 02.01.2018 13:17

Было такое. Чистка кэша помогла.


Текущее время: 14:54. Часовой пояс GMT +3.