В практике кадрового учета часто возникает задача: рассчитать сотруднику доплату или специфическое начисление не за весь месяц, а только за те дни, когда он фактически работал, при этом базой для расчета должна выступать именно норма часов за этот период. Ситуация осложняется, если сотрудник работает сверх графика (переработки), и эти часы фиксируются как «Явка», что сбивает стандартные формулы. Разберем детально, как решить эту задачу в программе «1С:Зарплата и управление персоналом 3.1».
Прежде чем переходить к решениям, проанализируем, почему типовая формула ФиксированнаяСумма * ВремяВЧасах / НормаЧасов часто не подходит. В системе 1С:ЗУП показатель НормаЧасов возвращает норму за весь месяц по графику сотрудника. Показатель ВремяВЧасах возвращает фактически отработанное время. Если сотрудник отработал 15 дней из 20, но при этом в эти 15 дней он выходил на подработки, показатель ВремяВЧасах может оказаться больше или равен НормаЧасов за полный месяц. В итоге математическая логика «оплаты за кусок нормы» нарушается.
Если нам нужно получить «норму за отработанный период» (например, те самые 152 часа из 168 возможных, если человек болел часть месяца), мы можем применить пропорцию. Система всегда знает норму дней за месяц и норму часов за месяц, а также сколько дней сотрудник фактически отработал по графику.
Рассмотрим формулу:
Результат = ФиксированнаяСумма * (ВремяВДнях / НормаДней) * НормаЧасов
Разберем, как это работает по шагам:
ВремяВДнях / НормаДней — мы выясняем долю отработанного времени в днях относительно месячного графика.НормаЧасов (за месяц), мы получаем эквивалент нормы часов, который приходится на фактически отработанные дни.Проанализируем ситуацию, когда в показатель ВремяВЧасах попадают лишние данные. В 1С:ЗУП заложено правило: если вы хотите, чтобы формула работала корректно в части нормы, нельзя смешивать разные типы времени в одном коде.
Если сотрудники работают сверх графика, эти часы должны регистрироваться не видом времени «Явка» (Я), а отдельными видами времени, например, «Сверхурочно» (С) или «Праздничные» (РВ). В этом случае:
ВремяВЧасах будет включать только те часы, которые сотрудник отработал в рамках своего основного графика.Если типовые формулы не справляются из-за сложности графиков, можно использовать механизм Расчетной базы. Этот метод считается «продвинутым» и позволяет очень точно отсекать периоды. Посмотрим на алгоритм настройки:
РасчетнаяБаза.Система сама рассчитает базу только за те интервалы, когда сотрудник не отсутствовал, фактически вычислив норму за «оставшийся» период месяца.
Выясним причину, по которой норма может считаться неверно при нестандартной работе. Если сотрудник постоянно работает не по основному графику предприятия, для него «нормой» должен стать Индивидуальный график (документ «Индивидуальный график»).
Когда вы вводите этот документ, системный показатель НормаЧасов в формулах начинает подтягивать данные именно из него. Это позволяет «подогнать» норму под конкретную производственную ситуацию сотрудника. Если в индивидуальном графике на период болезни будут стоять выходные или пустоты, то норма за месяц уменьшится, и расчет будет производиться исходя из уточненных данных.
При создании начисления (раздел «Настройка» — «Начисления») обратим внимание на вкладку «Учет времени». Чтобы расчет пропорционально отрабатываемому времени за период работал корректно:
Рассмотрим пример настройки сложной формулы для доплаты за недоработки или корректировки нормы:
Результат = ТарифнаяСтавка * Макс( ( (ВремяВДнях / НормаДней) * НормаЧасов ) - ВремяВЧасах, 0)
В данной формуле мы принудительно вычисляем норму за период через дни и сравниваем её с фактически отработанными часами. Функция Макс(..., 0) гарантирует, что если сотрудник отработал больше нормы, отрицательного результата не будет.
Для корректного определения нормы времени за произвольный период в 1С:ЗУП 3.1 мы рекомендуем использовать комбинированный подход: либо математический пересчет через отношение ВремяВДнях / НормаДней, либо строгое разделение видов времени в табеле, чтобы переработки не попадали в код «Явка». Это обеспечит точность расчетов даже при наличии длительных отсутствий (болезней, отпусков) в середине месяца.