Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

RLS: закрыть доступ к одному реквизиту... ?

RLS: закрыть доступ к одному реквизиту... ?
Я
   dave2000
 
08.04.19 - 09:17
Есть некий объект с данными (справочник/документ/регистр), необходимо закрыть доступ к одному реквизиту. Т.е. скрывать не записи целиком, а один реквизит. Как это можно реализовать?

Пробовал через RLS, там можно выбирать, на какие поля распространяется ограничение доступа, но пока не получается, либо я что-то неправильно делаю.
 
 
   1CIlya
 
1 - 08.04.19 - 10:13
Не рассматривали возможность внести изменения в архитектуру конфигурации? Вынести этот реквизит в регистр сведений и там навесить RLS.
   Fram
 
2 - 08.04.19 - 10:20
(0) это вроде без рлсов галочками можно сделать
   dave2000
 
3 - 08.04.19 - 11:07
(1) слишком много таких изменений будет, это ЗУП... прийдется все механизмы расчета переписывать, отчеты и т.д.

(2) Дал право "чтение/просмотр" на регистр, а на сам реквизит снял галки "просмотр/редактирование" - отображаются все поля и все реквизиты. Что-то оно так не работает.
   Жан Пердежон
 
4 - 08.04.19 - 11:19
(0 RLS - котлеты, реквизиты - мухи.
смотри в правах на подписи возле галочек
   dave2000
 
5 - 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) образец говнокода
   1Сергей
 
9 - 08.04.19 - 12:37
(7) линейкой по пальцам за такое
   Сияющий в темноте
 
10 - 08.04.19 - 14:05
запрос на уровне полей не умеет.
 
 Рекламное место пустует
   vvp91
 
11 - 08.04.19 - 14:20
Типовые конфигурации, к сожалению, предоставляют доступ ко всем реквизитам, всех объектов, во всех ролях.
Поэтому, если пользователь, кроме специальной (своей) роли с ограничением по реквизитам, получает еще и типовые роли, то он получает доступ и к реквизиту.

Если дать пользователю только свои роли, в которых отключен доступ к реквизитам, то все заработает.
   Вафель
 
12 - 08.04.19 - 14:23
(8) ты еще скажи, что лучше в элементе настраивать раздел "видимость по ролям"
   Вафель
 
13 - 08.04.19 - 14:24
(6) собственно сама 1с не рекомендует независимые права для реквизитов
   fisher
 
14 - 08.04.19 - 15:22
(0) Через RLS не получится. RLS либо "пропускает" запрашиваемые данные строки, либо нет. Если пытаться прочитать данные строки включая "запретный" реквизит, то RLS не пропустит ничего.
   fisher
 
15 - 08.04.19 - 15:23
А если не через RLS, то костылить придется везде.
   fisher
 
16 - 08.04.19 - 15:29
Хотя не. Может и не везде. Я в этом вопросе плаваю.
Надо курить, как сочетаются права в ролях по реквизитам и комбинации галок пользовательской видимости в настройках форм.
   LLeonidov
 
17 - 08.04.19 - 15:34
(8) расскажи это создателям типовых. В данном случае плохое решение, но когда на роль повешен бизнес процесс, то почему бы и нет?
(0) Если тебе только спрятать или закрыть на редактирование, то ты что-то не договариваешь. Реквизит прекрасно прячется проверял на 1с 8.3.13.1513, 1с что-то поменяла в последних релизах, может доделают до конца, но это не точно.
А вот если тебе надежно убрать доступ во всех отчетах,... то реквизит правится и читается кодом без повышения прав, я вынес нужную тч в отдельный регистр.
   Fram
 
18 - 08.04.19 - 17:55
(3) > Дал право "чтение/просмотр" на регистр, а на сам реквизит снял галки "просмотр/редактирование"

это единственная роль у пользователя?
   АнализДанных
 
19 - 08.04.19 - 19:11
(0) А если функциональную опцию на реквизит повесить, значение опции брать из настроек пользователя?
   dave2000
 
20 - 10.04.19 - 17:07
В ЗУП есть регистр ПлановыеНачисления, в котором нужно убрать видимость реквизита Показатель1. Добавляю ограничение: поле "Показатель1", условие "ГДЕ ЛОЖЬ". Не показывает вообще записей.

(14) Похоже, что оно так и работает
(17) Мне нужно это поле спрятать, т.е. чтобы данные этого поля не подтягивалась запросами в документы, регистры и т.д. Чтобы были видны просто нули.
   Eiffil123
 
21 - 10.04.19 - 17:12
(20) если скрыть этот реквизит из формы списка, тогда будет всё видно. А если показать - тогда ничего.
Но это только для реквизитов, привязанных к полю объекта. А так, если он программно куда-то печатается, то его ничем не скрыть.
   craxx
 
22 - 10.04.19 - 17:31
(0) как верно заметили в (19), функциональная опция спасет отца русской демократии
   dave2000
 
23 - 10.04.19 - 17:33
(21) Нашел доступное описание:

https://fs.kursypo1c.ru/free/1C-Administration/03-rls-data-access-restrictions----kursy-po-1c_ru.pdf

"Механизм позволяет накладывать ограничение не только на всю запись базы данных
целиком, но и на отдельные ее поля. При этом можно указать имя конкретного поля или
специальное поле Прочие поля.
В первом случае условие будет накладываться только в том случае, если в запросе
присутствует поле, для которого задано ограничение.
Во втором случае ограничение будет накладываться для всех полей объекта, кроме полей,
для которых ограничения заданы явным образом."
   dave2000
 
24 - 10.04.19 - 17:34
(22) Опция просто спрячет поле из документа или списка. А что делать с запросами, отчетами, печатными формами, где выбрается это поле?
   Said_We
 
25 - 11.04.19 - 00:27
(0) Ответ уже дали в (14).
Если простым языком, то...
RLS умеет закрывать или не закрывать запись целиком. Условие RLS либо отрабатывает либо нет в зависимости к обращению полям, на которые наложено условие. Если среди полей, которые из БД считываются есть поля, на которые наложены условия, то эти RLS отрабатывают, но действует условие всегда на всю запись.
В (23) говориться что условие можно привязывать к отдельным полям, но не говориться, что это условие будет действовать только на отдельные поля.

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


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