Конструктор ограничения доступа к данным 1с 8.2. Права доступа в УПП. RLS. Общие сведения и настройка. Конструктор ограничения доступа к данным

Все настройки прав пользователей, которые будут нами производиться в рамках этой статьи расположены в разделе 1С 8.3 «Администрирование» — «Настройки пользователей и прав». Данный алгоритм аналогичен в большинстве конфигураций на управляемых формах. В качестве примера будет использоваться программа 1С Бухгалтерия, но настройка прав в других программах (1С УТ 11, 1С ЗУП 3, 1C ERP) производиться абсолютно аналогично.

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

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

Теперь можно перейти к непосредственному к добавлению нового пользователя в 1С. Сделать это можно по кнопке «Создать», как показано на изображении ниже.

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

Имя для входа «АнтоновДП» подставилось автоматически, как сокращение от полного имени «Антонов Дмитрий Петрович». Установим пароль и аутентификацию 1С Предприятия. Здесь так же можно указать, доступна ли данному пользователю самостоятельная смена пароля.

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

Обратим внимание на еще одну немаловажную настройку в карточке справочника пользователей – «Вход в программу разрешен». Если лаг не установлен, то пользователь попросту не сможет зайти в данную информационную базу.

Права доступа

После заполнения всех данный в карточке пользователя – Антонова Дмитрия Петровича, запишем их и перейдем к настройке прав доступа, как показано на рисунке ниже.

Перед нами открылся список ранее внесенных в программу профилей доступа. Отметим флажками необходимые.

Профили групп доступа

Профили групп доступа можно настроить из основной формы настройки пользователей и прав. Перейдите в раздел «Группы доступа» и нажмите на гиперссылку «Профили групп доступа».

Создадим новую группу из открывшейся формы списка. В табличной части на вкладке «Разрешенные действия (роли)» флажками необходимо отметить те роли, которые будут влиять на права доступа пользователей, входящим в создаваемую нами группу. Все эти роли создаются и настраиваются в конфигураторе. Из пользовательского режима их нельзя изменить или создать новые. Можно только выбрать из существующего перечня.

RLS: ограничение доступа на уровне записей

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

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

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

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

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

В системе 1С Предприятие 8, сегодня мы продолжим изучение механизма прав и углубимся далее — в механизм RLS (ограничение прав на уровне записей).

Ниже мы рассмотрим достоинства и недостатки данного метода и рассмотрим настройку RLS в 1С Предприятии 8.3 на примере.

1С RLS (Record Level Security) или ограничение прав на уровне записи — это прав пользователей в системе 1С, которая позволяет разделить права для пользователей в разрезе динамически меняющихся данных.

Самый распространенный вид настройки 1C RLS — ограничение видимости пользователя в разрезе организаций или клиентов (пользователь видит лишь «свои» данные).

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

Недостатки 1С 8 RLS

Среди недостатков можно отметить заметное падение производительности системы. Это вызвано тем, что платформа при построении запроса в базе данных осложняет любой запрос разработчика дополнительными условиями.

Также среди недостатков — сложность настройки этого функционала и сложность отладки. 1C выпустило очень мало материалов по настройке и работе этого функционала. Достаточно трудно найти специалиста, который грамотно настроил бы механизм.

Настройка ограничения прав на уровне записей 1С RLS

Ограничение прав на уровне записи (RLS) применяется для ограничения следующих типов прав:

  • Чтение
  • Добавление
  • Изменение
  • Удаление

Получите 267 видеоуроков по 1С бесплатно:

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

