Почему командировка не попадает в расчет аванса за первую половину месяца и как это исправить?

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

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

Рассмотрим подробно причины такого поведения программы, варианты обхода проблемы штатными средствами и пример программной доработки для конфигураций на обычных формах.

Причины проблемы и технические ограничения

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

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

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

Методические способы решения в рамках типового функционала

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

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

Решение проблемы с помощью доработки программного кода

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

Выясним, какие изменения нужно внести на примере конфигурации «Зарплата и кадры бюджетного учреждения» 1.0 (или аналогичной «Зарплата и Управление Персоналом» 2.5):

  1. В документе ОплатаПоСреднемуЗаработку на вкладке «Движения» включаем регистрацию движений по регистру сведений ЗарплатаЗаПервуюПоловинуМесяца.
  2. В общем модуле ОплатаПоСреднемуЗаработкуДополнительный в процедуре СформироватьВзаиморасчетыСРаботниками добавляем код для записи сумм по среднему заработку в данный регистр:

Движение = Движения.ЗарплатаЗаПервуюПоловинуМесяца.Добавить();

// Свойства
Движение.Период = КонецМесяца(ВыборкаПоШапкеДокумента.ПериодРегистрации);

// Измерения
Движение.Физлицо = Доход.Физлицо;
Движение.Организация = ВыборкаПоШапкеДокумента.ОбособленноеПодразделение;
Движение.СтатьяФинансирования = Доход.СтатьяФинансирования;
Движение.КОСГУ = Доход.КОСГУ;

// Ресурсы
Движение.СуммаВзаиморасчетов = Доход.СуммаДохода;
  1. В общем модуле ОплатаПоСреднемуЗаработкуПереопределяемый в процедуре ПереписатьПрочиеДвиженияПриПерерасчете обеспечиваем очистку движений при перерасчете документа:

Движения.ЗарплатаЗаПервуюПоловинуМесяца.Очистить();

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

Особенности в современных конфигурациях (ЗУП 3.1)

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

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

← На главную