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