##Если &ИспользоватьОграниченияПравДоступаНаУровнеЗаписей ##Тогда

ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
СоставГруппы.Ссылка КАК ГруппаПользователей
ИЗ
Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
ГДЕ
СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
ПО (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей)
ГДЕ (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей = ЛОЖЬ
ИЛИ (НЕ 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
1 КАК ПолеОтбора
ИЗ
РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
ГДЕ
НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
И ВЫБОР
КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
И ТекущаяТаблица.#Параметр(1) ССЫЛКА Справочник.Контрагенты
И НЕ ТекущаяТаблица.#Параметр(1) = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
ТОГДА ВЫБОР
КОГДА 1 В
(ВЫБРАТЬ ПЕРВЫЕ 1
1
ИЗ
Справочник.Контрагенты КАК Контрагенты ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
ПО
НастройкиПравДоступаПользователей.ОбъектДоступа = Контрагенты.ГруппаДоступаККонтрагенту
И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей
ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи))
И НастройкиПравДоступаПользователей.Запись = ИСТИНА
ГДЕ
Контрагенты.Ссылка = ТекущаяТаблица.#Параметр(1))
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
ИНАЧЕ ИСТИНА
КОНЕЦ = ЛОЖЬ))
И НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL)
##КонецЕсли

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

Как Вы видите, в запросе есть специальные параметры, например » &ИспользоватьОграниченияПравДоступаНаУровнеЗаписей». Это параметры в РЛС подбираются из объектов метаданных — « «. Как правило, они задаются при старте сессии пользователя.

Конструктор ограничения доступа к данным

Для удобства разработчика в 1С 8.3 есть специальная утилита для помощи в настройки РЛС — Конструктор ограничения доступа к данным. Он вызывается из поля «Ограничение доступа». Выглядит следующим образом:

RLS - это возможность разработчика задать условие на таблицы базы данных для тех или иных пользователей (групп пользователей) и не дать им увидеть лишнего. Условие имеет булевый тип. Если значение условия принимает значение «истина», то доступ предоставляется, в противном случае - запрещается.

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

RLS применяется для следующих видов прав доступа:

  • Чтение
  • Добавление
  • Изменение
  • Удаление

Порядок настройки RLS

Рассмотрим простой пример выполнения настройки. Снимки экрана сделаны на версии 1С Предприятие 8.2 (8.2.9.356). Синтаксис шаблонов текстов ограничений описан в документации по 8.2 в книге «Руководство разработчика. Часть 1», поэтому на нем останавливаться не будем.

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

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

Для редактирования нескольких ролей удобно управлять через окно «Все роли».

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

Вот и все. Можно проверить результат.

Недостатки использования RLS:

  1. Применение механизма ограничения доступа на уровне записей приводит к неявному увеличению таблиц, участвующих в запросе, что может привести к ошибкам в клиент-серверном режиме работы базы данных.
  2. Для контроля записи бывает трудно или невозможно реализовать сложную логику приложения. В таких случаях лучше использовать условия в процедуре ПриЗаписи().
  3. Написание условия (запроса) требует определенной квалификации разработчика.
  4. Дополнительные трудности может создать невозможность отладки условия (запроса).

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

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

Восьмая версия платформы «1С:Предприятие» (сегодня 8.3) несла в себе множество изменений по отношению к «семерке», среди которых особенно выделялся механизм ограничения прав доступа на уровне записей. Несмотря на то, что можно, теоретически, обойтись и без него, используя исключительно роли, RLS позволяет добиться более тонкой настройки доступа. Но для правильной эксплуатации этого механизма, нужно четко понимать его суть и иметь достаточный опыт в разработке в 1С.

Что такое RLS?

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

Чтобы получить возможность писать запросы для ограничений по RLS, необходимо создать роль или взять уже имеющуюся. Настройка RLS в 1С 8.3 может применяться для следующих действий пользователя:

  • Добавление;
  • Чтение;
  • Удаление;
  • Изменение.

Кроме широчайших возможностей настройки доступа, RLS несут в себе и недостатки:

  1. Требования к квалификации разработчика, так как писать запрос придется на встроенном языке с учетом правил синтаксиса;
  2. Отсутствие возможности быстрой отладки условия;
  3. Ограниченные возможности по описанию логики: слишком сложные условия придется все-таки писать в модулях документов и справочников;
  4. В клиент-серверном варианте баз возможно неявный рост таблиц, включенных в запрос. Причем отследить этот процесс очень сложно;
  5. Требования к ресурсам. Ограничения по RLS потребляют немало мощности клиентской машины и сервера;
  6. Малочисленная документация в свободном доступе.

