powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / правильный запрос для rls
11 сообщений из 11, страница 1 из 1
правильный запрос для rls
    #38589172
Serge Home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сделал справочник добПраваДоступа, с реквизитами:
Подразделение (спр.Подразделения), Пользователь (спр.Пользователи)
с табл.частью "ПоОбъектам" с реквизитами:
ВидОбъекта (перечисление), Чтение (булево), Запись (булево)

справочник нужен для развития ограничений по типам документов и справочников (их много, планов у руководства на ограничения тоже)

состряпал запрос для документа в консоли:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
ВЫБРАТЬ
    *
ИЗ
    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    Справочник.добПраваДоступа КАК ПраваДоступа
ПО
    ПраваДоступа.Подразделение = ПоступлениеТоваровУслуг.Подразделение
  И ПраваДоступа.Пользователь = &ТекущийПользователь
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    Справочник.добПраваДоступа.ПоОбъектам КАК ПраваДоступаОбъекты
ПО
    ПраваДоступаОбъекты.Ссылка = ПраваДоступа.Ссылка
  И ПраваДоступаОбъекты.ВидОбъекта = ЗНАЧЕНИЕ(Перечисление.добВидыОбъектовДоступа.ПоступлениеТоваровУслуг)
  И ПраваДоступаОбъекты.Чтение = ИСТИНА



в консоли он выбирает именно те документы, которые хочу (с подразделением, которое указано для данного пользователя и при установленном Чтение=Истина), но как этот запрос преобразовать к использованию в rls чтото не пойму.. например чтобы было
(ВЫБРАТЬ ПЕРВЫЕ 1 1... итд

пробовал:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ПоступлениеТоваровУслуг ИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    Справочник.добПраваДоступа КАК ПраваДоступа
ПО
    ПраваДоступа.Подразделение = ПоступлениеТоваровУслуг.Подразделение
  И ПраваДоступа.Пользователь = &ТекущийПользователь
ВНУТРЕННЕЕ СОЕДИНЕНИЕ

    Справочник.добПраваДоступа.ПоОбъектам КАК ПраваДоступаОбъекты

ПО
    ПраваДоступаОбъекты.Ссылка = ПраваДоступа.Ссылка
  И ПраваДоступаОбъекты.ВидОбъекта = ЗНАЧЕНИЕ(Перечисление.добВидыОбъектовДоступа.ПоступлениеТоваровУслуг)
  И ПраваДоступаОбъекты.Чтение = ИСТИНА


но так не отбирает ничего, все документы запрещено смотреть
...
Рейтинг: 0 / 0
правильный запрос для rls
    #38589254
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стряпать нужно на кухне. А в 1с нужно делать.

Если права делятся по разным документам - то проще назначить им разные роли.
1. Закупщик - только поступление товаров и тд и тп
...

И в рлс гораздо проще написать строку
Ссылка.Подразделение=&Текущее подразделение.
...
Рейтинг: 0 / 0
правильный запрос для rls
    #38589269
Serge Home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на кухне тож люблю стряпать :)

я не могу менять базу, т.е. я могу добавить параметр сеанса но не могу при запуске 1с чтото туда записать. политика фирмы такая, что база должна оставаться на поддержке и чтобы при обновлениях ничего не перезаписывалось, т.е. если только добавлять.
ну и с rls поподробнее хочется разобраться.

вобщем сейчас запрос вырос в:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
ВЫБРАТЬ
	*
ИЗ
	Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
ГДЕ 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ
	Справочник.добПраваДоступа КАК ПраваДоступа
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
	Справочник.добПраваДоступа.ПоОбъектам КАК ПраваДоступаОбъекты
ПО
	ПраваДоступаОбъекты.Ссылка = ПраваДоступа.Ссылка
ГДЕ
	ПраваДоступа.Подразделение = ПоступлениеТоваровУслуг.Подразделение
  И ПраваДоступа.Пользователь = &ТекущийПользователь
  И ПраваДоступаОбъекты.ВидОбъекта = ЗНАЧЕНИЕ(Перечисление.добВидыОбъектовДоступа.ПоступлениеТоваровУслуг)
  И ПраваДоступаОбъекты.Чтение = ИСТИНА)



и он отбирает что что надо в консоли, но как только вставляю его в "Ограничение доступа" (без этого:
Код: sql
1.
2.
3.
4.
ВЫБРАТЬ
	*
ИЗ
	Документ.ПоступлениеТоваровУслуг КАК

)
то он не хочет отбирать нужные документы
чтото всю голову сломал почему не работает
...
Рейтинг: 0 / 0
правильный запрос для rls
    #38589367
