Проблема расчета стоимости часа для оплаты сверхурочных и переработок в 1С:Зарплата и управление персоналом (ЗУП) 3.1 часто обостряется, когда сотрудник в середине месяца меняет условия оплаты труда или оформляется приказ о переводе на другую должность. Программа начинает «двоить» оклады или неверно определять норму и факт времени для расчета СтоимостьЧаса. Разберем, почему это происходит, как на расчет влияют изменения в ТК РФ от сентября 2024 года и какими техническими средствами можно добиться правильных цифр.
Проанализируем ситуацию: если сотрудник в середине месяца переводится на другой оклад (даже на короткий срок), система разбивает месяц на несколько расчетных периодов, что отражается в интервальном регистре кадровой истории. В типовом алгоритме показатель СтоимостьДняЧасаСУчетомРазовыхНачислений должен собирать все начисления, входящие в совокупную ставку, и делить их на норму времени. Однако при наличии кадрового изменения внутри месяца возникает зарегистрированная ошибка 60018258.
Суть ошибки заключается в том, что когда начисление разбивается по периодам, система может некорректно интерпретировать разовые начисления или фиксированные надбавки (подобные проблемы часто всплывают, когда в отчетность не попадают изменения окладов). Вместо того чтобы распределить их пропорционально, 1С может прибавить полную сумму надбавки к каждому из «осколков» расчетного периода или, наоборот, потерять часть базы. В результате совокупная тарифная ставка (СТС) существенно отклоняется от ожидаемой.
Рассмотрим важный контекст, который усложняет задачу. С 1 сентября 2024 года вступили в силу изменения в статью 152 ТК РФ (Федеральный закон № 91-ФЗ). Теперь работодатель обязан при расчете сверхурочных учитывать не только «голый» оклад, но и все компенсационные и стимулирующие выплаты. Это означает, что использование упрощенного показателя СтоимостьЧаса, основанного только на плановом окладе, во многих случаях становится нелегитимным.
Для реализации этого в ЗУП необходимо настроить состав совокупной тарифной ставки в меню «Настройка — Расчет зарплаты». Но именно здесь мы сталкиваемся с тем, что штатный механизм пересчета СТС часто дает сбой при кадровых изменениях.
Прежде чем переходить к программированию, проверим базовые настройки. Выясним, правильно ли программа определяет базу для расчета стоимости часа. Пройдем по шагам:
Порядок пересчета основной тарифной ставки в стоимость часа. В карточке сотрудника (раздел «Оплата труда») можно выбрать: «По норме времени графика», «По производственному календарю» или «По среднемесячному количеству часов».Если после этих настроек расчет в документе Начисление зарплаты и взносов остается неверным (например, оклад «задваивается» в базе расчета), значит, вы столкнулись с системной ошибкой разбиения периодов. Перейдем к альтернативным решениям.
Рассмотрим алгоритм, который позволяет обойти ошибку 1С путем пересчета стоимости часа «по факту». Суть метода заключается в том, что мы не пытаемся заставить типовой механизм работать правильно, а корректируем результат после заполнения документа Начисление зарплаты и взносов.
Логика расчета в данном случае должна быть следующей:
Стоимость часа = (Сумма всех основных начислений за месяц + Сумма разовых начислений из СТС) / Фактически оплаченное время в часах.
Для реализации этого программисту необходимо написать обработку, которая:
НачисленияУдержанияПоСотрудникам и ОтработанноеВремяПоСотрудникам за текущий месяц.ЭтоРучнойРасчет в строке табличной части и инициирует пересчет зависимых показателей (НДФЛ, взносы).Пример фрагмента кода для получения данных:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(Начисления.Результат) КАК СуммаБазы,
| СУММА(Начисления.ОтработаноЧасов) КАК Часы
|ИЗ
| РегистрРасчета.Начисления КАК Начисления
|ГДЕ
| Начисления.Сотрудник = &Сотрудник
| И Начисления.ПериодРегистрации = &ПериодРегистрации
| И Начисления.ВидРасчета В (&СписокВходящихВСТС)";
Разберем более изящное решение, которое предложили эксперты на форуме. Вместо правки типовых записей («чернения» строк), создается расширение, которое добавляет в документ Регистрация переработок или Начисление зарплаты новую команду.
Проанализируем преимущества этого подхода:
Посмотрим на пример реализации ТЗ для такого расширения:
(ВсеДеньги / ВсеЧасы) / СтандартнаяСтоимостьЧаса.Выясним, как быть с сотрудниками на суммированном учете. Типовой механизм ЗУП считает СТС на момент расчета (обычно на конец квартала или года). Если внутри учетного периода менялась тарифная ставка, 1С возьмет ставку последнего месяца. Это вызывает недовольство сотрудников, если ставка в начале периода была выше (или наоборот).
В этом случае единственным верным решением будет использование средневзвешенной стоимости часа за весь учетный период. Это требует написания более сложного запроса к регистру расчета, который соберет данные за 3, 6 или 12 месяцев.
Пока статус ошибки 60018258 в базе 1С значится как «Ожидание инициатора», автоматического исправления в ближайших релизах ждать не стоит. Для корректного учета сверхурочных в условиях кадровых перемещений и новых требований ТК РФ рекомендуем:
Начисление зарплаты только для итоговых сумм переработок, чтобы не нарушать работу штатных механизмов для остальных видов начислений.