Как исправить сторнирование страховых взносов с превышения предельной величины базы в 1С:ЗУП 3.1

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

После обновления конфигурации 1С:Зарплата и управление персоналом 3.1 до релиза 3.1.30.36 (и соседних версий в этой ветке) многие пользователи столкнулись с критической проблемой. При расчете заработной платы за очередной месяц программа внезапно «снимает» (сторнирует) страховые взносы с базы, превышающей предельную величину, которые были корректно исчислены в предыдущих периодах (начиная с марта 2024 года).

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

Выясним причину возникновения ошибки

Давайте проанализируем ситуацию. В 2024 году совокупный тариф страховых взносов составляет 30% в пределах установленной базы (2 225 000 руб.) и 15,1% сверх этой величины. Если организация применяет льготные тарифы (например, МСП или Сколково), расчет усложняется, но ставка 15,1% сверх предела остается актуальной для большинства категорий.

Проанализируем программные изменения. До определенных релизов (ветка 3.1.29) ставка взносов сверх предела была жестко прописана непосредственно в программном коде. Начиная с версии 3.1.30.15, разработчики реализовали новый механизм: теперь все ставки, включая ставку сверх предела, хранятся в регистре сведений ТарифыСтраховыхВзносов.

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

  1. Произошел «перескок» через релизы (например, обновление сразу с 3.1.29.78 на 3.1.30.36).
  2. После обновления конфигурации база данных не была открыта в режиме «1С:Предприятие» строго на промежуточном релизе 3.1.30.15, где выполнялись процедуры миграции данных.
  3. Локальная версия классификатора законодательных значений в базе данных имеет номер версии выше, чем номер в макете обновленной конфигурации, из-за чего система «считает», что данные обновлять не нужно.

В результате в регистре ТарифыСтраховыхВзносов ресурс СтавкаСПревышенияПредела оказывается пустым (равным нулю). Программа видит базу сверх предела, умножает ее на нулевую ставку и закономерно получает нулевой налог. Поскольку за прошлые месяцы налог был начислен (тогда еще старым кодом или корректно работающим механизмом), система формирует сторнирующие записи, чтобы привести общую сумму взносов к текущему «нулевому» состоянию.

Способ 1. Принудительное обновление законодательных значений (Рекомендуется)

Это самый простой и эффективный способ, который помогает в 95% случаев. Рассмотрим пошагово, как заставить программу перечитать ставки из обновленных классификаторов.

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

После выполнения этих действий попробуем пересчитать документ Начисление зарплаты и взносов. Отрицательные суммы на закладке «Взносы» должны исчезнуть.

Способ 2. Техническое исправление через регистр версий (Для программистов)

Если первый способ не помог из-за конфликта версий классификаторов, проанализируем ситуацию через консоль запросов или обработку «Редактирование записей регистра». Мы увидим, что в регистре ВерсииКлассификаторов для записи «Тарифы страховых взносов» стоит версия (например, 19), в то время как в макете конфигурации актуальная версия — 18.

Разберем, как принудительно «откатить» версию классификатора, чтобы система инициировала обновление. Рассмотрим пример кода, который можно выполнить в обработке «Групповое изменение реквизитов» или через небольшое расширение для доступа к регистру:


// Пример логики для сброса версии классификатора
ЗаписьРегистра = РегистрыСведений.ВерсииКлассификаторов.СоздатьМенеджерЗаписи();
ЗаписьРегистра.Объект = "ТарифыСтраховыхВзносов";
ЗаписьРегистра.Прочитать();
Если ЗаписьРегистра.Выбран() Тогда
    ЗаписьРегистра.Версия = "17"; // Устанавливаем версию ниже текущей (18 или 19)
    ЗаписьРегистра.Записать();
КонецЕсли;

После понижения версии в регистре ВерсииКлассификаторов выполним стандартную процедуру обновления законодательных значений (как описано в Способе 1). Теперь система увидит, что текущая версия (17) ниже версии в макете (18) и корректно перезаполнит ставки.

Способ 3. Исправление через расширение или конфигуратор

Если вы не хотите менять данные классификаторов вручную, можно воспользоваться исправлением на уровне программного кода. Выясним причину в модуле менеджера регистра ТарифыСтраховыхВзносов. Там находится процедура восстановления начальных значений. Мы можем создать расширение и перехватить форму записи регистра ВерсииКлассификаторов, чтобы временно разрешить ее редактирование (по умолчанию она закрыта для изменений).

Рассмотрим пример кода в расширении для формы записи регистра:


&НаСервере
Процедура После_ФормаЗаписиПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка)
    // Разрешаем редактирование формы, которая заблокирована в типовом коде
    Форма.ТолькоПросмотр = Ложь;
КонецПроцедуры

После установки такого расширения мы сможем вручную зайти в регистр Версии классификаторов, найти строку «Тарифы страховых взносов» и вручную поменять номер версии на более низкий (например, 17 или 0). Затем запускаем обновление законодательных значений через пользовательский интерфейс.

Проверка результата и пересчет взносов

Проанализируем ситуацию после применения исправлений. Чтобы убедиться, что ставки встали на место, сформируем отчет Карточка учета страховых взносов по сотруднику, у которого возникло превышение. В шапке отчета или в расшифровке тарифа в правой колонке (сверх предела) должна появиться ставка 15.1%.

Важный момент: если вы уже провели документы с «минусами», простого исправления ставок может быть недостаточно для автоматического исправления текущего месяца. Рекомендуется воспользоваться документом Пересчет страховых взносов (раздел «Налоги и взносы»).

Рассмотрим порядок действий при использовании документа пересчета:

  1. Создадим новый документ Пересчет страховых взносов.
  2. Укажем расчетный период (например, Август 2024).
  3. Нажмем кнопку Заполнить.
  4. Программа проанализирует базу за весь год и автоматически доначислит взносы, которые были ошибочно сторнированы в «Начислении зарплаты».

Это позволит избежать ручной правки каждого документа начисления и гарантирует корректность формирования отчетности РСВ (Расчет по страховым взносам) за 9 месяцев.

Официальное решение от 1С

Разберем официальную позицию вендора. Фирма «1С» признала наличие этой проблемы (код ошибки 70081249). Для ее устранения выпущен патч с идентификатором EF_70081249. Если у вас включена автоматическая загрузка исправлений, патч должен установиться сам. Если нет — найдите его в списке доступных патчей для версии 3.1.30 и установите через Администрирование — Обслуживание — Обновление программы — Установка исправлений (патчей).

Резюме: проблема носит массовый характер и связана с переходом на новый механизм хранения ставок. Своевременное обновление законодательных значений и проверка регистра тарифов позволят избежать ошибок в учете и претензий со стороны контролирующих органов.

← На главную