При увольнении сотрудника в конфигурации 1С:ЗУП 3.1 пользователи часто сталкиваются с ситуацией, когда документ автоматически пытается начислить заработную плату за месяцы, которые уже были закрыты, или даже за периоды, когда сотрудник отсутствовал на рабочем месте. Это поведение связано с ошибками в алгоритмах перерасчета зарплаты и некорректной работой регистра сведений Перерасчет зарплаты. Давайте подробно разберем, как диагностировать и устранить эту проблему.
Прежде чем приступать к исправлению, важно понимать природу ошибки. Чаще всего ситуация возникает из-за того, что:
Перерасчет зарплаты накопились «зависшие» записи. Любое изменение кадровых данных или табеля «задним числом» создает запись, которую документ Увольнение считывает как команду к обязательному перерасчету.Увольнение в старых версиях (релизы 3.1.5 - 3.1.6) содержала ошибки в определении периода начала расчетов, из-за чего система игнорировала фактические данные об отсутствии сотрудника.Компания 1С признала эту проблему и выпустила ряд исправлений в версиях 3.1.5.212, 3.1.6.37 и более поздних. Если ваша версия ниже указанных, первым делом выполните обновление конфигурации. Исправления включают корректный алгоритм определения реквизита МесяцНачалаРасчетов.
Если обновление не помогло или вы не можете обновиться прямо сейчас, воспользуйтесь методом очистки данных. Система «видит» необходимость пересчета, основываясь на данных регистра Перерасчет зарплаты.
Увольнение, отмените его проведение и нажмите кнопку Пересчитать или повторно выберите сотрудника в документе, чтобы обновить табличные части.Иногда документ Увольнение содержит сторнирующие записи, которые невозможно удалить стандартным способом. Чтобы их убрать, выполните следующую манипуляцию:
Начисления строку с аналогичным видом расчета, но с положительной суммой.Для опытных пользователей и программистов 1С эффективным методом является корректировка логики заполнения МесяцНачалаРасчетов. В модуле объекта документа Увольнение (в процедуре ПриОткрытии или ЗаполнитьНаСервере) можно принудительно задать логику:
// Пример корректировки даты начала расчетов через расширение
Если ЗначениеЗаполнено(Объект.ДатаУвольнения) Тогда
Объект.МесяцНачалаРасчетов = НачалоМесяца(Объект.ДатаУвольнения);
Иначе
Объект.МесяцНачалаРасчетов = '00010101';
КонецЕсли;
Также, если ситуация критическая, можно временно отключить сбор данных для перерасчетов в общем модуле ПерерасчетЗарплаты, возвращая пустую структуру данных, однако этот метод следует использовать только в крайних случаях и как временную меру.
Для того чтобы избежать «чехарды» в расчетах, придерживайтесь следующих правил:
Перерасчет зарплаты.Табель, а расчетчик начал формировать Увольнение.Начисление зарплаты и взносов для расчета текущего месяца, если документ Увольнение работает некорректно. Вы можете снять галочку Начислять зарплату в Увольнении и провести расчет в специализированном документе.Помните, что документ Увольнение — это комплексный объект, который рассчитывает не только оклад, но и компенсации, НДФЛ и взносы. Его корректная работа напрямую зависит от того, насколько «чистыми» являются данные учета за все предыдущие периоды.