Перейти к содержимому

В какой последовательности можно устанавливать доступ к таблице

  • автор:

Ограничения первичных и внешних ключей

Первичные ключи и внешние ключи — это два типа ограничений, которые можно использовать для обеспечения целостности данных в таблицах SQL Server. Это важные объекты базы данных.

Ограничения первичного ключа

Обычно в таблице есть столбец или сочетание столбцов, содержащих значения, уникально определяющие каждую строку таблицы. Этот столбец, или столбцы, называются первичным ключом (PK) таблицы и обеспечивает целостность сущности таблицы. Так как ограничения первичного ключа гарантируют уникальные данные, они часто определяются в столбце удостоверений.

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

Как показано на следующем рисунке, столбцы ProductID и VendorID в таблице Purchasing.ProductVendor формируют составное ограничение первичного ключа для этой таблицы. При этом гарантируется, что каждая строка в таблице ProductVendor имеет уникальное сочетание значений ProductID и VendorID . Это предотвращает вставку повторяющихся строк.

  • В таблице возможно наличие только одного ограничения по первичному ключу.
  • Первичный ключ не может превышать 16 столбцов и общую длину ключа 900 байт.
  • Индекс, созданный ограничением первичного ключа, не может привести к тому, что число индексов таблицы превышает 999 некластеризованных индексов и 1 кластеризованных индексов.
  • Если кластеризованный или некластеризованный не указан для ограничения первичного ключа, кластеризованный используется, если в таблице нет кластеризованного индекса.
  • Все столбцы с ограничением первичного ключа должны быть определены как не допускающие значения NULL. Если значение NULL не указано, все столбцы, участвующие в ограничении первичного ключа, имеют значение NULL.
  • Если первичный ключ определен на столбце определяемого пользователем типа данных CLR, реализация этого типа должна поддерживать двоичную сортировку.

Foreign Key Constraints

Внешний ключ (FK) — это столбец или сочетание столбцов, которое применяется для принудительного установления связи между данными в двух таблицах с целью контроля данных, которые могут храниться в таблице внешнего ключа. Если один или несколько столбцов, в которых находится первичный ключ для одной таблицы, упоминается в одном или нескольких столбцах другой таблицы, то в ссылке внешнего ключа создается связь между двумя таблицами. Этот столбец становится внешним ключом во второй таблице.

Например, таблица имеет ссылку на внешний ключ к Sales.SalesPerson таблице, Sales.SalesOrderHeader так как между заказами на продажу и продавцами существует логическая связь. Столбец SalesPersonID в таблице SalesOrderHeader соответствует столбцу первичного ключа таблицы SalesPerson . Столбец SalesPersonID в таблице SalesOrderHeader является внешним ключом таблицы SalesPerson . Создав эту связь внешнего ключа, невозможно вставить значение SalesPersonID в SalesOrderHeader таблицу, если она еще не существует в SalesPerson таблице.

Максимальное количество таблиц и столбцов, на которые может ссылаться таблица в качестве внешних ключей (исходящих ссылок), равно 253. SQL Server 2016 (13.x) увеличивает ограничение числа других таблиц и столбцов, которые могут ссылаться на столбцы в одной таблице (входящих ссылок), с 253 до 10 000. (Требуется уровень совместимости не менее 130.) Увеличение имеет следующие ограничения:

  • Превышение 253 ссылок на внешние ключи поддерживается только для операций DML DELETE. Операции UPDATE и MERGE не поддерживаются.
  • Таблица со ссылкой внешнего ключа на саму себя по-прежнему ограничена 253 ссылками на внешние ключи.
  • Более 253 ссылок на внешний ключ в настоящее время недоступны для индексов columnstore, оптимизированных для памяти таблиц, Stretch Database или секционированных таблиц внешнего ключа.

Важно! Stretch Database устарел в SQL Server 2022 (16.x) и База данных SQL Azure. Эта функция будет удалена в будущей версии ядро СУБД. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.

Индексы в ограничениях внешнего ключа

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

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

Ссылочная целостность

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

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

Каскадная ссылочная целостность

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

NO ACTION
Ядро СУБД вызывает ошибку, а действие удаления или обновления строки в родительской таблице откатывается.

CASCADE
Соответствующие строки обновляются или удаляются из ссылающейся таблицы, если данная строка обновляется или удаляется из родительской таблицы. КАСКАД нельзя указать, если столбец метки времени является частью внешнего ключа или ключа, на который ссылается ссылка. ON DELETE CASCADE нельзя указать для таблицы с триггером INSTEAD OF DELETE. ON UPDATE CASCADE нельзя указать для таблиц с триггерами INSTEAD OF UPDATE.

