Как в 1С:ЗУП настроить расчет премии процентом в зависимости от недоработки?

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

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

Постановка задачи

Представим ситуацию: в компании принято положение о премировании, согласно которому:

  1. Если сотрудник отработал норму времени полностью — он получает 100% премии.
  2. Если недоработка составляет более 8 часов, но менее 16 часов — процент премии снижается до 95%.
  3. Если недоработка превышает 16 часов — процент премии падает до 50%.
  4. Дополнительно вводится условие дисциплины: если зафиксирован показатель «нарушения» (например, показатель Акло), премия не начисляется вовсе.

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

Решение 1: Использование вложенных тернарных операторов в формуле

Основной инструмент для создания условий в формулах 1С — это тернарный оператор ?(). Его синтаксис выглядит так: ?(Условие, Значение_Если_Истина, Значение_Если_Ложь). Для реализации нашей «ступенчатой» логики нам придется вложить один оператор в другой.

Проанализируем и составим итоговую формулу, которую необходимо ввести в настройках начисления (раздел Настройка — Начисления):


РасчетнаяБаза * 
?(Акло > 0, 0, 
    ?((НормаЧасов - ВремяВЧасах) > 16, 0.5, 
        ?((НормаЧасов - ВремяВЧасах) > 8, 0.95, 1)
    )
)

Разберем по шагам, что происходит в этой формуле:

  1. Внешнее условие дисциплины: Сначала мы проверяем показатель Акло. Если он больше нуля, система сразу возвращает множитель 0, и премия обнуляется, не проверяя остальные условия.
  2. Второе условие (недоработка > 16 часов): Если дисциплина в норме, программа вычисляет разницу между НормаЧасов и ВремяВЧасах. Если прогулов/отсутствий более 16 часов, применяется коэффициент 0.5.
  3. Третье условие (недоработка > 8 часов): Если недоработка меньше 16, но больше 8 часов, применяется коэффициент 0.95.
  4. Значение по умолчанию: Если ни одно из условий снижения не выполнено (недоработка 0–8 часов), возвращается коэффициент 1 (100% премии).

Решение 2: Настройка показателей через шкалу (наиболее надежный метод)

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

  1. Перейдем в меню Настройка — Показатели расчета зарплаты и создадим новый показатель, например, КоэффициентЗаОтработку.
  2. В поле «Назначение показателя» выберем «Для сотрудника», а тип показателя — «Числовой».
  3. Установим переключатель в положение «Зависит от другого показателя».
  4. В качестве базового показателя выберем разницу (её можно предварительно рассчитать или использовать стандартную разность НормаЧасов - ВремяВЧасах).
  5. Заполним шкалу:
    • От 0 до 8 — значение 1.
    • От 8 до 16 — значение 0.95.
    • От 16 и выше — значение 0.5.

Теперь формула начисления станет максимально простой: РасчетнаяБаза * КоэффициентЗаОтработку. Если в будущем руководство решит изменить границы (например, снижать премию уже после 4 часов недоработки), вам не придется править код формулы — достаточно будет изменить цифры в шкале показателя.

Важные нюансы учета времени

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

Показатель ВремяВЧасах против ОтработаноЧасов:

Разберем ситуацию: если вы используете показатель ОтработаноЧасов, в него могут попасть сверхурочные часы и работа в праздничные дни. Это может привести к тому, что сотрудник, имеющий прогулы, «перекроет» их сверхурочной работой, и разница НормаЧасов - ОтработаноЧасов окажется нулевой или отрицательной. Премия начислится в полном объеме, что противоречит логике дисциплинарного взыскания.

Чтобы избежать этого, рекомендуем:

  1. Использовать показатель ВремяВЧасах.
  2. На закладке «Учет времени» в настройках начисления премии отметить только основные виды времени (Явка, Вахта) и снять галочки с видов времени «Сверхурочно», «Праздники» и «Ночные».
  3. Таким образом, программа будет сравнивать норму только с фактически отработанным временем по основному графику.

Юридическая справка и логика «Акло»

Проанализируем ситуацию с показателем дисциплины. С точки зрения трудового законодательства РФ, «штрафовать» сотрудника напрямую запрещено. Однако работодатель имеет право устанавливать условия премирования.

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

Использование вложенных условий — мощный инструмент 1С:ЗУП. Комбинируя РасчетнаяБаза, НормаЧасов и правильно настроенные виды времени, можно реализовать практически любую управленческую модель оплаты труда.

← На главную