Ограничение право пользователей на уровне записей в 1с

Как закрыть доступ к записям в 1С, чтобы никто не удалил важное и не устроил хаос

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

Разграничение доступа к данным в «1С:Предприятии 8» стало ещё точнее с появлением Row Level Security (RLS) — механизма, который позволяет управлять правами на уровне отдельных записей, а не только на уровне объекта целиком. Впервые RLS появился в платформе 8.3.18 и с тех пор активно развивается.


Что такое RLS и зачем он нужен

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

  • Менеджер видел только свои договоры;
  • Складской работник имел доступ только к тем складским документам, которые касаются его склада;
  • Филиалы не могли видеть данные друг друга.

RLS решает эти задачи, фильтруя строки на уровне СУБД: пользователь просто не получает в выборке записи, к которым у него нет доступа. Это:

  • безопасно (фильтр не обходится через интерфейс);
  • безопасно для производительности (фильтр применяется на стороне сервера);
  • прозрачно для прикладного кода.

Где задаются правила RLS

В конфигураторе правила описываются в административных ролях, на вкладке «Доступ к данным» → «Уровень записей».

Ключевые элементы интерфейса

  1. Таблица объектов. Здесь перечисляются метаданные (справочники, документы, регистры), к которым будут применяться правила.
  2. Условия RLS. Для каждого объекта можно задать:
    • Фильтр по реквизиту. Например, «Склад = &ТекущийСкладПользователя».
    • Фильтр по связанным объектам. «Договор доступен, если контрагент = &КонтрагентПользователя».
    • Сложные выражения. С применением булевой логики, функций ВЫБРАТЬ, ПРИСУТСТВУЕТ и др.
  3. Контекстные параметры. Значения &ТекущийСкладПользователя, &Филиал и т.д. автоматически подставляются из констант или справочника «Пользователи».

Как работает RLS пошагово

Шаг 1. Создаём административную роль

В конфигураторе: Администрирование → Роли → Создать административную роль.

Шаг 2. Задаём правила доступа

На вкладке Уровень записей выбираем объект «Справочник.ДоговорыКонтрагентов» и прописываем условие:

Владелец = &Пользователь

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

Шаг 3. Привязываем роль к пользователю

В Конфигураторе → Администрирование → Пользователи или в Журнале регистрации → Пользователи и права назначаем созданную роль.

Шаг 4. Проверяем

Запускаем 1С в режиме «Тонкий клиент» → список договоров автоматически фильтруется.


Типичные сценарии использования

Задача Пример условия RLS
Филиалы не видят документы друг друга Филиал = &ФилиалПользователя
Менеджер видит только свои заказы Ответственный = &Пользователь
Доступ к регистру накопления «ОстаткиТоваров» только по своему складу Склад = &ТекущийСкладПользователя

Ограничения и особенности

  • Версия платформы. RLS требует 8.3.18 и выше. В более ранних версиях механизм не работает.
  • Сервер 1С. Правила применяются только на сервере. При работе в файловом варианте RLS недоступен.
  • Производительность. Сложные выражения или связи по нескольким таблицам могут замедлять запросы. Используйте индексы.
  • Контекстные параметры. Необходимо корректно заполнять реквизиты пользователя (филиал, склад, контрагент).
  • Отладка. Для проверки используйте Журнал регистрации → Пользователи и права → Проверка прав RLS.

Мини-чек-лист внедрения RLS

  1. Обновите платформу до 8.3.18 или новее.
  2. Определите, по каким реквизитам нужно фильтровать записи.
  3. Создайте административную роль и настройте правила.
  4. Добавьте недостающие реквизиты в справочник «Пользователи».
  5. Протестируйте на тестовой базе, измерив скорость отчётов.
  6. Документируйте правила для будущих администраторов.

Row Level Security в 1С — мощный инструмент точного разграничения доступа. Он позволяет:

  • сократить количество специализированных конфигураций;
  • повысить информационную безопасность;
  • облегчить сопровождение: одна база вместо множества «филиальных» копий.

Главное — грамотно продумать модель доступа, протестировать производительность и документировать все правила.