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