Фотография erp20
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень мудреная реализация. Будьте проще. Вам нужно ограничить доступ к документам Поступление товаров и услуг по значению реквизита "Подразделение"? Если да, то ниже мое предложение.
Serge Homeсделал справочник добПраваДоступа, с реквизитами:
Подразделение (спр.Подразделения), Пользователь (спр.Пользователи)
с табл.частью "ПоОбъектам" с реквизитами:
ВидОбъекта (перечисление), Чтение (булево), Запись (булево)Лучше трансформировать линейный список и размещать в регистре сведений, со след. набором измерений (не ресурсы и реквизиты), сохраните последовательность:

Пользователь, ВидОбъекта, Чтение, Подразделение, Запись ( установить признак индексирование )

Механизм управления правами реализовать отдельной обработкой. В ней же :
1) контролировать уникальность записей в таблице (что бы не было нескольких записей по одной комбинации аналитик: Пользователь, ВидОбъекта, Подразделение).
2) реализовать автоматическое удаление из регистра сведений избыточной информации, а именно строк в которых свойства Чтение и Запись имеют значение "ЛОЖЬ"

На скорую руку набросал пример запроса для RLS, с использованием той структуры, которую описал выше.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
ТекущаяТаблица
ИЗ 
#ТекущаяТаблица КАК ТекущаяТаблица
ГДЕ
ТекущаяТаблица.Подразделение В (ВЫБРАТЬ РАЗЛИЧНЫЕ
				ОграничениеДоступа.Подразделение
				ИЗ
				РегистрСведений.ОграничениеДоступа КАК ОграничениеДоступа
				ГДЕ
				 ОграничениеДоступа.Пользователь = &ТекущийПользователь
				И ОграничениеДоступа.ВидОбъекта = ЗНАЧЕНИЕ(Перечисление.добВидыОбъектовДоступа.ПоступлениеТоваровУслуг)
				И ПраваДоступаОбъекты.Чтение = ИСТИНА)



ps. В реквизите "Подразделение" шапки документа нужно установить признак "Индексирование"
...
Рейтинг: 0 / 0
правильный запрос для rls
    #38589388
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge Home, а в чем проблема? То есть добавить параметр сеанса Вы можете, а несколько ролей не можете??? И все замечательно будет обновляться. А ваш вариант фактически приводит к нескольким вложенным запросам и лишним тормозам.
...
Рейтинг: 0 / 0
правильный запрос для rls
    #38589484
Serge Home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сейчас придется всетаки сделать через параметр сеанса, а то уже вот нужно запускать этих новых пользователей,
а через регистр сведений буду продумывать, хочется чтобы руководители могли менять права доступа
...
Рейтинг: 0 / 0
правильный запрос для rls
    #38589566
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge Homeсейчас придется всетаки сделать через параметр сеанса, а то уже вот нужно запускать этих новых пользователей,
а через регистр сведений буду продумывать, хочется чтобы руководители могли менять права доступаА кто запрещает назначать роли из базы? Пусть ставят и меняют...
...
Рейтинг: 0 / 0
правильный запрос для rls
    #38589569
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
....

Опыт показывает что роли и права лучше назначают админы... но никак не пользователи. Они Вас замучают звонками - "не получается назначить роль."
...
Рейтинг: 0 / 0
правильный запрос для rls
    #38590980
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>хочется чтобы руководители могли менять права доступа

кесарю кесарево, слесарю слесарево
...
Рейтинг: 0 / 0
правильный запрос для rls
    #38591515
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge Homeя не могу менять базу, т.е. я могу добавить параметр сеанса но не могу при запуске 1с чтото туда записать. политика фирмы такая, что база должна оставаться на поддержке и чтобы при обновлениях ничего не перезаписывалось , т.е. если только добавлять.
ну и с rls поподробнее хочется разобраться.

Научите меня пожалуйста добавлять в конфигурацию RLS не меняя объекты поставщика.
...
Рейтинг: 0 / 0
правильный запрос для rls
    #38591584
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AHDPSerge Homeя не могу менять базу, т.е. я могу добавить параметр сеанса но не могу при запуске 1с чтото туда записать. политика фирмы такая, что база должна оставаться на поддержке и чтобы при обновлениях ничего не перезаписывалось , т.е. если только добавлять.
ну и с rls поподробнее хочется разобраться.

Научите меня пожалуйста добавлять в конфигурацию RLS не меняя объекты поставщика.

если только свои роли делать...
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / правильный запрос для rls
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]