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

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

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

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

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

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

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

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

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 130 000 руб. до 150 000 руб.
Полный день

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

Руководитель группы сервисов FRM на 1С
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы интеграций (1С)
Москва
зарплата от 150 000 руб.
Полный день