Штатный RLS в ЗУП ограничивает доступ до физических лиц, а не до сотрудников — отсюда проблемы с совместительством, переводами и лишним доступом в зарплатных данных.
Решение: доступ разграничивается по подразделениям через цепочку последних мест работы сотрудника в течении заданного периода. Внутри — расширение трёх справочников, регламентное задание, обработка «Панель управления доступом» для начального заполнения и тестирования механизма.
Задача и почему штатный RLS не подходит
При ведении табелей силами табельщиков в ЗУП возникает задача ограничить их доступ только «своими» сотрудниками. Штатный механизм RLS в ЗУП позволяет ограничивать доступ с точностью до физических лиц, но не до сотрудников. Отсюда:
-
одно физлицо может переводиться, т.е. быть сотрудником нескольких подразделений;
-
одно физлицо может быть оформлено совместителем, то есть одновременно являться двумя сотрудниками в разных отделах;
-
ограничение по физ.лицам не спасает: после перевода сотрудника доступ к нему «пропадает», а руководство не всегда довольно тем, что табельщики видят данные чужих подразделений.
Хотя задача изначально ставилась под табельщиков, механизм получился универсальным.
Решение
При перемещении сотрудника из одного подразделения в другое физлицу автоматически присваивается группа доступа, содержащая цепочку подразделений, в которых он работал в течении заданного периода.
Цепочка хранится в табличной части справочника групп физических лиц. Наименование группы формируется из краткого обозначения подразделения и несёт ознакомительную функцию — вся ценность в табличной части, которая добавляется расширением и заполняется обработкой «Панель управления доступом» (для начального заполнения и тестирования) или регламентным заданием (на постоянной основе).
Логика групп доступа:
-
одна группа доступа — одно подразделение (хранится в реквизите, добавленном расширением);
-
табличная часть «Значения доступа» заполняется всеми группами доступа физлиц, в которых присутствует это подразделение; остальные значения запрещены.
Пользователю остаётся присвоить нужную группу доступа, соответствующую его подразделению.
Изменения в метаданных (расширение)
Расширением изменены три справочника:
| Справочник | Изменение |
|---|---|
| Константа | _Период доступа к физ лицу после перевода (в месяцах) |
| ГруппыДоступа | + реквизит «Подразделение» |
| ГруппыДоступаФизическихЛиц | + табличная часть с подразделениями |
| ПодразделенияОрганизаций | + реквизит hrm_Обозн — краткое обозначение подразделения (8 символов, на форму не выведен) |

Схема связей:
ПодразделенияОрганизаций - источник кратких обозначений и ссылок на подразделения;
ГруппыДоступаФизическихЛиц - ТЧ со ссылками на подразделения, где работало физлицо;
ГруппыДоступа - одна группа = одно подразделение, ссылка хранится в реквизите hrm_Подразделение;
Пример использования
Разберём на примере подразделения «Литейный цех / Бригада №2»
Группы доступа (для пользователей)
Одна группа доступа — одно подразделение, ссылка хранится в реквизите hrm_Подразделение;

Группы доступа (для пользователей) - в разрешённых значениях групп физлиц — все группы доступа физ.лиц с этим подразделением.

Группы доступа физических лиц
Справочник ГруппыДоступаФизическихЛиц — табличная часть со ссылками на подразделения.

Так выглядит группа доступа физических лиц в карточке сотрудника

Так выглядят группы доступа физических лиц в группах доступа (для пользователей)

Справочник «Подразделения»
Наименование группы доступа физических лиц генерируется из hrm_Обозн справочника Подразделения

Так выглядит hrm_Обозн в наименовании группы доступа физических лиц

Порядок внедрения
-
Установить расширение.
-
Включить в настройках пользователей и прав: «Ограничивать доступ на уровне записей», вариант работы «Производительный», «Доступ с точностью до физических лиц».

-
В профиле групп доступа настроить ограничения по организациям и группам физлиц.
Профили групп доступа ? профиль «Табельщик вашей организации».
На вкладке «Ограничение доступа» добавить ограничения:
Организации — все запрещены, исключения назначаются в группах доступа;
Группы физических лиц — все запрещены, исключения назначаются в группах доступа.

-
Создать папку «Табельщики» в группах доступа.

-
Создать группу доступа «Табельщик (все подразделения)» без ограничения доступа

-
Настроить регламентное задание на создание и постоянную поддержку цепочек и
обновление групп доступа. Для контроля первоначального заполнения можно
воспользоваться обработкой «Панель управления доступом»
-
Включить пользователей в нужные группы доступа.
Пользователь с полными правами штатным механизмом:

