Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Публикация № 995414

Разработка - Практика программирования

ограничение доступа на уровне записей RLS БСП типовые шаблоны ограничений

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

Во всех конфигурациях, созданных на базе БСП, применяются четыре стандартных шаблона для ограничения прав доступа к объектам на уровне записей:

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

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

 

Виды доступа

Под видами доступа в системе понимается набор различных видов объектов конфигурации, по объектам которых предполагается выполнять ограничение доступа на уровне записей. В типовых конфигурациях присутствует достаточно широкий набор видов доступа, например: «Пользователи», «Организации», «Склады», «Кассы», «ГруппыКонтрагентов», «Группы номенклатуры» и прочие. При необходимости можно достаточно легко добавить дополнительный, собственный вид доступа. А том как это сделать, подробно описано в этой статье. Статья написана для устаревшей версии БСП 2.2.2.44, но основные принципы остаются теми же.

 

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

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

Синтаксис шаблона:

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

Значения всех параметров начиная с четвертого,  это пары вид доступа – проверяемый реквизит объекта. Соответственно, шаблон поддерживает указание ограничений по 16 реквизитам объекта.

Проверяется соответствие реквизитов разрешенным значениям видов доступа для текущего пользователя. Для доступности объекта, разрешение должно быть найдено хотя бы в одной группе доступа, в которую включен пользователь, для всех указанных реквизитов одновременно. Также у пользователя должен быть доступ к данному объекту на уровне ролей.

Пример для выше приведенного ограничения доступа к документу «ПриобретениеТоваровУслуг»:

Для пользователя в настройках его групп доступа указаны следующие разрешения:

  • Разрешены все организации
  • Запрещены все склады кроме склада «Основной»
  • Ограничение по группам партнеров не используется
  • Разрешены все подразделения кроме подразделений: «Администрация», «Отдел закупок».  

Следовательно, для данного пользователя будут доступны документы по складу «Основной», с подразделениями отличными от: «Администрация», «Отдел закупок».

В шаблоне #ПоЗначеним можно использовать конструкции на языке запросов для указания жестких отборов. Для этого используется специальный вид доступа «Условие»:

"Условие", "Т.ХозяйственнаяОперация <> Значение(Перечисление.ХозяйвственныеОперации.ЗакупкаПоИмпорту) ",…   

Также, можно проверить доступ на уровне ролей, к объектам, на которые ссылаются реквизиты проверяемого объекта (это может быть владелец проверяемого объекта или любой другой реквизит). Для этого, в качестве вида доступа необходимо указать «ПравоЧтения» или «ПравоИзменения»:

#ПоЗначениям("Справочник.Файлы", "Чтение", "",
"ПравоЧтение", "Т.ВладелецФайла",…

 

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

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

Синтаксис шаблона:

#ПоНаборамЗначений( "Документ.УстановкаЦенНоменклатуры","Чтение","","")

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

Для использования шаблона, у каждого проверяемого вида объектов должна быть добавлена специальная табличная часть «Наборы значений доступа». В данную ТЧ перед записью объекта, помещаются значения доступа, которые должны быть доступны водной из групп доступа пользователя.

Сама же логика формирования значений видов доступа должна быть реализована в экспортной процедуре модуля объекта «ЗаполнитьНаборыЗначенийДоступа».

Пример из документа «Установка цен номенклатуры»

Для Каждого СтрокаВидыЦен Из ВидыЦен Цикл
    Строка = Таблица.Добавить();
    Строка.ЗначениеДоступа = СтрокаВидыЦен.ВидЦены;
КонецЦикла;

Все добавленные значения доступа проверяются по логическому «И». Если необходимо использовать более сложную проверку, можно заполнить дополнительный реквизит табличной части «Номер набора». Значения доступа, объединенные в разные наборы проверяются по логическому «ИЛИ».

Пример.

Строка = Таблица.Добавить();
Строка.ЗначениеДоступа = ЗначениеДоступа1;
Строка.НомерНабора = 1;

Строка = Таблица.Добавить();
Строка.ЗначениеДоступа = ЗначениеДоступа2;
Строка.НомерНабора = 1;


Строка = Таблица.Добавить();
Строка.ЗначениеДоступа = ЗначениеДоступа3;
Строка.НомерНабора = 2;

Строка = Таблица.Добавить();
Строка.ЗначениеДоступа = ЗначениеДоступа4;
Строка.НомерНабора = 2;

Логика проверки будет следующей:

Логика проверки по наборам значений видов доступа

(ЗначениеДоступа1 И ЗначениеДоступа2) ИЛИ (ЗначениеДоступа3 И ЗначениеДоступа4)

