После обновления конфигурации 1С:Зарплата и управление персоналом 3.1 до релиза 3.1.30.36 (и соседних версий в этой ветке) многие пользователи столкнулись с критической проблемой. При расчете заработной платы за очередной месяц программа внезапно «снимает» (сторнирует) страховые взносы с базы, превышающей предельную величину, которые были корректно исчислены в предыдущих периодах (начиная с марта 2024 года).
В этой статье мы подробно разберем причины возникновения данной ошибки, проанализируем программный код и регистры, а также рассмотрим несколько способов решения проблемы — от простых пользовательских настроек до технических манипуляций в конфигураторе.
Давайте проанализируем ситуацию. В 2024 году совокупный тариф страховых взносов составляет 30% в пределах установленной базы (2 225 000 руб.) и 15,1% сверх этой величины. Если организация применяет льготные тарифы (например, МСП или Сколково), расчет усложняется, но ставка 15,1% сверх предела остается актуальной для большинства категорий.
Проанализируем программные изменения. До определенных релизов (ветка 3.1.29) ставка взносов сверх предела была жестко прописана непосредственно в программном коде. Начиная с версии 3.1.30.15, разработчики реализовали новый механизм: теперь все ставки, включая ставку сверх предела, хранятся в регистре сведений ТарифыСтраховыхВзносов.
Проблема возникает в следующих случаях:
3.1.29.78 на 3.1.30.36).3.1.30.15, где выполнялись процедуры миграции данных.В результате в регистре ТарифыСтраховыхВзносов ресурс СтавкаСПревышенияПредела оказывается пустым (равным нулю). Программа видит базу сверх предела, умножает ее на нулевую ставку и закономерно получает нулевой налог. Поскольку за прошлые месяцы налог был начислен (тогда еще старым кодом или корректно работающим механизмом), система формирует сторнирующие записи, чтобы привести общую сумму взносов к текущему «нулевому» состоянию.
Это самый простой и эффективный способ, который помогает в 95% случаев. Рассмотрим пошагово, как заставить программу перечитать ставки из обновленных классификаторов.
После выполнения этих действий попробуем пересчитать документ Начисление зарплаты и взносов. Отрицательные суммы на закладке «Взносы» должны исчезнуть.
Если первый способ не помог из-за конфликта версий классификаторов, проанализируем ситуацию через консоль запросов или обработку «Редактирование записей регистра». Мы увидим, что в регистре ВерсииКлассификаторов для записи «Тарифы страховых взносов» стоит версия (например, 19), в то время как в макете конфигурации актуальная версия — 18.
Разберем, как принудительно «откатить» версию классификатора, чтобы система инициировала обновление. Рассмотрим пример кода, который можно выполнить в обработке «Групповое изменение реквизитов» или через небольшое расширение для доступа к регистру:
// Пример логики для сброса версии классификатора
ЗаписьРегистра = РегистрыСведений.ВерсииКлассификаторов.СоздатьМенеджерЗаписи();
ЗаписьРегистра.Объект = "ТарифыСтраховыхВзносов";
ЗаписьРегистра.Прочитать();
Если ЗаписьРегистра.Выбран() Тогда
ЗаписьРегистра.Версия = "17"; // Устанавливаем версию ниже текущей (18 или 19)
ЗаписьРегистра.Записать();
КонецЕсли;
После понижения версии в регистре ВерсииКлассификаторов выполним стандартную процедуру обновления законодательных значений (как описано в Способе 1). Теперь система увидит, что текущая версия (17) ниже версии в макете (18) и корректно перезаполнит ставки.
Если вы не хотите менять данные классификаторов вручную, можно воспользоваться исправлением на уровне программного кода. Выясним причину в модуле менеджера регистра ТарифыСтраховыхВзносов. Там находится процедура восстановления начальных значений. Мы можем создать расширение и перехватить форму записи регистра ВерсииКлассификаторов, чтобы временно разрешить ее редактирование (по умолчанию она закрыта для изменений).
Рассмотрим пример кода в расширении для формы записи регистра:
&НаСервере
Процедура После_ФормаЗаписиПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка)
// Разрешаем редактирование формы, которая заблокирована в типовом коде
Форма.ТолькоПросмотр = Ложь;
КонецПроцедуры
После установки такого расширения мы сможем вручную зайти в регистр Версии классификаторов, найти строку «Тарифы страховых взносов» и вручную поменять номер версии на более низкий (например, 17 или 0). Затем запускаем обновление законодательных значений через пользовательский интерфейс.
Проанализируем ситуацию после применения исправлений. Чтобы убедиться, что ставки встали на место, сформируем отчет Карточка учета страховых взносов по сотруднику, у которого возникло превышение. В шапке отчета или в расшифровке тарифа в правой колонке (сверх предела) должна появиться ставка 15.1%.
Важный момент: если вы уже провели документы с «минусами», простого исправления ставок может быть недостаточно для автоматического исправления текущего месяца. Рекомендуется воспользоваться документом Пересчет страховых взносов (раздел «Налоги и взносы»).
Рассмотрим порядок действий при использовании документа пересчета:
Это позволит избежать ручной правки каждого документа начисления и гарантирует корректность формирования отчетности РСВ (Расчет по страховым взносам) за 9 месяцев.
Разберем официальную позицию вендора. Фирма «1С» признала наличие этой проблемы (код ошибки 70081249). Для ее устранения выпущен патч с идентификатором EF_70081249. Если у вас включена автоматическая загрузка исправлений, патч должен установиться сам. Если нет — найдите его в списке доступных патчей для версии 3.1.30 и установите через Администрирование — Обслуживание — Обновление программы — Установка исправлений (патчей).
Резюме: проблема носит массовый характер и связана с переходом на новый механизм хранения ставок. Своевременное обновление законодательных значений и проверка регистра тарифов позволят избежать ошибок в учете и претензий со стороны контролирующих органов.