При расчете командировок в программе 1С:Зарплата и управление персоналом 3.1 (ЗУП 3.1) расчетчики иногда сталкиваются с неприятной ситуацией: у сотрудников, находящихся на окладе, расчет проходит корректно, а у сотрудников с часовым тарифом итоговая сумма начисления уходит в минус. Давайте подробно разберем, почему возникает эта ошибка в формуле, как устроен этот механизм в программе и какими способами можно навсегда устранить данную проблему.
Для того чтобы понять природу ошибки, проанализируем исходную формулу, которая использовалась для расчета:
((КалендарныеДни - ВремяВДняхЧасах)* СреднийЗаработокОбщий * КоэффициентИндексацииСреднегоЗаработка)*2 + (СреднийЗаработокОбщий * ВремяВДняхЧасах* КоэффициентИндексацииСреднегоЗаработка)
Проблема кроется во взаимодействии показателей КалендарныеДни и ВремяВДняхЧасах. В системе 1С:ЗУП 3.1 эти показатели ведут себя следующим образом:
КалендарныеДни всегда возвращает строго количество календарных дней периода командировки (например, если сотрудник отправлен в командировку на неделю, этот показатель будет равен 7).ВремяВДняхЧасах является динамическим (универсальным) и зависит от настроек графика и системы оплаты труда конкретного сотрудника:
Давайте посмотрим на конкретный пример расчета для сотрудника на часовом тарифе. Предположим, сотрудник отправляется в командировку на 7 календарных дней. По его графику на этот период приходится 5 рабочих смен по 8 часов (в сумме — 40 часов).
Подставим эти значения в левую часть формулы:
КалендарныеДни - ВремяВДняхЧасах
Для «часовика» это выражение превращается в математический абсурд: программа пытается из 7 дней вычесть 40 часов:
7 - 40 = -33
Полученное отрицательное значение -33 умножается на средний заработок и коэффициент индексации, а затем удваивается. В итоге левая часть формулы дает огромный минус, который полностью перекрывает положительную правую часть, и вся сумма начисления по документу «Командировка» уходит в отрицательное значение.
Для сотрудников на окладе формула работает отлично, потому что программа вычитает дни из дней: 7 календарных дней - 5 рабочих дней = 2 выходных дня. Результат получается положительным.
---
Попытка уместить расчет для разных категорий персонала в одну универсальную формулу часто приводит к сбоям. Самым надежным и прозрачным решением будет создание двух отдельных видов начислений с индивидуальными формулами расчета.
Для сотрудников, у которых учет ведется в днях, мы должны исключить использование динамического показателя ВремяВДняхЧасах и заменить его на строго дневной показатель. Перейдем в настройки начисления и отредактируем формулу:
((КалендарныеДни - ВремяВДнях) * СреднийЗаработокОбщий * КоэффициентИндексацииСреднегоЗаработка) * 2 + (СреднийЗаработокОбщий * ВремяВДнях * КоэффициентИндексацииСреднегоЗаработка)
В этой формуле показатель ВремяВДнях всегда будет возвращать рабочие дни. Разность КалендарныеДни - ВремяВДнях корректно определит количество выходных дней, приходящихся на период командировки.
Для сотрудников с почасовой оплатой средний заработок рассчитывается как среднечасовой. Соответственно, и всю формулу необходимо перевести в единую единицу измерения — в часы. Чтобы найти «выходные часы» командировки, нам потребуется перевести календарные дни в часы по норме (например, умножить их на 8 часов, если у вас стандартная смена), либо использовать другие показатели времени.
Формула для сотрудников на часовом тарифе будет выглядеть следующим образом:
(((КалендарныеДни * 8) - ВремяВЧасах) * СреднийЗаработокОбщий * КоэффициентИндексацииСреднегоЗаработка) * 2 + (СреднийЗаработокОбщий * ВремяВЧасах * КоэффициентИндексацииСреднегоЗаработка)
В данном случае показатель ВремяВЧасах корректно заменит проблемный динамический показатель, а умножение календарных дней на 8 позволит сопоставить величины в одной единице измерения (в часах).
---
Дописывание сложных формул с коэффициентами «х2» непосредственно внутри документа «Командировка» — это обходной путь, который часто приводит к ошибкам при расчете среднего заработка для последующих отпусков и больничных. В программе 1С:ЗУП 3.1 заложены штатные механизмы для оплаты выходных дней в командировке.
Это классический и методологически наиболее верный способ ведения учета:
Начисление зарплаты и взносов программа автоматически произведет доплату за эти дни в двойном размере исходя из оклада или часового тарифа сотрудника.Если в вашей организации принято оплачивать абсолютно все дни командировки (включая выходные) именно по среднему заработку в двойном размере, можно задействовать встроенную настройку программы:
Дополнительная оплата командировок и применим настройки.Дополнительная оплата с... по....Выберите наиболее подходящий для вашей учетной политики метод, настройте программу один раз, и расчеты ваших сотрудников всегда будут точными и корректными!