Как сделать так, чтобы программа 1С:ЗУП 3.1 «забыла» про ненужные перерасчеты прошлого периода?

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

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

Выясняем причину: почему программа постоянно пересчитывает прошлый период?

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

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

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

Шаг 1. Восстановление корректной цепочки документов

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

  1. Откройте исходные документы Прием на работу (или те кадровые документы, которыми сотрудники принимались в январе или ранее).
  2. Верните в них те оклады, которые фактически действовали в январе и по которым зарплата за январь уже была успешно рассчитана и выплачена.
  3. Проведите кадровые документы.
  4. Для отражения изменения окладов с 1 февраля создайте документ Изменение оплаты труда (раздел Кадры — Изменение оплаты сотрудников) или Кадровый перевод с датой изменения от 01.02.2019.

После этого историческая правда в базе будет восстановлена: в январе действовал старый оклад (и за январь все посчитано верно), а с февраля начал действовать новый.

Шаг 2. Очистка зарегистрированных перерасчетов через штатный интерфейс

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

Разберем по шагам, как очистить перерасчеты:

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

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

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

Если в текущем месяце вы уже создали документ Начисление зарплаты и взносов, и туда на вкладку «Доначисления, перерасчеты» автоматически попали строки за январь, они сами оттуда не исчезнут (даже после отмены перерасчетов в сервисе).

Нам необходимо очистить их вручную в самом документе:

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

Шаг 4. Глобальная настройка программы для предотвращения проблемы

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

Выполним следующую настройку:

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

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

Шаг 5. Установка даты запрета изменения данных

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

Поэтому настроим дату запрета:

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

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

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

Рассмотрим пример кода на встроенном языке 1С для полной программной очистки зарегистрированных перерасчетов начислений по конкретной организации:


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

// Если нужно очистить перерасчеты точечно, устанавливаем отбор по организации или сотруднику
// НаборЗаписей.Отбор.Организация.Установить(ВыбраннаяОрганизация);

// Записываем пустой набор записей, тем самым очищая регистр
НаборЗаписей.Записать(Истина);

ЗаписатьВЛог("Регистр перерасчетов начислений успешно очищен.");

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

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

← На главную