Несовпадение начисленной зарплаты и регистра накопления Учет доходов для исчисления страховых взносов и НДФЛ

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

В практике работы с конфигурацией «Зарплата и управление персоналом», редакция 3.1, нередко возникают ситуации, когда данные в расчетных листках и аналитических отчетах по начислениям полностью соответствуют ожиданиям бухгалтера, однако при формировании отчетности по страховым взносам или НДФЛ выявляются необъяснимые расхождения. Проблема особенно остро проявляется в периоды отчетности, когда выясняется, что суммы в регистре накопления Учет доходов для исчисления страховых взносов не соответствуют суммам в регистре Начисления и удержания по сотрудникам.

В данной статье мы разберем конкретный кейс, характерный для релизов ветки 3.1.16, проанализируем причины возникновения «плавающих» ошибок при массовом расчете сотрудников и определим алгоритм восстановления корректных данных.

Анализ симптомов проблемы

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

  1. Зависимость от количества сотрудников: При расчете одного конкретного сотрудника в отдельном документе Начисление зарплаты и взносов суммы в регистрах учета доходов формируются корректно. Однако при массовом заполнении документа (на 300 и более человек) у части сотрудников (например, у половины штата) суммы в регистрах начинают «плавать» — двоиться, уменьшаться или принимать произвольные значения.
  2. Дублирование в НДФЛ: Ошибка часто носит комплексный характер и затрагивает не только взносы, но и регистр Учет доходов для исчисления НДФЛ.
  3. Тщетность стандартных процедур: Использование утилиты chdbfl.exe, тестирование и исправление (ТиИ) с реиндексацией и пересчетом итогов не приносят результата.
  4. Внешние факторы: Часто проблема проявляется после импорта кадровых данных из сторонних систем (например, «Контур Персонал»), что наводит на мысли о повреждении ссылочной целостности.

Причина 1: Программный баг релиза и оптимизация расчетов

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

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

Причина 2: Скрытые записи в регистре Пересчет страховых взносов

Программа 1С:ЗУП обладает механизмом автоматического отслеживания изменений. Если после начисления зарплаты был изменен кадровый документ или настройки начисления «задним числом», система делает запись в служебный регистр сведений Пересчет страховых взносов.

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

Для исправления проделаем следующие шаги:

  1. Перейдем в меню «Функции для технического специалиста» (или «Все функции»).
  2. Найдем регистр сведений Пересчет страховых взносов.
  3. Проанализируем наличие записей за октябрь-ноябрь 2020 года (или другой проблемный период).
  4. Очистим этот регистр по проблемным сотрудникам. Это не удалит сами взносы, но заставит программу «забыть» о необходимости корректировок и рассчитать документ «с чистого листа».

Причина 3: Последствия импорта данных и дубли UUID

Поскольку в рассматриваемом случае использовалась загрузка из «Контур Персонал», нельзя исключать нарушение уникальных идентификаторов. В 1С:ЗУП 3.1 ключевыми полями в регистрах являются не только физическое лицо и сотрудник, но и скрытые реквизиты, такие как Идентификатор строки.

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

Выясним причину через проверку ссылок. Попробуем выполнить следующий запрос (или воспользоваться консолью запросов) для поиска дублей:


ВЫБРАТЬ
    ФизическиеЛица.Наименование,
    ФизическиеЛица.ДатаРождения,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ФизическиеЛица.Ссылка) КАК КоличествоСсылок
ИЗ
    Справочник.ФизическиеЛица КАК ФизическиеЛица
СГРУППИРОВАТЬ ПО
    ФизическиеЛица.Наименование,
    ФизическиеЛица.ДатаРождения
ИМЕЮЩИЕ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ФизическиеЛица.Ссылка) > 1

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

Рекомендуемый алгоритм решения (по шагам)

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

  1. Проверка настроек тарифа: Убедимся, что в октябре/ноябре 2020 года не менялась настройка «Учетная политика» в карточке организации. Если произошел переход на тариф «Для субъектов малого или среднего предпринимательства», программа будет делить доход на две части (в пределах МРОТ и выше). Это часто выглядит как «ошибка», хотя на самом деле является нормой. Но если в регистре суммы просто хаотичны — идем дальше.
  2. Очистка кэша: Удалим базу из списка запуска 1С и добавим её снова. В файловом варианте это критично, так как старый кэш может хранить неверные описания временных таблиц.
  3. Использование документа «Операция учета взносов»: Если ошибка локализована в паре сотрудников и вы не можете её победить программно, воспользуемся документом Операция учета взносов. Он позволяет вручную скорректировать данные в регистре Учет доходов для исчисления страховых взносов, чтобы они совпали с расчетным листком. Важно: этот метод — «костыль», его стоит применять только для сдачи отчетности в условиях дефицита времени.
  4. Дробление документов: Если массовый расчет дает сбой, разделим один документ Начисление зарплаты и взносов на несколько (например, по подразделениям или группами по 50 человек). Как показывает практика, уменьшение объема данных в одном сеансе расчета нивелирует баг с переполнением таблиц в памяти.

Технический вывод

Ситуация, при которой расчет по одному сотруднику верен, а групповой — нет, однозначно указывает на проблему управления памятью в коде конфигурации или платформы. Мы проанализировали основные причины и выяснили, что наиболее вероятным виновником является некорректная работа с временными таблицами в релизе 3.1.16.108.

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

← На главную