Как исправить неверный расчет стоимости часа при учете отмененных начислений в 1С:ЗУП 3.1.30

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

В новых версиях 1С:Зарплата и Управление Персоналом (3.1.30 и выше) разработчики представили новый механизм для расчета оплаты сверхурочных и работы в выходные дни. Появился показатель Стоимость дня (часа) с учетом разовых начислений, который призван более точно учитывать доплаты в стоимости часа. Однако на практике пользователи столкнулись с критической проблемой: система продолжает «подтягивать» в расчет те начисления, которые уже были отменены у сотрудника. Разберем подробно, почему это происходит и как решить данную проблему до выхода официальных патчей.

Анализ проблемы и причины возникновения

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

Проанализируем техническую причину. Данная проблема официально зарегистрирована как ошибка 60018470. Суть бага заключается в том, что новый алгоритм сбора данных для показателя Стоимость дня (часа) с учетом разовых начислений некорректно обрабатывает временные интервалы в регистрах сведений. Программа обращается к данным о плановых начислениях и ФОТ, видит запись о назначении доплаты в прошлом, но не учитывает дату её окончания или действие «Отмена». В результате стоимость часа рассчитывается по «грязным» данным, включающим исторические, а не актуальные выплаты.

Решение 1: Изменение настроек начисления (ФОТ)

Это наиболее быстрый способ «обхода» проблемы без программирования. Если начисление имеет «мерцающий» характер (то есть часто назначается и отменяется), его включение в ФОТ может провоцировать ошибку в новом механизме. Выполним следующие шаги:

  1. Перейдем в настройки вида начисления, которое ошибочно попадает в расчет (меню Настройка — Начисления).
  2. На первой вкладке снимем флажок Включать в ФОТ. Это исключит влияние настройки на автоматические механизмы формирования тарифных ставок, которые «забаговали» в текущем релизе.
  3. Найдем первоначальный документ, которым эта надбавка была установлена (Прием на работу или Кадровый перевод).
  4. В этом документе необходимо «обновить» сведения: временно удалим строку с начислением и добавим её заново с той же суммой. После проведения документа данные в регистрах ФОТ будут актуализированы.

Важно: этот метод подходит, если надбавка действительно не должна жестко фиксироваться в плановом ФОТ сотрудника для других целей (например, для формирования штатного расписания).

Решение 2: Принудительное обновление плановых данных

Иногда записи в регистре Данные о ФОТ для расчета среднего заработка (плановые) «подвисают» и не очищаются при обычной отмене начисления кадровым переводом. Посмотрим, как принудительно актуализировать эти данные:

  1. Создадим документ Изменение плановых начислений.
  2. Добавим в него проблемного сотрудника.
  3. Нажмем кнопку Заполнить.
  4. Убедимся, что в списке начислений отсутствуют те, которые должны быть отменены.
  5. Проведем документ. Это инициирует процедуру пересчета виртуальных таблиц ФОТ, на которые опирается новый показатель стоимости часа.

Решение 3: Использование расширения (для программистов)

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

Логика работы расширения должна заключаться в следующем: мы помечаем необходимые виды начислений специальным дополнительным реквизитом (например, типом Булево), а в коде принудительно фильтруем расчетную базу, исключая записи, которые не актуальны на дату расчета. Рассмотрим примерную логику кода, который можно внедрить в процедуру расчета:


// Пример логики в расширении (псевдокод)
Процедура РасчетСверхурочных_После(ДокументОбъект)
    // Получаем таблицу начислений документа
    ТЗ = ДокументОбъект.Начисления.Выгрузить();
    
    Для Каждого СтрокаТЗ Из ТЗ Цикл
        Если СтрокаТЗ.ВидРасчета.Наименование ПОДОБНО "%Сверхурочно%" Тогда
            // Вызываем собственную функцию пересчета стоимости часа
            АктуальнаяСтоимость = НашМодульРасчета.ПолучитьВернуюСтоимостьЧаса(СтрокаТЗ.Сотрудник, СтрокаТЗ.ДатаНачала);
            СтрокаТЗ.ПоказательСтоимостьЧаса = АктуальнаяСтоимость;
        КонецЕсли;
    КонецЦикла;
    
    ДокументОбъект.Начисления.Загрузить(ТЗ);
КонецПроцедуры

Такой подход позволяет гарантировать верный расчет даже при наличии ошибок в типовом коде 1С.

Решение 4: Временный отказ от нового показателя

До тех пор, пока патч для ошибки 60018470 не будет установлен, проанализируем возможность возврата к проверенному временем механизму. В 1С:ЗУП существует старый показатель Стоимость часа, который работает стабильно.

Для этого необходимо:

  1. Зайти в меню Настройка — Расчет зарплаты.
  2. Перейти по ссылке Показатели, определяющие состав совокупной тарифной ставки.
  3. Убедиться, что состав начислений там настроен корректно, и временно не использовать формулы, опирающиеся на «разовые начисления», если они приводят к ошибкам в вашем учете.

Резюмируем: Основная причина неверного расчета — баг релиза, который игнорирует историю изменения начислений. Наиболее эффективным временным решением является перепроведение данных через документ Изменение плановых начислений или корректировка состава ФОТ в настройках самих начислений. Обязательно проверяйте наличие официальных исправлений (патчей) в сервисе поддержки 1С, так как разработчики планируют устранить это поведение в ближайших обновлениях.

← На главную