В практике кадрового учета и расчета заработной платы часто встречается задача, когда стоимость часа сотрудника должна определяться не исходя из нормы текущего месяца, а на основе среднегодового количества рабочих часов. Это позволяет сгладить разницу в оплате между "короткими" месяцами (например, январь или май) и "длинными" (июль или октябрь).
Рассмотрим ситуацию: нам необходимо реализовать формулу Оклад / СреднееМесячноеКоличествоЧасовЗаГод * НормаЧасов. При этом показатель СреднееМесячноеКоличествоЧасовЗаГод должен рассчитываться как сумма всех рабочих часов в году по производственному календарю, деленная на 12. В этой статье мы разберем, как реализовать этот алгоритм в 1С:Зарплата и управление персоналом 3.1, используя только штатные механизмы конфигурации.
Проанализируем возможности системы. В 1С:ЗУП 3.1 уже заложен механизм автоматического определения стоимости часа (показатель СтоимостьЧаса). Программа умеет вычислять этот показатель тремя способами, один из которых идеально подходит под нашу задачу.
Разберем по шагам, как активировать эту настройку:
Выясним причину, почему это работает: при выборе данного варианта система берет общее количество рабочих часов в году по производственному календарю, который назначен сотруднику (в его графике работы), и делит это число на 12. Полученное значение используется как знаменатель при определении стоимости одного часа.
Важный нюанс: если вы измените эту настройку, она применится ко всем новым расчетам в базе. Однако для конкретных сотрудников порядок пересчета можно уточнить индивидуально.
Если в организации основная масса сотрудников получает оплату по норме месяца, а среднегодовое значение нужно применить только для избранных категорий, мы можем настроить это персонально. Посмотрим на пример настройки в кадровых документах:
В документах Прием на работу или Кадровый перевод на вкладке Оплата труда присутствует поле Порядок пересчета. Если оно не отображается, убедитесь, что в настройках состава начислений включена возможность пересчета тарифных ставок.
Проанализируем ситуацию, если вы выбрали индивидуальный порядок:
СтоимостьЧаса (например, оплата праздничных или сверхурочных), будет применяться именно среднегодовая норма.Если штатный показатель СтоимостьЧаса по каким-то причинам вам не подходит (например, требуется сложная формула, где участвуют сразу несколько видов норм), можно пойти путем создания собственного показателя. Разберем этот алгоритм подробнее.
Шаг 1. Создание показателя.
Перейдем в Настройка — Показатели расчета зарплаты. Создадим новый показатель, назовем его СреднегодовоеКоличествоЧасов. Установим для него следующие свойства:
Шаг 2. Создание шаблона документа.
Чтобы внести значение этого показателя в систему, нам нужно настроить Шаблон ввода исходных данных (раздел Настройка). Создадим шаблон, в который добавим наш новый показатель. Это позволит нам раз в год (обычно в январе) вводить рассчитанное на калькуляторе значение (например, 164.5 часа) для всей организации.
Шаг 3. Настройка формулы начисления.
Теперь в виде расчета (например, Оплата по окладу) мы можем изменить формулу:
Оклад / СреднегодовоеКоличествоЧасов * ВремяВЧасах
Рассмотрим ситуацию, описанную в сообщении №7 форума, когда пользователь столкнулся с разницей в цифрах (182,5 против 167,08). Почему так происходит? Выясним причины расхождений:
2190 / 12 = 182.5 будет верным. Если же система выдает 167.08 — значит, она берет стандартный календарь РФ (2004 часа / 12 = 167.0).Графики работы проверьте настройку При определении нормы по этому графику использовать.... Иногда там ошибочно указан другой график или календарь, что сбивает расчет автоматического показателя СтоимостьЧаса.Важно помнить, что изменение настройки "Порядок пересчета" в разделе Настройка — Расчет зарплаты повлияет на расчет всех начислений, где используется СтоимостьЧаса. Проанализируем последствия:
Если вы установите расчет "по среднегодовому", то стоимость часа для оплаты сверхурочных будет одинаковой и в январе, и в июле. С точки зрения трудовой инспекции это допустимый метод, но он должен быть зафиксирован в локальном нормативном акте организации. Рекомендуем вводить такие изменения только с начала календарного года, чтобы избежать пересчетов за прошлые периоды.
Посмотрим на пример кода, который система использует внутренне для получения этого значения (условно):
// Логика получения среднемесячной нормы
ГодоваяНорма = ПолучитьНормуВремениЗаГод(Сотрудник, ТекущийГод);
СреднемесячнаяНорма = ГодоваяНорма / 12;
СтоимостьЧаса = ТарифнаяСтавка / СреднемесячнаяНорма;
Таким образом, мы рассмотрели все способы реализации расчета через среднегодовое количество часов. Наиболее предпочтительным и "чистым" с точки зрения поддержки конфигурации является Метод 1 — использование типовой настройки пересчета тарифных ставок.