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