При работе в 1С:Зарплата и управление персоналом (ЗУП) версии 3.1 бухгалтеры и программисты часто сталкиваются с ситуацией, когда индексация заработка, проведенная первым числом месяца, «не подтягивается» в расчет среднего заработка для отпуска, начинающегося в этот же день. Рассмотрим подробнее, почему так происходит, и разберем пути решения этой проблемы с технической и методической точек зрения.
Проанализируем типовое поведение программы. Когда мы проводим документ Изменение плановых начислений (или специализированный документ Индексация заработка) с 1-го числа месяца, запись в регистр сведений КоэффициентИндексацииЗаработка часто попадает с временем 00:01:00. В то же время документ Отпуск, начинающийся в этот же день, технически ориентируется на начало дня — 00:00:00.
Выясним причину, заглянув в «закулисье» программы. В общем модуле УчетСреднегоЗаработка существует функция ДанныеИндексации, которая формирует запрос к базе данных. Проблема заключается в условиях сравнения дат. Система выполняет проверку по периодам, и если время индексации оказывается хотя бы на секунду позже начала события (отпуска), типовой запрос может проигнорировать этот коэффициент при заполнении расчетной базы внутри расчетного периода.
Разберем, как это выглядит в коде. В некоторых случаях система использует условие вида:
И (КоэффициентИндексацииЗаработка.Период < ИсходныеДанные.ДатаНачалаСобытия)
При таком условии 01.07.2022 00:01:00 никогда не будет меньше 01.07.2022 00:00:00, и индексация для расчетного периода «не увидится».
Если ваша учетная политика требует, чтобы индексация, проведенная в день начала отпуска, обязательно отражалась как индексация выплат внутри расчетного периода, рассмотрим вариант доработки. Мы можем изменить условие в запросе, чтобы система сравнивала даты без учета времени или приводила дату начала события к концу дня.
Посмотрим на пример модифицированного кода в общем модуле УчетСреднегоЗаработка (функция ДанныеИндексации):
// Изменяем условие в тексте запроса
Запрос.Текст =
"ВЫБРАТЬ
| ИсходныеДанные.Сотрудник КАК Сотрудник,
| Месяцы.Период КАК Период,
| ЕСТЬNULL(КоэффициентИндексацииЗаработка.Коэффициент, 1) КАК КоэффициентИндексации
|ИЗ
| ВТИсходныеДанные КАК ИсходныеДанные
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТПериоды КАК Месяцы
| ПО (Месяцы.Период МЕЖДУ ИсходныеДанные.НачалоПериодаРасчетаСреднего И ИсходныеДанные.ОкончаниеПериодаРасчетаСреднего)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КоэффициентИндексацииЗаработка КАК КоэффициентИндексацииЗаработка
| ПО ИсходныеДанные.Сотрудник = КоэффициентИндексацииЗаработка.Сотрудник
| И (Месяцы.Период >= НАЧАЛОПЕРИОДА(КоэффициентИндексацииЗаработка.Период, МЕСЯЦ))
| И (КоэффициентИндексацииЗаработка.Период <= КОНЕЦПЕРИОДА(ИсходныеДанные.ДатаНачалаСобытия, ДЕНЬ))
|
|УПОРЯДОЧИТЬ ПО
| Сотрудник,
| Период УБЫВ
|ИТОГИ ПО
| Сотрудник,
| Период";
Важный момент: использование КОНЕЦПЕРИОДА(..., ДЕНЬ) позволяет «захватить» индексацию, сделанную в любую секунду дня начала отпуска. Однако помните, что внесение изменений в типовые модули может затруднить последующее обновление конфигурации. Рекомендуется использовать механизм расширений для переопределения этой логики.
Проанализируем ситуацию с точки зрения законодательства. Согласно пункту 16 Постановления Правительства РФ от 24.12.2007 № 922, существует три варианта учета индексации:
Когда индексация происходит в день начала отпуска, 1С:ЗУП 3.1 зачастую отрабатывает именно по третьему сценарию. Проверим это на практике:
1.0, не спешите делать вывод об ошибке.В ЗУП реализована логика: если индексация совпадает с началом отпуска, она применяется не «внутри» таблицы (к прошлым выплатам), а «снаружи» — к результату. То есть ИтоговыйСреднийЗаработок = РассчитанныйСреднийЗаработок * КоэффициентИндексации. Это абсолютно корректно с точки зрения методологии учета.
Рассмотрим алгоритм действий для бухгалтера, чтобы убедиться, что программа учла повышение зарплаты:
Резюме: Чаще всего проблема «невидимой» индексации — это лишь особенность визуального отображения в печатной форме. Программа применяет коэффициент к итогу, так как дата индексации не предшествует началу отпуска, а совпадает с ним. Если же вам принципиально видеть коэффициенты в строках каждого месяца расчетного периода, единственным выходом (помимо правки кода) будет перенос даты индексации на последний день предыдущего месяца (например, 30.06 вместо 01.07), что не всегда удобно кадровикам.