1. user597078_steem34 07.11.18 07:28 Сейчас в теме

Возможности RLS

Добрый день, вопрос к гуру RLS, подскажите пожалуйста, можно ли только средствами данного механизма сделать такую штуку. Чтобы отдельные пользователи могли просматривать элемент справочника "Контрагенты" в форме списка, но не могли при этом выбирать его в заказах, видеть в задачах и т.д. Я почитал о RLS, но насколько я понял, можно только дать права на чтение, удаление, добавление, изменение. Т.е. если я не дам право на чтение, то пользователь и в списке видеть этого клиента не будет. Как лучше решить эту проблему? Подпилить форму выбора из этого справочника и остальные места где нужно ограничение?
Найденные решения
2. herfis 274 07.11.18 08:38 Сейчас в теме
RLS накладывает дополнительные условия на работу с ТАБЛИЦАМИ. Соответственно и прикручивается к таблицам, а не к сущностям (типа "Контрагенты").
Вполне можно разрешить видеть контрагента в списке (таблица контрагентов), но запретить видеть и создавать заказы по этому контрагенту (таблица заказов). Про таблицы регистров тоже не забыть.
Срабатывают ограничения в момент соответствующего обращения к табице (попытка чтения, попытка записи). То есть выбрать контрагента в заказе пользователь сможет (если есть права на чтение таблицы контрагентов), но при попытке записи такого заказа получит исключение (если запрещено писать заказы с этим контрагентом).
Все очень просто и железобетонно. Если нужно что-то сверх этого - RLS уже ничем не поможет.
user597078_steem34; +1 Ответить
Остальные ответы
Избранное Подписка Сортировка: Древо
2. herfis 274 07.11.18 08:38 Сейчас в теме
RLS накладывает дополнительные условия на работу с ТАБЛИЦАМИ. Соответственно и прикручивается к таблицам, а не к сущностям (типа "Контрагенты").
Вполне можно разрешить видеть контрагента в списке (таблица контрагентов), но запретить видеть и создавать заказы по этому контрагенту (таблица заказов). Про таблицы регистров тоже не забыть.
Срабатывают ограничения в момент соответствующего обращения к табице (попытка чтения, попытка записи). То есть выбрать контрагента в заказе пользователь сможет (если есть права на чтение таблицы контрагентов), но при попытке записи такого заказа получит исключение (если запрещено писать заказы с этим контрагентом).
Все очень просто и железобетонно. Если нужно что-то сверх этого - RLS уже ничем не поможет.
user597078_steem34; +1 Ответить
3. user597078_steem34 07.11.18 09:41 Сейчас в теме
(2)Спасибо, осталось разобраться с реализацией, буду пробовать!)
4. user597078_steem34 07.11.18 11:21 Сейчас в теме
(2) Подскажите пожалуйста, создал роль, в ней добавил рлс правило на изменение документ "ЗаказКлиента", для теста написал небольшой запрос, я так понимаю теперь у меня запрет на проведение любого заказа, так как условие всегда истинно, но почему-то у пользователя, которому присвоена эта роль нет ограничений, заказы проводятся( что я сделал не так?
Прикрепленные файлы:
5. user633533_encantado 4 07.11.18 11:27 Сейчас в теме
(4) У вас стоит условие, что если контрагент в списке контрагентов, то менять можно. Вот программа и дает менять.

Простой вариант реализации: заведите параметр сеанса "Текущий пользователь" и при старте системы устанавливайте его.
Заведите регистр сведений "Пользователь - Контрагент" , в роли пропишите , что если контрагент есть для этого пользователя в регистре сведений, то можно писать, если нет, то нет.
6. user597078_steem34 07.11.18 11:36 Сейчас в теме
(5) Я переписывал условие и таким образом:

ЗаказКлиента ГДЕ НЕ  ЗаказКлиента.Контрагент В
			(ВЫБРАТЬ
				СписокКонтрагентов.Ссылка
			ИЗ
				Справочник.Контрагенты КАК СписокКонтрагентов)

Это ничего не дало. А по поводу параметров сеанса и рс, не могу добавить их т.к. конфигурация стоит на поддержке, а расширение не позволяет менять структуру метаданных (
7. user633533_encantado 4 07.11.18 11:37 Сейчас в теме
(6) У пользователя есть еще роли с правами на заказ клиента ?
user597078_steem34; +1 Ответить
8. user597078_steem34 07.11.18 11:39 Сейчас в теме
(7) Да, это пользователь с полными правами. Я думал рлс работает поверх ролей, т.е. перекрывает их, это не так?
9. user633533_encantado 4 07.11.18 11:40 Сейчас в теме
(8) Совсем не так. РЛС работает так же как все роли в 1С, если хоть одна роль разрешает, значит можно.
user597078_steem34; +1 Ответить
10. herfis 274 07.11.18 11:41 Сейчас в теме
(8)
Я думал рлс работает поверх ролей, т.е. перекрывает их, это не так?

Нет. RLS - это "уточнение" работы ролей (конкретизация, как роль будет работать на уровне записей таблицы). При "сложении" ролей в 1С пользователь получает "наибольшие" права.
user597078_steem34; +1 Ответить
11. user597078_steem34 07.11.18 11:41 Сейчас в теме
(10) Понял, всем огромное спасибо, буду двигаться дальше!)
12. herfis 274 07.11.18 11:50 Сейчас в теме
(11) Просто для информации.
В подсистеме БСП "Управление доступом" реализован очень гибкий и интересный подход. Чтобы избежать перекрытия ролей и при этом дать максимально гибкие возможности настройки прав доступа используется правило - для каждого объекта, на каждый вид доступа к этому объекту (чтение/изменение) создается ОТДЕЛЬНАЯ роль. Получается много-много ролей. Но в каждой - только одно ограничение. Поэтому "перекрытие" разных ролей на одной таблице исключается в принципе.
А чтобы с этим было удобно работать, уже в рамках подсистемы реализованы т.н. "профили доступа", которые объединяют эти микро-роли в какие-то осмысленные логические единицы, по которым уже можно удобно выдавать доступ пользователям (в пользовательской части пользователя включают в какую-то группу доступа, ассоциированную с профилем, а БСП при этом сама автоматически накидывает пользователю все нужные микро-роли).
13. acanta 47 08.11.18 21:06 Сейчас в теме
(12) не понимаю. В метаданных предусмотрено на каждый вид документа 27 прав. Роль в 1с предусматривает хранение всех установленных/не установленных прав доступа на все объекты метаданных. Как минимум в метаданных в результате 80% предусмотренного для метаданных пространства не используется (1 право из 5 укрупненных(чтение, запись, проведение, удаление, отмена проведения), в худшем 1/27). Сколько процентов от размера cf составляют роли?
15. herfis 274 09.11.18 10:22 Сейчас в теме
(13)
Сколько процентов от размера cf составляют роли?

Без понятия. Я не смотрел на формат сохранения ролей в метаданных. Но даже если ваше предположение верно и в случае микророли она занимает неоправданно много места (в чем я очень сильно сомневаюсь - лично я могу придумать массу вариантов оптимизированного хранения ролей в случае их частичного наполнения. Модель хранения метаданных скорее документная, чем реляционная), то я не вижу в этом большой проблемы. Во всяком случае на практике это никогда проблемой не становилось.
14. acanta 47 08.11.18 22:53 Сейчас в теме
Для моего понимания доступно в конфигураторе только одно право - это "чтение", булево, поскольку оно фигурирует в запросах как выбрать разрешенные.
Остальные вполне могут быть реализованы программно, тем более с такими же нагромождениями как БСП в модулях как статусы возврата или отказ.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Консультант-аналитик 1С
Москва
зарплата от 70 000 руб. до 100 000 руб.
Полный день

Программист 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Временный (на проект)

Ведущий программист 1С
Сочи
зарплата от 80 000 руб. до 100 000 руб.
Полный день