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

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

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

В этой статье мы подробно разберем, почему пропадают элементы интерфейса при изменении прав, как вернуть доступ к печатным формам Т-1 и Т-5, и какими способами можно гибко настроить видимость отдельных показателей начислений.

Выясним причину: почему пропадает вкладка «Оплата труда»?

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

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

Разберем проблему с печатными формами (Т-1, Т-5, Т-8)

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

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

Вариант 1. Использование стандартных профилей с доработкой

Рассмотрим вариант использования профиля Кадровик. В отличие от профиля Кадровик без доступа к зарплате, он позволяет видеть плановый ФОТ. Однако в этом случае пользователь увидит все показатели, включая ФДМС, что противоречит нашей задаче.

Если нам нужно оставить редактирование оклада, но закрыть только определенные строки, стандартные средства настройки прав (через галочки в интерфейсе) нам не помогут. Ограничение на уровне записей (RLS) в 1С также работает на уровне целых объектов (документов, справочников), а не отдельных строк табличной части «Начисления».

Вариант 2. Программное решение через расширение конфигурации

Поскольку нам требуется скрыть конкретный показатель (например, ФДМС), лучшим техническим решением будет создание расширения. Рассмотрим по шагам, как реализовать этот механизм.

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

Пример кода для расширения формы документа ПриемНаРаботу:


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

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

Вариант 3. Настройка «Проверка кадровых документов расчетчиком»

Проанализируем встроенный механизм разделения ответственности, который предусмотрен в версии КОРП. В настройках расчета зарплаты можно включить опцию Проверка кадровых документов расчетчиком.

Как это работает:

  1. Кадровик создает документ, заполняет данные о сотруднике, подразделении и должности.
  2. Вкладка Оплата труда остается для него доступной в ограниченном виде или заполняется автоматически из Штатного расписания (если оно ведется).
  3. Документ получает статус «Не проверен».
  4. Расчетчик заходит в этот же документ, проверяет начисления, вносит правки в показатели (включая ФДМС) и устанавливает флаг Документ проверен расчетчиком.

Этот метод позволяет разграничить ответственность без написания кода, но он требует четкого регламента взаимодействия между отделами.

Рекомендации по ограничению доступа к показателям

Если ваша задача — оставить вкладку доступной, но «спрятать» только ФДМС, воспользуйтесь следующим алгоритмом:

  1. Создайте собственную роль в расширении, назовите её, например, ПросмотрОкладаБезСтимулирующихВыплат.
  2. Добавьте эту роль кадровикам вместо стандартных ролей по расчету зарплаты.
  3. Используйте программный вывод данных. В коде формы документа программно анализируйте текущего пользователя. Если у него есть ваша кастомная роль, примените условное оформление к табличной части Начисления.

Пример реализации условного оформления через код:


ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("НачисленияРазмер");

ОтборОформления = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборОформления.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Начисления.Показатель");
ОтборОформления.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборОформления.ПравоеЗначение = Справочники.ПоказателиРасчетаЗарплаты.НайтиПоНаименованию("ФДМС");

ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Текст", "***");
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);

Такой подход позволит кадровику видеть, что начисление существует (это важно для понимания структуры ФОТ), но вместо суммы он будет видеть маску (звездочки), а редактирование будет заблокировано.

Резюме

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

← На главную