![]() |
|
RLS: закрыть доступ к одному реквизиту... ? | ☑ | ||
---|---|---|---|---|
0
dave2000
08.04.19
✎
09:17
|
Есть некий объект с данными (справочник/документ/регистр), необходимо закрыть доступ к одному реквизиту. Т.е. скрывать не записи целиком, а один реквизит. Как это можно реализовать?
Пробовал через RLS, там можно выбирать, на какие поля распространяется ограничение доступа, но пока не получается, либо я что-то неправильно делаю. |
|||
1
1CIlya
08.04.19
✎
10:13
|
Не рассматривали возможность внести изменения в архитектуру конфигурации? Вынести этот реквизит в регистр сведений и там навесить RLS.
|
|||
2
Fram
08.04.19
✎
10:20
|
(0) это вроде без рлсов галочками можно сделать
|
|||
3
dave2000
08.04.19
✎
11:07
|
(1) слишком много таких изменений будет, это ЗУП... прийдется все механизмы расчета переписывать, отчеты и т.д.
(2) Дал право "чтение/просмотр" на регистр, а на сам реквизит снял галки "просмотр/редактирование" - отображаются все поля и все реквизиты. Что-то оно так не работает. |
|||
4
Жан Пердежон
08.04.19
✎
11:19
|
(0 RLS - котлеты, реквизиты - мухи.
смотри в правах на подписи возле галочек |
|||
5
dave2000
08.04.19
✎
11:57
|
(4) Не совсем понял, что имелось в виду? Для реквизита снимаю галочки "Просмотр" и "Редактирование"
|
|||
6
Жан Пердежон
08.04.19
✎
12:21
|
||||
7
Вафель
08.04.19
✎
12:22
|
лучше кодом делать
|
|||
8
Жан Пердежон
08.04.19
✎
12:36
|
(7) образец говнокода
|
|||
9
1Сергей
08.04.19
✎
12:37
|
(7) линейкой по пальцам за такое
|
|||
10
Сияющий в темноте
08.04.19
✎
14:05
|
запрос на уровне полей не умеет.
|
|||
11
vvp91
08.04.19
✎
14:20
|
Типовые конфигурации, к сожалению, предоставляют доступ ко всем реквизитам, всех объектов, во всех ролях.
Поэтому, если пользователь, кроме специальной (своей) роли с ограничением по реквизитам, получает еще и типовые роли, то он получает доступ и к реквизиту. Если дать пользователю только свои роли, в которых отключен доступ к реквизитам, то все заработает. |
|||
12
Вафель
08.04.19
✎
14:23
|
(8) ты еще скажи, что лучше в элементе настраивать раздел "видимость по ролям"
|
|||
13
Вафель
08.04.19
✎
14:24
|
(6) собственно сама 1с не рекомендует независимые права для реквизитов
|
|||
14
fisher
08.04.19
✎
15:22
|
(0) Через RLS не получится. RLS либо "пропускает" запрашиваемые данные строки, либо нет. Если пытаться прочитать данные строки включая "запретный" реквизит, то RLS не пропустит ничего.
|
|||
15
fisher
08.04.19
✎
15:23
|
А если не через RLS, то костылить придется везде.
|
|||
16
fisher
08.04.19
✎
15:29
|
Хотя не. Может и не везде. Я в этом вопросе плаваю.
Надо курить, как сочетаются права в ролях по реквизитам и комбинации галок пользовательской видимости в настройках форм. |
|||
17
LLeonidov
08.04.19
✎
15:34
|
(8) расскажи это создателям типовых. В данном случае плохое решение, но когда на роль повешен бизнес процесс, то почему бы и нет?
(0) Если тебе только спрятать или закрыть на редактирование, то ты что-то не договариваешь. Реквизит прекрасно прячется проверял на 1с 8.3.13.1513, 1с что-то поменяла в последних релизах, может доделают до конца, но это не точно. А вот если тебе надежно убрать доступ во всех отчетах,... то реквизит правится и читается кодом без повышения прав, я вынес нужную тч в отдельный регистр. |
|||
18
Fram
08.04.19
✎
17:55
|
(3) > Дал право "чтение/просмотр" на регистр, а на сам реквизит снял галки "просмотр/редактирование"
это единственная роль у пользователя? |
|||
19
АнализДанных
08.04.19
✎
19:11
|
(0) А если функциональную опцию на реквизит повесить, значение опции брать из настроек пользователя?
|
|||
20
dave2000
10.04.19
✎
17:07
|
В ЗУП есть регистр ПлановыеНачисления, в котором нужно убрать видимость реквизита Показатель1. Добавляю ограничение: поле "Показатель1", условие "ГДЕ ЛОЖЬ". Не показывает вообще записей.
(14) Похоже, что оно так и работает (17) Мне нужно это поле спрятать, т.е. чтобы данные этого поля не подтягивалась запросами в документы, регистры и т.д. Чтобы были видны просто нули. |
|||
21
Eiffil123
10.04.19
✎
17:12
|
(20) если скрыть этот реквизит из формы списка, тогда будет всё видно. А если показать - тогда ничего.
Но это только для реквизитов, привязанных к полю объекта. А так, если он программно куда-то печатается, то его ничем не скрыть. |
|||
22
craxx
10.04.19
✎
17:31
|
(0) как верно заметили в (19), функциональная опция спасет отца русской демократии
|
|||
23
dave2000
10.04.19
✎
17:33
|
(21) Нашел доступное описание:
https://fs.kursypo1c.ru/free/1C-Administration/03-rls-data-access-restrictions----kursy-po-1c_ru.pdf "Механизм позволяет накладывать ограничение не только на всю запись базы данных целиком, но и на отдельные ее поля. При этом можно указать имя конкретного поля или специальное поле Прочие поля. В первом случае условие будет накладываться только в том случае, если в запросе присутствует поле, для которого задано ограничение. Во втором случае ограничение будет накладываться для всех полей объекта, кроме полей, для которых ограничения заданы явным образом." |
|||
24
dave2000
10.04.19
✎
17:34
|
(22) Опция просто спрячет поле из документа или списка. А что делать с запросами, отчетами, печатными формами, где выбрается это поле?
|
|||
25
Said_We
11.04.19
✎
00:27
|
(0) Ответ уже дали в (14).
Если простым языком, то... RLS умеет закрывать или не закрывать запись целиком. Условие RLS либо отрабатывает либо нет в зависимости к обращению полям, на которые наложено условие. Если среди полей, которые из БД считываются есть поля, на которые наложены условия, то эти RLS отрабатывают, но действует условие всегда на всю запись. В (23) говориться что условие можно привязывать к отдельным полям, но не говориться, что это условие будет действовать только на отдельные поля. Не надо оклад директоров и руководства скрывать. Получают слишком много денег, так значит заработали - чего стесняться. :-) Если все-таки стесняетесь, то не надо получать много - получайте меньше. :-) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |