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