В практике кадрового учета часто возникает ситуация, когда сотрудника, работающего на стандартном «окладе по дням», необходимо отправить в командировку не на несколько суток, а всего на несколько часов в течение рабочего дня. Типовой механизм программы 1С:Зарплата и управление персоналом (ЗУП) в этом случае ведет себя специфически: если в табеле зафиксирован хотя бы минимальный факт явки (например, 4 часа из 8), система начисляет «Оклад по дням» в полном объеме за этот день, а сверху добавляет оплату по среднему заработку за часы командировки. В итоге возникает «двойная оплата» одного и того же времени.
Рассмотрим подробнее, почему так происходит и какие существуют методы решения этой проблемы — от простых организационных до глубоких технических настроек.
Разберем логику работы системы. В 1С:ЗУП вид начисления Оклад по дням ориентируется на целые единицы времени — дни. Для него не существует понятия «доля дня», если в настройках не указано иное. Если в течение дня зафиксирована явка, программа считает этот день отработанным полностью с точки зрения дневной нормы. В то же время документ Командировка (внутрисменная) регистрирует отсутствие в часах и рассчитывает оплату по среднему. Поскольку эти два начисления не «видят» друг друга в рамках одного дня при дневном учете, они суммируются.
Проанализируем ситуацию: чтобы программа корректно уменьшила оклад на время отсутствия, она должна уметь рассчитывать его исходя из часов. Рассмотрим пошагово, как можно настроить систему для корректного расчета.
Это самый простой и методологически верный путь с точки зрения разработчиков 1С. Если на предприятии часто практикуются внутрисменные отсутствия (командировки, отлучки, поездки к врачу), рекомендуется изначально устанавливать сотрудникам вид начисления Оклад по часам.
Преимущества:
Нюанс с разницей в расчетах:
Важно понимать, что расчет «по дням» и «по часам» может давать разные суммы, если график сотрудника подразумевает разное количество рабочих часов в разные дни (например, «короткая пятница»). Посмотрим на пример:
Допустим, оклад сотрудника составляет 50 000 руб. В январе норма 17 дней или 137 часов. Если сотрудник отработал 2 полных дня:
50 000 / 17 * 2 = 5 882,35 руб.50 000 / 137 * 16 = 5 839,42 руб.Разница возникает из-за разной «стоимости» часа в зависимости от нормы месяца. Чтобы сгладить эту разницу, в настройках Расчета зарплаты можно установить пересчет тарифной ставки по Среднемесячному количеству часов.
Если вы категорически не хотите переводить сотрудников на почасовую оплату (например, из-за требований трудового договора), можно модифицировать формулу основного начисления. Рассмотрим, как сделать Оклад по дням чувствительным к часам.
Зайдем в настройки начисления Оклад по дням и изменим формулу. По умолчанию она выглядит так:
Оклад * ВремяВДнях / НормаДней
Мы можем изменить её на вариант, учитывающий отработанное время в часах, но сохраняющий логику дневного оклада:
Оклад * (ВремяВЧасах / НормаЧасов)
Важно: При таком подходе система начнет учитывать внутрисменные командировки автоматически, так как ВремяВЧасах будет уменьшено на количество часов отсутствия. Однако это потребует перепроверки всех графиков работы, чтобы НормаЧасов всегда была заполнена корректно.
Проанализируем настройки приоритетов. Даже если мы используем внутрисменную командировку, оклад должен «знать», что его вытесняют.
Оклад по дням.Командировка (и внутрисменная в том числе) в правой колонке Начисления, приоритет которых выше.Нюанс: Типовой механизм вытеснения в ЗУП для дневных начислений срабатывает только на целые дни. Если вы хотите, чтобы вытеснение работало внутри дня, необходимо либо использовать Оклад по часам, либо изменить формулу, как описано в Способе 2.
Если внутрисменные командировки случаются редко и вы не хотите менять настройки начислений, можно воспользоваться документом Табель.
Посмотрим, как это реализовать:
Командировка, указываем галочку Командировка на неполный день (внутрисменная) и количество часов (например, 4).Табель на этот месяц.При расчете зарплаты 1С:ЗУП приоритетно берет данные из Табеля. Увидев 4 часа явки, программа рассчитает оклад пропорционально этому времени, даже если выбран метод расчета «по дням» (в этом случае день будет засчитан как 0.5 дня).
Прежде чем использовать любой из методов, убедимся, что сама возможность внутрисменных командировок включена в программе. Разберем, где это находится:
Без этой настройки документ Командировка просто не позволит выбрать режим «неполного дня», и проблема с окладом станет еще острее, так как придется регистрировать отсутствие целым днем.
Если пользователей не устраивает ни перевод на почасовой оклад, ни ручная правка табелей, можно рассмотреть вариант создания небольшого расширения.
Задачей расширения будет автоматическое создание документа Изменение оплаты труда или Кадровый перевод на тот день, когда регистрируется внутрисменная командировка. Этот документ будет временно менять начисление с Оклада по дням на Оклад по часам, а следующим днем возвращать всё обратно. Это именно то, что участники форума делают вручную, но автоматизация исключит риск человеческой ошибки.
Подводя итог, можно сказать следующее: наиболее стабильным и методологически чистым решением является использование Оклада по часам. Чтобы избежать разницы в копейках при расчете неполных месяцев, обязательно настройте Порядок пересчета месячного оклада в часовую ставку (через среднемесячное количество часов в году).
Если же политика компании требует оставить Оклад по дням, лучшим техническим решением будет изменение формулы этого начисления на часовую зависимость (Способ 2) с обязательной проверкой вытеснения в настройках приоритетов.