|   |   | 
| 
 | РольДоступна() или ПравоДоступа() ? | ☑ | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0
    
        OldCondom 25.07.18✎ 10:46 | 
 
        Извечный вопрос. 
 Всегда использовал конструкцию "и РольДоступна("ПолныеПрава"). Но тут возник спор с саповцами, что нарушаем саму парадигму разграничения прав(сам ни**я не понял). В целом, правда похоже на костыль дополнительная проверка на полные права. Допустим, надо всем ограничить доступ к справочнику, если нет прав "МожноРедактироватьЭтотСправочник". Как правильнее? Если РольДоступна("МожноРедактироватьЭтотСправочник") или РольДоступна("ПолныеПрава") или Если ПравоДоступа("Изменение", Метаданные.Справочники.ЭтотСправочник)? | ||||||||||
| 1
    
        OldCondom 25.07.18✎ 10:48 | 
        Не понял, откуда здесь голосовалка?     | ||||||||||
| 2
    
        lodger 25.07.18✎ 10:53 | 
        ПравоДоступа позволяет рулить правами из одного окна с ролями, тогда как РольДоступна заставляет тебя носится по коду и искать вызовы функции.     | ||||||||||
| 3
    
        lodger 25.07.18✎ 10:53 | 
        имхо, РольДоступна только для совместимости со старыми конфами нужна.     ПравоДоступа | ||||||||||
| 4
    
        rphosts 25.07.18✎ 10:54 | 
        (1) ну а как ты определишь предпочтения среди дочитавших до конца нулевой пост?     | ||||||||||
| 5
    
        OldCondom 25.07.18✎ 10:58 | 
        (4) а, понял. Я думал это что-то нажал и оно само(с). 
 А по вопросу, я бы хотел уяснить, как правильно, желательно со ссылками на одноэс. Понимаю, что "правильно" - понятие растяжимое и будет немного каша, но все же какое-то понятие хочется усвоить. | ||||||||||
| 6
    
        Serg_1960 25.07.18✎ 11:07 | 
        (0) А что тут не понятно? Пользователю может быть назначено несколько ролей и к конкретному объекту он может иметь конкретные права доступа на основании их. В зависимости от цели алгоритма можно требование наличие у пользователя конкретной роли (или совокупности их), но это нарушает сам принцип разграничения прав.
 Ваш "саповец", в принципе, прав - вспомните об RLS. | ||||||||||
| 7
    
        Локи-13 25.07.18✎ 11:11 | 
        (0) Зависит от задачи.
 Право доступа у него может быть, а вот роли нет. Что тогда? Давать доступ или нет? Это две разные функции для разных задач. ПравоДоступа - проверяем перед выполнением операции с БД, чтобы не получить ошибку. РольДоступна - проверка по бизнес-процессу. У роли может вообще не быть галочек к объектам. Другое | ||||||||||
| 8
    
        Serg_1960 25.07.18✎ 11:22 | 
        (7) "У роли может вообще не быть галочек к объектам" - эээ... то есть роль в качестве логического значения? Не эффективно, имхо, но имеет право быть.     | ||||||||||
| 9
    
        lodger 25.07.18✎ 11:24 | 
        (7) для таких кейсов придумали привилегированный режим\модуль.     | ||||||||||
| 10
    
        Cthulhu 25.07.18✎ 11:29 | 
        (7) угумц.. утрированно - возможность и способ, что нужно проверять - зависит от контекста.     Другое | ||||||||||
| 11
    
        ildary 25.07.18✎ 11:32 | 
        А как быть с РольДоступна("ПолныеПрава") - у него разве есть аналоги?     | ||||||||||
| 12
    
        Локи-13 25.07.18✎ 11:32 | 
        (9) причем тут привилегированный модель?     | ||||||||||
| 13
    
        Локи-13 25.07.18✎ 11:34 | 
        (8) кстати еще бывают роли на формы, команды, печать документов
 это вообще не доступ к базе | ||||||||||
| 14
    
        Дебет 25.07.18✎ 11:46 | 
        написано же на ИТС про это     | ||||||||||
| 15
    
        VladZ 25.07.18✎ 11:48 | 
        (0) Зависит от задачи. И это... Совет: не спорь с САПовцами. У них свои тараканы в голове.     | ||||||||||
| 16
    
        Timon1405 25.07.18✎ 12:12 | 
        переделайте пункты в голосовалке:
 -Роль я дрожащая или -право имею | ||||||||||
| 17
    
        rastat150 25.07.18✎ 12:13 | 
        https://its.1c.ru/db/v8std/content/2149184386/hdoc
 Для проверки прав доступа в коде следует использовать метод ПравоДоступа. Например, неправильно: Если РольДоступна("ДобавлениеИзменениеСтранМира") Тогда ... Если РольДоступна("ПросмотрОтчетаПопулярныеСтраны") Тогда ... правильно: Если ПравоДоступа("Редактирование", Метаданные.Справочники.СтраныМира) Тогда ... Если ПравоДоступа("Просмотр", Метаданные.Отчеты.ПопулярныеСтраны) Тогда ... Такой подход позволяет повысить устойчивость кода к пересмотру состава ролей в конфигурации. 4. В тех случаях, где роль не дает никаких прав на объекты метаданных, а служит только для определения того или иного дополнительного права, следует использовать метод РольДоступна. При использовании в конфигурации Библиотеки стандартных подсистем (БСП) следует использовать функцию РолиДоступны общего модуля Пользователи: Например, без использования БСП: Если РольДоступна(...) Или <ЭтоПолноправныйПользователь> Или ПривилегированныйРежим() Тогда ... Либо аналогичная проверка с использованием БСП: Если Пользователи.РолиДоступны(...) Тогда ... | ||||||||||
