Почему в 1С:ЗУП появляются отрицательные взносы и происходит массовый перерасчет с начала года?

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

Ситуация, когда в очередном документе Начисление зарплаты и взносов внезапно появляются строки с отрицательными значениями (сторно) по страховым взносам за все предыдущие месяцы года, является одной из самых стрессовых для бухгалтера и расчетчика. Кажется, что программа "сошла с ума", но на самом деле за этим всегда стоит четкая логика механизмов 1С. Рассмотрим подробно, как проанализировать эту проблему, найти причину и корректно исправить ситуацию.

Разберем механизм возникновения перерасчетов

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

Проанализируем основные причины, по которым взносы могут "уйти в минус" с начала года:

  1. Изменение графиков работы. Как выяснилось в ходе обсуждения темы, это одна из самых коварных причин. Если после обновления конфигурации или ручного вмешательства был пересохранен или перезаполнен график работы, к которому привязаны сотрудники, система помечает все их начисления как требующие пересчета.
  2. Смена тарифа страховых взносов. Если в середине года в карточке организации была изменена настройка тарифа (например, переход на тариф для субъектов МСП) и дата применения установлена с января, программа сторнирует старые взносы по ставке 30% и начислит новые.
  3. Изменение настроек начислений. Если в справочнике Начисления у какого-либо вида расчета изменили категорию дохода для страховых взносов (например, с "Целиком облагается" на "Не является объектом налогообложения"), программа пересчитает базу за весь период действия этой настройки.
  4. Регистрация документов "прошлым периодом". Ввод больничных, отпусков или кадровых переводов датой, предшествующей текущему месяцу расчета.

Шаг 1. Анализ подсистемы "Перерасчеты"

Прежде чем лезть в конфигуратор или регистры накопления, нам необходимо проверить очередь заданий на перерасчет. Пройдем в раздел Зарплата — Сервис — Перерасчеты. Рассмотрим это окно внимательно:

Если в списке присутствуют сотрудники, по которым в текущем документе августа наблюдаются минусы, обратите внимание на колонку Причина. Там может быть указано: "Документ Начисление зарплаты и взносов", "Изменение графика работы" или "Изменение штатного расписания". Если вы понимаете, что расчеты за прошлые месяцы верны и вы не планируете ничего менять, эти записи можно выделить и нажать кнопку Отменить. После этого при пересчете документа начисления отрицательные суммы исчезнут.

Шаг 2. Проверка истории изменений учетной политики

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

Шаг 3. Анализ регистра "Учет доходов для исчисления страховых взносов"

Для более глубокого анализа ситуации воспользуемся универсальным отчетом или напрямую заглянем в регистр. Проанализируем ситуацию через Функции для технического специалиста (или через Все функции). Нас интересует регистр накопления СведенияОДоходахДляИсчисленияСтраховыхВзносов.

В этом регистре хранятся данные о базе. Если вы видите там записи с видом движения "Расход" или сторнирующие записи за старые периоды, это прямой сигнал о том, что система пересматривает облагаемую базу. Проверьте поле Регистратор — какой документ внес эти изменения?

Шаг 4. Влияние обновления и графиков работы

Рассмотрим специфический случай, упомянутый в сообщениях форума. После обновления типовой конфигурации программа может автоматически обновить производственный календарь или графики работы. Проанализируем логику 1С: даже если физически время в графике не изменилось, но изменился его "внутренний" идентификатор или версия записи, система ставит пометку о необходимости пересчета всех начислений, зависящих от этого графика.

В результате в документе начисления происходит следующее:

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

Как исправить ситуацию: практические рекомендации

Выясним последовательность действий для исправления ошибки:

Вариант А. Если расчеты за прошлые периоды верны.

В этом случае нам не нужно, чтобы программа что-то пересчитывала. Нужно очистить "очередь":

  1. Зайдем в раздел Зарплата — Перерасчеты.
  2. Выделим все записи по проблемным сотрудникам (или вообще все, если вы уверены в прошлых периодах).
  3. Нажмем кнопку Отменить (или Дорасчитать позже в некоторых версиях, но "Отменить" надежнее для удаления записей).
  4. Вернемся в документ Начисление зарплаты и взносов, перейдем на вкладку Взносы и нажмем Пересчитать взносы. Отрицательные строки должны исчезнуть.

Вариант Б. Если база действительно изменилась.

Если вы действительно меняли настройки облагаемости начислений или тариф:

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

Полезные методы для программиста

Если вы анализируете проблему программно, обратите внимание на то, как заполняется таблица взносов. В типовых конфигурациях за это отвечают модули управления расчетом взносов. Проанализируем ключевой механизм:


// Пример логики, которую можно встретить в модулях расчета (упрощенно)
Процедура РассчитатьВзносы(ПараметрыРасчета)
    // Система собирает данные из регистра накопления "Данные о доходах"
    База = ПолучитьБазуДляВзносов(ПараметрыРасчета.Сотрудник, ПараметрыРасчета.Период);
    
    // Если обнаружены изменения в прошлых периодах, 
    // система формирует записи сторно
    Если База.ЕстьИзмененияПрошлыхПериодов Тогда
        СформироватьЗаписиПерерасчета(ПараметрыРасчета);
    КонецЕсли;
КонецПроцедуры

Чаще всего корень проблемы лежит не в ошибке кода, а в данных, зарегистрированных в таблице ПланыРасчета.РегистрацияПерерасчетов. Проанализируйте содержимое этого объекта через консоль запросов, чтобы увидеть скрытые записи, которые не всегда отображаются в пользовательском интерфейсе.

Резюме

Появление отрицательных взносов — это не ошибка программы, а следствие работы механизма автоматических перерасчетов. В 90% случаев это вызвано либо обновлением графиков работы, либо случайным изменением настроек учетной политики "задним числом". Первым делом всегда проверяйте сервис Перерасчеты и, если прошлые периоды закрыты и верны, просто удаляйте оттуда записи.

← На главную