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