Само же заполнение табличной части объекта происходит в подписке на событие перед записью объекта «ЗаполнитьНаборыЗначенийДоступаТабличныхЧастей».

После этого в еще одной подписке на событие при записи объекта «ЗаписатьНаборыЗначенийДоступа», происходит перенос данных табличной части в специальный регистр сведений «Наборы значений доступа».  

Шаблон #ПоНаборамЗначений при проверке разрешения на запись объекта, обращается к его табличной части, так как, если это новый объект, данных в регистре сведений еще нет. При проверке разрешения на чтение объекта, шаблон обращается к регистру сведений.  

 

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

Шаблон #ПоЗначениям имеет одно серьезное ограничение – все заданные ограничения соединяются по логическому «И». Соответственно, нельзя указать такие условия, при которых объект будет доступен в случае доступности одного из нескольких указанных значений.

Для решения данной проблемы используется шаблон #ПоЗначениямРасширенный, который является расширенной версией шаблона #ПоЗначениям, и предоставляет возможности для применения логики «ИЛИ» для указания ограничений.

Синтаксис шаблона:

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

Как видно из примера, присутствуют дополнительные параметры, в которых можно задать логические связи используемых ограничений. Для указанного примера, документ будет доступен, при доступности организации и одного из двух кладов: «Склад отправитель» или «Склад получатель».

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

Внутреннее Соединение Документ.ПеремещениеТоваров.Номенклатура КАК Т2 по Т.Ссылка = Т2.Ссылка

Реквизиты присоединенных таблиц также можно использовать в логике проверки доступности:

"ГруппыНоменклатуры", "Т2.Номенклатура", "", …

В случае с табличной частью, объект будет доступен, если будет доступен проверяемый реквизит (в данном случае «Номенклатура») хотя бы по одной строке.

Из-за того, что в шаблоне могут применяться дополнительные таблицы, требуется обязательное указания псевдонима основной таблицы «Т».   

 

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

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

Для реализации возможностей шаблона #ПоНаборамЗначений используется специальный вид доступа «Объект», с указанием ссылки на владельца наборов значений доступа, которые необходимо проверить:

"Объект", "Т.Владелец" , "", …

В остальном, данный шаблон идентичен предыдущему шаблону.  

На этом все. Если статья Вам понравилась, не забывайте поставить звездочку J.

 

Другие мои статьи по использованию механизмов БСП в типовых конфигурациях 1С

  1. Использование подсистемы БСП "Заполнение объектов"

  2. Новый подход к обмену данными EnterpriseData

  3. EnterpriseData - часть 2. Процесс выгрузки данных

  4. Пример доработки правил конвертации без использования КД 3.0

 

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. kalyaka 576 04.02.19 08:25 Сейчас в теме
Несмотря на то, что все это уже описано на ИТС, мне статья оказалась полезной для понимания тонкостей импользования шаблонов.

В свое время решал проблему производительности работы шаблона ПоЗначениямРасширенный, который из-за операции ИЛИ при соотношении малого количества разрешенных данных к большой выборке давал низкую производительность при выводе динамических списков. Недоразобравшись изобрел велосипед: добавил табличную часть и сделал свой запрос RLS, хотя мог бы использовать ПоНаборЗначений.

Такие обзорные статьи полезны: тот же материал, поданный по другому, позволяет увидеть тонкости, которые "замыленное" сознание не увидело в первоисточнике.
Wilka; sur0g; ids79; +3 Ответить
2. MSK_Step 20 04.02.19 11:32 Сейчас в теме
Чем больше таких статей +, тем грамотней будут разработки. Тем меньше на инфостарте будет статей "воды" про эффективных разработчиков
memb3r; ids79; SerVer1C; +3 Ответить
3. HAMMER_59 203 05.02.19 06:47 Сейчас в теме
Голова пока забита переходом на новый релиз комплексной. Осознать статью пока не получилось, на текущий момент отложилось "БСП включает в себя настройку доступа".
Однозначно, радует, когда на Инфостарте появляются статьи с полезной информацией, а не развлекательные.
5. ids79 5415 06.02.19 09:13 Сейчас в теме
4. JaneP 14 06.02.19 07:00 Сейчас в теме
"Значения всех параметров начиная с четвертого, это пары вид доступа – проверяемый реквизит объекта. Соответственно, шаблон поддерживает указание ограничений по 16 реквизитам объекта" - можете пояснить, откуда берется цифра в 16? Это всегда так, или зависит от проверяемого объекта, или еще от чего-то? Как в других шаблонах? Простите, если вопросы "неумные", просто долго пытаюсь самостоятельно с этим разобраться и не могу.
6. ids79 5415 06.02.19 09:18 Сейчас в теме
(4)Это максимальное количество проверяемых реквизитов, которое поддерживает шаблон.
Разработчики решили, что более 16 вряд ли кто будет использовать.
По факту используется от одного до пяти.
При использовании большего количества производительность запросов будет низкой,
и лучше использовать шаблон #ПоНаборамЗначений.
7. JIEX@ 15.03.19 06:41 Сейчас в теме
Честно говоря, складывается впечатление, что автор сам не понимает о чем пишет и переписал в своем исполнении инфу с ИТС, поэтому написано так же непонятно

