Как скрыть оклады в штатном расписании для кадровика в 1С:ЗУП 3.1?

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

В конфигурации «1С:Зарплата и управление персоналом 3.1» (ЗУП) часто возникает ситуация, когда специалисту по кадрам необходимо ограничить доступ к финансовым данным. Типовой профиль «Кадровик (без доступа к зарплате)», казалось бы, должен решать эту задачу. Однако на практике пользователи обнаруживают, что оклады и тарифные ставки в документе Изменение штатного расписания и в самом справочнике Штатное расписание остаются видимыми. Попытка просто отключить роль Чтение штатного расписания приводит к критической ошибке: перестает открываться справочник Сотрудники, так как система не может считать данные о должностях и позициях, жестко связанных с карточкой сотрудника.

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

Почему стандартные роли не скрывают оклады?

Проанализируем архитектуру прав доступа в ЗУП 3.1. Разработчики системы разделяют понятия «Начисленная зарплата» (фактические расчеты) и «Плановые начисления» (ФОТ, оклады). Профиль «без доступа к зарплате» блокирует доступ к расчетным листкам, ведомостям и начислениям, но оставляет доступ к плановым показателям. Это необходимо для того, чтобы кадровик мог формировать печатные формы трудовых договоров и приказов, где оклад является обязательным реквизитом.

Рассмотрим подробнее причины, по которым простое манипулирование ролями не дает нужного результата:

  1. Связь объектов метаданных: Объект Справочник.Сотрудники имеет тесную связь с объектом Справочник.ШтатноеРасписание. Если у пользователя нет права Чтение на штатное расписание, форма сотрудника просто не инициализируется.
  2. Плановые начисления: Оклад в штатном расписании — это не «зарплата» в терминах регистров расчета, а «показатель планового ФОТ». Права на эти данные часто зашиты в общие кадровые роли.

Решение №1: Использование механизма расширений (Рекомендуемый способ)

Самый корректный и современный способ — создать расширение, которое будет управлять видимостью полей на формах. Это позволит нам оставить пользователю право Чтение (чтобы справочники работали), но убрать право Просмотр для конкретных визуальных элементов.

Выясним алгоритм действий при создании расширения:

  1. Создаем новое расширение в конфигураторе.
  2. Добавляем в расширение форму документа ИзменениеШтатногоРасписания и форму справочника ШтатноеРасписание.
  3. В модуле формы используем обработчик события ПриСозданииНаСервере.

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


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

Этот метод хорош тем, что он не ломает логику программы. 1С продолжает «видеть» данные на уровне базы данных, но пользователь не видит их на экране.

Решение №2: Разделение прав на «Чтение» и «Просмотр»

Проанализируем техническую разницу между правами доступа в 1С. Право «Чтение» позволяет программному коду получать данные из таблицы БД. Право «Просмотр» определяет, увидит ли пользователь эти данные в списках, отчетах и формах.

Чтобы решить проблему без написания кода, выполним следующие шаги в конфигураторе (или через создание своей роли):

  1. Создадим новую роль, например, ЧтениеШтатногоРасписанияБезПросмотраСумм.
  2. В этой роли для объекта Справочник.ШтатноеРасписание (и связанных документов) установим галочку Чтение, но снимем галочку Просмотр.
  3. Добавим эту роль в профиль кадровика вместо стандартной роли чтения штатки.

В результате справочник Сотрудники будет открываться корректно, так как право на чтение данных в базе есть, но поля в интерфейсе останутся пустыми или недоступными для пользователя.

Решение №3: Программный запрет открытия форм

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

Рассмотрим пример реализации в модуле формы документа:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Не РольДоступна("ПолныеПрава") И Не РольДоступна("ДоступКЗарплате") Тогда
        Сообщить("У вас недостаточно прав для просмотра финансовых параметров штатного расписания.");
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

Однако помните, что полное закрытие документа может помешать кадровику видеть другие важные данные: названия подразделений, количество ставок или графики работы. Поэтому первый вариант с расширением полей является более предпочтительным для полноценной работы HR-отдела.

Важные нюансы и плановый ФОТ

Нужно понимать, что в ЗУП 3.1 оклады тесно переплетены с понятием Фонда оплаты труда (ФОТ). Даже если вы скроете колонку «Оклад», пользователь может увидеть данные в колонке «ФОТ» или в расшифровке начислений. Поэтому при настройке видимости в расширении обязательно проверяйте все элементы формы, связанные с данными объектами:

Резюмируем: Типовая настройка прав в ЗУП 3.1 не обеспечивает полной невидимости окладов для кадровика из-за особенностей архитектуры штатного расписания. Лучшим выходом является использование расширения конфигурации, которое точечно скрывает финансовые реквизиты на формах, сохраняя при этом доступ к кадровой логике и справочнику сотрудников.

← На главную