Почему в 1С:ЗУП 3.1 при расчете отпуска не учитывается индексация, проведенная в день начала отпуска?

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

При работе в 1С:Зарплата и управление персоналом (ЗУП) версии 3.1 бухгалтеры и программисты часто сталкиваются с ситуацией, когда индексация заработка, проведенная первым числом месяца, «не подтягивается» в расчет среднего заработка для отпуска, начинающегося в этот же день. Рассмотрим подробнее, почему так происходит, и разберем пути решения этой проблемы с технической и методической точек зрения.

Анализ ситуации: конфликт времени и логики запроса

Проанализируем типовое поведение программы. Когда мы проводим документ Изменение плановых начислений (или специализированный документ Индексация заработка) с 1-го числа месяца, запись в регистр сведений КоэффициентИндексацииЗаработка часто попадает с временем 00:01:00. В то же время документ Отпуск, начинающийся в этот же день, технически ориентируется на начало дня — 00:00:00.

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

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

И (КоэффициентИндексацииЗаработка.Период < ИсходныеДанные.ДатаНачалаСобытия)

При таком условии 01.07.2022 00:01:00 никогда не будет меньше 01.07.2022 00:00:00, и индексация для расчетного периода «не увидится».

Решение 1: Программная корректировка запроса

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

Посмотрим на пример модифицированного кода в общем модуле УчетСреднегоЗаработка (функция ДанныеИндексации):


// Изменяем условие в тексте запроса
Запрос.Текст = 
    "ВЫБРАТЬ
    |    ИсходныеДанные.Сотрудник КАК Сотрудник,
    |    Месяцы.Период КАК Период,
    |    ЕСТЬNULL(КоэффициентИндексацииЗаработка.Коэффициент, 1) КАК КоэффициентИндексации
    |ИЗ
    |    ВТИсходныеДанные КАК ИсходныеДанные
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТПериоды КАК Месяцы
    |        ПО (Месяцы.Период МЕЖДУ ИсходныеДанные.НачалоПериодаРасчетаСреднего И ИсходныеДанные.ОкончаниеПериодаРасчетаСреднего)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КоэффициентИндексацииЗаработка КАК КоэффициентИндексацииЗаработка
    |        ПО ИсходныеДанные.Сотрудник = КоэффициентИндексацииЗаработка.Сотрудник
    |            И (Месяцы.Период >= НАЧАЛОПЕРИОДА(КоэффициентИндексацииЗаработка.Период, МЕСЯЦ))
    |            И (КоэффициентИндексацииЗаработка.Период <= КОНЕЦПЕРИОДА(ИсходныеДанные.ДатаНачалаСобытия, ДЕНЬ))
    |
    |УПОРЯДОЧИТЬ ПО
    |    Сотрудник,
    |    Период УБЫВ
    |ИТОГИ ПО
    |    Сотрудник,
    |    Период";

Важный момент: использование КОНЕЦПЕРИОДА(..., ДЕНЬ) позволяет «захватить» индексацию, сделанную в любую секунду дня начала отпуска. Однако помните, что внесение изменений в типовые модули может затруднить последующее обновление конфигурации. Рекомендуется использовать механизм расширений для переопределения этой логики.

Решение 2: Методический подход согласно Постановлению № 922

Проанализируем ситуацию с точки зрения законодательства. Согласно пункту 16 Постановления Правительства РФ от 24.12.2007 № 922, существует три варианта учета индексации:

  1. В расчетный период: повышаются выплаты за месяцы, предшествующие индексации.
  2. После расчетного периода, но до начала события: повышается средний заработок, рассчитанный за весь расчетный период.
  3. Во время события: часть среднего заработка повышается с даты повышения до окончания события.

Когда индексация происходит в день начала отпуска, 1С:ЗУП 3.1 зачастую отрабатывает именно по третьему сценарию. Проверим это на практике:

  1. Откройте отчет Расчет среднего заработка из документа Отпуск.
  2. Если в таблице расчетного периода (12 месяцев) коэффициенты стоят 1.0, не спешите делать вывод об ошибке.
  3. Посмотрите на итоговую сумму среднего заработка и сумму начисленных отпускных.
  4. Проверьте, не применяется ли коэффициент индексации к уже рассчитанному итоговому среднему заработку.

В ЗУП реализована логика: если индексация совпадает с началом отпуска, она применяется не «внутри» таблицы (к прошлым выплатам), а «снаружи» — к результату. То есть ИтоговыйСреднийЗаработок = РассчитанныйСреднийЗаработок * КоэффициентИндексации. Это абсолютно корректно с точки зрения методологии учета.

Как проверить правильность расчета без правки кода

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

  1. Убедитесь, что в документе Изменение плановых начислений установлен флаг Учитывать как индексацию заработка. Без этого флага программа просто изменит оклады, но не зафиксирует коэффициент в нужном регистре.
  2. Пересчитайте документ Отпуск. Если он был создан раньше, чем индексация, его нужно обновить (кнопка с круговой стрелкой или «Пересчитать сотрудника»).
  3. Сравните результат: возьмите сумму среднего заработка из колонки «Без индексации» и умножьте на ваш коэффициент. Если полученная сумма совпадает с итоговым начислением в документе — расчет верен.

Резюме: Чаще всего проблема «невидимой» индексации — это лишь особенность визуального отображения в печатной форме. Программа применяет коэффициент к итогу, так как дата индексации не предшествует началу отпуска, а совпадает с ним. Если же вам принципиально видеть коэффициенты в строках каждого месяца расчетного периода, единственным выходом (помимо правки кода) будет перенос даты индексации на последний день предыдущего месяца (например, 30.06 вместо 01.07), что не всегда удобно кадровикам.

← На главную