Как устранить проблемы с видимостью документов и ошибками «Объект не найден» при настройке RLS в ЗУП 3.1?

Программист 1С:Зарплата и Управление Персоналом
← На главную

При переходе на 1С:Зарплата и управление персоналом (ЗУП) 3.1 КОРП многие технические специалисты сталкиваются с неприятной особенностью: после включения ограничений на уровне записей (RLS) пользователи перестают видеть документы штатного расписания, даже если права на организацию предоставлены корректно. Часто это сопровождается странными надписями «Объект не найден» в списках сотрудников или пустым справочником штатных единиц. Рассмотрим подробно, почему это происходит и как исправить ситуацию программно и административно.

Разберем причину: Механизм денормализации в RLS

В современных редакциях конфигураций на базе 1С:Предприятие 8.3 (таких как ЗУП 3.1, ERP 2.5) для ускорения работы ограничений доступа используется так называемый «Производительный режим» RLS. Проблема заключается в том, что система больше не высчитывает иерархию подразделений или права доступа «на лету» при каждом запросе. Вместо этого она обращается к специально подготовленным вспомогательным таблицам — ключам доступа и служебным регистрам.

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

Решение 1: Принудительное обновление регистра подчиненности

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


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ПодразделенияОрганизаций.Ссылка КАК Ссылка
    |ИЗ
    |	Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций";

РезультатЗапроса = Запрос.Выполнить();
ВыгрузкаСписка = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Ссылка");

// Вызываем метод типового регистра для обновления иерархических связей
РегистрыСведений.ПодчиненностьПодразделенийОрганизаций.ОбновитьПодчиненностьПодразделений(ВыгрузкаСписка);

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

Решение 2: Регламентное задание по заполнению данных доступа

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

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

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

Решение 3: Проверка логики «Все или ничего» в документах

Важно понимать специфику работы RLS в ЗУП КОРП при работе со списочными документами. Рассмотрим подробнее механизм ограничения доступа к документу Изменение штатного расписания. Если в этом документе меняются позиции сразу по нескольким подразделениям, а у пользователя есть доступ только к части этих подразделений, система ведет себя следующим образом:

  1. Программа анализирует все строки (позиции) в документе.
  2. Если хотя бы одна строка содержит подразделение, на которое у пользователя нет прав, весь документ может стать недоступным для чтения.
  3. Это сделано для обеспечения безопасности данных, чтобы пользователь не мог косвенно увидеть изменения по «чужим» подразделениям.

Совет: В многофирменных базах или базах с жестким разделением по филиалам рекомендуем создавать отдельные документы Изменение штатного расписания для каждого филиала/подразделения. Это позволит избежать блокировки документа из-за наличия в нем «чужих» данных.

Решение 4: Исправление проблемы с Договорниками (ГПХ)

Иногда пользователи жалуются, что при заполнении ведомостей или платежек не подтягиваются сотрудники, работающие по договорам ГПХ. Проанализируем ситуацию: для договорников в системе часто не указано подразделение (поле остается пустым). Если в настройках RLS стоит жесткий фильтр по подразделениям, система может интерпретировать ПустаяСсылка как запрещенный объект.

Чтобы решить эту проблему, необходимо либо убедиться, что в договорах ГПХ всегда заполнено подразделение, входящее в иерархию разрешенных, либо скорректировать группы доступа, разрешив чтение данных без указанного подразделения.

Технический итог

Подводя итоги, если вы столкнулись с «исчезновением» данных после настройки RLS в ЗУП 3.1, выполните следующие шаги:

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

← На главную