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