В крупных организациях с разветвленной филиальной структурой часто возникает задача разграничения конфиденциальной информации: рядовые кадровики на местах должны вести рутинный кадровый учет по всем сотрудникам компании, включая топ-менеджеров, но при этом не должны иметь доступа к размерам окладов руководства. Если просто закрыть доступ к карточкам руководителей через подразделения или организации, кадровики потеряют возможность оформлять невыходы, отпуска, а в печатных формах приказов на месте руководителя появится ошибка «Объект не найден».
Проанализируем практический подход, позволяющий решить данную задачу штатными средствами конфигурации 1С:Зарплата и Управление Персоналом 3.1 с помощью механизма RLS (ограничения доступа на уровне записей), а также рассмотрим дополнительные меры защиты от несанкционированного доступа к закрытым данным.
Стандартная логика работы прав в платформе «1С:Предприятие» при объединении нескольких групп доступа заключается в сложении прав (логическое «ИЛИ»). Чтобы пользователь мог видеть карточку руководителя, но не видел его плановых начислений, разделим зоны ответственности на уровне физических лиц и профилей групп доступа.
Разберем по шагам, как настроить такую схему:
Группы физических лиц.Группы физических лиц и создадим две группы — Сотрудники (для линейного персонала) и Руководители (для топ-менеджмента). В карточках всех руководителей укажем соответствующую группу.Создадим группу доступа, например, Кадровик (без руководителей) на базе типового профиля Кадровик. В табличной части ограничений для вида доступа Группы физических лиц установим значение Все запрещены, кроме и укажем группу Сотрудники.
Создадим вторую группу доступа — Кадровик без доступа к зарплате (руководители) на базе предопределенного профиля Кадровик (без доступа к зарплате). В ограничениях доступа для вида Группы физических лиц укажем значение Все разрешены (или явно разрешим обе группы: Сотрудники и Руководители).
Посмотрим на результат такой настройки: при открытии карточки сотрудника-руководителя пользователь получает права на чтение объекта через второй профиль, однако права на зарплатные регистры для группы Руководители у него отсутствуют. В результате в поле Оклад кадровик видит 0,00, при этом сохраняется возможность оформлять общие кадровые документы (например, график отпусков или командировки).
При приеме на работу или кадровом переводе руководителя возникает коллизия: документ требует назначения начислений, но у кадровика нет прав на ввод финансовых показателей. В 1С:ЗУП 3.1 заложен типовой механизм двухэтапной работы с документами:
Кадровик с профилем Кадровик (без доступа к зарплате) заполняет только кадровые реквизиты (подразделение, должность, график работы) и нажимает кнопку проведения. В документе автоматически устанавливается признак того, что он еще не утвержден расчетом. Окончательное проведение документа и назначение индивидуального оклада выполняет расчетчик центрального офиса, обладающий полными правами.
При использовании только стандартного механизма RLS остаются потенциальные каналы обхода ограничений, которые необходимо заблокировать.
Руководители в группу Сотрудники, просмотреть зарплату и вернуть группу обратно.
Для предотвращения этой ситуации разработаем небольшое расширение конфигурации, блокирующее изменение реквизита на клиенте и сервере:
&ВРасширении
Процедура Расш_ПередЗаписью(Отказ)
// Проверяем, изменилась ли группа физического лица
Если Модифицированность() И Не РольДоступна("ПолныеПрава") Тогда
СсылкаНаФизЛицо = ЭтотОбъект.Ссылка;
Если ЗначениеЗаполнено(СсылкаНаФизЛицо) Тогда
СтараяГруппа = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаФизЛицо, "ГруппаДоступа");
Если ЭтотОбъект.ГруппаДоступа <> СтараяГруппа Тогда
ВызватьИсключение "У вас недостаточно прав для изменения группы доступа физического лица!";
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Также в расширении для справочника ФизическиеЛица в обработчике ОбработкаЗаполнения пропишем автоматическую подстановку группы Сотрудники по умолчанию при создании новых карточек, чтобы кадровикам не приходилось выбирать ее вручную.