1с ограничение доступа к данным примеры. Права доступа в УПП

Роль является объектом метаданных, благодаря которому определяется, к какому объекту и какие действия над этим объектом может выполнять тот или иной пользователь. Каждая роль содержит права и в зависимости от того какие права установит администратор БД будут происходить разграничения доступа. В технологической платформе предусмотрено два типа прав, это: основные и интерактивные. Под основными понимаются права на Чтение, Изменение,Добавление и Удаление. Интерактивные осуществляются только при выполнение таких операций, как редактирование или удаление в форме: Интерактивное удаление, Интерактивное добавление и другие.

Таким образом можно раз и навсегда включить доступ к тому или иному справочнику, документу и другим объектом метаданных, причем целиком. Вы можете дать доступ или забрать. Дать на немножко у вас не получиться. Но ведь часто возникает такая ситуация, когда существует, к примеру, огромный справочник и каждый пользователь должен видеть только определенные элементы в нем. То есть по какому- то определенному условию должен происходить отбор элементов объекта! И вот начиная с версии технологической платформы 1С 8.1 появился очень мощный механизм ограничения доступа к данным на уровне записей под названием RLS (Record Level Security). Ограничения представляют собой набор определенных условий, при выполнении которых будет предоставлять доступ или нет.

Ограничения доступа при использовании динамической системы RLS применяется к основным операциям: Чтение, Изменение, Добавление и Удаление. Существует важная особенность, заключающаяся в том, что к операции Чтение может быть применено несколько ограничений на уровне записей, в то время как ко всем остальным операциям только одно условие. Данный механизм позволяет накладывать ограничения не только на определенные записи, но и на определенные поля записей. При чем указать возможно нужно поле, а так же специальное поле <Прочие поля>.

Синтаксис и язык RLS

Язык ограничения данных представляет собой ничто иное как язык запросов, но очень сильно урезанный. Если условие принимает значение ИСТИНА, то текущему пользователю предоставляется доступ к данным, если же ЛОЖЬ, тогда отказ. Какие же основные отличия от полноценного языка запросов?

В запросе RLS всегда присутствует только одна таблица данных и она собственно используется для условий.
Используются только конструкции ИЗ и ГДЕ.
В таких условиях можно указывать в качестве параметров запроса функциональные опции и параметры сеанса.
Не допускается использование виртуальных таблиц.
Возможно использование шаблонов для создания ограничений
Операторы ИТОГИ и В ИЕРАРХИИ не применимы.

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

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

Способы функционирования ограничений

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

  • ВСЕ. То есть в процессе наложения ограничений операция выполняется над всеми требуемыми данными БД. Однако при прочтении и изменении данных, если не выполняются ограничения для каких то записей, то происходит аварийный сбой из за нарушения прав доступа.
  • РАЗРЕШЕННЫЕ. Способ функционирования при котором в результате наложения ограничений должны быть прочитаны только те записи, которые удовлетворяют условиям. При этом аварийные сбои отсутствуют. Объекты не удовлетворяющие требованиям считаются отсутствующими.

Способ РАЗРЕШЕННЫЕ очень часто используется при формировании динамических списков, в противном случае постоянно бы появлялись ошибки о нарушении прав. Способ ВСЕ используется при получении объектов функциями встроенного языка и запросов. Собственно где устанавливаются данные способы? По умолчанию используется ВСЕ.

Использование шаблонов в RLS

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

Рассмотри на примере конфигурации 1С:Бухгалтерия 8.2 использование встроенных шаблонов. Откроем роль БУХГАЛТЕР и перейдем во вкладку Шаблоны ограничений. Здесь используется шаблон ОсновноеУсловиеЧтение следующего содержания:

Где мы видим #Параметр(1)=НастройкиПравДоступаПользователей.ОбъектДоступа. Это и есть тот самый параметр который может меняться в зависимости от передаваемых данных. Далее в любом месте где мы желаем ввести ограничения мы используем шаблон так:

То есть вместо

#Параметр(1)=НастройкиПравДоступаПользователей.ОбъектДоступа

в тексте шаблона окажется

Организация=НастройкиПравДоступаПользователей.ОбъектДоступа.

