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