В этой статье разберем частую ситуацию при расчете заработной платы в 1С:ЗУП. Сотруднику, работающему на неполной ставке (например, 0.5), назначается фиксированная доплата. Однако при расчете стандартной формулой программа уменьшает сумму доплаты пропорционально ставке, даже если сотрудник отработал все свои часы по графику. Выясним, почему так происходит и как настроить формулу, чтобы она работала корректно: начисляла полную сумму за полностью отработанный месяц и пропорционально уменьшала ее при наличии отсутствий (отпуск, больничный).
Давайте проанализируем исходную ситуацию. Сотрудник работает на полставки, оплата по окладу (по часам). Ему назначена доплата, например, 10 000 руб., с формулой:
Доплата = СуммаДоплаты * ВремяВЧасах / НормаЧасов
Предположим, в месяце норма по графику полного рабочего дня (пятидневка) составляет 159 часов. График сотрудника на полставки предусматривает 79 часов. Если сотрудник отработал все свои 79 часов без отсутствий, расчет будет выглядеть так:
10000 * 79 / 159 = 4968,55 руб.
Причина такого поведения кроется в настройках графиков работы в 1С:ЗУП. Когда мы создаем график неполного рабочего времени (например, для сотрудника на 0.5 ставки), мы обычно указываем, что норму времени нужно считать по другому, основному графику (например, по графику полного дня). Из-за этой настройки показатель НормаЧасов в формуле всегда берет значение из графика полного дня (159 часов), в то время как показатель ВремяВЧасах отражает фактически отработанные часы по графику сотрудника (79 часов). Это и приводит к нежелательному уменьшению доплаты.
Наша задача — изменить формулу так, чтобы знаменатель (норма времени) соответствовал норме по графику самого сотрудника, а не по графику полного дня. При этом, если у сотрудника были отсутствия, доплата должна корректно уменьшаться.
Самый логичный способ скорректировать расчет — это привести норму полного рабочего времени к норме, соответствующей ставке сотрудника. Для этого в 1С:ЗУП можно использовать предопределенный показатель ДоляНеполногоРабочегоВремени.
Формула будет выглядеть следующим образом:
Результат = СуммаДоплаты * ВремяВЧасах / (НормаЧасов * ДоляНеполногоРабочегоВремени)
Рассмотрим, как она работает на нашем примере:
НормаЧасов — по-прежнему берется из графика полного дня, 159 часов.ДоляНеполногоРабочегоВремени — для сотрудника на полставки этот показатель будет равен 0.5.ВремяВЧасах — фактически отработанные часы, 79.Подставляем значения в формулу:
10000 * 79 / (159 * 0.5) = 10000 * 79 / 79.5 ≈ 9937,11 руб.
Как видим, результат уже очень близок к желаемому. Небольшая погрешность возникает из-за округления часов в графиках. Чтобы добиться абсолютной точности, можно производить расчет в днях, если это применимо к вашей доплате:
Результат = СуммаДоплаты * ВремяВДнях / (НормаДней * ДоляНеполногоРабочегоВремени)
При расчете в днях (например, 10 отработано из 20 по норме полного дня, ставка 0.5):
10000 * 10 / (20 * 0.5) = 10000 * 10 / 10 = 10000 руб.
Важный момент: этот способ будет корректно работать только в том случае, если в настройках графика неполного рабочего времени сотрудника правильно указан график полного рабочего времени, на основании которого и рассчитывается норма.
Существует более прямой и изящный способ, который позволяет сразу получить норму часов из индивидуального графика сотрудника. Для этого в 1С:ЗУП есть специальный предопределенный показатель.
Этот показатель называется НормаЧасовПоГрафикуНеполногоРабочегоВремени (или НормаДнейПоГрафикуНеполногоРабочегоВремени для расчета в днях).
Он возвращает норму времени именно по графику, назначенному сотруднику, игнорируя норму по графику полного дня. Формула становится значительно проще и понятнее:
Результат = СуммаДоплаты * ВремяВЧасах / НормаЧасовПоГрафикуНеполногоРабочегоВремени
Давайте посмотрим, как эта формула сработает для нашего случая:
ВремяВЧасах — фактически отработано 79 часов.НормаЧасовПоГрафикуНеполногоРабочегоВремени — норма по графику сотрудника, также равна 79 часам.Расчет при полностью отработанном месяце:
10000 * 79 / 79 = 10000 руб.
Проверим, как формула отработает при наличии отсутствий. Допустим, сотрудник один день был в отпуске за свой счет и отработал 75 часов вместо 79.
10000 * 75 / 79 = 9493,67 руб.
Результат абсолютно корректен: доплата уменьшилась пропорционально времени отсутствия относительно личной нормы сотрудника. Именно такого поведения мы и добивались.
Мы рассмотрели два эффективных способа настройки формулы для расчета доплаты сотруднику на неполной ставке:
СуммаДоплаты * ВремяВЧасах / (НормаЧасов * ДоляНеполногоРабочегоВремени). Этот метод корректирует норму полного дня, умножая ее на ставку сотрудника.СуммаДоплаты * ВремяВЧасах / НормаЧасовПоГрафикуНеполногоРабочегоВремени. Этот метод напрямую использует норму из графика сотрудника, что делает формулу проще и точнее.В большинстве случаев второй способ является предпочтительным из-за его простоты и точности. Главное — помнить, что корректность любых расчетов в 1С:ЗУП начинается с правильной настройки исходных данных, в данном случае — графиков работы сотрудников.