Как в формуле начисления в 1С:ЗУП 3.1 исключить праздничные и выходные часы из отработанного времени

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

При настройке сложных формул в программе «1С:Зарплата и Управление персоналом 3.1» многие специалисты сталкиваются с тем, что стандартные показатели ведут себя не совсем так, как ожидается. Типичный пример — необходимость рассчитать стоимость часа для оплаты сверхурочных или премий, исходя только из нормы по графику, исключая время работы в выходные и праздники. Давайте подробно разберем, почему показатель ОтработаноЧасов не подходит для этих целей и как правильно настроить систему, чтобы получить корректный результат без снятия конфигурации с поддержки.

Проблема использования показателя ОтработаноЧасов

Рассмотрим ситуацию, с которой сталкивается автор вопроса. В системе есть показатель ОтработаноЧасов. На первый взгляд кажется, что это универсальный счетчик всего времени, которое сотрудник провел на работе. Однако технически этот показатель является агрегированным. Он автоматически суммирует:

  1. Часы по основному графику (Явка).
  2. Ночные и вечерние часы.
  3. Сверхурочные часы (работу вне графика).
  4. Работу в праздничные и выходные дни.

Если мы используем этот показатель в знаменателе формулы вида Оклад / ОтработаноЧасов, то при наличии работы в выходные знаменатель увеличивается. В результате стоимость часа сотрудника уменьшается, что методологически неверно и может вызвать вопросы у трудовой инспекции. Проанализируем, как можно «очистить» этот показатель или чем его заменить.

Решение №1: Использование показателя ВремяВЧасах и настройка видов времени

Самый гибкий способ решить задачу — использовать показатель ВремяВЧасах (или ВремяВДняхЧасах). В отличие от ОтработаноЧасов, этот показатель «умный»: он возвращает количество часов только по тем видам времени, которые указаны в настройках конкретного начисления.

Разберем по шагам, как настроить начисление для получения «чистых» часов по графику:

  1. Перейдем в меню Настройка — Начисления и откроем нужное нам начисление.
  2. На вкладке Основное в поле Формула заменим ОтработаноЧасов на ВремяВЧасах.
  3. Перейдем на вкладку Учет времени. Это ключевой момент.
  4. В разделе Виды времени мы увидим список. По умолчанию там может стоять «Рабочее время» (что включает все виды). Нам необходимо выбрать переключатель Дополнительные виды времени и в списке отметить только те виды, которые мы считаем «работой по графику» (например, только Явка или Вахта).

В этом случае, когда программа будет рассчитывать формулу, показатель ВремяВЧасах возьмет только те часы, которые отмечены в табеле как «Явка», проигнорировав «Праздники» (РВ) и «Сверхурочные» (С). Таким образом, мы получим чистый знаменатель без лишних часов.

Решение №2: Использование системного показателя СтоимостьЧаса

Разработчики фирмы «1С» предусмотрели специальный механизм для расчета стоимости часа, который не требует ручного вычитания праздничных или сверхурочных в каждой формуле. Рекомендуется использовать показатель СтоимостьЧаса.

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

  1. Зайдем в раздел Настройка — Расчет зарплаты.
  2. Найдем ссылку Настройка состава начислений и удержаний.
  3. На вкладке Почасовая оплата убедимся, что включена возможность использования почасовой оплаты.
  4. Ниже в разделе При пересчете тарифной ставки сотрудника в стоимость часа (день) используется выберем один из трех вариантов:
    • Среднемесячное количество часов (дней) в месяце.
    • Норма времени по графику сотрудника.
    • Норма времени по производственному календарю.

Если мы выберем «Норма времени по графику сотрудника», то система при расчете СтоимостьЧаса сама возьмет оклад и разделит его на количество часов, которые сотрудник должен был отработать по графику. Все фактические отклонения (праздничные, переработки) на этот показатель не повлияют. Формула в таком случае сокращается до минимума:

Результат = СтоимостьЧаса * ВремяВЧасах

Решение №3: Использование расчетной базы

Если ваша задача — рассчитать премию или доплату, которая должна начисляться только на «окладную» часть, можно использовать механизм расчетной базы. Посмотрим на пример настройки:

  1. В формуле используем РасчетнаяБаза * ПроцентПремии / 100.
  2. На вкладке Расчет базы в список базовых начислений добавим только Оплата по окладу.
  3. Важно: Не добавляйте туда «Оплату работы в праздничные и выходные дни» и «Оплату сверхурочных».

Поскольку Оплата по окладу сама по себе рассчитывается пропорционально только времени «Явки», то и расчетная база будет содержать сумму, очищенную от праздничных доплат. Это позволяет избежать сложных математических манипуляций со временем в самой формуле.

Особенности при суммированном учете рабочего времени

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

В 1С:ЗУП 3.1 показатель НормаЧасов всегда возвращает плановое количество часов из графика (или индивидуального графика) сотрудника за текущий месяц. Поэтому формула вида:

Результат = Оклад / НормаЧасов * ВремяВЧасах

будет работать корректно, так как НормаЧасов — это константа месяца по плану, а ВремяВЧасах (при правильной настройке вкладки «Учет времени») — это только те виды времени, которые мы хотим оплатить данным начислением.

Резюме по показателям

Для закрепления материала подытожим различия между показателями, которые мы рассмотрели:

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

← На главную