Почему после включения RLS в 1С:Бухгалтерия 3.0 справочники становятся пустыми и как это исправить

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

Настройка ограничения доступа на уровне записей (RLS) — одна из самых востребованных задач в 1С:Бухгалтерии 3.0, особенно когда в одной базе ведется учет по нескольким организациям. Однако часто администраторы сталкиваются с неприятной ситуацией: после установки всех галочек и распределения прав пользователи открывают программу и видят абсолютно пустые списки документов и справочников. Рассмотрим подробнее, почему это происходит и как заставить систему работать корректно.

Разберем механизм производительного RLS и «Ключей доступа»

В современных редакциях 1С:Бухгалтерия 3.0 используется так называемый производительный режим RLS. В старых версиях платформы права проверялись «на лету» при каждом запросе к базе данных, что сильно замедляло работу. Теперь система работает иначе: она заранее рассчитывает права доступа и записывает их в специальные служебные таблицы — Ключи доступа.

Проанализируем ситуацию: когда вы только что включили константу ОграничиватьДоступНаУровнеЗаписей или изменили состав групп доступа, таблицы с ключами еще не заполнены. Для системы это выглядит так, будто разрешенных записей просто не существует. Именно поэтому справочник «Организации» или список «Реализации» оказываются пустыми.

Выясним причину: работа фоновых заданий

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

  1. Перейдем в раздел Администрирование — Обслуживание — Регламентные и фоновые задания.
  2. Найдем в списке задание с наименованием ОбновлениеДоступаНаУровнеЗаписей.
  3. Посмотрим на его статус. Если оно находится в состоянии «Выполняется» или «Запланировано», необходимо дождаться завершения. В крупных базах этот процесс может занимать от нескольких минут до нескольких часов.

Если задание завершилось с ошибкой или вы хотите ускорить процесс, можно воспользоваться специальной формой в разделе Администрирование — Настройки пользователей и прав — Группы доступа — Управление доступом (в некоторых релизах это находится в меню «Технического специалиста» как обработка ОбновлениеВспомогательныхДанных). Там можно запустить обновление прав принудительно.

Проанализируем настройки групп доступа

Иногда причина кроется в логической ошибке при настройке самих групп. В 1С существует два принципиально разных подхода к ограничению:

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

Посмотрим на типичную ошибку: администратор выбирает вид доступа «Организации», устанавливает значение «Все запрещены», но забывает добавить конкретную организацию в список ниже или добавляет её некорректно. В этом случае система честно выполняет инструкцию — запрещает всё.

Также важно проверить, не входит ли пользователь в несколько групп доступа одновременно. В 1С права суммируются по принципу «Разрешено всё, что разрешено хотя бы в одной группе». Однако, если в одной из групп настроено противоречивое ограничение по связанным объектам, это может привести к блокировке отображения данных.

Использование стандартных профилей

Как отмечалось в обсуждении на форуме, иногда создание множества копий типовых профилей (например, «Бухгалтер») только запутывает систему. Попробуем использовать стандартный профиль Бухгалтер и настроить ограничения именно в Группе доступа, а не в самом Профиле. Это позволит избежать ошибок в правах на чтение вспомогательных регистров.

Для корректной работы RLS по организациям у пользователя должны быть права не только на чтение справочника Организации, но и на:

Диагностика через «подвал» системы (регистры)

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

Если эти регистры пусты, значит, расчет прав не был произведен. Попробуйте выполнить следующий код в обработке для принудительного обновления (только для разработчиков):


ПараметрыОбновления = ДоступНаУровнеЗаписей.ПараметрыОбновленияДоступа();
ПараметрыОбновления.СпискиДляОбновления = "Справочник.Организации";
ДоступНаУровнеЗаписей.ОбновитьДоступ(ПараметрыОбновления);

Очистка кэша и техническое обслуживание

Иногда платформа 1С «запоминает» старые права доступа в локальном кэше пользователя. Проанализируем ситуацию: вы всё настроили верно, фоновое задание отработало, но под конкретным пользователем список всё равно пуст. В этом случае выполним следующие действия:

  1. Полностью завершите сеанс пользователя.
  2. Очистите кэш базы данных. Самый простой способ — удалить базу из списка в стартере и добавить её заново.
  3. Запустите систему с параметром /ClearCache в строке запуска.

В редких случаях помогает выполнение Тестирования и исправления (Конфигуратор — Администрирование). Обязательно выберите пункты Реиндексация таблиц информационной базы и Проверка логической целостности. Это восстановит связи между объектами и их уникальными идентификаторами (GUID), на которые опирается механизм RLS.

Подводя итог, можно сказать, что «пустые списки» — это почти всегда либо признак незавершенного фонового задания по расчету ключей доступа, либо результат слишком жесткого ограничения, когда запрет на чтение связанного регистра (например, учетной политики) блокирует отображение основного объекта (организации).

← На главную