Еще одной проблемой, которая может возникнуть уже после настройки 1С RLS, могут стать отчеты. Дело в том, что разработчики предусматривают возможные ограничения RLS и строят отчеты таким образом, чтобы они показывали лишь разрешенные данные. Если у пользователей настроены разные ограничения RLS, то и данные в отчете по одинаковым параметрам у них могут быть разные. Это может вызвать вопросы, поэтому при проектировании отчетов или написании запросов в RLS нужно учесть подобные ситуации.

Создаем ограничение RLS

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

Открывшееся окно содержит 2 вкладки: «Права» и «Шаблоны ограничений». Чтобы наложить определенные ограничения на конкретное действие, необходимо выделить его и в правой нижней части нажать на зеленый плюс. Появиться строчка, в которой мы сможем задать ограничения 1С RLS на встроенном в 1С языке.


Если вы знаете синтаксис 1С (как свои пять пальцев), то можете писать прямо в поле «Ограничение доступа». Разработчики 1С предусмотрели возможность открывать конструктор запроса, который поможет и подскажет, на что можно сделать ограничение. Чтобы его открыть, нужно нажать на кнопку с тремя точками (Выбрать) или F4 и появиться окно с кнопкой «Конструктор запроса…».


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


На вкладке «Шаблоны ограничений» задаются запросы, которые необходимы при копировании одинаковых настроек RLS в 1С 8.3. После того как вы добавили свой шаблон, по его имени можете обращаться в настройках прав доступа.

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


В качестве заключения хотелось бы отметить, что данная статья направлена на консультантов-разработчиков 1С и может помочь в первую очередь тем, кто уже имел опыт разработки на «1С:Предприятие». Несмотря на кажущуюся простоту, знание семантики и понимание структуры бизнес-процессов собственного предприятия или организации заказчика для правильной раздачи прав – требуют определенного уровня знаний и опыта.

Настройка доступа на уровне записей справочников.

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

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

Предлагаю рассмотреть пример на примере конфигурации УПП.

  1. На данном этапе необходимо определить набор групп пользователей.

Администраторы;

Менеджеры продаж;

Менеджеры закупок;

  1. На втором этапе определяются группы доступа к справочнику.

Покупатели;

Поставщики;

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

Теперь необходимо описать собственно те настройки, которые нужно выполнить в 1С.

  1. Включим «Ограниченный доступ на уровне записей». Сервис - управление пользователями и доступом - Параметры доступа на уровне записей. См. рис. 1.

Откроется форма обработки «Параметры доступа на уровне записей» см. Рис. 2.

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

  1. Далее нам пригодятся те группы пользователей и контрагентов, которые были определены в начале статьи.

Группы контрагентов вводятся в справочнике «Группы пользователей» см. Рис. 3.

Откроется форма элемента справочника «Группы пользователей» см. Рис. 4.

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

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

  1. На третьем шаге нужно ввести «группы доступа контрагентов», за это отвечает справочник «Группы доступа контрагентов». См. рис. 5.

Для нашего примера это: Покупатели, Поставщики, Прочие. См. Рис. 6.

  1. На данном этапе нужно назначить группу доступа, каждому элементу справочника «контрагенты». См. Рис. 7.

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

  1. Данный этап является кульминационным этапом. На данном этапе настраивается доступ «групп пользователей» к «группам доступа контрагентов» настраивается это с помощью обработки «Настройка прав доступа на уровне записей» см. Рис. 8.

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

После выше указанных манипуляций у Вас должен появиться разграниченный доступ к справочнику «Контрагенты».

По аналогии настраиваются и остальные справочники.

Важно:

Разграниченный доступ не распространяется на роль «ПолныеПрава»;

В наборе ролей пользователя должна присутствовать роль «Пользователь»;

Если у Вас собственные роли, то необходимо в вашу роль вставить шаблоны и ограничения как в роли «Пользователь» по отношению к справочнику «Контрагенты» (см. код в роли Пользователь кликнув на справочнике контрагенты).