Или на более простом шаблоне. Наименование шаблона #МоиОграничения следующего содержания:

ГДЕ #Параметр(1) = &ТекущийПользователь

В результате передачи параметров в шаблон #МоиОграничения(“Исполнитель”) мы получаем следующее

ГДЕ Исполнитель= &ТекущийПользователь.

Итоги

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

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

Для вызова конструктора при создании нового ограничения нажимаем кнопку Конструктор запроса:

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

Само ограничение также формулируется в виде текста запроса:

Вопрос 04.51 экзамена 1С:Профессионал по платформе. В конструкторе ограничений доступа к данным:

  1. Можно использовать только поля объекта, для которого определяется ограничение
  2. Можно использовать только поля объекта, для которого определяется ограничение и поля вложенных таблиц (по отношению к полям объекта)
  3. Любые таблицы, которые в запросе можно связать с полями объекта, для которого определяется ограничение

Правильный ответ третий. Если в конструкторе задано несколько таблиц с данными, то в нем появляется закладка Связи:

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

Вопрос 04.52 экзамена 1С:Профессионал по платформе. При определении ограничения доступа в конструкторе ограничений доступа к данным...

  1. текст запроса может быть сформирован только самим конструктором
  2. текст запроса может быть введен только вручную
  3. текст запроса может быть сформирован как самим конструктором, так и вручную

Правильный ответ третий - можно конструктором, можно вручную.

Вопрос 04.53 экзамена 1С:Профессионал по платформе. При определении ограничения доступа в конструкторе ограничений доступа к данным:

  1. Правило ограничения определяется только на закладке "Связи"
  2. Правило ограничения определяется только на закладке "Условия"
  3. Настройки, выполненные на обеих закладках конструктора, участвуют в определении условия на доступ к данным

Правильный ответ третий, нужны обе закладки, иначе зачем они.

Вопрос 04.54 экзамена 1С:Профессионал по платформе. При определении ограничения доступа в конструкторе ограничений доступа к данным текст условия:

  1. Начинается с ключевого слова "Выбрать"
  2. Начинается только с конструкции "Выбрать Различные"
  3. Начинается только с конструкции "Выбрать Разрешенные"
  4. Ключевое слово "Выбрать" не определяется
  5. Допустимы варианты 1 и 3

Правильный ответ четвертый - в отличие от языка запросов, слова Выбрать тут нет.

Вопрос 07.01 экзамена 1С:Профессионал по платформе. При настройке ограничения доступа к данным допускается установка нескольких (по числу полей) ограничений:

  1. Для права "Чтение"
  2. Для права "Изменение"
  3. Для права "Добавление"
  4. Для права "Удаление"
  5. Для всех вышеперечисленных прав
  6. Для всех возможных прав

В программе 1С имеется встроенная система прав доступа, которая находится в Конфигуратор — Общие — Роли.

Чем характеризуется данная система и в чем ее основное предназначение? Она позволяет описывать наборы прав, которые соответствуют должностям пользователей либо видам их деятельности. Данная система прав доступа имеет статический характер, что означает, как выставил администратор права доступа к 1С, так и есть. В дополнение к статической действует вторая система прав доступа — динамическая (RLS). В этой системе права доступа высчитываются динамических способом, в зависимости от заданных параметров,в процессе работы.

Роли в 1С

К наиболее распространенным настройкам безопасности в разных программах является так называемый набор разрешений на чтение/запись для различных групп пользователей и в дальнейшем: включение либо исключение конкретного пользователя из групп. Такая система, например, используется в операционной системе Windows AD (Active Directory). Система безопасности, применяемая в программном обеспечении 1С, получила название - роли. Что это такое? Роли в 1С представляет собой объект, который расположен в конфигурации в ветви: Общие — Роли. Эти роли 1С представляют собой группы, для которых и назначаются права. В дальнейшем каждый пользователь может включаться и исключаться из данной группы.

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

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

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

В случае, когда пользователь открывает какую-нибудь форму, например обработку, и при этом щелкает на ней мышью, то программа на встроенном языке 1С начинает производить конкретные действия, удаления документов, например. За разрешение таких действий, выполняемых программой, отвечают соответственно «просто» права 1С.

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

