При настройке произвольных начислений в программе 1С:Зарплата и управление персоналом 3.1 (например, премий или надбавок, зависящих от отработанного времени) пользователи часто сталкиваются с непонятным поведением системы. Даже если у сотрудника был оформлен отпуск или больничный, предопределенный показатель ВремяВДнях все равно возвращает полную норму рабочих дней за месяц, как будто сотрудник отработал его целиком.
В этой статье мы подробно разберем логику работы программы, выясним, почему вкладка «Учет времени» сама по себе не решает проблему, и рассмотрим правильные технические варианты настройки начислений.
Для начала проанализируем, как система 1С:ЗУП 3.1 определяет период действия начисления и рассчитывает временные показатели. Пользователи часто полагают, что достаточно указать вид времени «Явка» на вкладке «Учет времени» в настройках начисления, чтобы программа автоматически отсекла все периоды отсутствий. Однако это не так.
Логика программы строится на следующих правилах:
ВремяВДнях, ВремяВЧасах, ОтработаноДней) рассчитываются строго за фактический период действия конкретного начисления. ВремяВДнях запрашивает данные за весь этот период и возвращает полную сумму рабочих дней по графику сотрудника, игнорируя введенный документ «Отпуск» или «Больничный лист» .Чтобы показатели времени корректно уменьшались на дни отсутствий сотрудника, необходимо использовать типовой механизм вытеснения видов расчета. Для этого выполним следующие шаги:
После такой настройки период действия нашей премии будет автоматически уменьшаться на периоды зарегистрированных в системе отсутствий. Как результат, показатель ВремяВДнях вернет количество реально отработанных дней сотрудником.
Если расчет премии должен производиться пропорционально дням от некоторой фиксированной суммы, в формуле начисления на вкладке «Основное» следует использовать классическую конструкцию:
СуммаПремии * ВремяВДнях / НормаДней
При настроенном вытеснении показатель ВремяВДнях вернет фактически отработанное время, а НормаДней — полную норму дней за месяц по графику сотрудника.
Существует еще один очень удобный способ настройки подобных премий, который позволяет избежать сложного ручного подбора вытесняющих начислений на вкладке «Приоритет». Это расчет процентом от базы.</p
Рассмотрим эту логику подробнее. Нам известно, что основное начисление сотрудника (например, «Оплата по окладу») уже настроено в программе корректно: для него по умолчанию заданы все приоритеты вытеснения, и оклад всегда начисляется пропорционально отработанным дням.
Мы можем привязать расчет нашей премии к начисленному окладу. Для этого настроим начисление следующим образом:
РасчетнаяБаза * ПроцентПремии / 100При таком подходе премия автоматически рассчитается только за фактически отработанное время, так как сам базовый оклад уже уменьшен пропорционально дням отсутствия (включая отпуска и больничные). Настраивать вкладку «Приоритет» для самой премии в этом случае не потребуется.
При работе с механизмами вытеснения и показателями времени в 1С:ЗУП 3.1 следует учитывать несколько важных технических ограничений:
ВремяВДняхЧасах в формулах пользовательских расчетов. Он может давать сбои и приводить к некорректному поведению системы, если в организации практикуются переводы сотрудников с подневного учета времени на суммированный (почасовой) или наоборот. Надежнее создавать отдельные начисления под окладников (с использованием ВремяВДнях) и под часовиков (с использованием ВремяВЧасах).