Вход | Регистрация



РольДоступна() или ПравоДоступа() ?

РольДоступна() или ПравоДоступа() ?
Я
   OldCondom
 
25.07.18 - 10:46
3. Другое60% (3)
2. ПравоДоступа40% (2)
1. РольДоступна0% (0)
Всего мнений: 5

Извечный вопрос.
Всегда использовал конструкцию "и РольДоступна("ПолныеПрава"). Но тут возник спор с саповцами, что нарушаем саму парадигму разграничения прав(сам ни**я не понял).
В целом, правда похоже на костыль дополнительная проверка на полные права.

Допустим, надо всем ограничить доступ к справочнику, если нет прав "МожноРедактироватьЭтотСправочник". Как правильнее?

Если РольДоступна("МожноРедактироватьЭтотСправочник") или РольДоступна("ПолныеПрава")


или

Если ПравоДоступа("Изменение", Метаданные.Справочники.ЭтотСправочник)

?
 
 
   OldCondom
 
1 - 25.07.18 - 10:48
Не понял, откуда здесь голосовалка?
   lodger
 
2 - 25.07.18 - 10:53
ПравоДоступа позволяет рулить правами из одного окна с ролями, тогда как РольДоступна заставляет тебя носится по коду и искать вызовы функции.
   lodger
 
3 - 25.07.18 - 10:53
имхо, РольДоступна только для совместимости со старыми конфами нужна.

2. ПравоДоступа
   rphosts
 
4 - 25.07.18 - 10:54
(1) ну а как ты определишь предпочтения среди дочитавших до конца нулевой пост?
   OldCondom
 
5 - 25.07.18 - 10:58
(4) а, понял. Я думал это что-то нажал и оно само(с).
А по вопросу, я бы хотел уяснить, как правильно, желательно со ссылками на одноэс. Понимаю, что "правильно" - понятие растяжимое и будет немного каша, но все же какое-то понятие хочется усвоить.
   Serg_1960
 
6 - 25.07.18 - 11:07
(0) А что тут не понятно? Пользователю может быть назначено несколько ролей и к конкретному объекту он может иметь конкретные права доступа на основании их. В зависимости от цели алгоритма можно требование наличие у пользователя конкретной роли (или совокупности их), но это нарушает сам принцип разграничения прав.

Ваш "саповец", в принципе, прав - вспомните об RLS.
   Локи-13
 
7 - 25.07.18 - 11:11
(0) Зависит от задачи.

Право доступа у него может быть, а вот роли нет.
Что тогда? Давать доступ или нет?
Это две разные функции для разных задач.

ПравоДоступа - проверяем перед выполнением операции с БД, чтобы не получить ошибку.

РольДоступна - проверка по бизнес-процессу. У роли может вообще не быть галочек к объектам.

3. Другое
   Serg_1960
 
8 - 25.07.18 - 11:22
(7) "У роли может вообще не быть галочек к объектам" - эээ... то есть роль в качестве логического значения? Не эффективно, имхо, но имеет право быть.
   lodger
 
9 - 25.07.18 - 11:24
(7) для таких кейсов придумали привилегированный режим\модуль.
   Cthulhu
 
10 - 25.07.18 - 11:29
(7) угумц.. утрированно - возможность и способ, что нужно проверять - зависит от контекста.

3. Другое
 
 Рекламное место пустует
   ildary
 
11 - 25.07.18 - 11:32
А как быть с РольДоступна("ПолныеПрава") - у него разве есть аналоги?
   Локи-13
 
12 - 25.07.18 - 11:32
(9) причем тут привилегированный модель?
   Локи-13
 
13 - 25.07.18 - 11:34
(8) кстати еще бывают роли на формы, команды, печать документов
это вообще не доступ к базе
   Дебет
 
14 - 25.07.18 - 11:46
написано же на ИТС про это
   VladZ
 
15 - 25.07.18 - 11:48
(0) Зависит от задачи. И это... Совет: не спорь с САПовцами. У них свои тараканы в голове.
   Timon1405
 
16 - 25.07.18 - 12:12
переделайте пункты в голосовалке:
-Роль я дрожащая или
-право имею
   rastat150
 
17 - 25.07.18 - 12:13
https://its.1c.ru/db/v8std/content/2149184386/hdoc
Для проверки прав доступа в коде следует использовать метод ПравоДоступа.
Например, неправильно:

Если РольДоступна("ДобавлениеИзменениеСтранМира") Тогда ...
Если РольДоступна("ПросмотрОтчетаПопулярныеСтраны") Тогда ...

правильно:

Если ПравоДоступа("Редактирование", Метаданные.Справочники.СтраныМира) Тогда ...
Если ПравоДоступа("Просмотр", Метаданные.Отчеты.ПопулярныеСтраны) Тогда ...

Такой подход позволяет повысить устойчивость кода к пересмотру состава ролей в конфигурации.

4. В тех случаях, где роль не дает никаких прав на объекты метаданных, а служит только для определения того или иного дополнительного права, следует использовать метод РольДоступна. При использовании в конфигурации Библиотеки стандартных подсистем (БСП) следует использовать функцию РолиДоступны общего модуля Пользователи:
Например, без использования БСП:

