Как настроить права кадровикам в 1С:ЗУП 3.1, чтобы они могли редактировать все документы, но видели зарплату только своего подразделения?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

В средних и крупных организациях часто складывается ситуация, когда кадровая служба разделена по зонам ответственности. Например, в компании работают три кадровика, каждый из которых закреплен за своим подразделением. Руководство ставит задачу: настроить доступ так, чтобы кадровики могли взаимозаменять друг друга (видеть и редактировать кадровые приказы по всем сотрудникам организации), но финансовая часть (оклады, премии, авансы) оставалась конфиденциальной и была доступна кадровику только по «своему» списку сотрудников.

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

Почему стандартный механизм RLS не решает задачу?

Для начала давайте выясним причину, по которой стандартная настройка ограничений доступа на уровне записей (RLS) пасует перед этим требованием. В программе 1С:ЗУП 3.1 реализован мощный механизм разграничения прав, но у него есть жесткие архитектурные рамки:

  1. Неделимость данных внутри документа. Если мы даем пользователю право на чтение и изменение документа (например, ПриемНаРаботу или КадровыйПеревод), он автоматически получает доступ ко всем реквизитам и табличным частям этого объекта. Нельзя штатными средствами разрешить редактировать реквизиты Подразделение и Должность, но при этом запретить чтение табличной части Начисления, где как раз и хранятся оклады.
  2. Ограничения по физическим лицам. Мы можем настроить доступ с точностью до физических лиц (групп доступа физлиц). В этом случае кадровик первого подразделения просто не увидит сотрудников второго подразделения. Их карточки, документы и отчеты по ним исчезнут из его видимости. Это напрямую нарушает требование «иметь возможность редактировать документы по всем подразделениям». Кадровик не сможет оформить перевод сотрудника из чужого отдела в свой, так как программа не позволит ему даже выбрать этого сотрудника.
  3. Проблема списочных документов. Если в организации используются документы ПриемНаРаботуСписком или КадровыйПереводСписком, то при ограничении прав по подразделениям возникает конфликт. Если в один общий документ внесены сотрудники из разных отделов, и у кадровика нет прав хотя бы на одного из них, система полностью заблокирует доступ ко всему документу.

Таким образом, настроить права так, чтобы кадровик видел сам документ по «чужому» сотруднику, но внутри документа у него скрывалась только финансовая часть, штатными профилями невозможно.

Анализ профиля «Кадровик (без доступа к зарплате)»

В программе существует предопределенный профиль Кадровик (без доступа к зарплате). Давайте проанализируем, как он работает. При его назначении пользователь действительно теряет доступ к просмотру плановых начислений, окладов и тарифных ставок во всей базе. Он не видит зарплатных полей в карточке сотрудника, в приказах о приеме и переводах, а также в кадровых отчетах.

Однако этот запрет действует глобально. Пользователь с таким профилем не увидит зарплату вообще ни по одному сотруднику — даже по тем, которые относятся к его собственному подразделению. Это делает невозможным выполнение требований автора темы в рамках стандартных настроек.

Как же решить эту задачу на практике? Рассмотрим два эффективных пути.

Вариант 1. Программная доработка через расширение конфигурации (рекомендуемый способ)

Если перед нами стоит задача сохранить привычный бизнес-процесс работы кадровиков, лучшим решением будет использование механизма расширений. Этот способ хорош тем, что основная конфигурация остается на поддержке, а вся логика скрытия данных выносится в отдельный программный модуль.

Давайте разберем по шагам, как реализовать такую доработку:

  1. Создадим новое расширение конфигурации и добавим в него формы документов ПриемНаРаботу, КадровыйПеревод, ИзменениеОплатыТруда, а также форму элемента справочника Сотрудники.
  2. Создадим специальный регистр сведений или используем существующие настройки (например, группы доступа), чтобы связать конкретных пользователей-кадровиков с разрешенными им подразделениями.
  3. Напишем код в обработчике события ПриСозданииНаСервере для форм документов. Программа будет проверять, совпадает ли подразделение документа с разрешенным списком подразделений для текущего пользователя.
  4. Если подразделение документа является «чужим», программа программно отключает видимость элементов формы, связанных с начислениями, окладами и фондом оплаты труда (ФОТ), либо маскирует их символами ***.

Рассмотрим пример кода, который можно внедрить в расширение для формы документа КадровыйПеревод:


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

Этот подход позволяет гибко управлять интерфейсом программы. Кадровик сможет беспрепятственно зайти в документ любого подразделения, изменить дату перевода, график работы или должность (так как эти реквизиты останутся доступными), но финансовая составляющая документа останется для него закрытой.

Вариант 2. Организационно-методический обход (без программирования)

Если у вас нет штатного программиста или политика компании запрещает внесение изменений в код программы, мы можем решить задачу путем изменения методологии работы пользователей в системе. Для этого настроим двухэтапный процесс оформления кадровых документов.

Выполним следующие настройки в программе:

  1. Всем трем кадровикам назначим типовой профиль Кадровик (без доступа к зарплате). Теперь они могут без ограничений работать со всей структурой компании, создавать документы по любым подразделениям, но физически не будут видеть оклады и начисления.
  2. Перейдем в раздел Настройки -> Расчет зарплаты и установим флаг Выполнять предварительный расчет документов.
  3. Настроим доступ для расчетчиков (бухгалтеров по расчету заработной платы) по их подразделениям. Расчетчики должны обладать правами на просмотр и редактирование начислений.

Давайте посмотрим, как будет выглядеть бизнес-процесс работы при такой схеме:

  1. Шаг 1. Кадровик заходит в программу, создает документ (например, ПриемНаРаботу) на любого сотрудника. Он заполняет вкладки с личными данными, должностью, подразделением, графиком работы и правами на отпуск. Вкладка с оплатой труда у него либо отсутствует, либо недоступна для редактирования. Кадровик записывает документ и сообщает расчетчику о том, что создан новый приказ.
  2. Шаг 2. Расчетчик соответствующего подразделения (у которого есть доступ к финансовой информации своего отдела) открывает этот документ. Благодаря своим правам он видит вкладку Оплата труда. Расчетчик заполняет тарифную ставку, положенные надбавки, проверяет плановый ФОТ и окончательно проводит документ.

Этот способ требует четкой дисциплины и слаженности действий между кадровой службой и бухгалтерией, однако он полностью базируется на типовом функционале 1С:ЗУП 3.1 и гарантирует абсолютную безопасность конфиденциальных данных без затрат на программирование.

Резюме

Мы проанализировали проблему разграничения прав доступа кадровиков в 1С:ЗУП 3.1. Подводя итоги, отметим, что выбор решения зависит от возможностей вашей компании. Если у вас есть ресурс для поддержки расширений конфигурации, то вариант с программным скрытием колонок через расширение будет наиболее удобным для конечных пользователей. Если же база находится на строгой поддержке и обновляется в автоматическом режиме, то внедрение двухэтапной схемы работы с разделением ролей на кадровиков без доступа к зарплате и расчетчиков станет надежным и безопасным решением.

← На главную