7.2 Какие значения могут использоваться при ограничении доступа к данным?
Опубликовано: Обновлено:
❓ 7.2 При настройке ограничения доступа к данным в качестве значений, по которым производится ограничение доступа к данным, могут использоваться:
📚 Документация
Заголовок раздела «📚 Документация»-
ИТС: Руководство разработчика — Ограничение доступа к данным
🧠 Краткая теория
Заголовок раздела «🧠 Краткая теория»Как платформа определяет доступность записи
Заголовок раздела «Как платформа определяет доступность записи»Ограничение доступа к данным задается условием, которое вычисляется для записи таблицы объекта, на который наложено ограничение.
Запись считается доступной, если в результате выполнения условия получается непустая таблица — одна или более записей. Если результатом является пустая таблица, запись считается недоступной.
Изменение записи допустимо, если она не противоречит ограничению как до выполнения изменения, так и после него.
Из чего состоит запрос ограничения
Заголовок раздела «Из чего состоит запрос ограничения»Для ограничения на уровне записей используется язык ограничений доступа к данным, являющийся разновидностью языка запросов.
В запросе ограничения всегда присутствует таблица объекта, на который накладывается ограничение, — основной объект ограничения.
При этом в тексте ограничения ее можно явно не указывать.
Сокращенный синтаксис языка ограничения доступа:
[Псевдоним таблицы основного объекта ограничения][ИЗ <Список источников>][ГДЕ <Условие отбора>]Квадратные скобки [] означают, что соответствующая часть описания необязательна.
При этом таблица основного объекта ограничения всегда присутствует в запросе ограничения, даже если ее псевдоним явно не указан.
Язык ограничения доступа использует секции ИЗ и ГДЕ языка запросов.
Поэтому простейшее ограничение в условной конфигурации может выглядеть так:
ГДЕ Ответственный = &ТекущийСотрудникЗдесь:
Ответственный— значение поля проверяемой записи;&ТекущийСотрудник— значение параметра сеанса, с которым оно сравнивается.
Именно такие данные и значения участвуют в вычислении условия ограничения.
Как ограничение применяется к записям
Заголовок раздела «Как ограничение применяется к записям»Условие ограничения логически проверяется для каждой записи основного объекта. При обращении к базе данных платформа добавляет построенные условия ограничения к SQL-запросу.
Какие данные можно использовать в ограничении
Заголовок раздела «Какие данные можно использовать в ограничении»В условиях ограничения могут использоваться:
- поля таблицы основного объекта ограничения;
- поля объектов, доступных по ссылкам из основного объекта;
- поля других объектов, связанных с основным объектом;
- результаты вложенных запросов;
- параметры сеанса;
- функциональные опции, не зависящие от параметров.
Поля основного объекта
Заголовок раздела «Поля основного объекта»Можно использовать поля объекта, для которого описывается ограничение, в том числе поля его табличных частей.
Например, для условного справочника Проекты:
ГДЕ Наименование = "Проект внедрения"В этом случае условие доступа определяется непосредственно по данным проверяемого объекта.
Поля объектов, доступных по ссылкам
Заголовок раздела «Поля объектов, доступных по ссылкам»Если реквизит основного объекта содержит ссылку на другой объект, в ограничении можно обращаться к полям этого объекта через точку.
Например, если Ответственный ссылается на справочник Сотрудники:
ГДЕ Ответственный.Код = "00015"Можно использовать и цепочку обращений:
ГДЕ Ответственный.Подразделение.Наименование = "Отдел продаж"То есть условие может зависеть не только от значения ссылки, но и от полей объекта, на который она указывает.
Поля связанных объектов
Заголовок раздела «Поля связанных объектов»В секции ИЗ можно использовать другие таблицы и связывать их с основным объектом условиями соединения.
Например:
Проекты
ИЗ Справочник.Проекты КАК Проекты
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники ПО Проекты.Ответственный = Сотрудники.Ссылка
ГДЕ Сотрудники.Подразделение = &ТекущееПодразделениеЗдесь доступность элемента справочника Проекты зависит от данных связанного элемента справочника Сотрудники.
Вложенные запросы
Заголовок раздела «Вложенные запросы»Вложенные запросы позволяют сформировать набор записей, который затем можно использовать:
- для связывания с таблицей основного объекта ограничения;
- как операнд операций
ВиНЕ В.
Например, доступ к элементам условного справочника Проекты можно ограничить проектами, перечисленными в регистре сведений ДоступныеПроекты:
Проекты
ГДЕ Проекты.Ссылка В (ВЫБРАТЬ ДоступныеПроекты.Проект ИЗ РегистрСведений.ДоступныеПроекты КАК ДоступныеПроекты ГДЕ ДоступныеПроекты.Сотрудник = &ТекущийСотрудник)Таким образом, данные для проверки доступа могут быть получены из других таблиц информационной базы с помощью вложенного запроса.
Параметры сеанса
Заголовок раздела «Параметры сеанса»В составе запросов ограничения доступа могут использоваться параметры сеанса.
Например:
ГДЕ Ответственный = &ТекущийСотрудникТекущийСотрудник здесь — параметр сеанса.
За счет параметров сеанса одно и то же условие ограничения может вычисляться с разными значениями для разных сеансов работы.
Функциональные опции
Заголовок раздела «Функциональные опции»В ограничениях доступа могут использоваться функциональные опции, не зависящие от параметров.
Например:
ГДЕ &ИспользоватьРазделениеПоПодразделениям = ИстинаЗдесь результат условия зависит от значения функциональной опции ИспользоватьРазделениеПоПодразделениям.
🧠 Ключевая мысль
Заголовок раздела «🧠 Ключевая мысль»Условие ограничения доступа вычисляется относительно записи основного объекта, но данные для такой проверки не обязаны находиться только в этой записи. В ограничении могут использоваться поля самого объекта и связанных объектов, вложенные запросы, параметры сеанса и функциональные опции.