Почему при расчете зарплаты на неполной ставке (0.8) в 1С:УПП 1.3 завышается оклад при наличии работы в выходные дни?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При расчете заработной платы сотрудников, работающих на неполную ставку (например, внешних или внутренних совместителей на 0.8 ставки), бухгалтеры часто сталкиваются с неприятной проблемой. Если в течение месяца такой сотрудник привлекался к работе в выходные или праздничные дни, и на него был оформлен документ «Оплата праздничных и выходных дней организаций», то при последующем расчете основного начисления в документе «Начисление зарплаты работникам организаций» сумма оклада необоснованно завышается.

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

--- ### Почему происходит завышение оклада? Выясняем причину

Рассмотрим ситуацию изнутри. Допустим, для сотрудника настроена произвольная формула расчета оклада:

ТарифнаяСтавкаМесячная / 100 * 80 / НормаВремениВДнях * ОтработаноВремениВДнях

При стандартном расчете без переработок формула отрабатывает корректно. Однако при проведении документа «Оплата праздничных и выходных дней» ситуация меняется:

  1. Документ «Оплата праздничных и выходных дней» делает записи в регистр расчета ОсновныеНачисленияОрганизаций с видом времени «Выходные и праздничные дни».
  2. Для системы эти дни являются фактически отработанным временем. При расчете основного начисления показатель ОтработаноВремениВДнях собирает все фактически отработанные дни за этот период. Соответственно, дни работы в выходные суммируются с днями работы по графику.
  3. Из-за этого показатель ОтработаноВремениВДнях увеличивается (например, вместо 22 дней по графику получается 26 дней).
  4. Математический алгоритм произвольной формулы честно перемножает завышенный показатель, в результате чего сотрудник получает завышенный оклад за месяц плюс отдельную оплату за работу в выходные дни. Происходит двойная оплата одних и тех же дней.

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

---

Решение 1. Использование штатного механизма неполного рабочего времени (методически верный путь)

Использование произвольных формул с жестко зашитыми коэффициентами (такими как / 100 * 80) в 1С:УПП 1.3 считается методологической ошибкой. В программе заложен мощный встроенный механизм расчета неполного рабочего времени, который автоматически исключает подобные наложения.

Разберем по шагам, как правильно настроить систему:

  1. Создаем и настраиваем график работы:
    • Переходим в справочник ГрафикиРаботы и создаем график, например, «32-часовая рабочая неделя (0.8 ставки)».
    • В свойствах графика устанавливаем флаг «Неполное рабочее время».
    • В качестве вида неполного рабочего времени выбираем «Неполная рабочая неделя» или «Неполный рабочий день» (в зависимости от специфики работы).
    • Обязательно устанавливаем флаг «Расчет нормы по другому графику» и в появившемся поле выбираем основной график сотрудников с полной занятостью — например, стандартную «Пятидневку 40 часов». Это необходимо для того, чтобы система понимала, относительно какого объема времени рассчитывается доля ставки.
  2. Оформляем кадровые документы:
    • В документе «Прием на работу» или «Кадровое перемещение» назначаем сотруднику созданный график «32-часовая рабочая неделя (0.8 ставки)».
    • В поле «Ставка» указываем 0.8.
    • Назначаем стандартное предопределенное начисление «Оклад по дням» (без изменения формул расчета!) и указываем в качестве размера начисления полный оклад (100% ставки), который положен при полной занятости.

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

---

Решение 2. Корректировка произвольной формулы расчета

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

Для этого в формулу расчета необходимо внедрить функцию ограничения максимума Мин(). Изменим формулу начисления следующим образом:

ТарифнаяСтавкаМесячная / 100 * 80 / НормаВремениВДнях * Мин(НормаВремениВДнях, ОтработаноВремениВДнях)

Проанализируем работу этой формулы:

Важный нюанс для анализа: Обратите внимание, что если сотрудник заболел, пропустил 5 рабочих дней, а затем компенсировал их выходом в свои выходные дни (что было зафиксировано документально), то при использовании формулы с функцией Мин() система вернет его фактическое время (17 дней по графику + 5 дней в выходные = 22 дня). Оклад будет выплачен в полном объеме, но это может потребовать дополнительного согласования с методологами вашей компании.

---

Решение 3. Переход на расчет по часовым показателям

Иногда более точным решением является перевод расчета времени сотрудника на часовые показатели. При расчете в часах округления и наложения документов регистрируются более прозрачно. Формула в таком случае примет следующий вид:

ТарифнаяСтавкаМесячная / НормаВремениВЧасах * ОтработаноВремениВЧасах

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

---

Дополнительно: Исправление ошибки со сдельными нарядами (Ошибка 00-00251680)

Разберем еще одну важную проблему, упомянутую в ходе обсуждения расчета зарплаты в релизах УПП 1.3 (в частности, 1.3.125 - 1.3.126). Она касается выгрузки проводок по сдельным нарядам.

Суть проблемы: Для сотрудников, у которых в расчетном месяце были только начисления по сдельным нарядам, суммы НДФЛ и страховых взносов не попадают в проводки документа «Отражение зарплаты в регламентированном учете».

Если вы столкнулись с этой ошибкой, исправить ее в конфигураторе можно следующим образом. Разберем по шагам изменения в модуле документа ОтражениеЗарплатыВРеглУчете:

1. Найдем процедуру Автозаполнение(). Заменим самую последнюю строку вызова процедуры:


// Было:
АвтозаполнениеПроводок();

// Стало:
АвтозаполнениеПроводок(ЗапросПоСотрудникам);

2. Найдем процедуру АвтозаполнениеПроводок(). Изменим ее объявление и удалим строку формирования запроса, так как теперь мы передаем его в качестве параметра:


// Было:
Процедура АвтозаполнениеПроводок() Экспорт
    ЗапросПоСотрудникам = СформироватьЗапросПоСотрудникам();
    ...
КонецПроцедуры

// Стало:
Процедура АвтозаполнениеПроводок(ЗапросПоСотрудникам = Неопределено) Экспорт
    Если ЗапросПоСотрудникам = Неопределено Тогда
        ЗапросПоСотрудникам = СформироватьЗапросПоСотрудникам();
    КонецЕсли;
    ...
КонецПроцедуры

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

← На главную