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