В практике работы с конфигурацией «Зарплата и управление персоналом», редакция 3.1, нередко возникают ситуации, когда данные в расчетных листках и аналитических отчетах по начислениям полностью соответствуют ожиданиям бухгалтера, однако при формировании отчетности по страховым взносам или НДФЛ выявляются необъяснимые расхождения. Проблема особенно остро проявляется в периоды отчетности, когда выясняется, что суммы в регистре накопления Учет доходов для исчисления страховых взносов не соответствуют суммам в регистре Начисления и удержания по сотрудникам.
В данной статье мы разберем конкретный кейс, характерный для релизов ветки 3.1.16, проанализируем причины возникновения «плавающих» ошибок при массовом расчете сотрудников и определим алгоритм восстановления корректных данных.
Прежде чем приступать к исправлению, важно локализовать ошибку. Рассмотрим характерные признаки технического сбоя, который мы исследуем:
Начисление зарплаты и взносов суммы в регистрах учета доходов формируются корректно. Однако при массовом заполнении документа (на 300 и более человек) у части сотрудников (например, у половины штата) суммы в регистрах начинают «плавать» — двоиться, уменьшаться или принимать произвольные значения.Учет доходов для исчисления НДФЛ.chdbfl.exe, тестирование и исправление (ТиИ) с реиндексацией и пересчетом итогов не приносят результата.Разберем внутреннюю логику программы. В релизах 3.1.16 разработчики 1С внедряли механизмы оптимизации производительности для крупных баз. При проведении документа Начисление зарплаты и взносов программа формирует временные таблицы в памяти сервера (или кэше файловой базы). В определенных сборках (включая 3.1.16.108) была обнаружена ошибка: при очистке промежуточных таблиц в процессе циклического расчета сотрудников данные предыдущих записей могли «залипать» или суммироваться с текущими.
Проанализируем ситуацию: когда вы рассчитываете сотрудника отдельно, временная таблица пуста, и расчет верен. При групповом расчете мусорные данные из памяти искажают итоговые движения документа. Единственным надежным решением в данном случае является обновление конфигурации до актуальных версий (например, ветки 3.1.18 или выше), где механизмы работы с временными таблицами были исправлены.
Программа 1С:ЗУП обладает механизмом автоматического отслеживания изменений. Если после начисления зарплаты был изменен кадровый документ или настройки начисления «задним числом», система делает запись в служебный регистр сведений Пересчет страховых взносов.
Рассмотрим, как это влияет на нашу проблему. При проведении нового документа начисления система обращается к этому регистру и, видя там записи по сотруднику, может пытаться выполнить скрытую корректировку доходов за прошлые периоды внутри текущего документа. Если таких записей много и они «мусорные», расчет превращается в хаос.
Для исправления проделаем следующие шаги:
Пересчет страховых взносов.Поскольку в рассматриваемом случае использовалась загрузка из «Контур Персонал», нельзя исключать нарушение уникальных идентификаторов. В 1С:ЗУП 3.1 ключевыми полями в регистрах являются не только физическое лицо и сотрудник, но и скрытые реквизиты, такие как Идентификатор строки.
Если при загрузке были созданы дубли физических лиц или если у сотрудников некорректно заполнились связи с головной организацией, алгоритм распределения доходов по категориям застрахованных лиц (особенно в контексте льготных тарифов МСБ 15%) может давать сбой.
Выясним причину через проверку ссылок. Попробуем выполнить следующий запрос (или воспользоваться консолью запросов) для поиска дублей:
ВЫБРАТЬ
ФизическиеЛица.Наименование,
ФизическиеЛица.ДатаРождения,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ФизическиеЛица.Ссылка) КАК КоличествоСсылок
ИЗ
Справочник.ФизическиеЛица КАК ФизическиеЛица
СГРУППИРОВАТЬ ПО
ФизическиеЛица.Наименование,
ФизическиеЛица.ДатаРождения
ИМЕЮЩИЕ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ФизическиеЛица.Ссылка) > 1
Если запрос вернет записи, значит, проблема в «разорванных» связях между кадровым учетом и расчетом взносов. Потребуется процедура поиска и замены дублей.
Рассмотрим пошагово, как действовать, если обновление конфигурации невозможно в моменте, а отчетность сдавать нужно:
Операция учета взносов. Он позволяет вручную скорректировать данные в регистре Учет доходов для исчисления страховых взносов, чтобы они совпали с расчетным листком. Важно: этот метод — «костыль», его стоит применять только для сдачи отчетности в условиях дефицита времени.Начисление зарплаты и взносов на несколько (например, по подразделениям или группами по 50 человек). Как показывает практика, уменьшение объема данных в одном сеансе расчета нивелирует баг с переполнением таблиц в памяти.Ситуация, при которой расчет по одному сотруднику верен, а групповой — нет, однозначно указывает на проблему управления памятью в коде конфигурации или платформы. Мы проанализировали основные причины и выяснили, что наиболее вероятным виновником является некорректная работа с временными таблицами в релизе 3.1.16.108.
Резюме: для долгосрочного решения необходимо обновиться до актуальной версии 1С:ЗУП. Для оперативного решения — очистить регистр Пересчет страховых взносов и проводить начисление зарплаты небольшими группами сотрудников, предварительно очистив локальный кэш пользователя.