Если РольДоступна(...) Или <ЭтоПолноправныйПользователь> Или ПривилегированныйРежим() Тогда ...

Либо аналогичная проверка с использованием БСП:

Если Пользователи.РолиДоступны(...) Тогда ...
   Tonik992
 
18 - 25.07.18 - 12:16
(17) По-моему самый исчерпывающий ответ.

3. Другое
   OldCondom
 
19 - 25.07.18 - 12:20
(17) Огромное спасибо!
(18) во истину!
   Cool_Profi
 
20 - 25.07.18 - 12:35
(17) @Либо аналогичная проверка с использованием БСП:@
За использование БСП нужно лицом к стенке и пулю в лоб...
   ildary
 
21 - 25.07.18 - 12:37
(20) А как быть с типовыми? Отказаться от БСП и постоянно костылить своё?
   MUXACb
 
22 - 25.07.18 - 12:41
(17) Не работает если нужно проверить наличие запрещающей роли у пользователя с полными правами
   Tonik992
 
23 - 25.07.18 - 12:47
(22) Запрещающая роль?
А можете пример привести. Никогда не приходился стакливаться с выдачей роли, которая что-то бы запрещала.
   ildary
 
24 - 25.07.18 - 12:50
(23) наверное что-то вроде
Если РольДоступна( ЗапретПродаж ) Тогда
   Отказ = Истина;
КонецЕсли;
   MUXACb
 
25 - 25.07.18 - 12:51
(23) В ЗУП 3 запретить редактирование среднего заработка
(24) Вернет Ложь если доступны полные права
   Мандалай
 
26 - 25.07.18 - 12:57
Читаем стандарты разработки

2. ПравоДоступа
   MUXACb
 
27 - 25.07.18 - 13:11
(26) Можно пример для ситуации в (22)?
   YaFedor
 
28 - 25.07.18 - 13:14
(27) Не существует "запрещающих" ролей в 1с 8, а жаль
   Tonik992
 
29 - 25.07.18 - 15:03
(28) Зато существует "запрещающая проверка" на наличие роли :-)
   YaFedor
 
30 - 25.07.18 - 15:37
(29) Об этом все уже написано в (17)
   Мандалай
 
31 - 25.07.18 - 15:43
(27)Значит неверная архитектура решения, если требуется применять методику, нерекомендованную вендором.
   Nikoss
 
32 - 20.11.18 - 11:21
А когда темы в архив сдаются? почти 4 месяца теме...

из (17)
[не рекомендуется использовать ролевую настройку видимости в элементах форм]

так а нахрена они вообще сделали эту возможность?
   Остап Сулейманович
 
33 - 20.11.18 - 11:23
(32) Рулить нужно доступностью, а не видимостью. Причин много.
 
 
   Nikoss
 
34 - 20.11.18 - 11:49
(33) можно подробнее про причин много?

так зачем в платформе 1С дают возможно делать то, что не рекомендует делать таже 1С?
   Cyberhawk
 
35 - 20.11.18 - 11:58
(34) Не слушай его. На ИТС в том пункте речь только о корневых подсистемах и начальной страницы. Про формы объектов там конечно же речи нет и видимость по ролям использовать можно и нужно.
   Nikoss
 
36 - 20.11.18 - 14:12
(35) По тексту речь как раз о формах объектов:

1. В случае большого количества ролей в конфигурации (от нескольких десятков) не рекомендуется использовать ролевую настройку видимости в элементах форм (просмотр и редактирование реквизитов по ролям, пользовательскую видимость полей формы по ролям, использование команд по ролям). Вместо этого следует придерживаться следующих подходов:
.....
   Cyberhawk
 
37 - 20.11.18 - 14:16
(36) Этот пункт только про значительное количество ролей и про то, что вместо этого (в случае большого количества) надо использовать проверку кодом
   Nikoss
 
38 - 20.11.18 - 14:29
(37) несколько десятков ролей наверное даже в самописках уже нормой считается. Поэтому, видимо, можно брать за правило этот пункт.
   Cyberhawk
 
39 - 20.11.18 - 14:30
(38) Скорее не на абсолютное количество надо смотреть, а на их "качество": если это атомарные роли (где на каждый справочник или документ как минимум две роли - отдельно на просмотр и отдельно на добавление+изменение), тогда про видимость по ролям на формах объектов можно забыть
   Cyberhawk
 
40 - 20.11.18 - 14:31
А если это "функциональные" роли (прям по должностям, например), тогда видимость по ролям хорошо заходит
   Вафель
 
41 - 20.11.18 - 14:55
видимость по ролям очень сложно отлаживать
   Вафель
 
42 - 20.11.18 - 14:56
поэтому видимость лучше в коде. кстате по этой же причине 1с рекомендует условное оформление в коде
   Nikoss
 
43 - 21.11.18 - 07:50
(42) тьфу, еще и условное кодом делать...((
Эти рекомендации тоже с ИТС стандартов разработки?


Список тем форума
Рекламное место пустует  Рекламное место пустует
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует