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