После прочтения ИТС, лучше почитать "справку" в комментариях к самим шаблонам, тогда становиться более понятно

// ПоНаборамЗначений(Таблица, -, Модификатор, ВладелецНаборов).
// № параметра: 1, 2, 3, 4.
// Читается так: "ограничение доступа по наборам значений".
// Параметры:
// Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг".
// Модификатор - изменяет шаблон.
// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает
// безусловно выбирать группы иерархического справочника.
// 2-й модификатор - строка "РасширенноеИЛИ" указывает для ограничений,
// например, "ПоОрганизациям или ПоУчетнымЗаписям" делать расширенную
// проверку, при которой вариант настройки вида доступа в группах доступа
// "Все разрешены, без запрещенных" считается, как "Вид доступа не используется".
// Если этого модификатора нет, тогда результат проверки Истина, что приводит
// к итоговому результату Истина, если "Все разрешены, без запрещенных"
// хотя бы по одному из видов доступа (либо ПоОрганизациям, либо ПоУчетнымЗаписям).
// Модификатор имеет смысл только при проверке наборов значений доступа.
// Можно использовать комбинации модификаторов: "НеОграничиватьДоступКГруппам",
// "РасширенноеИЛИ", "НеОграничиватьДоступКГруппам,РасширенноеИЛИ".
// Других модификаторов в этой версии шаблона не предусмотрено.
// ВладелецНаборов - имя поля, содержащего ссылку на объект-владелец
// наборов значений доступа в регистре сведений НаборыЗначенийДоступа.
// Если имя поля не задано, считается, что проверяется сам объект-владелец
// наборов значений доступа, который имеет табличную часть <Таблица>.НаборыЗначенийДоступа.
// Эта табличная часть применяется, когда Право = "Изменение".
// Табличная часть точно такая, как РегистрСведений.НаборыЗначенийДоступа
// без измерения Объект и реквизитов.
// Для журналов документов нужно указать "Ссылка".
//
// Пример1: ПоНаборамЗначений("Документ.КорректировкаДенежныхСредств", "", "", "")
// Пример2: ПоНаборамЗначений("Документ.ПоступлениеТоваровИУслуг", "", "", "")
// Пример3: ПоНаборамЗначений("ЖурналДокументов.СкладскиеДокументы", "", "", "Ссылка")
// Пример4: ПоНаборамЗначений("Справочник.ВложенияЭлектронныхПисем", "", "", "Владелец")
halaspavel; +1 Ответить
8. ids79 5415 15.03.19 07:14 Сейчас в теме
(7)А на мой взгляд, в комментарии к шаблону менее понятно, чем в моем описании.
Хотя наверно для кого как...
Чтож, напишите лучше.
Olga_aku; +1 Ответить
9. muskul 31.05.19 04:09 Сейчас в теме
Мечта многих клиентов РЛС по номенклатуре что бы ее видно не было.
Ну и типовая настройка через группы доступа или профиль тоже не всегда удобна
Оставьте свое сообщение

См. также

SALE! 30%

Видеокурс-самоучитель "1С:Документооборот - ГУРУ" для самостоятельного внедрения Промо

Пользователю системы Документооборот и делопроизводство v8 ДО Платные (руб)

Самый детальный и самый полный самоучитель по программе 1С:Документооборот, в котором Вы научитесь правильно работать, настраивать, администрировать и внедрять конфигурацию 1С:Документооборот. Все уроки курса построены на последовательном заполнении пустой базы 1С:Документооборот КОРП в клиент-серверном варианте.

89000 руб.

30.10.2018    19266    5    0    

1С: Документооборот. Роли, использующие объекты адресации. Конфигурация остается типовой (используется расширение)

Информационная безопасность v8 ДО Абонемент ($m)

Расширение функционала документооборота. Реализована возможность использования ролей с объектами адресации. Конфигурация остается типовой (используется расширение)

5 стартмани

10.01.2019    6837    15    sulig    21    

Вывод всей истории в задаче комплексного процесса

Практика программирования v8::Бизнес-процессы ДО УУ Бесплатно (free)

