Почему в 1С:ЗУП 3.1 оплата работы в выходной день по дням рассчитывается нулевой и как это исправить?

Пользователь 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Бухгалтерский учет
← На главную

При расчете заработной платы в программе 1С:Зарплата и управление персоналом (ЗУП) 3.1 пользователи иногда сталкиваются с крайне неприятной ситуацией: при вводе документа "Работа в выходные и праздничные дни" с установленным переключателем способа оплаты "По дням", расчет в документе "Начисление зарплаты и взносов" оказывается нулевым. При этом сотрудники работают на обычном окладе по дням, и в самом документе-основании все заполнено корректно.

В этой статье мы подробно разберем, почему возникает этот сбой, как работает расчетный механизм программы под капотом, и как решить проблему буквально за два клика без привлечения программистов и изменения типового кода конфигурации.

Выясняем причину: как работает показатель ВремяВДняхЧасах

Для начала проанализируем, как типовая конфигурация 1С:ЗУП 3.1 рассчитывает оплату праздничных и выходных дней. По умолчанию в формуле начисления используется предопределенный показатель ВремяВДняхЧасах. Формула выглядит следующим образом:

ВремяВДняхЧасах * СтоимостьДняЧаса * 2 (или без умножения на 2, если это реализовано через два отдельных начисления — доплату и оплату).

Показатель ВремяВДняхЧасах является динамическим (универсальным). Его физический смысл и единица измерения (дни или часы) определяются системой непосредственно в момент расчета в программном модуле МенеджерРасчетаЗарплаты. Для этого программа анализирует несколько факторов одновременно:

В нормальном режиме работы, если у сотрудника оклад по дням и в документе выбран вариант "По дням", показатель ВремяВДняхЧасах должен принимать значение отработанных дней. Однако в релизах ветки 3.1.34 (особенно на версиях длительной поддержки — ДП/LTS) возникает программный сбой. Внутренний расчетный механизм "залипает" в режиме работы с часами.

При этом происходит следующее:

  1. В документе регистрации работы в выходной день пользователь указывает оплату по дням и вносит, например, 1 день. Поле часов при этом остается пустым (равным нулю).
  2. При расчете зарплаты программа считывает данные, но из-за сбоя кэша игнорирует признак "По дням" и пытается прочитать значение часов.
  3. Поскольку часы в документе не заполнены, показатель ВремяВДняхЧасах принимает значение 0.
  4. Происходит умножение на ноль, и итоговый результат начисления сбрасывается в 0.

Если же в документе принудительно поставить переключатель "По часам", то расчет производится корректно, так как показатель считывает заполненные часы. Но для окладников, рассчитываемых по дням, такой вариант не всегда применим из-за различий в стоимости дня и стоимости часа (особенно в месяцах с предпраздничными сокращенными днями, например, в апреле или мае).

Пошаговое решение: сброс настроек почасовой оплаты ("магическое" решение)

Практический опыт пользователей на форумах показывает, что данная проблема носит характер сбоя кэша схемы расчета зарплаты. Существует простое решение, которое принудительно заставляет систему обновить внутренние связи показателей и видов времени без доработки конфигурации.

Рассмотрим пошагово, как это исправить:

  1. Перейдем в раздел меню Настройка, далее откроем пункт Расчет зарплаты.
  2. В открывшемся окне найдем и нажмем на синюю гиперссылку Настройка состава начислений и удержаний.
  3. В появившемся окне перейдем на вкладку Почасовая оплата.
  4. Снимем флажок "Применение почасовой оплаты".
  5. Нажмем кнопку Применить и закрыть (или "Записать и закрыть"). Настройки запишутся, база обновит структуру данных. При этом в документах работы в выходные временно исчезнет возможность указывать часы.
  6. Снова откроем Настройка состава начислений и удержаний, перейдем на вкладку Почасовая оплата и вернем флажок "Применение почасовой оплаты" на место.
  7. Снова нажмем кнопку Применить и закрыть для сохранения изменений.

Посмотрим, что происходит в этот момент внутри системы. Принудительное снятие и повторная установка этого флажка запускает фоновую транзакцию по полной перезаписи предопределенных начислений, показателей и видов времени. Программа выполняет:

После этой манипуляции откроем документ "Начисление зарплаты и взносов", выберем нужного сотрудника и нажмем кнопку Пересчитать сотрудника. Расчет по дням мгновенно встанет на свои места, и показатель ВремяВДняхЧасах примет корректное значение в днях.

Альтернативные методы решения проблемы

Если по каким-то причинам манипуляция с флажком почасовой оплаты на рабочей базе не принесла желаемого результата или ее выполнение заблокировано правами доступа, проанализируем другие доступные методические варианты решения проблемы.

Вариант 1. Разделение видов начислений (уход от универсального показателя)

Поскольку использование универсального показателя ВремяВДняхЧасах периодически вызывает нарекания при сложных кадровых переводах (например, когда сотрудника внутри месяца переводят с дневного оклада на часовой тариф), можно полностью исключить неоднозначность. Для этого создают два отдельных начисления вместо одного типового.

Разберем, как это настроить:

  1. Перейдем в раздел Настройка — Начисления.
  2. Найдем типовое начисление Оплата работы в праздничные и выходные дни и создадим его копированием два новых начисления:
    • Оплата работы в выходные (в днях). В формуле укажем жесткие показатели:
      ВремяВДнях * СтоимостьДня * 2.
    • Оплата работы в выходные (в часах). В формуле укажем показатели:
      ВремяВЧасах * СтоимостьЧаса * 2.
  3. В настройках каждого начисления на вкладке Учет времени укажем соответствующий вид времени (для дней — "Праздники без оплаты" с детализацией по дням, для часов — по часам).

Такой подход гарантирует, что программа никогда не запутается в единицах измерения времени, так как формулы содержат однозначно определенные показатели ВремяВДнях и ВремяВЧасах.

Вариант 2. Пересчет планового ФОТ

Иногда нулевой результат расчета связан не со временем, а со вторым показателем в формуле — СтоимостьДняЧаса. Если этот показатель равен нулю, то и весь расчет обнуляется. Это часто происходит после индексаций, кадровых переводов или обновлений информационной базы, когда ломаются регистры сведений плановых начислений.

Для исправления этой ситуации выполните следующие действия:

  1. Перейдите в раздел Зарплата — Сервис.
  2. Выберите пункт Пересчет тарифных ставок сотрудников (в некоторых релизах это может называться "Пересчет планового ФОТ").
  3. Выберите период, за который производится расчет (например, текущий месяц), и запустите процедуру пересчета. Система заново пересчитает совокупную тарифную ставку для каждого сотрудника, после чего показатель СтоимостьДняЧаса будет определяться корректно.

Вариант 3. Установка исправляющих патчей от 1С

Для релизов ветки 3.1.34 (особенно для версий длительной поддержки, где исправления выпускаются реже основных релизов) фирма 1С регулярно выпускает оперативные исправления — патчи (файлы с расширением .efe). Среди них часто присутствуют исправления для механизмов расчета времени работы в выходные дни.

Рекомендуется зайти в раздел Администрирование — Обслуживание — Обновление программы и проверить наличие доступных патчей для вашего релиза. Установка актуальных патчей позволит избежать подобных ошибок в будущем.

← На главную