RLS в 1С

Вы можете, включить доступ к справочнику (или документу) либо отключить его. Нельзя при этом «включить немножко». Для этой цели и существует определенное расширение системы ролей 1С, которое получило название - RLS. Это динамическая система по правам доступа, которая вносит частичные ограничения в доступ. К примеру, вниманию пользователя становятся доступны только документы определенной организации и склада, остальные он не видит.

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

Этот запрос будет выполняться динамически (при осуществлении попытки организовать чтение), для всех записей справочника. Это работает так: те записи, для которых запрос безопасности присвоил — Истина, пользователь увидит, а другие - нет. Права 1С с установленными ограничениями, подсвечены серым цветом.

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

Когда пользователь работает в режиме 1С Предприятие, при подключении к работе RLS, может появится сообщение об ошибке вида: «Недостаточно прав» (на чтение справочника ХХХ, например). Это говорит о том, что системой RLS заблокировано чтение некоторых записей. Чтобы это сообщение больше не появлялось, нужно в текст запроса ввести слово РАЗРЕШЕННЫЕ.

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

В таком случае идеальным помощником в обеспечении необходимых прав доступа является технология Record Level Security (RLS), позволяющая предоставлять доступ к информации на уровне записи.

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

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

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

  • отборы придется настраивать во всех формах программы;
  • для более ли менее сообразительного пользователя абсолютно не составит труда их отключить.

Самый верный способ - это разграничить доступ пользователей на уровне записей. Как же это реализовать?

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

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

Аналогичный механизм реализован и в других прикладных решениях 1С:

  • (редакция 10.3)
  • и 1С: Зарплата и управление персоналом 8 (редакция 2.5).

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

  • Таким образом, в этих программах нам необходимо всех наших пользователей, работающих в составе компании, поделить на группы по организациям.
  • Затем нажать кнопку «Настройка доступа».
  • В появившемся окне нажимаем кнопку «Добавить» и вводим объект доступа (в нашей ситуации это организация).
  • Если нам необходимо разрешить сотрудникам организации вносить данные в информационную базу данных, то необходимо поставить флажок в столбце «Запись».

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

Платформа 1С:Предприятие 8 имеет встреный механизм ограничения доступа к данным на уровне записей. Общие сведения о нем Вы можете прочитать здесь . Если кратко, то RLS позволят ограничить доступ к данным по некоторым условиям на значения полей. Например, можно ограничить доступ пользователей к документам в зависимости от значения реквизита "Организация". Некоторые пользователи будут работать с документами по организации "Управляющая компания", а остальные с организацией "Молочный завод". Как пример.

Подготовка

Пример реализуем в демонстрационной конфигурации УПП 1.3. Создадим пользователя "Кладовщик" и добавим ему одноименную роль "Кладовщик".

Теперь приступим непосредственно к настройке прав доступа на уровне записей. Переключимся на интерфейс "Администрирование пользователе". В главном меню выберем "Доступ на уровне записей -> Параметры". Здесь отметим галкой "Ограничить доступ на уровне записей по видам объектов", а в списке объектов выберем "Организации".

Тем самым мы включили использование RLS. Теперь нужно его настроить.

Разграничение доступа на уровне записей настраивается не отдельно для каждого пользователя или профилей полномочий. RLS настраивается для групп пользователей. Добавим новую группу пользователей, назовем ее "Кладовщики"

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

В список объектов доступа для группы добавим организацию "ИЧП "Предприниматель"". Вид наследования прав оставим без изменений. Право на объект доступа установим для чтения и записи. Нажмем "ОК", настройки готовы. Мы только что настроили RLS на уровне организаций.

Что видит пользователь

Запустим программу под созданным ранее пользователем и откроем справочник "Организации". Вот так будет выглядеть список для нашего пользователя и для пользователя с полными правами:

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

Таким образом, пользователь не только не увидит организации, доступ на которые не установлен для него, но и не сможет прочитать/записать документы и другие объекты в информационной базе, на которые установлены права в роля на реквизит "Организация".

Мы рассмотрели простейший пример настройки RLS. В следующей статье поговорим о реализации механизма RLS в конфигурации "Управление производственным предприятием" версии 1.3.