SET NULL
Всем значениям, составляющим внешний ключ, присваивается значение NULL, когда обновляется или удаляется соответствующая строка в родительской таблице. Для выполнения этого ограничения внешние ключевые столбцы должны допускать значения NULL. Невозможно указать для таблиц с триггерами INSTEAD OF UPDATE.

SET DEFAULT
Все значения, составляющие внешний ключ, при удалении или обновлении соответствующей строки родительской таблицы устанавливаются в значение по умолчанию. Для выполнения этого ограничения все внешние ключевые столбцы должны иметь определения по умолчанию. Если столбец имеет значение NULL, и нет явного набора значений по умолчанию, NULL становится неявным значением по умолчанию столбца. Невозможно указать для таблиц с триггерами INSTEAD OF UPDATE.

Ключевые слова CASCADE, SET NULL, SET DEFAULT и NO ACTION можно сочетать в таблицах, имеющих взаимные ссылочные связи. Если ядро СУБД обнаруживает NO ACTION, он останавливается и откатывает связанные действия CASCADE, SET NULL и SET DEFAULT. Если инструкция DELETE вызывает сочетание действий CASCADE, SET NULL, SET DEFAULT и NO ACTION, все действия CASCADE, SET NULL и SET DEFAULT применяются перед ядро СУБД проверка для любых действий NO ACTION.

Триггеры и каскадные ссылочные действия

Каскадные ссылочные действия запускают триггеры AFTER UPDATE или AFTER DELETE следующим образом:

  • Все каскадные ссылочные действия, прямо вызванные исходными инструкциями DELETE или UPDATE, выполняются первыми.
  • Если есть какие-либо триггеры AFTER, определенные для измененных таблиц, эти триггеры запускаются после выполнения всех каскадных действий. Эти триггеры запускаются в порядке, обратном каскадным действиям. Если в одной таблице существует несколько триггеров, они запускаются в случайном порядке, если для таблицы не существует выделенный первый или последний триггер. Этот порядок определяется процедурой sp_settriggerorder.
  • Если последовательности каскадных действий происходят из таблицы, которая была непосредственной целью действий DELETE или UPDATE, порядок запуска триггеров этими последовательностями действий не определен. Однако одна последовательность действий всегда запускает все свои триггеры до того, как это начнет делать следующая.
  • Триггер AFTER таблицы, являвшейся непосредственной целью действий DELETE или UPDATE, запускается вне зависимости от того, были ли изменены хоть какие-нибудь строки. В этом случае ни на какие другие таблицы каскадирование не влияет.
  • Если один из предыдущих триггеров выполняет операции DELETE или UPDATE над другими таблицами, эти операции могут вызывать собственные последовательности каскадных действий. Эти вторичные последовательности действий обрабатываются для каждой операции DELETE или UPDATE после выполнения всех триггеров первичных последовательностей действий. Этот процесс может рекурсивно повторяться для последующих операций DELETE или UPDATE.
  • Выполнение операций CREATE, ALTER, DELETE или других операций языка DDL внутри триггеров может привести к запуску триггеров DDL. Это может привести к дальнейшим операциям DELETE или UPDATE, которые начнут дополнительные последовательности каскадных действий и запустят свои триггеры.
  • Если в любой конкретной последовательности каскадных ссылочных действий произойдет ошибка, в этой последовательности не будут запущены никакие триггеры AFTER, а для операций DELETE или UPDATE, создаваемых этой последовательностью, будет выполнен откат.
  • Таблица с триггером INSTEAD OF не может также содержать предложение REFERENCES, указывающее каскадное действие. Однако триггер AFTER целевой таблицы каскадного действия может выполнить инструкцию INSERT, UPDATE или DELETE для другой таблицы или представления, которое запустит триггер INSTEAD OF для этого объекта.

Следующие шаги

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

Задача Статья
Описывает, как создать первичный ключ. Создание первичных ключей
Описывает, как удалить первичный ключ. Удаление первичных ключей
Описывает, как изменить первичный ключ. Изменение первичных ключей
Описывается создание связей внешнего ключа Создание связей по внешнему ключу
Описывает, как изменить связи внешнего ключа. Изменение связей по внешнему ключу
Описывает, как удалить связи внешнего ключа. Удаление связей по внешнему ключу
Описывает, как просматривать свойства внешнего ключа. Просмотр свойств внешнего ключа
Описывает, как отключить ограничения внешнего ключа для репликации. Отключение ограничений внешнего ключа для репликации
Описывает, как отключить ограничения внешнего ключа на время выполнения инструкций INSERT и UPDATE. Отключение ограничений внешнего ключа для инструкций INSERT и UPDATE

