В практике расчета заработной платы часто встречаются ситуации, когда сотрудник переводится с одной системы оплаты труда на другую (например, с часовой тарифной ставки на оклад) в середине месяца. Это может вызывать коллизии при расчете специализированных начислений, таких как оплата работы в выходные и праздничные дни. Рассмотрим проблему, когда программа ошибочно начисляет лишние суммы за работу в выходной день, приходящийся на период до перевода, и разберем способы ее решения с помощью настройки формул в 1С:Зарплата и Управление Персоналом (ЗУП) версии 3.1 КОРП и ПРОФ.
Рассмотрим ситуацию. В организации используются разные схемы оплаты работы в выходные для разных категорий сотрудников:
Сотрудник работал на ЧТС, и 12-го числа вышел на работу в выходной день. С 16-го числа того же месяца его переводят на оклад. При расчете зарплаты за месяц программа видит, что сотрудник в этом месяце имеет статус «окладника» (пусть и частично), и для работы в выходной (12-го числа) ошибочно начисляет и «Оплату» (предназначенную только для окладников), и «Доплату». В результате возникает переплата или некорректный расчет.
Наша задача — настроить формулу начисления «Оплата работы в выходные и праздники» так, чтобы она рассчитывалась только для сотрудников на окладе и игнорировала сотрудников на ЧТС, не прибегая к программированию в конфигураторе.
Самый изящный способ решить задачу без создания лишних документов и показателей — использовать в формуле начисления логическую проверку. В 1С:ЗУП для любого сотрудника можно определить, является ли он «почасовиком», проверив наличие часовой тарифной ставки.
Если у сотрудника установлена ЧТС, значит показатель ТарифнаяСтавкаЧасовая будет больше нуля. Если сотрудник на окладе, этот показатель обычно равен нулю (или не используется в расчете, если не настроен пересчет).
Давайте откроем настройку начисления «Оплата работы в выходные и праздники» (раздел Настройка — Начисления) и отредактируем формулу.
Стандартная формула может выглядеть так:
ВремяВДняхЧасах * СтоимостьДняЧаса
Мы модифицируем её, добавив условие: расчет производится, только если часовая тарифная ставка равна нулю (что характерно для окладников в контексте данной задачи).
Новая формула:
?(ТарифнаяСтавкаЧасовая = 0, ВремяВДняхЧасах * СтоимостьДняЧаса, 0)
Разберем логику работы этой формулы:
? (Условие, ЗначениеЕслиИстина, ЗначениеЕслиЛожь) работает как классический оператор IF.ТарифнаяСтавкаЧасовая равна 0, программа выполняет расчет: умножает отработанное время на стоимость часа.Этот метод хорош тем, что он автоматически отслеживает состояние сотрудника на конкретный день. При кадровом переводе в середине месяца 1С разбивает периоды, и на 12-е число показатель ставки будет взят именно тот, который действовал тогда.
Если логика с тарифной ставкой не подходит (например, у окладников тоже заведена техническая часовая ставка), можно пойти путем создания явного признака «Почасовик» или «Окладник».
Шаг 1. Создание показателя расчета зарплаты.
Перейдем в раздел Настройка — Показатели расчета зарплаты и создадим новый показатель, назовем его, например, ПризнакПочасовойОплаты.
Шаг 2. Настройка формулы.
Изменим формулу в начислении «Оплата работы в выходные и праздники» для окладников:
?(ПризнакПочасовойОплаты = 1, 0, ВремяВДняхЧасах * СтоимостьДняЧаса)
Здесь логика следующая: если у сотрудника установлен признак почасовика (равен 1), то результат начисления равен 0. Иначе — считаем сумму.
Шаг 3. Назначение показателя сотрудникам.
Поскольку показатель постоянный, его значение нужно установить кадровыми документами:
В документе перевода сотрудника с ЧТС на оклад вам нужно будет изменить значение этого показателя (например, с 1 на 0), чтобы с момента перевода (с 16-го числа) логика расчета изменилась.
СтоимостьДняЧасаПри настройке формул важно помнить, как 1С:ЗУП рассчитывает показатель СтоимостьДняЧаса. Это особенно критично при переводах в середине месяца.
Порядок пересчета оклада в стоимость часа задается в настройках расчета зарплаты (Настройка — Расчет зарплаты). Существует три варианта:
При кадровом переводе меняется график или начисления, и СтоимостьДняЧаса будет рассчитываться отдельно для периода «до» и периода «после». Используя Способ 1 с проверкой ТарифнаяСтавкаЧасовая, вы гарантируете, что для «почасового» периода (где стоимость часа определена явно, а не расчетным путем из оклада) формула отсечет лишнее начисление, предназначенное для окладников.
Для корректного разделения оплаты работы в выходные дни между сотрудниками на окладе и на ЧТС в рамках одного месяца:
?(ТарифнаяСтавкаЧасовая = 0, [Расчет], 0).