При расчете заработной платы в программе 1С:Зарплата и управление персоналом (ЗУП) 3.1 пользователи иногда сталкиваются с крайне неприятной ситуацией: при вводе документа "Работа в выходные и праздничные дни" с установленным переключателем способа оплаты "По дням", расчет в документе "Начисление зарплаты и взносов" оказывается нулевым. При этом сотрудники работают на обычном окладе по дням, и в самом документе-основании все заполнено корректно.
В этой статье мы подробно разберем, почему возникает этот сбой, как работает расчетный механизм программы под капотом, и как решить проблему буквально за два клика без привлечения программистов и изменения типового кода конфигурации.
Для начала проанализируем, как типовая конфигурация 1С:ЗУП 3.1 рассчитывает оплату праздничных и выходных дней. По умолчанию в формуле начисления используется предопределенный показатель ВремяВДняхЧасах. Формула выглядит следующим образом:
ВремяВДняхЧасах * СтоимостьДняЧаса * 2 (или без умножения на 2, если это реализовано через два отдельных начисления — доплату и оплату).
Показатель ВремяВДняхЧасах является динамическим (универсальным). Его физический смысл и единица измерения (дни или часы) определяются системой непосредственно в момент расчета в программном модуле МенеджерРасчетаЗарплаты. Для этого программа анализирует несколько факторов одновременно:
В нормальном режиме работы, если у сотрудника оклад по дням и в документе выбран вариант "По дням", показатель ВремяВДняхЧасах должен принимать значение отработанных дней. Однако в релизах ветки 3.1.34 (особенно на версиях длительной поддержки — ДП/LTS) возникает программный сбой. Внутренний расчетный механизм "залипает" в режиме работы с часами.
При этом происходит следующее:
ВремяВДняхЧасах принимает значение 0.0.Если же в документе принудительно поставить переключатель "По часам", то расчет производится корректно, так как показатель считывает заполненные часы. Но для окладников, рассчитываемых по дням, такой вариант не всегда применим из-за различий в стоимости дня и стоимости часа (особенно в месяцах с предпраздничными сокращенными днями, например, в апреле или мае).
Практический опыт пользователей на форумах показывает, что данная проблема носит характер сбоя кэша схемы расчета зарплаты. Существует простое решение, которое принудительно заставляет систему обновить внутренние связи показателей и видов времени без доработки конфигурации.
Рассмотрим пошагово, как это исправить:
Посмотрим, что происходит в этот момент внутри системы. Принудительное снятие и повторная установка этого флажка запускает фоновую транзакцию по полной перезаписи предопределенных начислений, показателей и видов времени. Программа выполняет:
ВремяВДняхЧасах.После этой манипуляции откроем документ "Начисление зарплаты и взносов", выберем нужного сотрудника и нажмем кнопку Пересчитать сотрудника. Расчет по дням мгновенно встанет на свои места, и показатель ВремяВДняхЧасах примет корректное значение в днях.
Если по каким-то причинам манипуляция с флажком почасовой оплаты на рабочей базе не принесла желаемого результата или ее выполнение заблокировано правами доступа, проанализируем другие доступные методические варианты решения проблемы.
Поскольку использование универсального показателя ВремяВДняхЧасах периодически вызывает нарекания при сложных кадровых переводах (например, когда сотрудника внутри месяца переводят с дневного оклада на часовой тариф), можно полностью исключить неоднозначность. Для этого создают два отдельных начисления вместо одного типового.
Разберем, как это настроить:
ВремяВДнях * СтоимостьДня * 2.ВремяВЧасах * СтоимостьЧаса * 2.Такой подход гарантирует, что программа никогда не запутается в единицах измерения времени, так как формулы содержат однозначно определенные показатели ВремяВДнях и ВремяВЧасах.
Иногда нулевой результат расчета связан не со временем, а со вторым показателем в формуле — СтоимостьДняЧаса. Если этот показатель равен нулю, то и весь расчет обнуляется. Это часто происходит после индексаций, кадровых переводов или обновлений информационной базы, когда ломаются регистры сведений плановых начислений.
Для исправления этой ситуации выполните следующие действия:
СтоимостьДняЧаса будет определяться корректно.Для релизов ветки 3.1.34 (особенно для версий длительной поддержки, где исправления выпускаются реже основных релизов) фирма 1С регулярно выпускает оперативные исправления — патчи (файлы с расширением .efe). Среди них часто присутствуют исправления для механизмов расчета времени работы в выходные дни.
Рекомендуется зайти в раздел Администрирование — Обслуживание — Обновление программы и проверить наличие доступных патчей для вашего релиза. Установка актуальных патчей позволит избежать подобных ошибок в будущем.