Ограничение доступа – задача распространённая, и в каждом конкретном случае ограничение строится на разных условиях. Для выполнения этих разных условий в Библиотеке стандартных подсистем (БСП) предусмотрено несколько шаблонов ограничения доступа.
Библиотека содержит следующие шаблоны ограничения:
#ПоЗначениям
#ПоЗначениямРасширенный
#ПоНаборамЗначений
#ПоЗначениямИНаборамРасширенный
Шаблон #ПоЗначениям
Применяется в случаях, когда нужно ограничить доступ по реквизитам проверяемого объекта. Начиная с четвёртого параметра содержит пары значений: Вид доступа – Проверяемый реквизит. Шаблон позволяет настроить до шестнадцати таких пар.
#ПоЗначениям("Документ.РеализацияТоваров", "Чтение", "", "Организации", "Организация", "Склады", "Склад", …).
В приведённом примере шаблон ограничивает чтение таким образом, что пользователь увидит в списке документов "Реализация товаров" только те документы, у которых в реквизите "Организация" есть значение, разрешенное пользователю по виду доступа "Организации", и в реквизите "Склад" есть значение, разрешенное по виду доступа "Склады". Причем значения должны быть разрешены в группе доступа пользователей одновременно, то есть, реализуется логика "И". Также профиль групп доступа пользователей должен включать роль с правом чтения документов "Реализация товаров".
В этом шаблоне, как впрочем и в других, можно указывать условие на языке запросов. Для этого вместо вида доступа нужно указать имя Условие, а вместо имени поля – текст запроса:
#ПоЗначениям("Документ.РелизацияТоваров", "", "", "Организации", "Организация", "Склады", "Склад", "Условие", "Т.ВариантДоставки = Значение(Перечисление.ВариантыДоставки.ТранспортнаяКомпания)", …),
Бывают случаи, когда логики "И" не хватает, и нужно ограничить доступ с применением " ИЛИ". Для этой цели предназначен другой шаблон:
Шаблон #ПоЗначениямРасширенный
В данном шаблоне, помимо возможности применения "ИЛИ", можно добавлять другие таблицы с данными. Например:
#ПоЗначениямРасширенный( "Справочник.Сотрудники","Чтение","", "ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОрганизацииВКоторыхРаботалиСотрудники КАК Т2 ПО Т.Ссылка = Т2.Сотрудник ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеДляПодбораСотрудников КАК Т3 ПО Т.Ссылка = Т3.Сотрудник", "", "Организации","Т2.Организация","И(", "ГруппыФизическихЛиц","Т.ФизическоеЛицо","ИЛИ", "ПодразделенияОрганизаций","Т3.Подразделение",")", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","" )
В частности, можно к основной таблице объекта присоединить его табличную часть.
В связи с тем, что в шаблоне присоединяются другие таблицы, необходимо для основной таблицы явно указывать псевдоним "Т.".
Шаблон #ПоНаборамЗначений
В основном этот шаблон используется для ограничения чтения журналов документов, у которых документы имеют различные ограничения чтения, например по составу реквизитов.
Логика работы шаблона такова: Значения доступа объектных элементов данных записываются в специальный регистр "НаборыЗначенийДоступа". При формировании ограничения по переданному значению стандартного реквизита Ссылка строки журнала в регистре "Наборы значений доступа" будут найдены все строки, содержащие Значение доступа, и выполнена проверка, что все значения доступа одновременно разрешены пользователю в одной из его групп доступа.
Шаблон #ПоЗначениямИНаборамРасширенный
Применяется для ограничения доступа к объектам метаданных в зависимости от ограничений доступа к другим объектам.
Например, нужно ограничить доступ для справочника "Присоединенные файлы" так же, как для справочника "Договоры с контрагентами".
Шаблон #ПоЗначениямИНаборамРасширенный отличается от шаблона #ПоЗначениямРасширенный только поддержкой специального вида доступа Объект.
#ПоЗначениямИНаборамРасширенный("Справочник.ПрисоединенныеФайлы", "", "", "", "", "Объект", "Т.Владелец" , "", …)
Права объекта, которые проверяются в ограничении по виду доступа Объект, можно переопределить в процедуре ПриЗаполненииЗависимостейПравДоступа модуля УправлениеДоступомПереопределяемый.