Почему в ЗУП 3.1 не проставляются отработанные часы при ручном вводе начислений?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Понимание сути проблемы

При работе в конфигурации 1С:Зарплата и Управление Персоналом редакции 3.1 пользователи часто сталкиваются с ситуацией, когда при ручном вводе сумм начислений или их загрузке через внешние обработки в документе Начисление зарплаты и взносов не заполняются показатели времени (отработанные дни и часы). Особенно часто это проявляется в месяце приема сотрудника на работу, если дата приема приходится на середину месяца.

Давайте разберем, почему это происходит. Механизм расчета зарплаты в 1С:ЗУП опирается на ПериодДействия начисления. Если вы вручную добавляете строку, система по умолчанию устанавливает дату начала периода как первое число месяца. Если сотрудник принят, например, 15-го числа, возникает логическое противоречие: начисление заявляется на весь месяц, но по данным кадрового учета сотрудник в первой половине месяца не работал. В результате алгоритмы автоматического заполнения времени либо блокируются, либо не находят оснований для заполнения часов.

Основные причины отсутствия времени в расчете

  1. Несоответствие периода: Дата начала в строке начисления установлена как 1-е число месяца, в то время как фактическая дата приема позже.
  2. Использование накопления: Если в начислении используются специфические показатели, система может некорректно обрабатывать время, если период действия не совпадает с реальным периодом работы.
  3. Отсутствие автоматической пересчета: При использовании сторонних обработок для загрузки данных, если обработка просто «вставляет» сумму без заполнения реквизитов периода и вызова процедур пересчета, поля времени остаются пустыми.

Шаг 1: Проверка реквизитов строки

Прежде чем приступать к исправлению, давайте проверим состояние параметров в табличной части документа. Один из ключевых реквизитов — ФиксРасчетВремени. Если он установлен в значение Истина, программа «думает», что вы как пользователь решили самостоятельно контролировать время, и не будет пытаться его пересчитывать автоматически. Для автоматического расчета времени этот реквизит должен быть равен Ложь.

Шаг 2: Установка корректных периодов действия

Чтобы система «увидела» отработанное время, необходимо, чтобы даты в полях ДатаНачала и ДатаОкончания в строке начисления соответствовали фактическому периоду работы сотрудника в данном месяце. В случае приема в середине месяца:

После корректировки дат необходимо запустить пересчет строки. В типовом интерфейсе это можно сделать через кнопку «Пересчитать сотрудника» или «Заполнить с сохранением исправлений».

Шаг 3: Решение для разработчиков (при использовании загрузки)

Если вы столкнулись с этой проблемой при использовании внешней обработки загрузки данных, важно понимать, что простого внесения суммы недостаточно. Рассмотрим, как программно скорректировать поведение системы при загрузке строк в Начисление зарплаты и взносов:

Для корректной работы обработки необходимо доработать алгоритм загрузки ТЧ (табличной части) документа:


// Пример логики доработки обработки:
Для Каждого СтрокаТЧ Из ДокументОбъект.Начисления Цикл
    Если СтрокаТЧ.ДатаНачала < ДатаПриемаСотрудника Тогда
        СтрокаТЧ.ДатаНачала = ДатаПриемаСотрудника;
        СтрокаТЧ.ФиксРасчетВремени = Ложь;
    КонецЕсли;
    // После установки дат вызываем механизм пересчета, 
    // чтобы ЗУП подтянул данные из графика работы
КонецЦикла;

Почему важны отработанные часы?

Помните, что заполнение полей ОтработаноДней и ОтработаноЧасов — это не просто «косметическая» операция. Эти данные напрямую влияют на регистры накопления, которые используются при расчете среднего заработка. Если вы оставите эти поля пустыми, в будущем при расчете отпускных, больничных или командировочных сотруднику будут начислены некорректные суммы, так как система не будет «видеть» его реальный стаж и отработанное время.

Заключение и рекомендации

Разберем краткий алгоритм действий при возникновении проблемы:

  1. Откройте документ Начисление зарплаты и взносов.
  2. Найдите проблемную строку сотрудника.
  3. Проверьте ДатаНачала и ДатаОкончания. Если они охватывают весь месяц, а сотрудник принят позже — исправьте даты на фактический период работы.
  4. Проверьте значение ФиксРасчетВремени — убедитесь, что оно не стоит в значении Истина.
  5. Выполните пересчет строки.

Если массово загружаете данные — обязательно добавьте в код обработки автоматическую подстановку даты приема сотрудника в период действия начисления. Это позволит избежать ручной правки и обеспечит корректность расчета среднего заработка в будущем.

← На главную