Что делать, если документ «Начисление зарплаты» в 1С не видит проведенный отпуск сотрудника

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

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

Эта проблема особенно актуальна для конфигураций 1С:ERP Управление предприятием 2.4 / 2.5 и 1С:Зарплата и управление персоналом 3.1. В этой статье мы подробно разберем, почему возникает этот сбой, как провести диагностику системы и какие шаги предпринять, чтобы восстановить корректный расчет вытеснений.

Причина 1. Повреждение таблиц базы данных и регистров (системный сбой)

Очень часто виновником проблемы становится технический сбой на уровне СУБД или файловой системы базы данных. В платформе 1С за связь между различными начислениями и учетными периодами отвечает сложный механизм расчетов. Если повреждаются внутренние индексы или таблицы базы, программа физически «теряет» связь между проведенным отпуском и текущим начислением оклада.

Чаще всего сбой происходит в следующих объектах базы данных:

  1. Таблицы фактического периода действия: Специальные внутренние таблицы платформы, которые определяют, в какие именно дни сотрудник фактически работал, а в какие — находился в отклонении.
  2. Регистры перерасчетов: Записи, которые автоматически создаются при проведении документов-отклонений (например, отпуска) для того, чтобы сигнализировать документу начисления зарплаты о необходимости скорректировать оклад.
  3. Регистр сведений «Текущие кадровые данные сотрудников»: При его повреждении программа может перестать видеть актуальное состояние сотрудника, из-за чего автоматическое заполнение начинает сбоить.

Решение проблемы:

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

Рекомендуется установить следующие флажки:

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

Причина 2. Наличие «фантомного» документа «Табель»

Многие организации ведут учет рабочего времени по так называемому «методу отклонений». Это значит, что документ Табель в программе не создается вручную, а рабочее время рассчитывается автоматически на основе графиков работы и зарегистрированных документов-отклонений (таких как Отпуск, Больничный лист, Командировка).

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

Программа начинает ориентироваться исключительно на данные этого «Табеля», игнорируя любые новые или измененные кадровые документы и документы-отклонения, введенные позже.

Решение проблемы:

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

Причина 3. Зацикливание видов расчета (взаимное вытеснение)

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

Иногда из-за некорректных ручных настроек или сбоев при обновлении конфигурации возникает логическая петля (зацикливание):

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

Также обратите внимание на дубли видов расчета. Если в плане видов расчета присутствуют неиспользуемые или помеченные на удаление дубли (например, две карточки начисления «Оплата по окладу»), и одна из них по ошибке привязана к приоритетам отпуска, вытеснение работать не будет.

Решение проблемы:

  1. Перейдите в меню Настройка — Начисления.
  2. Найдите и откройте карточку начисления Оплата по окладу.
  3. Перейдите на вкладку Приоритет. Убедитесь, что в левой колонке («Начисления, приоритет которых выше») присутствует Отпуск основной.
  4. Откройте карточку начисления Отпуск основной. Проверьте вкладку Приоритет. Убедитесь, что в правой колонке («Начисления, приоритет которых ниже») находится ваша Оплата по окладу. В левой колонке оклада быть не должно!
  5. Если настройки сбились, примените следующий прием: удалите оклад из списка вытесняемых начислений в отпуске, сохраните документ, а затем добавьте его обратно и снова сохраните. Это принудительно обновит кэш правил распределения времени в базе данных.

Причина 4. Некорректные настройки на вкладке «Учет времени»

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

Решение проблемы:

  1. Откройте карточку начисления Отпуск основной.
  2. Перейдите на вкладку Учет времени.
  3. Проверьте поле Используемое время. Для отпуска должно быть установлено значение Полные смены.
  4. Поле Вид времени должно строго соответствовать значению из классификатора использования рабочего времени — Отпуск основной (буквенный код в табеле — «ОТ»).
  5. Если там установлено «Рабочее время» или «За работу в пределах нормы времени», программа будет считать этот период рабочим и не вычтет его из оклада. Отредактируйте настройки в соответствии с требованиями.

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

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

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

Решение проблемы:

  1. Перейдите в раздел Настройки — Производственные календари. Убедитесь, что календарь заполнен актуальными данными на текущий год и перенесенные праздничные дни выделены верно. При необходимости нажмите кнопку Заполнить по умолчанию.
  2. Перейдите в раздел Настройки — Графики работы сотрудников. Найдите график, по которому работает сотрудник, откройте его и нажмите кнопку Заполнить для обновления сетки часов на текущий год.

Пример анализа проблемы через технический запрос

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

Рассмотрим структуру запроса для проверки наличия записей о необходимости перерасчета оклада при регистрации отпуска:


ВЫБРАТЬ
    Перерасчет.Сотрудник КАК Сотрудник,
    Перерасчет.ПериодРегистрации КАК ПериодРегистрации,
    Перерасчет.ОбъектПерерасчета КАК ДокументОтклонения,
    Перерасчет.ВидРасчета КАК ВидРасчета
ИЗ
    РегистрРасчета.Начисления.Перерасчет КАК Перерасчет
ГДЕ
    Перерасчет.ПериодРегистрации = &ПериодРегистрации
    И Перерасчет.Сотрудник = &Сотрудник

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

Резюме и план действий

Если при начислении зарплаты программа упорно игнорирует проведенный отпуск сотрудника, действуйте по следующему алгоритму:

  1. Проверьте, нет ли в системе проведенных документов Табель за этот месяц. Если есть — распроведите их.
  2. Проверьте настройки приоритетов (вытеснения) в окладе и отпуске на предмет взаимного зацикливания или дублей начислений.
  3. Убедитесь в правильности настроек вкладки «Учет времени» в карточке начисления отпуска.
  4. Проверьте актуальность заполнения Производственного календаря и Графика работы сотрудника.
  5. Если все настройки верны, но расчет по-прежнему не работает — запустите базу в режиме Конфигуратора и проведите Тестирование и исправление базы данных с реиндексацией и пересчетом итогов.
← На главную