Роли. Конструктор ограничения доступа к данным
Роли в системе 1С:Предприятие определяют полномочия пользователей на работу с информацией, которая обрабатывается в системе. Совокупность предоставляемых пользователю полномочий определяется, как правило, кругом его обязанностей.
В процессе создания конфигурации создается необходимое число типовых Ролей, описывающих полномочия различных категорий пользователей на доступ к информации, обрабатываемой системой. Роли могут быть заданы в достаточно широких пределах - от возможности только просмотра ограниченного числа видов документов до полного набора прав по вводу, просмотру, корректировке и удалению любых видов данных.
В каркасной конфигурации создана роль "Администратор", добавим роль "Менеджер". Выделив в дереве объектов конфигурации ветвь Роли, из контекстного меню выбираем пункт "Добавить" и создаем роль "Менеджер", при этом открывается окно настройки прав данной роли.
В левой части окна редактирования прав выводится дерево объектов конфигурации по всем подсистемам. Выполним команду "Действия - Установить по подсистемам" и выберем подсистему "БухгалтерскийУчет". В результате будут установлены все права на объекты конфигурации, относящиеся к данной подсистеме. Выделив объект конфигурации в левой части, в правой имеем список прав по выбранному объекту. Если для действия установлен флажок, то оно разрешено.
Все права, поддерживаемые системой 1С:Предприятие, можно разделить на две большие группы: основные и интерактивные. Основные права описывают действия, выполняемые над элементами данных системы или над всей системой в целом, и проверяются всегда, независимо от способа обращения к данным. Интерактивные права описывают действия, которые могут быть выполнены пользователем интерактивно. Соответственно проверяются они только при выполнении интерактивных операций стандартными способами, причем в клиент-серверном варианте все проверки прав (кроме интерактивных) выполняются на сервере.
Основные и интерактивные права взаимосвязаны. Например, существует основное право Удаление, которому соответствуют два интерактивных права: Интерактивное удаление и Интерактивное удаление помеченных. Если пользователю запрещено Удаление, то и все интерактивные "удаления" также будут запрещены для него. В то же время, если пользователю разрешено Интерактивное удаление помеченных, это значит, что Удаление ему также разрешается.
Кроме того, основные права могут зависеть друг от друга. В результате образуются довольно сложные цепочки взаимосвязей, которые отслеживаются системой автоматически: как только разработчик снимает разрешение на какое-либо право, система сама снимает разрешения на все права, которые зависят от этого права. И наоборот, при установке какого-либо права разработчиком, система сама устанавливает все права, от которых это право зависит.
Например, для того, чтобы пользователь имел право интерактивного удаления помеченных, ему необходимо обладать правом просмотра и правом удаления. А право удаления, в свою очередь, подразумевает наличие права на чтение:
Пользователю может быть назначено несколько ролей. В этом случае алгоритм предоставления доступа по каждому объекту и виду права доступа будет работать следующим образом:
- Если хотя бы в одной роли есть разрешение, то доступ будет открыт;
- Если во всех ролях есть запрещение, то доступ будет закрыт.
Каждую роль можно распечатать в табличный или текстовый документ с помощью пункта "Действия - Вывести список".
Среди действий над объектами, хранящимися в базе данных (справочниками, документами и т.д.), есть действия, отвечающие за чтение или изменение информации, хранящейся в базе данных. К таким действиям относятся:
- чтение - получение записей или их фрагментов из таблицы базы данных;
- добавление - добавление новых записей без изменения существующих;
- изменение - изменение существующих записей;
- удаление - удаление некоторых записей без внесения изменений в оставшиеся.
Для этих действий в процессе настройки ролей могут быть заданы дополнительные условия на данные (ограничение доступа к данным). В этом случае над конкретным объектом, хранимым в базе данных, может быть выполнено запрошенное действие только в том случае, если ограничение доступа к данным для данных этого объекта принимает значение "истина". Аналогичные условия могут быть заданы и для таблиц базы данных, не имеющих объектной природы (регистров).
Для объектных таблиц и регистров сведений могут быть заданы разные ограничения для различных полей таблицы, что позволяет определять ограничения не только на уровне записей базы данных, но и на уровне отдельных ее полей:
Ограничение доступа к данным представляет собой условие, описанное на языке, который является подмножеством языка запросов. Это условие применяется для каждой записи таблицы базы данных, над которой выполняется операция. Если условие принимает значение "истина", то операция выполняется, а если нет, то не выполняется. При просмотре списков и формировании отчетов существует возможность обеспечить отображение только тех данных, доступ к которым пользователю разрешен.
Для регистров накопления, бухгалтерского учета и расчета условия позволяют разграничить доступ по значениям измерений (для регистров бухгалтерского учета по балансовым измерениям), а для объектных данных и регистров сведений условия позволяют разграничивать доступ к данным по любым полям.
Ведение списка ограничений производится в табличном поле "Ограничение доступа к данным". Список состоит из двух колонок. В первой указывается поле или "Прочие поля", а во второй - условия ограничения.
Для права "Чтение" допускается установка нескольких (по числу полей) ограничений. Для остальных - только одного условия.
Для каждого ограничения по праву "Чтение" допускается выбор поля. Выбор поля означает, что в выборке запроса будут присутствовать только данные, в которых по указанному полю будет удовлетворяться условие (проверка производится только по данному полю).
"Прочие поля" означает, что проверка выполнения условия будет производиться по каждому полю, и, если условие выполняется, данные выбираются.
Условие ограничения можно ввести вручную или создать с помощью конструктора ограничения доступа к данным. Для вызова конструктора в табличном поле "Ограничение доступа к данным" в колонке "Ограничение доступа" перейдите в режим редактирования и нажмите кнопку выбора.
На экран выводится форма конструктора:
По своей сути конструктор ограничений доступа к данным представляет собой упрощенный конструктор запросов. Он позволяет выбрать нужные таблицы и поля, задать условия связи между полями таблиц и условия на отбор исходных данных.
Параметры сеанса представляют собой объекты прикладного решения, которые предназначены для использования в ограничениях доступа к данным для текущего сеанса (но могут применяться и для других целей). Их значения сохраняются в течение данного сеанса 1С:Предприятия. Использование параметров сеанса позволяет снизить время доступа к данным при ограничении доступа на уровне записей и полей. В каркасной конфигурации создан параметр сеанса "ТекущийИсполнитель".
Существует возможность назначения привилегированных модулей. В такие модули могут быть перенесены операции, использующие данные, на которые у текущего пользователя нет прав и операции, на выполнение которых у пользователя также нет прав.
Например, пользователю могут быть назначены права, позволяющие создавать новый документ. Однако никаких прав на регистр, в котором этот документ создает движения при проведении, пользователю не дано. В такой ситуации процедура проведения документа может быть вынесена в привилегированный модуль, который выполняется на сервере без проверки прав. В результате, несмотря на то, что соответствующий регистр для пользователя недоступен, пользователь все же сможет проводить созданные им документы.