Начисление квартальной премии — регулярная задача при расчете заработной платы, однако в программе 1С:ЗУП (или 1С:ЗКГУ) стандартная настройка может вызывать сложности. Основная проблема возникает, когда премия должна рассчитываться строго исходя из текущего месячного оклада на момент начисления, умноженного на долю фактически отработанного времени за весь квартал (3 месяца) к общей норме времени за этот же период.
Разберем подробно, почему стандартная формула не всегда дает желаемый результат, какие математические и технические ограничения существуют в типовых механизмах программы и как правильно настроить данный расчет.
Проанализируем типовое поведение программы при настройке начислений с назначением «Премия» или «Разовое начисление»:
ОтработаноВремениВДнях, НормаВремениВДнях, ОтработаноВремениВЧасах и НормаВремениВЧасах всегда возвращают данные только за период действия текущего документа (в пределах одного текущего месяца начисления). Собрать суммарное время за произвольный многомесячный базовый период напрямую через показатели времени невозможно.РасчетнаяБаза. Количество дней и часов отработанного времени за эти месяцы через базу в формулу не передается.Рассмотрим вариант, который часто применяют пользователи при настройке разового начисления с базовым периодом в 3 месяца:
Формула начисления: (РасчетнаяБаза / ОтработаноВремениВДнях) * (ОтработаноВремениВДнях / 3)
Разберем математический смысл этого выражения. При сокращении числителя и знаменателя формула превращается в: РасчетнаяБаза / 3. В данном случае РасчетнаяБаза представляет собой сумму начислений по окладу за предыдущие 3 месяца.
Посмотрим на примеры работы этого алгоритма:
60 000 / 3 = 20 000 руб. В этой ситуации премия рассчитывается корректно относительно фактически полученного дохода.(10 000 + 10 000 + 10 000) / 3 = 10 000 руб. Однако если по положению о премировании требуется взять текущий оклад (20 000 руб.) и умножить на общее отношение времени за квартал (50 отработанных дней / 60 дней нормы), то результат должен быть: 20 000 * 50 / 60 = 16 666,67 руб.Таким образом, формула через РасчетнаяБаза подходит для начисления премии от среднего фактического заработка за квартал, но не решает задачу начисления от текущего оклада.
Разберем наиболее гибкий и точный способ расчета премии от текущего оклада без доработки конфигурации. Для этого настроим ввод квартального коэффициента времени или совокупных показателей времени за 3 месяца.
КоэффициентОтработанногоВремениЗаКвартал;Оклад * КоэффициентОтработанногоВремениЗаКвартал (или Оклад * (ФактДнейКвартал / НормаДнейКвартал), если создать два раздельных показателя для нормы и факта).Если требуется полностью автоматизировать расчет коэффициента внутри программы без ручного ввода показателей времени за квартал, применим расчетную схему со служебным начислением:
(ОтработаноВремениВДнях / НормаВремениВДнях) / 3.Оклад * РасчетнаяБаза.В этом случае за каждый отработанный месяц накапливается ровно одна треть доли времени, а при начислении премии РасчетнаяБаза суммирует эти доли, формируя итоговый квартальный коэффициент отработанного времени, который умножается на актуальный оклад сотрудника.
Для исключения ручного подсчета нормы и факта за 3 месяца часто применяют механизм внешних подключаемых обработок заполнения табличной части документа Премия (без изменения конфигурации и снятия с поддержки):
Оклад * ФактДней / НормаДней и заполняет строки документа «Премия» готовыми суммами.Обратим внимание на вкладку Средний заработок в настройках создаваемого вида начисления: