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

Как RLS взаимодействует с временными таблицами и виртуальными таблицами

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

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

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

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

Временные таблицы

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

Пример кода создания временной таблицы с применением RLS:

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
    Товары.Номенклатура,
    Товары.Количество
ИЗ
    РегистрНакопления.ОстаткиТоваров КАК Товары
ГДЕ
    Товары.Номенклатура = &Номенклатура";
​
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
​
Результат = Запрос.Выполнить();
ВременнаяТаблица = Результат.Выгрузить();
  • Запрос = Новый Запрос; — создается новый объект запроса.
  • Запрос.Текст = ... — задается текст запроса, который выбирает данные из регистра накопления.
  • Запрос.УстановитьПараметр("Номенклатура", Номенклатура); — устанавливается параметр для фильтрации данных.
  • Результат = Запрос.Выполнить(); — выполняется запрос, и результат сохраняется.
  • ВременнаяТаблица = Результат.Выгрузить(); — выгружаются данные в временную таблицу.

Виртуальные таблицы

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

Пример использования виртуальной таблицы с RLS:

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
    Продажи.Номенклатура,
    Продажи.Сумма
ИЗ
    ВиртуальнаяТаблицаПродаж КАК Продажи";
​
Результат = Запрос.Выполнить();
  • Запрос = Новый Запрос; — создается новый объект запроса.
  • Запрос.Текст = ... — задается текст запроса, который выбирает данные из виртуальной таблицы.
  • Результат = Запрос.Выполнить(); — выполняется запрос, и результат сохраняется.

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

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

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

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

Твои заметки