В статье описывается, какие изменения нужно сделать, чтобы в задаче комплексного процесса выводилась вся история (по всем процессам), а не только история текущего процесса.

08.08.2018    6007    0    E_Babaylova    7    

Печать pdf документа со штампом ЭЦП

Печатные формы документов Документооборот и делопроизводство Документооборот и делопроизводство v8 v8::УФ ДО Абонемент ($m)

Печать pdf файла, прикрепленного к внутреннему документу, подписанному ЭЦП, с установкой отметки о подписании.

1 стартмани

24.05.2018    13282    89    App0st0l    12    

Перенос документов и процессов между двумя базами 1С:Документооборота Промо

Обработка документов Перенос данных из 1C8 в 1C8 Документооборот и делопроизводство Документооборот и делопроизводство v8 ДО УУ Платные (руб)

Обработка по переносу документов поможет перенести документы и процессы из одной базы 1С:Документооборот в другую. Версии двух баз должны совпадать, а релизы конфигураций 1С:Документооборот могут быть различными. Главное, чтобы была синхронизирована НСИ.

21000 руб.

09.06.2016    19863    8    4    

Эмулятор скриптов в 1С:Документооборот

Документооборот и делопроизводство Инструментарий разработчика Документооборот и делопроизводство v8 ДО Абонемент ($m)

В 1С:Документообороте можно использовать программный код 1С в пользовательском режиме (не в конфигураторе). Однако если в конфигураторе есть отладчик, то в пользовательском режиме протестировать скрипт достаточно сложно. Внешняя обработка Эмулятор скриптов позволяет вывести результаты скрипта и проверить работу алгоритма на разных документах.

2 стартмани

13.12.2017    12622    88    vlush78    0    

Управление договорами в 1С:Документооборот

Управление бизнес-процессами (BPM) Документооборот и делопроизводство Пользователю системы Бухгалтерский учет Документооборот и делопроизводство v8 ДО УУ Бесплатно (free)

В 1С:Документооборот в релизах 2.1.7 и 2.1.8 концепция учета договоров продолжила свое развитие (появились стороны договора). Это повлияло и на бизнес-процессы (теперь вместо процесса Утверждение надо пользоваться процессом Подписание для договоров). Рассмотрим основные моменты, на которые надо обратить внимание при внедрении управления договорами в 1С:Документооборот.

24.01.2017    32998    0    vlush78    0    

Блокировка повторного запуска комплексного процесса в 1С: Документооборот 2

Администрирование данных 1С Документооборот и делопроизводство Документооборот и делопроизводство v8 ДО Абонемент ($m)

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

2 стартмани

04.10.2016    19349    71    zabaluev    25    

Ограничения запуска процессов в 1С:Документооборот Промо

Обработка документов Обработка справочников v8 ДО Платные (руб)

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

21000 руб.

03.04.2017    10593    33    0    

Новое в 1С:Документооборот ред. 2.1

Пользователю системы Управленческий учет (прочее) Документооборот и делопроизводство Документооборот и делопроизводство v8 ДО УУ Бесплатно (free)

Фирма 1С не стоит на месте и продолжает радовать нас своими новыми версиями конфигурации 1С:Документооборот. В конце мая 2016 года вышла новая редакция 2.1, которая содержит как принципиально новые возможности, так и улучшение старых функций. В данной статье будут рассмотрены отличия конфигурации 1С:Документооборот редакции 2.1 по сравнению с редакцией 2.0.

15.06.2016    31327    0    vlush78    7    

Нагрузочное тестирование 1С:Документооборот

Производительность и оптимизация (HighLoad) Документооборот и делопроизводство Документооборот и делопроизводство v8 ДО Бесплатно (free)

Перед запуском 1С:Документооборот для средних и крупных внедрений крайне желательно провести нагрузочное тестирование, чтобы проверить корректность и скорость работы системы электронного документооборота в условиях максимальной нагрузки. В данной статье пойдет речь о том, как провести нагрузочное тестирование в 1С:Документооборот без использования 1С:КИП.

28.12.2015    20396    0    vlush78    1    

Права доступа в 1С:Документооборот 2.1 Промо

Информационная безопасность Документооборот и делопроизводство Документооборот и делопроизводство v8 ДО Бесплатно (free)

В программе 1С:Документооборот ред 2.1 механизм системы прав доступа сильно изменился. С одной стороны, права доступа в данной версии стали проще и быстрее, с другой стороны - права по рабочим группам объектов теперь могут противоречить политикам доступа. Разберемся в данной статье как работает механизм прав доступа в 1с документообороте 2.1.

16.09.2016    69180    0    vlush78    0