При переходе на программу 1С:Зарплата и Управление Персоналом (редакция 3.1) у бухгалтеров и расчетчиков часто возникает задача реализовать специфический алгоритм расчета заработной платы. Разберем распространенную ситуацию: если сотрудник отработал месяц полностью, ему начисляется полный оклад; если же месяц отработан не полностью, расчет должен выполняться делением оклада на среднемесячное количество часов и умножением на фактически отработанное время.
Рассмотрим, как реализовать подобную логику типовыми средствами программы без привлечения программистов и создания расширений.
Для реализации этой схемы воспользуемся встроенным в 1С:ЗУП 3.1 механизмом настройки начислений и условными операторами в формулах. Проанализируем порядок действий:
СрМесКолЧасов (Среднемесячное количество часов). Назначим ему сферу действия Для организации или Для информационной базы и тип значения Числовой. Значение этого показателя задается один раз в год (например, через шаблон ввода показателей или непосредственно при создании).?(Условие, ЗначениеЕслиИстина, ЗначениеЕслиЛожь).Формула расчета будет выглядеть следующим образом:
?(ВремяВЧасах < НормаЧасов,
Оклад / СрМесКолЧасов * ВремяВЧасах,
Оклад)
Разберем логику работы данной формулы: программа сравнивает отработанное время ВремяВЧасах с нормой НормаЧасов. Если сотрудник отработал меньше нормы, система применяет расчет по часовой ставке с делением на среднемесячное значение СрМесКолЧасов. Если же норма выполнена полностью, начисляется фиксированный Оклад.
Чтобы не заводить пользовательский показатель вручную каждый год, можно задействовать штатный механизм пересчета тарифных ставок 1С:ЗУП 3.1.
СтоимостьЧаса:
?(ВремяВЧасах < НормаЧасов,
СтоимостьЧаса * ВремяВЧасах,
Оклад)
При таком подходе отпадает необходимость каждый год вручную обновлять показатель среднемесячного количества часов.
Проанализируем подводные камни, с которыми можно столкнуться при использовании описанного условного расчета в 1С:ЗУП 3.1:
ВремяВЧасах окажется меньше, чем полная НормаЧасов за весь месяц. В результате условное выражение ВремяВЧасах < НормаЧасов сработает для обеих частей периода, и сотрудник получит расчет по часовой ставке за обе половинки, даже если месяц в сумме отработан полностью.ДоляНеполногоРабочегоВремени в формуле, иначе сумма начисления будет завышена.Если в организации применяется суммированный учет рабочего времени или сменные графики, штатным рекомендуемым решением в 1С:ЗУП 3.1 является использование графиков работы с установленным флагом Неполное рабочее время и указанием нормировочного графика (пятидневки), что позволяет правильно определять норму времени без сложной корректировки формул.