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