Настройка ролей и прав доступа

Область применения: управляемое приложение, обычное приложение.

Действует для конфигураций УП (ERP), УТ 11 и входящих в них библиотек.
Для других конфигураций рекомендуется к использованию.
Содержит уточнения к требованиям других стандартов.

1. Общие положения

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

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

Например, в УП(ERP) это роль ПартнерСамообслуживание .

1.2. Роль ПолныеПрава (англ. FullAccess ) совместно с ролью АдминистраторСистемы (англ. SystemAdministrator ) дает неограниченный доступ (без RLS) ко всем объектам. См. стандартные роли.

1.3. Ни одна роль (в т.ч. ПолныеПрава и АдминистраторСистемы ) не должна давать право на интерактивное удаление ссылочных объектов.

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

1.4. Только роль ПолныеПрава и АдминистраторСистемы должна давать право на удаление ссылочных объектов.

1.5. Только для роли ПолныеПрава должен быть установлен флаг «Устанавливать права для новых объектов». Для всех остальных ролей этот флаг должен быть снят.

1.6. Если какое-то право может быть использовано только администратором системы (например, использование какого-то отчета или обработки), то достаточно, чтобы это предоставлялось одной из ролей ПолныеПрава и АдминистраторСистемы , создавать отдельные роли в этом случае не требуется.

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

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

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

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

Пример: Есть параметризованная ФО ИспользоватьВалютуПриРасчетеСПерсоналом , которая параметризуется организацией. Если пользователь будет получать ее значение в контексте своих прав, то он не увидит поле «валюта» в документе, если у него нет ни одной организации, где применяется валютный учет.

1.9. Не должно быть ролей, кроме стандартных ролей БСП, которые дают общие права (такие как Администрирование , ТонкийКлиент и т.п.).

  • при создании новой роли нужно следить, чтобы эти права были выключены.

1.10. В отдельных случаях для неконфиденциальных данных и общедоступных функций не требуется создавать отдельную роль на чтение (а также просмотр и ввод по строке — для ссылочных данных), а следует включать эти права в роли БазовыеПрава (англ. BasicAccess ) и БазовыеПраваВнешнихПользователей (англ. BasicAccessExternalUser ) (эта роль необходима только если в конфигурации предусмотрена работа с внешними пользователями). Например, это константы, общенациональные классификаторы, общие формы выбора периода, ввода контактной информации и др.

1.11. Не допускается, чтобы одна роль давала права на объекты, которые относятся к другим подсистемам.
Например, в хранилище УП (ERP) нельзя, чтобы одна роль давала права на объекты, которые есть в УТ 11 и на объекты, которых в УТ 11 нет. См. также: Разработка ролей в библиотеках.

2. Правила создания ролей к элементарным функциям

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

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

Противоположный пример:
Есть документ «Реализация товаров и услуг», выступающий в роли распоряжения на отгрузку товаров. Остатки по распоряжениям на отгрузку товаров хранит регистр накопления «Товары к отгрузке». Объединять «Реализацию товаров и услуг» и регистр «Товары к отгрузке» в рамках одной функции было бы не правильно, т.к., например, кладовщик, вполне может иметь права на чтение регистра «Товары к отгрузке», но может не иметь прав на чтение документа «Реализация товаров и услуг».

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

2.3. Каждый объект должен быть отнесен к элементарной функции, и только к одной.

2.4. Объекты, относящиеся к разным библиотекам не могут быть отнесены к одной элементарной функции.

3. Ссылочные объекты и регистры

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

  • Чтение (англ. Read );
  • ДобавлениеИзменение (англ. AddEdit ) или Изменение (англ. Edit ), если добавление выполняется автоматически, либо только администратором.

Роли должны содержать следующие права (когда они имеются у объекта метаданных):

Система прав доступа

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

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

Роли

Для реализации ограничения прав доступа в прикладных решениях предназначены специальные объекты конфигурации — Роли. Подробнее.

Интерактивные и основные права

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

