← Назад ко всем вопросам

Как RLS взаимодействует с предопределёнными значениями

1️⃣ Как кратко ответить

RLS (Row-Level Security) в 1С не применяет ограничения к предопределённым значениям, так как они считаются системными и необходимыми для корректной работы конфигурации. Предопределённые значения всегда доступны независимо от настроек RLS.

2️⃣ Подробное объяснение темы

RLS (Row-Level Security) — это механизм в 1С, который позволяет ограничивать доступ пользователей к данным на уровне строк. Это значит, что для каждого пользователя или группы пользователей можно задать условия, при которых они смогут видеть или изменять только определённые строки данных в таблицах.

Предопределённые значения в 1С — это элементы справочников, документов или других объектов, которые создаются разработчиком конфигурации и имеют особый статус. Они необходимы для корректной работы системы и часто используются в бизнес-логике приложения. Например, это могут быть типовые статусы документов, стандартные единицы измерения и т.д.

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

Пример:

Предположим, у нас есть справочник "СтатусыДокументов", в котором есть предопределённые значения "Новый", "В работе", "Завершён". Эти статусы используются в бизнес-процессах для управления жизненным циклом документов. Если бы RLS ограничивал доступ к этим предопределённым значениям, это могло бы нарушить работу системы, так как пользователи могли бы не видеть или не использовать необходимые статусы.

// Пример кода, демонстрирующий создание предопределённого значения
Процедура СоздатьПредопределённыеЗначения()
    // Получаем ссылку на справочник "СтатусыДокументов"
    Справочник = Справочники.СтатусыДокументов;
​
    // Создаём предопределённое значение "Новый"
    НовыйСтатус = Справочник.СоздатьЭлемент();
    НовыйСтатус.Наименование = "Новый";
    НовыйСтатус.Предопределённый = Истина; // Устанавливаем флаг предопределённости
    НовыйСтатус.Записать();
​
    // Создаём предопределённое значение "В работе"
    ВРаботеСтатус = Справочник.СоздатьЭлемент();
    ВРаботеСтатус.Наименование = "В работе";
    ВРаботеСтатус.Предопределённый = Истина;
    ВРаботеСтатус.Записать();
​
    // Создаём предопределённое значение "Завершён"
    ЗавершёнСтатус = Справочник.СоздатьЭлемент();
    ЗавершёнСтатус.Наименование = "Завершён";
    ЗавершёнСтатус.Предопределённый = Истина;
    ЗавершёнСтатус.Записать();
КонецПроцедуры
  • Справочник = Справочники.СтатусыДокументов; — Получаем ссылку на справочник, в котором будем создавать предопределённые значения.
  • НовыйСтатус = Справочник.СоздатьЭлемент(); — Создаём новый элемент справочника.
  • НовыйСтатус.Наименование = "Новый"; — Устанавливаем наименование для нового элемента.
  • НовыйСтатус.Предопределённый = Истина; — Устанавливаем флаг, что элемент является предопределённым.
  • НовыйСтатус.Записать(); — Сохраняем элемент в базе данных.

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

Тема: RLS и безопасность
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки