Имя: Пароль:
1C
1С v8
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) говориться что условие можно привязывать к отдельным полям, но не говориться, что это условие будет действовать только на отдельные поля.

Не надо оклад директоров и руководства скрывать. Получают слишком много денег, так значит заработали - чего стесняться. :-)
Если все-таки стесняетесь, то не надо получать много - получайте меньше. :-)
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан