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