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