Основные и интерактивные права взаимосвязаны. Например, существует основное право Удаление, которому соответствуют два интерактивных права: Интерактивное удаление и Интерактивное удаление помеченных. Если пользователю запрещено Удаление, то и все интерактивные «удаления» также будут запрещены для него. В то же время, если пользователю разрешено Интерактивное удаление помеченных, это значит, что Удаление ему также разрешается.

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

Например, для того, чтобы пользователь имел право Итерактивное удаление помеченных, ему необходимо обладать интерактивными правом Редактирование. Это право, в свою очередь, требует наличия интерактивного права Просмотр.

Право Интерактивное удаление помеченных требует наличия основного права Удаление. Интерактивное право Редактирование требует наличия основного права Изменение. Интерактивное право Просмотр требует наличия основного права Чтение.

Кроме этого основные права Изменение и Удаление требуют наличия основного права Чтение.

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

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

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

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

Система прав доступа

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

Система прав доступа

Ограничение доступа к данным представляет собой условие, описанное на языке, который является подмножеством языка запросов. Это условие применяется для каждой записи таблицы базы данных, над которой выполняется операция. Если условие принимает значение «истина», то операция выполняется, а если нет, то не выполняется. Условие ограничения доступа может быть уточнено с помощью инструкций препроцессора (#ЕСЛИ , #ТОГДА. и др.), что сделает его более эффективным. При просмотре списков и формировании отчетов существует возможность обеспечить отображение только тех данных, доступ к которым пользователю разрешен.

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

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

Параметры сеанса

Параметры сеанса представляют собой объекты прикладного решения, которые предназначены для использования в ограничениях доступа к данным для текущего сеанса (но могут применяться и для других целей). Их значения сохраняются в течение данного сеанса «1С:Предприятия 8». Использование параметров сеанса позволяет снизить время доступа к данным при ограничении доступа на уровне записей и полей. Подробнее.

Выполнение на сервере без проверки прав

Привилегированные модули

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

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

Привилегированный режим исполнения программного кода

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

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

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

Права пользователей 1С: роли доступа и их настройка

Анна Викулина

Вопрос с правами доступа возникает в связи с необходимостью ограничить права пользователя в 1С (или группы пользователей), что подразумевает под собой запрет на совершение каких-либо действий с определенными объектами, например, их просмотр, запись, редактирование и т.д. Или, наоборот – из-за необходимости дать (расширить) права пользователей в 1С, что в реальности чаще всего следует за сообщением системы о нарушении прав доступа (например, недостаточно прав для просмотра) и обращением пользователя к администраторам с просьбой об этом.

Сообщение о нехватке прав доступа

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

Настройки пользователей и прав

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

Группа пользователей

Группа пользователей-2

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

Назначение ролей

Описание прав пользователей доступно на вкладке «Описание».

Описание прав пользователей

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

Просмотр ролей

Здесь же формируется отчет по правам доступа, где отображается статус доступа к конкретным объектам системы.

Отчет по правам доступа

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

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

Ввод начальных остатков с ограничением доступа

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

Добавление пользователя в группу

Саму группу также можно изменить, например, добавив значение в ограничение доступа.

Изменение группы

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

Управление правами в режиме конфигуратора

Для управления правами, призванными изменять объекты, предусмотрены специальные роли добавления/изменения данных.

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

Если известно, на какой объект не хватает прав у пользователя, можно:

  • От обратного: посмотреть вкладку «права» у конкретного объекта, при этом вверху мы увидим все роли, доступные в конфигурации, а в нижнем окне – права. Наличие тех или иных прав на объект отмечено «галочкой». Таким же образом задаются права для новых объектов.

Установка прав

  • Открыть роль, назначенную пользователю, и, выбрав в левом окне конкретный объект, в правом окне увидеть список прав, то есть действия, которые пользователь с данной ролью может сделать с этим объектом – чтение, добавление, просмотр т.д.

Список прав

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

Анализ прав и ролей

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

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

Добавление ролей в дереве метаданных

В новой роли разграничить права можно простым выставлением флажков напротив соответствующего права.

Разграничение прав новой роли

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

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

Ограничить чтение и просмотр данных только по одной организации

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

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

Ограничение прав доступа описывается в виде языковых конструкций. Для облегчения их создания предусмотрено использование шаблонов ограничений. Надо заметить, что использование этого механизма напрямую сказывается на производительности, ведь системе, обращаясь к какому-либо объекту, необходимо прочитать и выполнить эти ограничения. Этот процесс отнимает ресурсы компьютера и тормозит работу.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *