При работе в программе «1С:Зарплата и управление персоналом» (редакция 3.1) расчетчики часто сталкиваются с ситуацией, когда программа настойчиво пытается пересчитать заработную плату за прошлые месяцы. Это происходит из-за регистрации так называемых «перерасчетов». В этой статье мы подробно разберем, почему возникает эта проблема, как исправить исходные ошибки в кадровых документах и как заставить программу «забыть» о необходимости перерасчета.
Рассмотрим типовую ситуацию. С февраля у сотрудников изменились оклады. Вместо того чтобы ввести документ Изменение оплаты труда или Кадровый перевод с 1 февраля, пользователь зашел в январские документы Прием на работу и вручную переписал оклады там.
Для программы 1С:ЗУП это сигнал: «Январский расчет был выполнен неверно, так как сотруднику изначально (с момента приема) был назначен другой оклад». Система автоматически регистрирует необходимость перерасчета за январь. Даже если вы удалите эти строки из текущего документа начисления, при следующем расчете или в следующем месяце программа снова попытается доначислить разницу за январь.
Чтобы решить эту проблему раз и навсегда, нам нужно действовать комплексно: восстановить хронологию документов, очистить служебные регистры и настроить программу так, чтобы подобные ситуации не повторялись.
Проанализируем ситуацию. Если мы просто очистим перерасчеты, но оставим измененный оклад в январском документе Прием на работу, любое случайное перепроведение документов или обновление базы вернет проблему. Поэтому сначала вернем учет в корректное русло:
Прием на работу (или те кадровые документы, которыми сотрудники принимались в январе или ранее).Изменение оплаты труда (раздел Кадры — Изменение оплаты сотрудников) или Кадровый перевод с датой изменения от 01.02.2019.После этого историческая правда в базе будет восстановлена: в январе действовал старый оклад (и за январь все посчитано верно), а с февраля начал действовать новый.
Теперь нам нужно очистить записи в технических регистрах, которые программа успела создать, пока оклады в приеме были изменены. Не стоит пытаться удалять записи напрямую через функции для технического специалиста — в программе есть удобный штатный инструмент.
Разберем по шагам, как очистить перерасчеты:
Ctrl), нажмите на них правой кнопкой мыши и выберите команду «Отменить» (или нажмите кнопку «Отменить перерасчет» на панели управления).После выполнения этого действия программа сама корректно очистит записи в регистрах сведений ПерерасчетЗарплаты, ПерерасчетСреднегоЗаработка и других сопутствующих таблицах. Программа больше не будет считать, что за январь есть долги по расчетам.
Если в текущем месяце вы уже создали документ Начисление зарплаты и взносов, и туда на вкладку «Доначисления, перерасчеты» автоматически попали строки за январь, они сами оттуда не исчезнут (даже после отмены перерасчетов в сервисе).
Нам необходимо очистить их вручную в самом документе:
Начисление зарплаты и взносов.Delete (или через меню Еще — Удалить).Чтобы автоматические перерасчеты не мешали ежемесячной работе расчетчика и не раздували основные документы начисления зарплаты, мы рекомендуем изменить одну важную настройку системы.
Выполним следующую настройку:
Что это дает? Программа полностью перестанет автоматически заполнять вкладку «Доначисления, перерасчеты» в ежемесячном документе начисления зарплаты. Все реальные или ложные перерасчеты теперь будут спокойно лежать в рабочем столе Зарплата — Сервис — Перерасчеты. Если расчетчику действительно нужно будет доначислить кому-то деньги за прошлый период, он зайдет туда и создаст специальный обособленный документ Доначисление, перерасчет. Ошибочные записи можно будет просто игнорировать или массово удалять в одном месте, и они больше не заблокируют расчет текущего месяца.
Главная превентивная мера против «самопроизвольных» перерасчетов — это жесткое ограничение прав пользователей на редактирование прошлых периодов. В 1С:ЗУП 3.1 перерасчет регистрируется даже в том случае, если документ прошлого периода (например, график работы, табель или кадровый перевод) был просто открыт и перепроведен без фактического изменения цифр.
Поэтому настроим дату запрета:
Если в базе накопилось огромное количество ложных перерасчетов (например, тысячи строк из-за группового перепроведения документов), удалять их вручную через интерфейс может быть очень долго. В этом случае программист может воспользоваться внешней обработкой или выполнить очистку набора записей регистра сведений программно.
Рассмотрим пример кода на встроенном языке 1С для полной программной очистки зарегистрированных перерасчетов начислений по конкретной организации:
// Создаем набор записей регистра сведений, отвечающего за перерасчет начислений
НаборЗаписей = РегистрыСведений.ПерерасчетЗарплаты.СоздатьНаборЗаписей();
// Если нужно очистить перерасчеты точечно, устанавливаем отбор по организации или сотруднику
// НаборЗаписей.Отбор.Организация.Установить(ВыбраннаяОрганизация);
// Записываем пустой набор записей, тем самым очищая регистр
НаборЗаписей.Записать(Истина);
ЗаписатьВЛог("Регистр перерасчетов начислений успешно очищен.");
Использование этого кода позволяет мгновенно очистить базу от «зависших» ложных перерасчетов. Однако помните, что перед выполнением любых подобных операций в базе данных крайне важно создать резервную копию (архив) базы данных.
Применяя эти методы в комплексе — восстанавливая хронологию документов, отменяя перерасчеты через специализированное рабочее место и своевременно устанавливая дату запрета редактирования — вы навсегда избавите расчетчиков от проблем с «самопроизвольным» изменением сумм прошлых периодов.