Пользователь с ограниченными правами:
Панель управления доступом – вкладка «Пользователи» (описание ниже)
Механизм для пользователей (с неполными правами), которым делегированы полномочия назначения прав табельщикам. У этих пользователей нет доступа к штатным настройкам пользователей и прав.
Необходимо в права этого пользователя добавить роль «Изменение участников групп доступа»
Ограничения и производительность
-
Глубина цепочки — период в месяцах – задается в константе.
-
Чем больше групп доступа и пользователей, тем заметнее нагрузка на RLS. Вариант работы «Производительный» обязателен.
-
Решение не претендует на замену штатных механизмов защиты: оно дополняет их, расширяя детализацию ограничения до подразделений.
Итог
Схема даёт табельщикам (и любому пользователю с аналогичной задачей) ровно тот объём данных, который нужен: доступ привязан не к физлицу и не к текущему подразделению сотрудника, а к цепочке подразделений, где он работал. Количество месяцев задается в константе. Это закрывает проблему переводов, совместительства и «лишних глаз» в зарплатных данных, а рутинное заполнение реквизита и групп уходит в регламентное задание.
Обработка «Панель управления доступом»
В обработке тот же самый алгоритм, что и в регламентном задании
Вкладка «Подразделения»:
на этой вкладке генерируется краткое обозначение подразделения для справочника «Подразделения» и записать в реквизит «Обозн» . Можно задать своё.
Это «Краткое обозначение подразделения» используется для наименования группы доступа физ. лиц

На этой же вкладке создаются группы доступа для пользователей
Вкладка «Сотрудники»
По кнопке «Создать/Обновить группы доступа физических лиц» сгенерируются, создадутся недостающие, обновятся существующие группы доступа физических лиц
ТЧ групп доступа физ.лиц заполнятся подразделениями
Группы доступа физических лиц присвоятся физикам
По кнопке «Создать/Обновить группы доступа» сгенерируются, создадутся недостающие, обновятся существующие группы доступа. В группу доступа запишется реквизит Подразделение.

Вкладка «Пользователи»
Разработана для пользователей с неполными правами. У которых нет доступа к настройкам пользователей и прав.
Необходимо в права этого пользователя добавить роль «Изменение участников групп доступа»
Просмотр пользователей
Вкладка «Пользователи»
Для просмотра всех пользователей очистите «Подразделение доступа» и нажмите кнопку «Заполнить пользователей»

Внизу отображаются доступные пользователю подразделения
Изменение прав пользователей
Для изменения прав пользователей выберете подразделение доступа

Добавьте нужных пользователей, уберите не нужных и нажмите кнопку «Оставить доступ только этим пользователям»
Для удаления доступа установите курсор на пользователя в верхней таблице. Затем выберите подразделение, доступ к которому надо удалить, в нижней таблице, и нажмите Удалить

Вкладка «Период доступа к физ.лицу после перевода»

Регламентное задание
Алгоритм заполнения
«РеглЗаданиеЗаполнитьДоступПоПодразделениям» тот же самый алгоритм, что и в обработке «Панель управления доступом»
Регламентное задание анализирует работающих сотрудников на предмет всех подразделений, в которых они работали, и заполняет табличную часть справочника ГруппыДоступаФизическихЛиц. Цепочка ограничена периодом. Количество месяцев периода хранится в константе ПериодДоступаКФизЛицуПослеПеревода.
Обозначение каждого подразделения берётся из реквизита расширения Справочник.ПодразделенияОрганизаций.hrm_Обозн. Физлицу присваивается соответствующая группа доступа.
Алгоритм 4 шага:
-
Заполнить пустые hrm_Обозн в справочнике «Подразделения».
-
Для каждого физлица из работающих сотрудников собрать историю подразделений (по кадровым перемещениям) за последнее количество месяцев из константы ПериодДоступаКФизЛицуПослеПеревода).
-
Заполнить список работающих сотрудников (таблица «Сотрудники»)
-
Заполнить таблицу «Подразделения сотрудников» подразделениями каждого сотрудника из регистра сведений КадроваяИсторияСотрудниковИнтервальный. Заодно сформировать наименование группы доступа физ.лиц цепочкой сокращенны наименований подразделений и добавить его в таблицу сотрудники.
-
Из таблицы сотрудники по связке физ.лицо – наименование группы доступа физ.лиц заполнить наименование в таблицу «Подразделения сотрудников».
-
Для тех физ.лиц, у которых существующая группа доступа неактуальна или не заполнена создать недостающие, обновить существующие группы доступа физ.лиц из таблицы «Подразделения сотрудников». В ней всё для этого есть Наименование группы и подразделения табличной части.
-
Присвоить физлицам группы доступа физических лиц.
-
Создать недостающие группы доступа (для пользователей).
Подключение

Проверено на следующих конфигурациях и релизах:
- Зарплата и управление персоналом КОРП, редакция 3.1, релизы 3.1.38.92
- Зарплата и управление персоналом, редакция 3.1, релизы 3.1.38.92
Вступайте в нашу телеграмм-группу Инфостарт