Почему в 1С:ЗУП 3.1 возникают лишние перерасчеты и как навести порядок в начислениях?

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

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

Выясним причину: почему программа постоянно хочет что-то пересчитать?

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

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

Решение 1: Очистка рабочего места «Перерасчеты»

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

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

Проанализируем список. Если мы понимаем, что реальных изменений в начислениях быть не должно, выделим нужные строки (можно использовать сочетание клавиш CTRL+A для выделения всех записей) и нажмем кнопку Отменить. Это действие очистит регистр сведений ПерерасчетыЗарплаты, и в документе начисления зарплаты эти строки больше не появятся.

Важный нюанс: Специалисты рекомендуют следующую последовательность, если перерасчет уже попал в документ:

  1. Распроведем документ начисления, где появились странные строки.
  2. Закроем форму документа.
  3. Зайдем в сервис Перерасчеты и нажмем Отменить по нужному сотруднику.
  4. Снова откроем и перезаполним документ начисления.

Решение 2: Изменение настроек программы

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

Зайдем в раздел Настройки — Расчет зарплаты. Посмотрим на флажок Выполнять доначисление и перерасчет зарплаты отдельным документом. Если установить этот признак, то из основного документа НачислениеЗарплаты пропадет вкладка перерасчетов. Теперь все доначисления будут производиться только в специализированном документе Доначисление, перерасчет (раздел Зарплата). Это позволит разделить текущий расчет и исправление прошлых периодов.

Решение 3: Методологический подход и дата запрета

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

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

Вместо того чтобы заходить в старый документ и менять в нем данные, используем ссылку Исправить в нижней части документа. Это позволит корректно ввести исправление текущим периодом без хаотичного сторнирования записей.

Решение 4: Программное исправление (для разработчиков)

В некоторых случаях проблема кроется в коде конкретного релиза, особенно при расчете документов увольнения. Рассмотрим пример исправления через расширение или модификацию модуля. Проанализируем код функции РеквизитыДляПроведения в модуле документа УвольнениеСписком.

Иногда требуется заменить реквизит МесяцНачалаРасчетов на ПериодРегистрации, чтобы программа не «уходила» в глубокое прошлое при поиске перерасчетов. Пример фрагмента запроса:


ВЫБОР
    КОГДА УвольнениеСпискомСотрудники.Ссылка.ИсправленныйДокумент <> ЗНАЧЕНИЕ(Документ.УвольнениеСписком.ПустаяСсылка)
        ТОГДА УвольнениеСпискомСотрудники.Ссылка.ПериодРегистрации
    ИНАЧЕ ВЫБОР
        КОГДА НЕ УвольнениеСпискомСотрудники.МесяцНачалаРасчетов = ДАТАВРЕМЯ(1, 1, 1)
            ТОГДА УвольнениеСпискомСотрудники.МесяцНачалаРасчетов
        ИНАЧЕ УвольнениеСпискомСотрудники.Ссылка.ПериодРегистрации
    КОНЕЦ
КОНЕЦ

Также некоторые разработчики используют радикальный метод: в расширении заменяют код процедуры, отвечающей за автоматическую регистрацию перерасчетов начислений, на пустую процедуру. Это полностью отключает автоматизм, и бухгалтеру приходится регистрировать перерасчеты вручную только тогда, когда это действительно необходимо. Однако к такому методу стоит прибегать с большой осторожностью.

Резюме: как победить «треш» в начислениях?

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

Соблюдение этих простых правил позволит избежать путаницы в расчетных листках и сделает процесс начисления заработной платы прозрачным и предсказуемым.

← На главную