| 18
    
        Tonik992 25.07.18✎ 12:16 | 
        (17) По-моему самый исчерпывающий ответ.     Другое | ||||||||||
| 19
    
        OldCondom 25.07.18✎ 12:20 | 
        (17) Огромное спасибо!
 (18) во истину! | ||||||||||
| 20
    
        Cool_Profi 25.07.18✎ 12:35 | 
        (17) @Либо аналогичная проверка с использованием БСП:@
 За использование БСП нужно лицом к стенке и пулю в лоб... | ||||||||||
| 21
    
        ildary 25.07.18✎ 12:37 | 
        (20) А как быть с типовыми? Отказаться от БСП и постоянно костылить своё?     | ||||||||||
| 22
    
        MUXACb 25.07.18✎ 12:41 | 
        (17) Не работает если нужно проверить наличие запрещающей роли у пользователя с полными правами     | ||||||||||
| 23
    
        Tonik992 25.07.18✎ 12:47 | 
        (22) Запрещающая роль?
 А можете пример привести. Никогда не приходился стакливаться с выдачей роли, которая что-то бы запрещала. | ||||||||||
| 24
    
        ildary 25.07.18✎ 12:50 | 
        (23) наверное что-то вроде
 Если РольДоступна( ЗапретПродаж ) Тогда Отказ = Истина; КонецЕсли; | ||||||||||
| 25
    
        MUXACb 25.07.18✎ 12:51 | 
        (23) В ЗУП 3 запретить редактирование среднего заработка 
 (24) Вернет Ложь если доступны полные права | ||||||||||
| 26
    
        Мандалай 25.07.18✎ 12:57 | 
        Читаем стандарты разработки     ПравоДоступа | ||||||||||
| 27
    
        MUXACb 25.07.18✎ 13:11 | 
        (26) Можно пример для ситуации в (22)?     | ||||||||||
| 28
    
        YaFedor 25.07.18✎ 13:14 | 
        (27) Не существует "запрещающих" ролей в 1с 8, а жаль     | ||||||||||
| 29
    
        Tonik992 25.07.18✎ 15:03 | 
        (28) Зато существует "запрещающая проверка" на наличие роли :-)     | ||||||||||
| 30
    
        YaFedor 25.07.18✎ 15:37 | 
        (29) Об этом все уже написано в (17)     | ||||||||||
| 31
    
        Мандалай 25.07.18✎ 15:43 | 
        (27)Значит неверная архитектура решения, если требуется применять методику, нерекомендованную вендором.     | ||||||||||
| 32
    
        Nikoss 20.11.18✎ 11:21 | 
        А когда темы в архив сдаются? почти 4 месяца теме...
 из (17) [не рекомендуется использовать ролевую настройку видимости в элементах форм] так а нахрена они вообще сделали эту возможность? | ||||||||||
| 33
    
        Остап Сулейманович 20.11.18✎ 11:23 | 
        (32) Рулить нужно доступностью, а не видимостью. Причин много.     | ||||||||||
| 34
    
        Nikoss 20.11.18✎ 11:49 | 
        (33) можно подробнее про причин много?
 так зачем в платформе 1С дают возможно делать то, что не рекомендует делать таже 1С? | ||||||||||
| 35
    
        Cyberhawk 20.11.18✎ 11:58 | 
        (34) Не слушай его. На ИТС в том пункте речь только о корневых подсистемах и начальной страницы. Про формы объектов там конечно же речи нет и видимость по ролям использовать можно и нужно.     | ||||||||||
| 36
    
        Nikoss 20.11.18✎ 14:12 | 
        (35) По тексту речь как раз о формах объектов:
 1. В случае большого количества ролей в конфигурации (от нескольких десятков) не рекомендуется использовать ролевую настройку видимости в элементах форм (просмотр и редактирование реквизитов по ролям, пользовательскую видимость полей формы по ролям, использование команд по ролям). Вместо этого следует придерживаться следующих подходов: ..... | ||||||||||
| 37
    
        Cyberhawk 20.11.18✎ 14:16 | 
        (36) Этот пункт только про значительное количество ролей и про то, что вместо этого (в случае большого количества) надо использовать проверку кодом     | ||||||||||
| 38
    
        Nikoss 20.11.18✎ 14:29 | 
        (37) несколько десятков ролей наверное даже в самописках уже нормой считается. Поэтому, видимо, можно брать за правило этот пункт.     | ||||||||||
| 39
    
        Cyberhawk 20.11.18✎ 14:30 | 
        (38) Скорее не на абсолютное количество надо смотреть, а на их "качество": если это атомарные роли (где на каждый справочник или документ как минимум две роли - отдельно на просмотр и отдельно на добавление+изменение), тогда про видимость по ролям на формах объектов можно забыть     | ||||||||||
| 40
    
        Cyberhawk 20.11.18✎ 14:31 | 
        А если это "функциональные" роли (прям по должностям, например), тогда видимость по ролям хорошо заходит     | ||||||||||
| 41
    
        Вафель 20.11.18✎ 14:55 | 
        видимость по ролям очень сложно отлаживать     | ||||||||||
| 42
    
        Вафель 20.11.18✎ 14:56 | 
        поэтому видимость лучше в коде. кстате по этой же причине 1с рекомендует условное оформление в коде     | ||||||||||
| 43
    
        Nikoss 21.11.18✎ 07:50 | 
        (42) тьфу, еще и условное кодом делать...((
 Эти рекомендации тоже с ИТС стандартов разработки? | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |