Как разделить ведение структуры штатного расписания и ФОТ в 1С:ЗУП 3.1?

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

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

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

Вариант 1. Использование типовых ролей доступа (без программирования)

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

  1. «Добавление и изменение штатного расписания» — данная роль позволяет пользователю управлять структурой компании. Он может создавать и закрывать позиции штатного расписания, изменять количество ставок, переносить позиции между подразделениями, но не имеет прямого доступа к редактированию начислений.
  2. «Добавление и изменение начислений штатного расписания» — эта роль дает право изменять оклады, тарифные сетки, надбавки и непосредственно влиять на расчет планового ФОТ внутри позиций.

Рассмотрим, как настроить такое разделение в пользовательском режиме:

  1. Перейдем в раздел Администрирование — Настройки пользователей и прав — Профили групп доступа.
  2. Создадим новый профиль, например, «Кадровик без ФОТ». За основу можно взять типовой профиль «Старший кадровик».
  3. В списке разрешенных ролей для этого профиля найдем и снимем флажок с роли Добавление и изменение начислений штатного расписания, оставив при этом активной роль Добавление и изменение штатного расписания.
  4. Создадим второй профиль для ОТиЗ — «Экономист по труду». В нем активируем обе роли, чтобы специалисты по компенсациям могли видеть структуру и вносить финансовые изменения.
  5. Назначим созданные группы доступа соответствующим пользователям.

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

Вариант 2. Автоматизация процесса через грейды (для версии ЗУП КОРП)

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

Специалисты ОТиЗ или C&B (компенсаций и льгот) один раз настраивают в системе шкалу грейдов, где для каждой ступени жестко прописывают допустимые размеры окладов, тарифных ставок и обязательных надбавок. При создании новой позиции в штатном расписании кадровик не вводит цифры вручную — он просто выбирает необходимый грейд из выпадающего списка. Программа автоматически подтягивает все плановые начисления и рассчитывает ФОТ согласно выбранной ступени. Кадровик физически не может нарушить лимиты или увидеть скрытую от него финансовую информацию сверх того, что определено его ролью.

Вариант 3. Программное ограничение прав через механизм расширений и подписок

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

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

Создадим расширение конфигурации и добавим в него подписку на событие ПередЗаписью для документов УтверждениеШтатногоРасписания и ИзменениеШтатногоРасписания. Проанализируем пример кода, который предотвратит попытки кадровиков изменить финансовую информацию:


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

Вспомогательная функция НачисленияБылиИзменены выполняет детальное сравнение старой и новой табличных частей по колонкам Размер, ТарифнаяСтавка и Показатель. Если экономические параметры были затронуты пользователем с ролью кадровика, транзакция записи будет отменена платформой, а пользователю выведется понятное предупреждение.

Вариант 4. Программное скрытие элементов интерфейса формы

Для того чтобы интерфейс программы выглядел эстетично, и кадровики не видели пустые или заблокированные серые поля, мы можем динамически управлять элементами формы при ее открытии. Реализуем это в расширении для формы позиции штатного расписания ФормаЭлемента справочника ШтатноеРасписание:


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

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

Анализ рисков и решение проблемы совместной работы

При проектировании такой системы разделения прав важно помнить об одной существенной технологической ловушке — **блокировке совместного доступа к документам**.

Если на предприятии включена история ведения штатного расписания, то любые изменения регистрируются одноименными документами. Документ в объектной модели 1С является неделимой бизнес-сущностью. Если кадровик создаст документ Изменение штатного расписания, чтобы ввести новую ставку, этот документ заблокируется для изменения другими пользователями. Экономист ОТиЗ не сможет одновременно с кадровиком зайти в этот же документ для заполнения ФОТ — возникнет классическая ошибка блокировки базы данных.

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

Применение предложенных подходов позволит вам выстроить надежную, безопасную и удобную систему работы со штатным расписанием, которая удовлетворит строгим требованиям как ИТ-директора, так и службы безопасности предприятия.

← На главную