В практике кадрового учета часто возникает задача настройки гибкой системы премирования. Например, когда размер премии должен уменьшаться ступенчато в зависимости от того, сколько часов сотрудник не отработал до своей нормы. В этой статье мы подробно разберем, как реализовать такую логику в программе 1С:Зарплата и управление персоналом (ЗУП 3.1), используя механизмы формул и показателей расчета зарплаты.
Представим ситуацию: в компании принято положение о премировании, согласно которому:
Акло), премия не начисляется вовсе.Рассмотрим подробнее, как реализовать это через формулы и альтернативные механизмы системы.
Основной инструмент для создания условий в формулах 1С — это тернарный оператор ?(). Его синтаксис выглядит так: ?(Условие, Значение_Если_Истина, Значение_Если_Ложь). Для реализации нашей «ступенчатой» логики нам придется вложить один оператор в другой.
Проанализируем и составим итоговую формулу, которую необходимо ввести в настройках начисления (раздел Настройка — Начисления):
РасчетнаяБаза *
?(Акло > 0, 0,
?((НормаЧасов - ВремяВЧасах) > 16, 0.5,
?((НормаЧасов - ВремяВЧасах) > 8, 0.95, 1)
)
)
Разберем по шагам, что происходит в этой формуле:
Акло. Если он больше нуля, система сразу возвращает множитель 0, и премия обнуляется, не проверяя остальные условия.НормаЧасов и ВремяВЧасах. Если прогулов/отсутствий более 16 часов, применяется коэффициент 0.5.0.95.1 (100% премии).Использование огромных формул с множеством знаков вопроса неудобно для чтения и последующей правки. В 1С:ЗУП существует более изящный метод — «Показатели расчета зарплаты со шкалой». Разберем, как это настроить:
КоэффициентЗаОтработку.НормаЧасов - ВремяВЧасах).Теперь формула начисления станет максимально простой: РасчетнаяБаза * КоэффициентЗаОтработку. Если в будущем руководство решит изменить границы (например, снижать премию уже после 4 часов недоработки), вам не придется править код формулы — достаточно будет изменить цифры в шкале показателя.
При расчете недоработки крайне важно правильно выбрать показатели времени. Выясним причину, по которой у многих пользователей возникают ошибки при расчетах:
Показатель ВремяВЧасах против ОтработаноЧасов:
Разберем ситуацию: если вы используете показатель ОтработаноЧасов, в него могут попасть сверхурочные часы и работа в праздничные дни. Это может привести к тому, что сотрудник, имеющий прогулы, «перекроет» их сверхурочной работой, и разница НормаЧасов - ОтработаноЧасов окажется нулевой или отрицательной. Премия начислится в полном объеме, что противоречит логике дисциплинарного взыскания.
Чтобы избежать этого, рекомендуем:
ВремяВЧасах.Проанализируем ситуацию с показателем дисциплины. С точки зрения трудового законодательства РФ, «штрафовать» сотрудника напрямую запрещено. Однако работодатель имеет право устанавливать условия премирования.
Посмотрим на пример показателя Акло. Чтобы его использование было законным, в «Положении о премировании» организации должно быть зафиксировано, что премия является стимулирующей выплатой и выплачивается при отсутствии дисциплинарных взысканий. В ЗУП для автоматизации этого процесса лучше использовать не ручной ввод показателя, а регистрацию фактов прогулов или неявок через документы «Отсутствие (болезнь, прогул, неявка)». В этом случае система сама зафиксирует отклонение от НормаЧасов, и формула сработает автоматически.
Использование вложенных условий — мощный инструмент 1С:ЗУП. Комбинируя РасчетнаяБаза, НормаЧасов и правильно настроенные виды времени, можно реализовать практически любую управленческую модель оплаты труда.