Ситуация, когда в очередном документе Начисление зарплаты и взносов внезапно появляются строки с отрицательными значениями (сторно) по страховым взносам за все предыдущие месяцы года, является одной из самых стрессовых для бухгалтера и расчетчика. Кажется, что программа "сошла с ума", но на самом деле за этим всегда стоит четкая логика механизмов 1С. Рассмотрим подробно, как проанализировать эту проблему, найти причину и корректно исправить ситуацию.
Программа 1С:Зарплата и управление персоналом 3.1 (ЗУП) обладает встроенным механизмом автоматического отслеживания изменений. Если вы меняете данные "задним числом" (например, правите документ начисления за март, находясь в августе, или меняете настройки графиков), система фиксирует это в специальном регистре. В следующий раз, когда вы создаете документ Начисление зарплаты и взносов, программа видит эти "задания" и пытается привести учет в соответствие с новыми данными.
Проанализируем основные причины, по которым взносы могут "уйти в минус" с начала года:
Начисления у какого-либо вида расчета изменили категорию дохода для страховых взносов (например, с "Целиком облагается" на "Не является объектом налогообложения"), программа пересчитает базу за весь период действия этой настройки.Прежде чем лезть в конфигуратор или регистры накопления, нам необходимо проверить очередь заданий на перерасчет. Пройдем в раздел Зарплата — Сервис — Перерасчеты. Рассмотрим это окно внимательно:
Если в списке присутствуют сотрудники, по которым в текущем документе августа наблюдаются минусы, обратите внимание на колонку Причина. Там может быть указано: "Документ Начисление зарплаты и взносов", "Изменение графика работы" или "Изменение штатного расписания". Если вы понимаете, что расчеты за прошлые месяцы верны и вы не планируете ничего менять, эти записи можно выделить и нажать кнопку Отменить. После этого при пересчете документа начисления отрицательные суммы исчезнут.
Выясним, не менялся ли тариф страховых взносов. Для этого перейдем в карточку организации на вкладку Учетная политика и другие настройки — Учетная политика. Важно не просто посмотреть на текущую надпись, а нажать гиперссылку История изменений. Посмотрим, нет ли там записи от текущего месяца, которая меняет тариф с начала года. Любая манипуляция в этой форме провоцирует полный пересчет взносов по всем сотрудникам организации.
Для более глубокого анализа ситуации воспользуемся универсальным отчетом или напрямую заглянем в регистр. Проанализируем ситуацию через Функции для технического специалиста (или через Все функции). Нас интересует регистр накопления СведенияОДоходахДляИсчисленияСтраховыхВзносов.
В этом регистре хранятся данные о базе. Если вы видите там записи с видом движения "Расход" или сторнирующие записи за старые периоды, это прямой сигнал о том, что система пересматривает облагаемую базу. Проверьте поле Регистратор — какой документ внес эти изменения?
Рассмотрим специфический случай, упомянутый в сообщениях форума. После обновления типовой конфигурации программа может автоматически обновить производственный календарь или графики работы. Проанализируем логику 1С: даже если физически время в графике не изменилось, но изменился его "внутренний" идентификатор или версия записи, система ставит пометку о необходимости пересчета всех начислений, зависящих от этого графика.
В результате в документе начисления происходит следующее:
Оклада (вид расчета, зависящий от графика).Оклада той же суммой.Выясним последовательность действий для исправления ошибки:
Вариант А. Если расчеты за прошлые периоды верны.
В этом случае нам не нужно, чтобы программа что-то пересчитывала. Нужно очистить "очередь":
Вариант Б. Если база действительно изменилась.
Если вы действительно меняли настройки облагаемости начислений или тариф:
Если вы анализируете проблему программно, обратите внимание на то, как заполняется таблица взносов. В типовых конфигурациях за это отвечают модули управления расчетом взносов. Проанализируем ключевой механизм:
// Пример логики, которую можно встретить в модулях расчета (упрощенно)
Процедура РассчитатьВзносы(ПараметрыРасчета)
// Система собирает данные из регистра накопления "Данные о доходах"
База = ПолучитьБазуДляВзносов(ПараметрыРасчета.Сотрудник, ПараметрыРасчета.Период);
// Если обнаружены изменения в прошлых периодах,
// система формирует записи сторно
Если База.ЕстьИзмененияПрошлыхПериодов Тогда
СформироватьЗаписиПерерасчета(ПараметрыРасчета);
КонецЕсли;
КонецПроцедуры
Чаще всего корень проблемы лежит не в ошибке кода, а в данных, зарегистрированных в таблице ПланыРасчета.РегистрацияПерерасчетов. Проанализируйте содержимое этого объекта через консоль запросов, чтобы увидеть скрытые записи, которые не всегда отображаются в пользовательском интерфейсе.
Появление отрицательных взносов — это не ошибка программы, а следствие работы механизма автоматических перерасчетов. В 90% случаев это вызвано либо обновлением графиков работы, либо случайным изменением настроек учетной политики "задним числом". Первым делом всегда проверяйте сервис Перерасчеты и, если прошлые периоды закрыты и верны, просто удаляйте оттуда записи.