В практике расчета заработной платы в районах Крайнего Севера и приравненных к ним местностях часто возникает специфическая ситуация: у сотрудника в середине месяца изменяется процент северной надбавки (например, в связи с увеличением стажа), и в этом же месяце ему начисляется разовая премия фиксированной суммой. Типовой механизм конфигурации 1С:Зарплата и управление персоналом 3.0/3.1 настроен таким образом, что любое начисление, входящее в расчетную базу северной надбавки (СН), распределяется пропорционально времени. В результате фиксированная премия «разрезается» на части, и надбавка начисляется только на ту долю, которая пришлась на период действия нового процента. Рассмотрим подробнее, как работает этот механизм и какими способами можно добиться корректного, с точки зрения бухгалтера, расчета.
Прежде всего, разберем ситуацию на примере. Допустим, оклад сотрудника составляет 10 000 рублей, а фиксированная премия — 9 000 рублей. С 1 по 12 число месяца процент СН равен 0, а с 13 числа — 10%. Программа видит, что в месяце 20 рабочих дней, из которых 12 дней (с 13 по 30 число) действовала надбавка. Логика 1С такова: она суммирует весь доход, входящий в базу СН (10 000 + 9 000 = 19 000), делит его на 20 дней и умножает на 12 дней действия надбавки. Формула выглядит так: (10000 + 9000) / 20 * 12 * 10%.
Однако с точки зрения многих экспертов и аудиторов, фиксированная премия за конкретное достижение не должна зависеть от отработанного времени. Если она выплачена в период, когда у сотрудника уже есть право на 10% надбавки, то СН должна начисляться на всю сумму премии целиком. Выясним причину такого поведения программы: 1С рассматривает начисление как «длящееся», если в документе указан период — месяц. Система считает, что доход заработан равномерно в течение всего интервала.
Рассмотрим методический способ решения без изменения программного кода. Попробуем изменить вид документа, которым регистрируется премия. Вместо документа Премия воспользуемся документом Разовое начисление. Посмотрим на алгоритм действий:
Разовое начисление крайне важно обратить внимание на даты начала и окончания периода.Проанализируем результат: если период начисления в документе сужен до одного дня, в котором уже действует 10% СН, программа при сборе расчетной базы должна отнести всю сумму премии именно к этому периоду. Однако, как показывает практика (и сообщения участников обсуждения), в старых релизах ЗУП 3.0 этот механизм не всегда отрабатывал корректно, и программа все равно могла пытаться «растянуть» базу по всему месяцу, если в виде начисления указан учет времени как «Явка».
Если типовое распределение базы категорически не подходит, мы можем исключить премию из стандартной расчетной базы СН и добавить её в формулу через специальный показатель. Разберем этот путь по шагам:
ПремияДляСевернойНадбавки. Назначение показателя — «Для сотрудника», тип — «Денежный», используется «Только в месяце, в котором вводится значение (разовое использование)».Данные для расчета зарплаты.Северная надбавка изменим формулу. Вместо стандартной Результат = РасчетнаяБаза * ПроцентСевернойНадбавки / 100 используем:
(РасчетнаяБаза + ПремияДляСевернойНадбавки) * ПроцентСевернойНадбавки / 100.Важный нюанс: этот метод заставляет программу всегда начислять процент на этот показатель в текущем периоде. Однако, как отметили участники форума, если у сотрудника в середине месяца меняется не только процент, но и, например, ставка или подразделение, может возникнуть ситуация «двойного счета», когда показатель приплюсуется к каждому разрезу расчета. Кроме того, это неудобно для пользователей, так как им приходится вводить данные в два разных места.
Рассмотрим вариант автоматизации, предложенный в обсуждении. Чтобы не заставлять пользователей вводить данные дважды, можно использовать механизм подписок на события. Идея заключается в том, чтобы при проведении документа Премия автоматически записывать сумму в регистр сведений Значения разовых показателей расчетной базы (или аналогичный в зависимости от версии), который будет подтягиваться в формулу СН.
Пример логики кода для реализации подписки на событие ОбработкаПроведения документа Премия:
Процедура ПриПроведенииПремии(Источник, Отказ, РежимПроведения)
// Проверяем, что это наша фиксированная премия
Для Каждого СтрокаНачисления Из Источник.Начисления Цикл
Если СтрокаНачисления.Начисление = ПороговоеНачисление Тогда
// Формируем движение по регистру показателей
Запись = РегистрыСведений.ЗначенияРазовыхПоказателейСотрудников.СоздатьМенеджерЗаписи();
Запись.Сотрудник = СтрокаНачисления.Сотрудник;
Запись.Показатель = Справочники.ПоказателиРасчетаЗарплаты.НайтиПоНаименованию("ПремияФикс");
Запись.Значение = СтрокаНачисления.Результат;
Запись.ПериодДействия = Источник.Дата;
Запись.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Проанализируем риски этого решения. Основная проблема — разделение периодов. Если в месяце есть кадровые переводы или изменения процента надбавки, 1С создает несколько записей в регистре расчета (виртуальных таблицах базы). Если мы просто добавим показатель в формулу, система применит его к каждому отрезку времени, где расчетная база была ненулевой. Это приведет к завышению результата.
Выяснив причины и проанализировав способы, мы можем сделать следующие выводы:
РасчетнаяБаза.Разовое начисление и устанавливать период действия (даты начала и конца) в один день — последний день месяца. В этом случае система отнесет сумму к последнему действующему проценту СН.Посмотрим на ситуацию со стороны законодательства: если вы решите не делить премию, обязательно закрепите этот порядок в локальном нормативном акте организации. Это поможет избежать претензий при проверках, так как в программе будет реализован алгоритм, отличный от «усредненного» типового решения.
В современных релизах (ЗУП 3.1.23 и выше) разработчики добавили больше гибкости в настройки приоритетов и расчетных баз, однако описанная проблема остается актуальной для всех случаев, когда используется РасчетнаяБаза. Рекомендуем всегда проверять результат на тестовом примере перед массовым расчетом, особенно если в организации много сотрудников с часто меняющимся «северным» стажем.