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

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

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

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

Выясняем причину: как работают вытеснения и почему происходит сбой

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

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

Данное поведение признано официальной ошибкой разработчиков фирмы 1С (баг зарегистрирован в базах ошибок подсидем расчета зарплаты). Ниже мы разберем по шагам, как исправить эту ситуацию на практике.

Способ 1: Обновление конфигурации (Официальное решение)

Поскольку проблема носит программный характер и связана с кодом расчета в общих модулях конфигурации, наиболее надежным и правильным решением является обновление программного продукта. Ошибка расчета вытеснений при увольнении была полностью устранена разработчиками, начиная с релиза 3.1.6.37 и последующих версий ветки 3.1. Если ваша информационная база работает на более ранних релизах (например, 3.1.5.171 или 3.1.6.6), настоятельно рекомендуется выполнить процедуру обновления конфигурации до актуальной версии.

Способ 2: Предварительное начисление «нулевой» зарплаты за прошлые месяцы

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

Проанализируем алгоритм этого метода:

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

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

Способ 3: Очистка зарегистрированных перерасчетов

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

Выполним очистку этих записей по следующей схеме:

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

Способ 4: Временный сдвиг месяца регистрации документов отклонений

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

Рассмотрим по шагам выполнение этого приема:

  1. Откройте проведенные документы отклонений по сотруднику за прошлые периоды (например, документ БольничныйЛист или Отсутствие (прогул, неявка)).
  2. В поле Месяц (месяц регистрации) временно установите текущий месяц, в котором производится увольнение (в нашем примере — апрель).
  3. Проведите измененные документы отклонений.
  4. Откройте документ Увольнение и выполните его полный перерасчет. Программа должна корректно учесть вытеснение и убрать ошибочно начисленный оклад за прошлые периоды.
  5. После успешного расчета и проведения документа Увольнение, вернитесь в документы отклонений (больничные, неявки) и восстановите в них исходный правильный месяц регистрации (февраль и март), чтобы не нарушать аналитику отчетности и расчетных листков за прошлые периоды. Снова перепроведите их.

Способ 5: Проверка технических регистров базы данных

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

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

Для запуска тестирования выполните следующие действия:

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

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

Резюме

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

← На главную