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