Ограничение доступа – задача распространённая, и в каждом конкретном случае ограничение строится на разных условиях. Для выполнения этих разных условий в Библиотеке стандартных подсистем (БСП) предусмотрено несколько шаблонов ограничения доступа.

Библиотека содержит следующие шаблоны ограничения:

#ПоЗначениям
#ПоЗначениямРасширенный
#ПоНаборамЗначений
#ПоЗначениямИНаборамРасширенный

Шаблон #ПоЗначениям

Применяется в случаях, когда нужно ограничить доступ по реквизитам проверяемого объекта. Начиная с четвёртого параметра содержит пары значений: Вид доступа – Проверяемый реквизит. Шаблон позволяет настроить до шестнадцати таких пар.

#ПоЗначениям("Документ.РеализацияТоваров", "Чтение", "",
"Организации", "Организация",
"Склады", "Склад",).

В приведённом примере шаблон ограничивает чтение таким образом, что пользователь увидит в списке документов "Реализация товаров" только те документы, у которых в реквизите "Организация" есть значение, разрешенное пользователю по виду доступа "Организации", и в реквизите "Склад" есть значение, разрешенное по виду доступа "Склады". Причем значения должны быть разрешены в группе доступа пользователей одновременно, то есть, реализуется логика "И". Также профиль групп доступа пользователей должен включать роль с правом чтения документов "Реализация товаров".

В этом шаблоне, как впрочем и в других, можно указывать условие на языке запросов. Для этого вместо вида доступа нужно указать имя Условие, а вместо имени поля – текст запроса:

#ПоЗначениям("Документ.РелизацияТоваров", "", "",
"Организации", "Организация",
"Склады", "Склад",
"Условие", "Т.ВариантДоставки = Значение(Перечисление.ВариантыДоставки.ТранспортнаяКомпания)",),

Бывают случаи, когда логики "И" не хватает, и нужно ограничить доступ с применением " ИЛИ". Для этой цели предназначен другой шаблон:

Шаблон #ПоЗначениямРасширенный

В данном шаблоне, помимо возможности применения "ИЛИ", можно добавлять другие таблицы с данными. Например:

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

В частности, можно к основной таблице объекта присоединить его табличную часть.

В связи с тем, что в шаблоне присоединяются другие таблицы, необходимо для основной таблицы явно указывать псевдоним "Т.".

Шаблон #ПоНаборамЗначений

В основном этот шаблон используется для ограничения чтения журналов документов, у которых документы имеют различные ограничения чтения, например по составу реквизитов.

Логика работы шаблона такова: Значения доступа объектных элементов данных записываются в специальный регистр "НаборыЗначенийДоступа". При формировании ограничения по переданному значению стандартного реквизита Ссылка строки журнала в регистре "Наборы значений доступа" будут найдены все строки, содержащие Значение доступа, и выполнена проверка, что все значения доступа одновременно разрешены пользователю в одной из его групп доступа.

Шаблон #ПоЗначениямИНаборамРасширенный

Применяется для ограничения доступа к объектам метаданных в зависимости от ограничений доступа к другим объектам.

Например, нужно ограничить доступ для справочника "Присоединенные файлы" так же, как для справочника "Договоры с контрагентами".

Шаблон #ПоЗначениямИНаборамРасширенный отличается от шаблона #ПоЗначениямРасширенный только поддержкой специального вида доступа Объект.

#ПоЗначениямИНаборамРасширенный("Справочник.ПрисоединенныеФайлы", "", "",
"",
"",
"Объект", "Т.Владелец" , "",)

Права объекта, которые проверяются в ограничении по виду доступа Объект, можно переопределить в процедуре ПриЗаполненииЗависимостейПравДоступа модуля УправлениеДоступомПереопределяемый.