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

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

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

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

Философия и архитектура механизма перерасчетов в 1С:ЗУП 3.1

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

Проанализируем классическую цепочку событий, которая приводит к ошибке:

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

Ситуация усугубляется, если в прошлых периодах у сотрудника были длительные неявки или прогулы, проведенные документом ОтсутствиеБолезньПрогул. В старых релизах конфигурации (особенно линеек 3.1.5 и 3.1.6) существовала программная ошибка, из-за которой алгоритм расчета при увольнении «терял» вытеснения этих периодов и пытался одновременно начислить оклад за время прогула и сторнировать его.

Рассмотрим подробнее четыре практических метода, которые помогут вам быстро и безболезненно вернуть расчет документа Увольнение в нормальное русло.

Способ 1. Очистка стандартного рабочего места «Перерасчеты»

Самый простой и очевидный шаг, с которого всегда следует начинать — это ручное удаление зарегистрированных перерасчетов из интерфейса программы. Выполним следующие действия по шагам:

  1. Перейдем в раздел меню Зарплата, затем в блоке «Сервис» найдем пункт Перерасчеты.
  2. Перед нами откроется список сотрудников, по которым система зарегистрировала необходимость пересчитать прошлые периоды.
  3. Найдем в списке нашего увольняющегося сотрудника. Мы увидим строки с указанием месяцев, за которые программа планирует сделать сторно и доначисление.
  4. Выделим строки по нашему сотруднику и нажмем кнопку Отменить (или клавишу Delete на клавиатуре). Этим действием мы очищаем очередь ожидания перерасчета, сообщая программе, что прошлые периоды трогать не нужно.
  5. После этого вернемся в документ Увольнение, полностью очистим поле «Сотрудник», выберем его заново и нажмем кнопку Обновить (или «Пересчитать сотрудника»).

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

Способ 2. Глобальное разделение перерасчетов и основных начислений

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

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

Что это дает на практике? После активации этой опции программа разделяет расчетные потоки. Документ Увольнение будет рассчитывать исключительно текущий месяц «с чистого листа». Все перерасчеты и сторно за прошлые периоды (даже если они зарегистрированы в системе) больше никогда не попадут в документ увольнения. Для их проведения программа предложит вам воспользоваться специализированным документом ДоначислениеПерерасчет (находится в разделе Зарплата), который вы сможете провести тогда, когда это будет удобно вам, а не программе.

Способ 3. Очистка регистра сведений через «Функции для технического специалиста»

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

Выполним процедуру ручной очистки регистра:

  1. Откроем главное меню программы (три полоски или точки в самом верхнем правом углу окна) и выберем пункт Функции для технического специалиста (в старых версиях платформы этот режим назывался «Все функции»). Если этот пункт у вас недоступен, его необходимо включить в настройках параметров пользователя («Настройки» — «Параметры» — установить флаг «Отображать команду 'Функции для технического специалиста'»).
  2. В строке поиска открывшегося окна введем слово «Перерасчет». Нам нужен регистр сведений «Перерасчет зарплаты». Откроем его.
  3. В открывшемся списке записей воспользуемся стандартным поиском или отбором по колонке «Сотрудник». Нам нужно отфильтровать записи по нашему увольняющемуся работнику.
  4. Выделим все записи по данному сотруднику и удалим их кнопкой «Удалить» (или клавишей Del).

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


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

После очистки регистра вернемся в документ Увольнение и пересчитаем сотрудника.

Способ 4. Разделение расчета увольнения и начисления зарплаты

Если вам необходимо срочно выдать сотруднику расчет и у вас нет времени разбираться в причинах возникновения перерасчетов за прошлые месяцы, можно использовать обходной методический прием:

  1. Откроем документ Увольнение на вкладке «Условия увольнения».
  2. Найдем флаг «Начислить зарплату» и снимем его.
  3. В этот момент документ мгновенно очистит все расчеты по окладу и сопутствующим начислениям за текущий месяц, оставив только расчет компенсации отпуска (или удержания за использованный авансом отпуск) и выходного пособия. Все сторно-записи прошлых периодов при этом также исчезнут.
  4. Проведем документ увольнения и выплатим сотруднику компенсацию отпуска.
  5. Сам оклад за фактически отработанные дни в месяце увольнения начислим стандартным плановым документом НачислениеЗарплатыИВзносов в конце месяца (или создав его внепланово для этого сотрудника). Программа рассчитает зарплату за фактически отработанные дни до даты увольнения без привлечения старых перерасчетов.

Важная рекомендация для предотвращения проблемы в будущем

Чтобы исключить появление подобных внезапных перерасчетов в вашей базе данных, проведите инструктаж среди сотрудников отдела кадров и бухгалтерии. Главное правило работы в 1С:ЗУП 3.1 гласит:

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

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

← На главную