При настройке ограничений доступа на уровне записей (RLS) в крупных конфигурациях, таких как 1С:ERP 2.4 или 1С:Комплексная автоматизация, администраторы часто сталкиваются с парадоксальной ситуацией. Ограничения для справочника Сотрудники настроены верно, пользователи видят нужные им записи, однако связанные с ними документы (например, «Кадровый перевод», «Прием на работу») внезапно исчезают из списков или становятся недоступными. При этом логика прав кажется соблюденной: если сотрудник доступен, то и документ по нему должен быть виден.
В этой статье мы подробно разберем, почему так происходит, как работают современные режимы RLS в Библиотеке стандартных подсистем (БСП) и каким образом можно быстро восстановить работоспособность системы.
Проанализируем архитектуру системы прав доступа. Начиная с определенных версий БСП, в 1С:ERP реализовано два принципиально разных механизма работы ограничений. Выбор режима напрямую влияет на то, как система «видит» документы:
Если вы внесли изменения в настройки групп доступа или ограничили справочник, но система не успела (или не смогла из-за ошибки) обновить ключи доступа для документов, возникает ситуация, когда справочник Сотрудники уже работает по новым правилам, а документы все еще «живут» по старым правилам или вовсе лишились связки с ключами прав. В результате — документы пропадают из видимости.
Разберем ситуацию, когда проблему удается решить простым отключением и включением функциональной опции (ФО) «Ограничивать доступ на уровне записей». Это действие кажется «глюком» платформы только на первый взгляд. На самом деле, это штатный механизм принудительной инициализации подсистемы управления доступом.
Когда мы выключаем и снова включаем ФО ОграничиватьДоступНаУровнеЗаписей, происходят следующие процессы:
Именно поэтому «все заколосилось» — система была вынуждена с нуля перестроить карту прав для всех документов, сопоставив их с актуальным состоянием справочника сотрудников.
Если вы столкнулись с выборочным исчезновением документов при работающем справочнике, выполним последовательность действий по восстановлению прав.
Прежде чем прибегать к радикальным мерам, выясним, не «зависла» ли система при расчете прав. В 1С:ERP за это отвечает специальный регистр. Посмотрим на его состояние:
ОчередьОбновленияПравДоступа.Проанализируем работу фоновых процессов. Нам необходимо убедиться, что задание ОбновлениеКлючейДоступа выполняется успешно. Если в журнале регистрации зафиксированы ошибки при выполнении этого задания, расчет прав для документов будет приостановлен, и пользователи будут видеть устаревшую или пустую выборку данных.
Вместо полного переподключения RLS (что может быть долго на огромных базах), рекомендуется использовать специализированные отчеты и обработки, входящие в состав БСП. В разделе «Администрирование — Настройки пользователей и прав» найдем инструменты:
Иногда проблема кроется в особенностях работы платформы (например, версии 8.3.15). Платформа может кэшировать контекст безопасности пользователя. Если настройки изменены, а сеанс не перезапущен, старые ограничения могут продолжать действовать. Рассмотрим алгоритм очистки:
snccntx в каталоге кластера серверов 1С).Если вы разрабатываете собственный механизм или дорабатываете типовой, полезно знать, как программно инициировать обновление прав для объекта. Посмотрим на пример вызова метода БСП:
// Пример программного обновления ключей доступа для конкретного документа
ОбъектСсылка = Документы.КадровыйПеревод.НайтиПоНомеру("001");
УправлениеДоступомСлужебный.ОбновитьКлючиДоступаОбъекта(ОбъектСсылка);
Этот метод заставит систему немедленно пересчитать права для указанного документа, не дожидаясь очереди регламентного задания.
Проблема «неадекватной» работы RLS в ERP 2.4 чаще всего связана не с ошибками в коде шаблонов ограничений, а с рассинхронизацией регистров ключей доступа. Основные шаги к исправлению: контроль очереди обновления прав, проверка регламентных заданий и, в крайнем случае, переподключение функциональной опции ограничения доступа для полной переинициализации системы прав. Также не забывайте про техническое обслуживание базы данных (ТИИ), так как битые ссылки в измерениях регистров прав могут полностью блокировать расчет ключей для целых журналов документов.