Как отключить RLS в 1С:ERP и не «сломать» права доступа: подробное руководство по оптимизации производительности

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием
← На главную

В крупных информационных системах на базе 1С:ERP Управление предприятием пользователи часто сталкиваются с существенным замедлением работы при открытии и обновлении списков документов. Ситуация, когда команда Список.Обновить() выполняется несколько минут, часто связана с работой механизма RLS (Record Level Security) — ограничением прав на уровне записей. В этой статье мы подробно разберем, можно ли отключать этот механизм, как это повлияет на стабильность базы данных и что произойдет с правами пользователей.

Анализируем причину замедления: почему RLS «тормозит» систему

Рассмотрим ситуацию: при использовании RLS платформа 1С вынуждена модифицировать каждый запрос к базе данных. Проанализируем, что происходит «под капотом» SQL-сервера. Когда пользователь с ограниченными правами открывает список заказов, система не просто выбирает данные из таблицы, а добавляет в запрос сложные условия WHERE и вложенные подзапросы, чтобы отсечь записи, к которым у пользователя нет доступа (например, по конкретной организации или подразделению).

Выясним основные причины деградации производительности при включенном RLS:

  1. Усложнение планов запросов: SQL-оптимизатор может выбрать неэффективный план из-за обилия соединений со служебными таблицами прав.
  2. Нагрузка на TempDB: Обработка прав часто требует создания временных таблиц на стороне СУБД.
  3. Избыточность ролей: Если у пользователя назначено много ролей, для каждой из них платформа генерирует свои условия ограничения, которые затем объединяются. Это превращает простой запрос в «монстра» на несколько тысяч строк кода.

Безопасно ли полное отключение RLS для структуры базы данных?

Разберем главный страх администраторов: не «крашнет» ли базу данных отключение этой настройки? Ответ однозначный: нет, это абсолютно безопасная процедура с точки зрения технической целостности данных. Перед внесением подобных изменений в настройки системы выполняется автоматическое архивирование информационных баз 1С.

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

Как изменятся права доступа после отключения

Проанализируем механику работы прав без RLS. В системе 1С существует два уровня проверки прав:

  1. Объектный уровень (метаданные): Это основные права на «Чтение», «Добавление», «Изменение». Если у бухгалтера в профиле нет роли, дающей право на чтение документа «Заказ поставщику», то он не увидит этот документ ни при каких условиях, даже если RLS отключен.
  2. Уровень записей (RLS): Это фильтр «внутри» разрешенных объектов. Если чтение «Заказов поставщику» разрешено, RLS может ограничивать видимость только заказами «Организации А».

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

Пошаговая инструкция по оптимизации и отключению RLS

Если вы приняли решение об оптимизации, рассмотрим последовательность действий.

Шаг 1. Проверка режима работы RLS

Прежде чем полностью отключать ограничения, проверим, какой режим используется в вашей ERP. Перейдем в раздел НСИ и администрирование — Настройка пользователей и прав — Локальные настройки. В современных версиях системы существует «Производительный режим» работы RLS.

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

Шаг 2. Индексация полей

Если производительность все еще низка, проанализируем используемые поля в шаблонах RLS. Посмотрим, проиндексированы ли они. Например, если ограничение идет по полю Подразделение, убедитесь, что для этого реквизита в метаданных установлено свойство Индексировать или Индексировать с доп. упорядочиванием. Это поможет SQL-серверу быстрее обрабатывать условия в запросах.

Шаг 3. Полное отключение через интерфейс

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

  1. Зайдем в систему под пользователем с полными правами.
  2. Перейдем в НСИ и администрирование — Настройка пользователей и прав.
  3. Снимем флаг Ограничивать доступ на уровне записей.

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

Альтернативный подход: «Гибридная» оптимизация

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

Посмотрим на пример логики такого решения:

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

Резюме

Мы выяснили, что отключение RLS в 1С:ERP — это эффективный и безопасный способ ускорить работу системы, если требования безопасности позволяют пользователям видеть данные по всем организациям и контрагентам. Помните основные правила:

← На главную