Каждый бухгалтер, работающий в программе 1С:Зарплата и управление персоналом 3.1, рано или поздно сталкивается с ситуацией, когда сотрудникам начисляется премия за прошлый месяц (или квартал), и при этом расчетный листок должен наглядно показывать, за какой именно период произведена выплата. Однако при попытке указать прошлый период в табличной части документа Премия программа неожиданно начинает пересчитывать средний заработок за этот прошлый месяц. В результате документ Отпуск или Командировка в текущем периоде начинает настойчиво требовать перерасчета прошлых документов. Выясним причину этого поведения системы и разберем по шагам, как решить эту проблему правильно и без доработки типовой конфигурации.
Для начала проанализируем ситуацию, описанную автором темы. В документе Премия за ноябрь бухгалтер указывает период действия — сентябрь. Цель благая: чтобы работник в своем расчетном листке за ноябрь увидел строку «Премия за сентябрь». Но сразу после проведения этого документа сумма среднего заработка за сентябрь меняется, а в регистре накопления Данные о начислениях для расчета среднего заработка (общий) запись регистрируется за сентябрь.
Почему программа ведет себя именно так? В системе 1С:ЗУП 3.1 в документах начислений одновременно сосуществуют три разных периода, и каждый из них отвечает за свои задачи:
Когда мы вручную меняем даты начала и окончания в табличной части (период действия) на сентябрь, программа буквально понимает это как приказ: «Учесть эту сумму в составе доходов сентября». Соответственно, средний заработок сентября увеличивается, и программа сигнализирует о необходимости пересчитать все документы, созданные позже сентября, в которых использовался расчет среднего заработка.
Обратимся к нормативной базе. Порядок расчета среднего заработка регулируется Постановлением Правительства РФ № 922 (а с 1 сентября 2025 года — новым Положением № 540). Согласно правилам учета премий:
Ежемесячные, квартальные и разовые премии включаются в расчет среднего заработка по месяцу их начисления (регистрации), а не по периоду, за который они выплачены.
Это означает следующее: если премия начислена в ноябре (даже если это премия за показатели работы в сентябре), по закону она обязана войти в средний заработок именно ноября. Попытка принудительно зафиксировать эту премию в среднем заработке сентября через манипуляции с периодом действия в табличной части — это прямое методологическое нарушение, которое ведет к искажению отчетности и неверному расчету отпускных.
Рассмотрим подробнее три практических способа, как удовлетворить пожелания бухгалтерии и сотрудников без нарушения логики программы и законодательства.
Самый простой, быстрый и абсолютно типовой способ — настроить вид начисления таким образом, чтобы его название само за себя говорило сотруднику, за какой период выплачена премия. При этом нам не придется вручную сдвигать даты периода действия в документе.
Разберем настройку по шагам:
Ежемесячная премия за предыдущий месяц.По отдельному документу (документом Премия).При использовании такого начисления в ноябре:
Премия указываем месяц начисления — Ноябрь.В современных версиях программы 1С:ЗУП 3.1 разработчики разделили понятия дат для регистров расчета и текстового представления периода для печатных форм. Посмотрим на этот механизм в документе Премия.
Если в настройках начисления или в самом документе активирован флаг Период, по итогам работы за который начисляется премия, мы можем управлять базовым периодом. При этом на форме документа присутствует реквизит Период строкой (информационное поле).
Выясним важный нюанс, с которым столкнулся автор темы в сообщении 14: при попытке изменить дату начала/окончания и период строкой вручную, программа автоматически перезаписывает одно поле при изменении другого. Чтобы этого не происходило, необходимо соблюдать строгий порядок заполнения:
ДанныеОНачисленияхДляРасчетаСреднегоЗаработкаОбщий легла в Ноябрь.Период строкой, указав там значение «Сентябрь». В ряде релизов для этого может потребоваться включить отображение скрытых колонок через меню Еще — Изменить форму.Если бухгалтерия категорически требует, чтобы в расчетном листке в колонке «Период» для строки премии фигурировал именно сентябрь, но при этом регистры среднего заработка оставались нетронутыми, лучшим техническим решением будет использование Расширения конфигурации.
Вместо написания обработки заполнения табличной части (которая все равно приведет к перезаписи регистров и ошибкам в среднем заработке), мы можем точечно перехватить процедуру формирования отчета Расчетный листок.
Проанализируем концептуальный пример кода, который можно внедрить в расширение:
&После("ПриКомпоновкеРезультата")
Процедура Расш_ПриКомпоновкеРезультата(ДокументРезультат, Выводчик, СхемаКомпоновкиДанных)
// Перехватываем таблицу данных расчетного листка перед выводом на печать
// Если вид расчета — наша премия, подменяем выводимый период представления
Для Каждого СтрокаДанных Из НаборДанныхРасчета Цикл
Если СтрокаДанных.ВидРасчета = ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия полностью учитываемая") Тогда
// Заменяем представление периода на базовый период премии
Если ЗначениеЗаполнено(СтрокаДанных.БазовыйПериодНачало) Тогда
СтрокаДанных.ПериодПредставление = Формат(СтрокаДанных.БазовыйПериодНачало, "ДФ='MMMM yyyy'");
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Этот подход идеален с точки зрения архитектуры 1С:ЗУП 3.1:
Мы выяснили, что попытка ручного изменения периодов в табличной части документа Премия ломает стройную картину расчета среднего заработка в 1С:ЗУП 3.1. Для решения этой проблемы рекомендуется отказаться от ручной корректировки дат начала и окончания в пользу настройки понятных наименований видов расчетов или использования информационного поля Период строкой. В более сложных случаях на помощь придут безопасные расширения конфигурации, сохраняющие типовую методологию учета.