Ограничение доступа к отдельным записям (пример)


Пример ограничения прав пользователя для работы с объектами одного определенного филиала. Писался для 8.1, но справедлив и для 8.2.

Предположим, что нам необходимо ограничить работу пользователя проводками и документами одного филиала. Известно, что среди реквизитов документа Операция есть реквизит Организация (ссылка на филиал), и среди реквизитов проводки есть реквизит Организация. Имеется параметр сеанса «ТекущийПользователь» (ссылка на справочник Пользователей), а регистре сведений НастройкиПользователя  для настройки предопределенного значения «ОсновнаяОрагнизация» хранится значение текущего филиала (организации) пользователя (по которому, собственно, и нужно отфильтровать проводки и документы).

Конечно, было бы проще построить запрос, если бы организация так же была объявлена как параметр сеанса. Но и в том подходе, который имеется, тоже есть свои плюсы (например, если пользователю кто-либо изменит основную организацию, то проводки будут уже отражены по актуальному значению, а пользователю не нужно будет перезаходить в систему).

 

В общем случае запрос к организации текущего пользователя имеет следующий вид

 

/

/--------------------------------------------------------------------------------

ВЫБРАТЬ

Выразить(НастройкиПользователей.Значение как Справочник.Организации) как Организация

ИЗ

РегистрСведений.НастройкиПользователей КАК НастройкиПользователей

ГДЕ

НастройкиПользователей.Пользователь = &ТекущийПользователь

И НастройкиПользователей.Настройка = Значение(ПланВидовХарактеристик.НастройкиПользователей.ОсновнаяОрганизация)

//--------------------------------------------------------------------------------

Для ограничения доступа в ролях имеются специальные механизмы (Рисунок 1,2):

  • Ограничения доступа к данным;
  • Шаблон ограничений.

В  строках «Ограничения доступа к данным» описывается запрос регламентирующий доступ. В тексте запроса можно использовать параметры сеанса, как параметры запроса.

Шаблон позволяет использовать однотипные запросы в разных объектах. К примеру, в нашем случае мы должны будем ограничить как доступ к бухгалтерскому регистру, так и к документу ОперацияБух. Что бы не писать два раза один и тот же запрос, создадим шаблон с названием «ОрагнизацияПользователя» и укажем его (при помощи символа #) в нужных строках ограничения пользователя.

 

Текст запроса в шаблоне имеет вид:

 

/

/--------------------------------------------------------------------------

ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица 

ГДЕ

(ТекущаяТаблица.Организация В

(

ВЫБРАТЬ

Выразить(НастройкиПользователей.Значение как Справочник.Организации) как Организация

ИЗ

РегистрСведений.НастройкиПользователей КАК НастройкиПользователей

ГДЕ

НастройкиПользователей.Пользователь = &ТекущийПользователь

И НастройкиПользователей.Настройка = Значение(ПланВидовХарактеристик.НастройкиПользователей.ОсновнаяОрганизация)

)

)

//--------------------------------------------------------------------------

 

 

В  тексте шаблона значение #ТекущаяТаблица является служебным значением, и обозначает саму таблицу, права пользователя к которой описывается.

 

К сведению. В шаблоне можно так же использовать параметры запроса. К примеру, если в документе организация это реквизит «Филиал», а в проводках «ОрагизациПроводки». Тогда для документа обращение к шаблону будет:

 

#ОрганизацияПользователя(«Филиал»)

 

А текст шаблона

 

//--------------------------------------------------------------------------

ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица 

ГДЕ

(ТекущаяТаблица.#Параметр(1) В

(

ВЫБРАТЬ

Выразить(НастройкиПользователей.Значение как Справочник.Организации) как Организация

ИЗ

РегистрСведений.НастройкиПользователей КАК НастройкиПользователей

ГДЕ

НастройкиПользователей.Пользователь = &ТекущийПользователь

И НастройкиПользователей.Настройка = Значение(ПланВидовХарактеристик.НастройкиПользователей.ОсновнаяОрганизация)

)

)

//--------------------------------------------------------------------------

 

 Подробнее об ограничении прав написано в «1С:Предприятие 8.1. Конфигурирование и Администрирование» Часть 1 (стр. 79).

РS. Решил написать, поскольку часто попадаются вопросы по этой теме (если не нужно - уберу). Во вложении файл Word с всем тем же самым что и тут написано (может просто кому-то удобнее файл скачать).

Файлы обработки:

-