При ведении учета заработной платы расчетчики нередко сталкиваются с ситуацией: при создании документа-исправления к документу Начисление зарплаты работникам организаций в конфигурации «1С:Зарплата и Управление Персоналом» количество дней и сумма в сторнирующей («красной») и новой («черной») строках оказываются меньше, чем в первичном документе. Например, в исходном начислении было отработано 18 дней, а при вводе исправления программа подставляет только 17 дней. Разберем детально, почему так происходит, как устроен механизм сторнирования на уровне запроса платформы и как правильно поступать в подобных ситуациях.
Распространенное заблуждение пользователей заключается в том, что кнопка «Исправить» должна механически скопировать данные исходного документа с противоположным знаком. На самом деле механизм исправления в типовых конфигурациях 1С работает иначе: он проверяет, не были ли периоды исходного документа уже вытеснены или отсторнированы другими документами, зарегистрированными позднее.
Если в периоде исходного начисления у сотрудника зарегистрирован межпериодный документ отклонения (например, документ Начисление по больничному листу, отпуск или оплата по среднему заработку), система уже учла факт отсутствия. Даже если сам больничный лист введен и рассчитан в следующем расчетном месяце, при проведении он автоматически сформировал движения по вытеснению и сторнированию рабочего времени за дни нетрудоспособности в регистре расчета ОсновныеНачисленияРаботниковОрганизаций.
Когда мы формируем документ-исправление, программа анализирует остаток еще не отсторнированного времени. Поскольку один рабочий день уже был сторнирован больничным листом, документ-исправление берет оставшиеся 17 дней, чтобы исключить повторное сторнирование одного и того же периода.
Посмотрим на алгоритм формирования сторнирующей («красной») строки. В коде конфигурации при заполнении табличной части начислений документа-исправления выполняется запрос к табличной части исходного документа с левым соединением к фактическим движениям регистра расчета:
ВЫБРАТЬ
Начисления.Сотрудник,
Начисления.Физлицо,
Начисления.ВидРасчета,
Начисления.ДатаНачала,
Начисления.ДатаОкончания,
Начисления.Показатель1,
Начисления.Показатель2,
Начисления.Показатель3,
Начисления.Показатель4,
Начисления.Показатель5,
Начисления.Показатель6,
Начисления.ПодразделениеОрганизации,
-Начисления.Результат - ЕСТЬNULL(СУММА(СторноНачисления.Результат), 0) КАК Результат,
-Начисления.ДополнительныйРезультат - ЕСТЬNULL(СУММА(СторноНачисления.ДополнительныйРезультат), 0) КАК ДополнительныйРезультат,
-Начисления.ОплаченоДнейЧасов - ЕСТЬNULL(СУММА(СторноНачисления.ОплаченоДнейЧасов), 0) КАК ОплаченоДнейЧасов,
-Начисления.ОтработаноДней - ЕСТЬNULL(СУММА(СторноНачисления.ОтработаноДней), 0) КАК ОтработаноДней,
-Начисления.ОтработаноЧасов - ЕСТЬNULL(СУММА(СторноНачисления.ОтработаноЧасов), 0) КАК ОтработаноЧасов,
-Начисления.ОтработаноДнейПоПятидневке - ЕСТЬNULL(СУММА(СторноНачисления.ОтработаноДнейПоПятидневке), 0) КАК ОтработаноДнейПоПятидневке,
-Начисления.ОтработаноЧасовПоПятидневке - ЕСТЬNULL(СУММА(СторноНачисления.ОтработаноЧасовПоПятидневке), 0) КАК ОтработаноЧасовПоПятидневке,
-Начисления.НормаДней - ЕСТЬNULL(СУММА(СторноНачисления.НормаДней), 0) КАК НормаДней,
-Начисления.НормаЧасов - ЕСТЬNULL(СУММА(СторноНачисления.НормаЧасов), 0) КАК НормаЧасов,
-Начисления.НормаДнейПоПятидневке - ЕСТЬNULL(СУММА(СторноНачисления.НормаДнейПоПятидневке), 0) КАК НормаДнейПоПятидневке,
-Начисления.НормаЧасовПоПятидневке - ЕСТЬNULL(СУММА(СторноНачисления.НормаЧасовПоПятидневке), 0) КАК НормаЧасовПоПятидневке,
Начисления.ПериодРасчетаСреднегоЗаработкаНачало,
Начисления.ПериодРасчетаСреднегоЗаработкаОкончание,
Начисления.ДатаНачалаСобытия,
ИСТИНА КАК Сторно,
&ПерерассчитываемыйДокумент КАК СторнируемыйДокумент
ИЗ
Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК Начисления
ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК СторноНачисления
ПО Начисления.Сотрудник = СторноНачисления.Сотрудник
И Начисления.ВидРасчета = СторноНачисления.ВидРасчета
И (СторноНачисления.ПериодДействияНачало МЕЖДУ Начисления.ДатаНачала И Начисления.ДатаОкончания)
И (НАЧАЛОПЕРИОДА(СторноНачисления.ПериодДействияКонец, ДЕНЬ) МЕЖДУ Начисления.ДатаНачала И Начисления.ДатаОкончания)
И (СторноНачисления.ПериодРегистрации > Начисления.Ссылка.ПериодРегистрации)
И (СторноНачисления.ПериодРегистрации <= &ПериодРегистрации)
И (СторноНачисления.СторнируемыйДокумент = Начисления.Ссылка)
ГДЕ
Начисления.Ссылка = &ПерерассчитываемыйДокумент
И (НЕ Начисления.Сторно)
И (&ПоВсемСотрудникам ИЛИ Начисления.Сотрудник В (&Сотрудники))
И Начисления.Ссылка.Проведен
СГРУППИРОВАТЬ ПО
Начисления.Сотрудник,
Начисления.Физлицо,
Начисления.ВидРасчета,
Начисления.ДатаНачала,
Начисления.ДатаОкончания,
Начисления.Показатель1,
Начисления.Показатель2,
Начисления.Показатель3,
Начисления.Показатель4,
Начисления.Показатель5,
Начисления.Показатель6,
Начисления.ПодразделениеОрганизации,
Начисления.ПериодРасчетаСреднегоЗаработкаНачало,
Начисления.ПериодРасчетаСреднегоЗаработкаОкончание,
Начисления.ДатаНачалаСобытия,
Начисления.Результат,
Начисления.ДополнительныйРезультат,
Начисления.ОплаченоДнейЧасов,
Начисления.ОтработаноДней,
Начисления.ОтработаноЧасов,
Начисления.ОтработаноДнейПоПятидневке,
Начисления.ОтработаноЧасовПоПятидневке,
Начисления.НормаДней,
Начисления.НормаЧасов,
Начисления.НормаДнейПоПятидневке,
Начисления.НормаЧасовПоПятидневке
Обратим внимание на условие соединения и поля выборки:
В выражении -Начисления.ОтработаноДней - ЕСТЬNULL(СУММА(СторноНачисления.ОтработаноДней), 0) платформа проверяет, сколько дней по данному виду расчета и периоду уже было отсторнировано с момента проведения исходного документа. Поскольку в регистре расчета поле СторнируемыйДокумент у записей больничного листа ссылается на первичное начисление оклада, сумма ранее проведенного сторно вычитается из исходных показателей. В итоге сторнируется только та часть начисления, которая еще фактически действует в учете.
Если пользователь, заметив расхождение с первичным документом, вручную исправит показатели в строках документа-исправления обратно на 18 дней, возникнут серьезные ошибки в учете:
Начисление по больничному листу, а затем документом-исправлением.Выясним, какие действия необходимо предпринять в зависимости от того, какую задачу требуется решить:
Начисление по больничному листу уже выполнил необходимое сторнирование и перерасчет. Лишний документ-исправление следует удалить.Разберем дополнительные моменты, требующие обязательного внимания расчетчика при межпериодных исправлениях:
Контроль таблицы перерасчетов: При вводе отклонений за прошлые периоды платформа 1С фиксирует записи в служебных таблицах перерасчетов регистров расчета. Рекомендуется открыть обработку Перерасчет зарплаты организации и убедиться, что по сотруднику нет незавершенных строк перерасчета, способных повлиять на расчет заработной платы в текущем периоде.
Следствия для НДФЛ и страховых взносов: Корректировка начислений прошлых месяцев уменьшает облагаемую базу. В зависимости от даты закрытия отчетного периода сумма уменьшения либо перекроется начислениями текущего месяца, либо потребует подачи уточненной отчетности по страховым взносам (РСВ). Образовавшаяся переплата по окладу формирует задолженность за сотрудником и автоматически зачитывается при формировании ближайшей зарплатной ведомости на выплату.