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

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

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

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

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

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

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

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

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

Покупатели;

Поставщики;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Важно:

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

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

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

В системе 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 есть специальная утилита для помощи в настройки РЛС — Конструктор ограничения доступа к данным. Он вызывается из поля «Ограничение доступа». Выглядит следующим образом:

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

Подготовка

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

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

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

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

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

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

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

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

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

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

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

1С имеет встроенную систему прав доступа (эта система называется — роли 1С). Эта система является статической – как администратор поставил права 1С, так и будет.

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

Одной из самых распространенных настроек безопасности в различных программах является набор разрешений на чтение/запись для групп пользователей и далее – включение или исключение пользователя из групп. Например, подобная система используется в Windows AD (Active Directory).

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

Нажав два раза на название роли 1С — Вам откроется редактор прав для роли 1С. Слева – список объектов 1С. Выделите любой и справа отобразятся варианты прав доступа (как минимум: чтение, добавление, изменение, удаление).

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

Все права 1С поделены на две группы – «просто» право и такое же право с добавлением «интерактивное». Что это значит?

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

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

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

Разрез возможностей установки прав доступа с помощью ролей – объект 1С. То есть Вы можете или включить доступ к справочнику или отключить. Включить немножко нельзя.

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

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

Вы берете определенный справочник (например, организации) и определенное право (например, чтение). Вы разрешаете чтение для роли 1С. В панели Ограничение доступа к данным Вы устанавливаете текст запроса, который возвращает ИСТИНА или ЛОЖЬ в зависимости от настроек. Настройки обычно хранятся в регистре сведений (например регистр сведений конфигурации Бухгалтерия НастройкиПравДоступаПользователей).

Данный запрос выполняется динамически (при попытке реализовать чтение), для каждой записи справочника. Таким образом, для тех записей, для которых запрос безопасности вернул ИСТИНА – пользователь увидит, а остальные – нет.
Права 1С, на которые установлены ограничения RLS 1С – подсвечены серым.

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

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

Это значит, что RLS 1С заблокировала чтение нескольких записей.

Для того, чтобы такого сообщения не появлялось, необходимо в тексте запроса на встроенном языке 1С использовать слово РАЗРЕШЕННЫЕ ().

Например:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Итоги

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

Эта статья также доступна на следующих языках: Тайский

  • Next

    Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

    • Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения. Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

      • Next

        В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

  • Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше. Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png