Спасибо всем за создание форума и концентрацию на нем полезной для разработчиков информации!
Не нашла темы по RLS запросам в ролях пользователей, возможно плохо искала.
RLS запросы удобная вещь, но они очень существенно влияют на быстродействие системы в файловом варианте.
В типовой конфигурации УПП есть такая конструкция :
АктОбОказанииПроизводственныхУслуг ГДЕ (АктОбОказанииПроизводственныхУслуг.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
ИЛИ 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
1
ИЗ
РегистрСведений.ПраваДоступаПользователейКОбъектам КАК ПраваДоступаПользователейКОбъектам
ГДЕ
ПраваДоступаПользователейКОбъектам.ОбъектДоступа = АктОбОказанииПроизводственныхУслуг.Контрагент
И ПраваДоступаПользователейКОбъектам.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОграниченияПравДоступа.КонтрагентыДанные)
И ПраваДоступаПользователейКОбъектам.Пользователь В (&ГруппыТекущегоПользователя)
И ПраваДоступаПользователейКОбъектам.Чтение = ИСТИНА))
Она формирует ограничения по реквизиту Контрагент в Акте для данного пользователя.
Не все реквизиты, по которым нужно ограничивать доступ пользователю есть в регистре ПраваДоступаПользователей, и некоторые из ограничений можно прописывать , пользуясь регистром НастройкиПользователей
Для своей задачи я прописала такой запрос:
Шапка ИЗ Документ.ЗаказПокупателя КАК Шапка
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПользователей КАК НастройкиПользователей
ПО (НастройкиПользователей.Пользователь = &ТекущийПользователь)
И (НастройкиПользователей.Настройка = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НастройкиПользователей.ОсновнойВидНоменклатуры))
И Шапка.Система.ВидНоменклатуры = НастройкиПользователей.Значение
В общем-то концептуально он выполняет ту же самую функцию - ограничение по реквизиту документа, даже в моем случае по реквизиту реквизита.
Чем конструкция
1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
1
ИЗ
РегистрСведений.ПраваДоступаПользователейКОбъектам КАК ПраваДоступаПользователейКОбъектам
ГДЕ
ПраваДоступаПользователейКОбъектам.ОбъектДоступа = АктОбОказанииПроизводственныхУслуг.Контрагент
И ПраваДоступаПользователейКОбъектам.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОграниченияПравДоступа.КонтрагентыДанные)
И ПраваДоступаПользователейКОбъектам.Пользователь В (&ГруппыТекущегоПользователя)
И ПраваДоступаПользователейКОбъектам.Чтение = ИСТИНА))
лучше использования Внутреннего соединения?
Может быть это влияет на быстродействие и мне тоже лучше использовать условие ГДЕ ?