Каждый расчетчик заработной платы хотя бы раз сталкивался с ситуацией, когда программа ведет себя непредсказуемо. Вы оформляете документ Отпуск, успешно рассчитываете и выплачиваете отпускные в межрасчетный период, а в конце месяца при заполнении документа Начисление зарплаты и взносов программа напрочь игнорирует этот период. Вместо того чтобы уменьшить рабочее время и оклад сотрудника, система начисляет оплату за весь месяц целиком, как будто сотрудник вовсе не уходил на отдых.
Эта проблема особенно актуальна для конфигураций 1С:ERP Управление предприятием 2.4 / 2.5 и 1С:Зарплата и управление персоналом 3.1. В этой статье мы подробно разберем, почему возникает этот сбой, как провести диагностику системы и какие шаги предпринять, чтобы восстановить корректный расчет вытеснений.
Очень часто виновником проблемы становится технический сбой на уровне СУБД или файловой системы базы данных. В платформе 1С за связь между различными начислениями и учетными периодами отвечает сложный механизм расчетов. Если повреждаются внутренние индексы или таблицы базы, программа физически «теряет» связь между проведенным отпуском и текущим начислением оклада.
Чаще всего сбой происходит в следующих объектах базы данных:
Решение проблемы:
Для устранения подобных системных ошибок необходимо выполнить процедуру «Тестирование и исправление» (ТиИ). Перед запуском обязательно создайте резервную копию информационной базы! Процедура выполняется в режиме «Конфигуратор» через меню Администрирование — Тестирование и исправление.
Рекомендуется установить следующие флажки:
После завершения процедуры запустите программу в пользовательском режиме, распроведите документ Отпуск, проведите его заново, а затем перезаполните документ Начисление зарплаты и взносов.
Многие организации ведут учет рабочего времени по так называемому «методу отклонений». Это значит, что документ Табель в программе не создается вручную, а рабочее время рассчитывается автоматически на основе графиков работы и зарегистрированных документов-отклонений (таких как Отпуск, Больничный лист, Командировка).
Однако на практике расчетчики могут случайно создать и провести документ Табель по конкретному подразделению или списку сотрудников (или оставить его в черновиках, но записанным). Наличие даже одного проведенного документа Табель за расчетный месяц полностью блокирует автоматический расчет по методу отклонений для всех сотрудников, вошедших в этот документ.
Программа начинает ориентироваться исключительно на данные этого «Табеля», игнорируя любые новые или измененные кадровые документы и документы-отклонения, введенные позже.
Решение проблемы:
Перейдите в раздел Зарплата — Табели. Внимательно проверьте список документов за проблемный месяц (в нашем примере — август). Если вы обнаружите документы за этот период, распроведите их или полностью удалите. После удаления «фантомного» табеля перезаполните начисление зарплаты — программа снова начнет корректно считывать данные напрямую из документов отклонений.
Вытеснение — это механизм, определяющий, какое начисление является приоритетным. Например, начисление Отпуск основной должно вытеснять начисление Оплата по окладу за дни совпадения периодов.
Иногда из-за некорректных ручных настроек или сбоев при обновлении конфигурации возникает логическая петля (зацикливание):
При возникновении такой рекурсии расчетный механизм платформы 1С блокирует взаимное вытеснение для предотвращения бесконечного цикла расчетов, и оклад начисляется за полный месяц.
Также обратите внимание на дубли видов расчета. Если в плане видов расчета присутствуют неиспользуемые или помеченные на удаление дубли (например, две карточки начисления «Оплата по окладу»), и одна из них по ошибке привязана к приоритетам отпуска, вытеснение работать не будет.
Решение проблемы:
Оплата по окладу.Отпуск основной.Отпуск основной. Проверьте вкладку Приоритет. Убедитесь, что в правой колонке («Начисления, приоритет которых ниже») находится ваша Оплата по окладу. В левой колонке оклада быть не должно!При обновлении конфигурации или случайном изменении настроек пользователем в карточке начисления отпуска могут сброситься параметры учета времени. Если программа не понимает, к какому типу времени относится начисление, она не сможет сопоставить его с рабочими днями сотрудника.
Решение проблемы:
Отпуск основной.Расчет вытеснений напрямую зависит от сопоставления графиков работы. Если в середине года правительством утверждаются переносы праздничных дней, а производственный календарь в программе не был вовремя обновлен, или если индивидуальный график сотрудника был изменен задним числом без перезаполнения, даты отпуска могут наложиться на «пустые» дни в графике.
Программа сопоставляет календарные дни отпуска с рабочими днями по графику сотрудника. Если на дату начала отпуска в графике сотрудника по какой-то причине стоит нулевое количество рабочих часов (например, из-за некорректно заполненного сменного графика), вытеснять будет нечего.
Решение проблемы:
Если вы являетесь программистом 1С и вам необходимо быстро локализовать проблему, не прибегая к визуальному анализу интерфейса, вы можете выполнить запрос к таблице регистрации перерасчетов основных начислений. Для этого можно использовать консоль запросов.
Рассмотрим структуру запроса для проверки наличия записей о необходимости перерасчета оклада при регистрации отпуска:
ВЫБРАТЬ
Перерасчет.Сотрудник КАК Сотрудник,
Перерасчет.ПериодРегистрации КАК ПериодРегистрации,
Перерасчет.ОбъектПерерасчета КАК ДокументОтклонения,
Перерасчет.ВидРасчета КАК ВидРасчета
ИЗ
РегистрРасчета.Начисления.Перерасчет КАК Перерасчет
ГДЕ
Перерасчет.ПериодРегистрации = &ПериодРегистрации
И Перерасчет.Сотрудник = &Сотрудник
Если данный запрос возвращает пустой результат для проблемного сотрудника, это означает, что физический механизм регистрации вытеснений (триггер проведения документа Отпуск) не сработал. В таком случае выполнение Тестирования и исправления с пересчетом итогов является единственным верным решением для восстановления индексов таблиц перерасчетов.
Если при начислении зарплаты программа упорно игнорирует проведенный отпуск сотрудника, действуйте по следующему алгоритму:
Табель за этот месяц. Если есть — распроведите их.