Почему в 1С:ЗУП 3.1.14 появляются «фантомные» перерасчеты за прошлые периоды и как их убрать

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

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

Причина 1: Изменение архитектуры и «Очередь перерасчетов»

Начиная с версий 3.1.14/3.1.15, разработчики существенно изменили логику регистрации изменений. Теперь программа ориентируется не только на явные записи в регистре ЗарплатаПерерасчет, которые мы видим в пользовательском интерфейсе, но и на скрытый технический механизм — Очередь перерасчетов. Проанализируем ситуацию: при обновлении на новый релиз система выполняет реструктуризацию данных и проверку целостности. Если в прошлых периодах были «кривые» ручные правки, система фиксирует несоответствие и ставит сотрудника в скрытую очередь на перерасчет.

Причина 2: Влияние 273-ФЗ и кодов видов доходов

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

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

Поскольку это изменение коснулось всех сотрудников, очередь перерасчетов заполняется мгновенно по всей организации.

Причина 3: Регистр «Исходные данные перерасчетов»

Это, пожалуй, самый коварный механизм. Программа хранит «слепок» данных, на основании которых был произведен расчет (показатели, графики, нормы). Выясним причину конфликта: если расчетчик в августе вручную поменял количество часов в документе НачислениеЗарплаты, но не изменил Табель или ИндивидуальныйГрафик, возникает разрыв. Программа «видит», что по графику должно быть 160 часов, а в документе стоит 150. Система считает это ошибкой и при каждом удобном случае (особенно после обновления алгоритмов) пытается «исправить» эту запись, сторнируя ручную правку и начисляя сумму по своим формулам.

Метод 1: Настройка «Перерасчет отдельным документом»

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

  1. Перейдем в раздел Настройки — Расчет зарплаты.
  2. Установим флажок Выполнять доначисление и перерасчет зарплаты отдельным документом.

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

Метод 2: Полная очистка технических регистров

Если очистка через «Сервис — Перерасчеты» не помогает, нам придется заглянуть «под капот» программы. Проанализируем список регистров, которые могут хранить информацию о необходимости пересчета. Рассмотрим использование Универсального отчета (Администрирование — Печатные формы, отчеты и обработки) для поиска проблемных записей в следующих регистрах:

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


Набор = РегистрыСведений.ОчередьПерерасчетов.СоздатьНаборЗаписей();
// Если нужно очистить всё
Набор.Записать(); 

НаборЗП = РегистрыНакопления.ЗарплатаПерерасчет.СоздатьНаборЗаписей();
// Очистка регистра накопления, который отвечает за визуальный список
НаборЗП.Записать();

Метод 3: Работа с «вторичными данными»

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

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

Часто такая принудительная регистрация с последующей отменой помогает программе «перезаписать» внутреннее состояние и перестать предлагать этот период к расчету.

Метод 4: Анализ регистра «Исходные данные перерасчетов»

Если перерасчеты вызваны ручными правками (как в Сообщении №11), то простым удалением записей из очереди не обойтись. Система при каждом расчете сравнивает «желаемое» с «имеющимся». Чтобы устранить причину навсегда, нужно либо привести первичные документы (Табели, Графики) в соответствие с начислениями, либо воспользоваться следующим приемом: Проанализируем записи в регистре Исходные данные перерасчетов. Там хранятся значения показателей, которые программа считает «эталонными». Если там записано неверное значение часов, его можно попробовать скорректировать (через групповое изменение реквизитов или обработку), чтобы оно совпадало с ручной правкой в документе. Тогда система перестанет видеть разницу и перестанет генерировать перерасчет.

Резюме и рекомендации

Подводя итог, отметим: появление перерасчетов в 3.1.14 — это следствие ужесточения контроля программы за историческими данными. Главный совет: избегайте ручных правок сумм и времени непосредственно в документе Начисление зарплаты и взносов. Используйте Данные для расчета зарплаты или Индивидуальные графики. Если же «фантомы» уже появились:

  1. Вынесите перерасчеты в отдельный документ через настройки.
  2. Проверьте скрытый регистр Очередь перерасчетов.
  3. Если перерасчеты выходят в «ноль» (сторнируют и начисляют ту же сумму) — это верный признак технического сбоя из-за обновления, и такие записи можно смело удалять из технических регистров, используя корректировку регистра Зарплата к выплате.

Помните, что для схлопывания пересортицы во взаиморасчетах оставлять «нулевые» перерасчеты в ведомостях нельзя, так как это может исказить учет НДФЛ и данные в отчете 6-НДФЛ (может понадобиться исправить 170 строку 6-НДФЛ), разбивая суммы по разным датам получения дохода.

← На главную