В крупных информационных системах на базе 1С:ERP Управление предприятием пользователи часто сталкиваются с существенным замедлением работы при открытии и обновлении списков документов. Ситуация, когда команда Список.Обновить() выполняется несколько минут, часто связана с работой механизма RLS (Record Level Security) — ограничением прав на уровне записей. В этой статье мы подробно разберем, можно ли отключать этот механизм, как это повлияет на стабильность базы данных и что произойдет с правами пользователей.
Рассмотрим ситуацию: при использовании RLS платформа 1С вынуждена модифицировать каждый запрос к базе данных. Проанализируем, что происходит «под капотом» SQL-сервера. Когда пользователь с ограниченными правами открывает список заказов, система не просто выбирает данные из таблицы, а добавляет в запрос сложные условия WHERE и вложенные подзапросы, чтобы отсечь записи, к которым у пользователя нет доступа (например, по конкретной организации или подразделению).
Выясним основные причины деградации производительности при включенном RLS:
Разберем главный страх администраторов: не «крашнет» ли базу данных отключение этой настройки? Ответ однозначный: нет, это абсолютно безопасная процедура с точки зрения технической целостности данных. Перед внесением подобных изменений в настройки системы выполняется автоматическое архивирование информационных баз 1С.
Механизм RLS — это надстройка над основной системой прав. Его отключение инициирует лишь изменение логики формирования запросов и очистку служебных таблиц (ключей доступа). Сами данные в документах, справочниках и регистрах останутся нетронутыми. Однако важно понимать, как изменится видимость данных для сотрудников.
Проанализируем механику работы прав без RLS. В системе 1С существует два уровня проверки прав:
Важный вывод: Если мы отключаем RLS, то пользователь, имеющий право на чтение объекта, начинает видеть все записи этого типа. Например, бухгалтер, который раньше видел только свою организацию, увидит документы по всем организациям в базе. Поэтому перед отключением необходимо убедиться, что политика безопасности компании допускает такую прозрачность данных. В случаях, когда такая прозрачность недопустима, альтернативой RLS становится выборочное удаление организаций из типовой базы 1С.
Если вы приняли решение об оптимизации, рассмотрим последовательность действий.
Прежде чем полностью отключать ограничения, проверим, какой режим используется в вашей ERP. Перейдем в раздел НСИ и администрирование — Настройка пользователей и прав — Локальные настройки. В современных версиях системы существует «Производительный режим» работы RLS.
Разберем его преимущество: в отличие от стандартного режима, производительный использует заранее рассчитанные таблицы ключей доступа. Переход на этот режим часто позволяет сократить время обновления списков с сотен секунд до приемлемых значений, не жертвуя безопасностью.
Если производительность все еще низка, проанализируем используемые поля в шаблонах RLS. Посмотрим, проиндексированы ли они. Например, если ограничение идет по полю Подразделение, убедитесь, что для этого реквизита в метаданных установлено свойство Индексировать или Индексировать с доп. упорядочиванием. Это поможет SQL-серверу быстрее обрабатывать условия в запросах.
Если принято решение о полном отказе от RLS для достижения максимальной скорости, выполним следующие действия:
Внимание: После снятия флага система запустит фоновое задание по пересчету прав и очистке служебных данных. В большой базе это может занять значительное время и создать нагрузку на дисковую подсистему, поэтому процедуру лучше проводить в периоды минимальной активности пользователей. Для контроля итогового результата и поиска возможных расхождений после очистки служебных данных используется автоматическая сверка бухгалтерских и налоговых проводок между базами.
Рассмотрим ситуацию, когда пользователям все же нельзя видеть чужие данные, но типовой RLS невыносимо тормозит. В таких случаях программисты применяют обходные пути через расширения конфигурации.
Посмотрим на пример логики такого решения:
ПриСозданииНаСервере).Это позволяет избежать «тяжелых» автоматических запросов платформы, сохраняя при этом базовый уровень разграничения доступа.
Мы выяснили, что отключение RLS в 1С:ERP — это эффективный и безопасный способ ускорить работу системы, если требования безопасности позволяют пользователям видеть данные по всем организациям и контрагентам. Помните основные правила: