Где в 1С:ЗУП 3 описывается расчет предопределенных показателей времени и как исключить конкретный вид времени из начисления

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом
← На главную

При настройке сложных формул расчета зарплаты в программе «1С:Зарплата и управление персоналом 3» часто возникает необходимость изменить логику работы предопределенных показателей времени (например, ВремяВДняхЧасах) или вычесть из отработанного времени специфический вид времени (например, время в дороге или проезд к месту работы).

Рассмотрим, как устроена система расчета времени в ЗУП 3, в каких модулях конфигурации находятся ключевые процедуры вычисления показателей и какими способами можно решить задачу корректировки состава отработанных часов.

Как формируются предопределенные показатели времени

Показатель ВремяВДняхЧасах является составным и динамическим. В зависимости от настроек вида расчета и графика работы сотрудника (например, при использовании суммированного учета рабочего времени) платформа самостоятельно определяет, в чем вести расчет — в днях или в часах.

Значения показателей времени не хранятся в готовом виде в справочнике ПоказателиРасчетаЗарплаты. Они рассчитываются движком программы в момент расчета начисления на основании записей регистра накопления ДанныеОтработанногоВремениАвтоматические, создаваемых документами учета рабочего времени (Табель, График работы, Командировка и др.).

Где в коде конфигурации искать программный расчет показателей

Если вам необходимо проанализировать или изменить алгоритм программного вычисления показателей времени, проанализируем модуль объекта обработки расчета зарплаты:

Обработка.МенеджерРасчетаЗарплаты (Модуль объекта)

В этом модуле происходят основные вычисления перед подстановкой значений в формулу. Выясним ключевые процедуры, отвечающие за сбор и подготовку данных о времени:


Процедура РассчитатьНачисления()
Процедура РассчитатьЗначенияПоказателейНачислений()
Процедура РассчитатьЗначенияПоказателейРабочегоВремени()
Процедура РассчитатьЗначенияПоказателейНормыВремени()
Процедура РассчитатьЗначенияПоказателейОтработаноВсего()
Процедура ЗаполнитьЗначенияДополнительныхПоказателейНачислений()
Процедура РассчитатьНачисленияПоФормуле()

При необходимости программного переопределения значения пользовательского показателя вычисление следует делать через расширение конфигурации, перехватывая подготовку данных расчета или выбирая часы нужного вида времени из регистра накопления ДанныеОтработанногоВремениАвтоматические запросом по сотруднику и периоду.

Варианты решения задачи без доработки конфигурации

В предопределенных видах расчета (например, «Доплата за совмещение») настройки на вкладке Учет времени заблокированы от изменений платформой. Однако дорабатывать конфигурацию в режиме конфигуратора требуется далеко не всегда.

Разберем два эффективных способа исключения отдельного вида времени из расчета начисления.

Способ 1. Создание копии начисления с гибкой настройкой учета времени

Это рекомендуемый способ, не требующий написания программного кода и сохраняющий базу на типовой поддержке.

  1. Перейдем в список видов расчета (Настройки — Начисления).
  2. Найдем предопределенное начисление «Доплата за совмещение» и создадим его копию.
  3. В новом начислении откроем закладку Учет времени. В скопированном элементе все поля доступны для редактирования.
  4. В поле Вид времени заменим обобщающий вид Рабочее время на основной вид времени (например, Явка).
  5. Перейдем по ссылке Дополнительные виды времени и укажем списком все остальные виды рабочего времени, которые должны оплачиваться при совмещении (ночные, вечерние и т.д.), кроме вида времени «Время в дороге».

При такой настройке типовой показатель ВремяВДняхЧасах сам посчитает только нужные часы, исключив время дороги, а усложнять формулу вычитанием дополнительных показателей не потребуется.

Способ 2. Использование собственного показателя и шаблона ввода данных

Если необходимо использовать показатель времени дороги в других документах или отчетах, выполним следующую настройку:

  1. В справочнике Показатели расчета зарплаты создадим новый показатель (например, ВремяВДняхЧасахДорога).
  2. Создадим шаблон документа в разделе Настройка ввода данных для расчета зарплаты, связанный с этим показателем и видом времени из Табеля.
  3. Скопируем базовое начисление и укажем в нем отредактированную формулу:

РазмерДоплатыЗаСовмещение * (ВремяВДняхЧасах - ВремяВДняхЧасахДорога) / НормаЧасов

Обратите внимание: при использовании собственных показателей времени в формулах необходимо учитывать разницу между днями и часами (ВремяВДнях и ВремяВЧасах), так как пользовательские показатели не переключаются автоматически при изменении режима работы сотрудника.

← На главную