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