Как настроить нестандартный расчет аванса за первую половину месяца в 1С:ЗУП 2.5?

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

В типовой конфигурации 1С:Зарплата и Управление Персоналом редакции 2.5 расчет аванса за первую половину месяца (с 1 по 15 число) производится по строго зафиксированной математической пропорции. Однако на практике часто возникает требование бухгалтерии: если сотрудник отработал первую половину месяца полностью (без больничных, отпусков и прогулов), он должен получить ровно 50% от оклада. Если же в этот период были неявки, то аванс должен рассчитываться пропорционально фактически отработанным дням.

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

Выясним причину: почему типовой алгоритм 1С:ЗУП 2.5 не дает 50% оклада

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

СуммаАванса = Оклад * ОтработаноДнейЗаПервуюПоловину / НормаДнейЗаВесьМесяц

Рассмотрим конкретный пример:

  1. Оклад сотрудника составляет 160 000,00 руб.
  2. Норма рабочего времени за полный месяц (например, май) равна 22 рабочим дням.
  3. В период с 1 по 15 число выпадает 10 рабочих дней.
  4. Сотрудник полностью отработал все 10 дней первой половины месяца.

Подставим значения в типовую формулу: 160 000 / 22 * 10 = 72 727,28 руб.

Поскольку 10 рабочих дней первой половины месяца составляют менее половины от месячной нормы (22 дня), сотрудник получает 45,45% от оклада вместо желаемых 50% (80 000,00 руб.), несмотря на отсутствие отклонений. Это связано со следующим ограничением платформы и конфигурации ЗУП 2.5: конструктор формул для начислений не содержит встроенной логики ветвления для проверки выполнения нормы за первые 15 дней месяца.

Способ 1. Использование внешней обработки табличной части (рекомендуемый вариант)

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

Для документа расчета аванса разрабатывается внешняя обработка табличных частей. Алгоритм её работы заключается в следующем:

  1. Обработка обходит строки табличной части документа начисления аванса.
  2. Для каждого сотрудника выполняется проверка наличия зарегистрированных документов-отклонений (больничные листы, отпуска, неявки) за период с 1 по 15 число текущего месяца.
  3. Если неявок в указанном периоде нет (количество отработанных дней равно графику за первую половину), сумма аванса устанавливается равной Оклад / 2.
  4. Если зафиксированы отклонения, сумма рассчитывается по стандартной формуле исходя из фактически отработанных дней.

Пример программной логики проверки и пересчета в обработке:


Если НормаДнейПервойПоловины = ОтработаноДнейПервойПоловины Тогда
    // Сотрудник отработал первую половину месяца полностью
    РезультатРасчета = Оклад / 2;
Иначе
    // Были неявки — расчет по фактически отработанному времени
    РезультатРасчета = (Оклад / НормаДнейЗаМесяц) * ОтработаноДнейПервойПоловины;
КонецЕсли;

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

Способ 2. Технологический сдвиг даты окончания периода расчета

Рассмотрим альтернативный способ без программирования. На практике используют метод сдвига даты окончания периода в документе расчета за первую половину месяца.

  1. В документе расчета аванса в поле даты окончания периода вместо 15-го числа указывается дата, на которую количество рабочих дней с начала месяца составит ровно половину месячной нормы (например, 17-е или 18-е число, если на него приходится 11-й рабочий день из 22).
  2. Программа берет 11 рабочих дней из 22 и рассчитывает ровно 50% от оклада (160 000 / 22 * 11 = 80 000 руб.).

Важное ограничение метода: такой прием может захватить отклонения или неявки сотрудника, произошедшие после 15-го числа, что приведет к искажению сумм при последующем окончательном расчете заработной платы за месяц.

Способ 3. Расчет фиксированной суммой или процентом с контролем отклонений

Проанализируем вариант, когда в карточке сотрудника устанавливается способ расчета аванса "Процентом от тарифа" (50%) или "Фиксированной суммой".

При таком подходе сотрудник всегда получает ровно half (50%) оклада. Однако штатный расчет процентом не учитывает неявки. Чтобы учесть больничные и отпуска, расчетчик вручную или с помощью специализированного отчета по отклонениям выявляет сотрудников с неявками с 1 по 15 число и корректирует сумму аванса только для них.

Резюме

Штатный механизм расчета аванса по фактически отработанным дням в 1С:ЗУП 2.5 жестко привязан к календарной пропорции дней. Наиболее оптимальным решением для обеспечения выплаты 50% оклада при полной отработке является использование внешней обработки табличной части, которая автоматизирует пересчет и сохраняет конфигурацию на типовой поддержке.

← На главную