Почему надбавка за выслугу лет в 1С:ЗУП 3.1 не учитывает больничный и как это исправить

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

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

Причина некорректного поведения программы

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

Способ 1. Замена показателя в формуле расчета

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


?(ОтработаноДней > НормаДней, МесячнаяТарифнаяСтавка * ВыслугаЛет / 100, МесячнаяТарифнаяСтавка / НормаДней * ОтработаноДней * ВыслугаЛет / 100)

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


?(ВремяВДнях > НормаДней, МесячнаяТарифнаяСтавка * ВыслугаЛет / 100, МесячнаяТарифнаяСтавка / НормаДней * ВремяВДнях * ВыслугаЛет / 100)

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

Способ 2. Настройка учета времени и приоритетов

Даже если формула кажется верной, сумма может рассчитываться правильно, но в расчетном листке программа все равно будет указывать полный период (например, 20 дней вместо 14). Это происходит из-за настройки на вкладке «Учет времени». Разберем шаги по исправлению:

  1. Откроем настройки начисления (Настройка — Начисления — Надбавка за выслугу лет).
  2. Перейдем на вкладку «Учет времени».
  3. Если там установлено «Дополнительная оплата за уже оплаченное время», программа считает, что данное начисление просто «накладывается» сверху на оклад и не имеет собственного учета времени. Чтобы время в расчетном листке отображалось корректно (14 дней), попробуем изменить настройку на «Рабочее время» и выбрать вид времени «Явка».
  4. Проверим вкладку «Приоритет». В левом окне («Начисления, приоритет которых выше») обязательно должны находиться БольничныйЛист, Отпуск и другие отсутствия. Если их там нет, их нужно добавить вручную.

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

Способ 3. Переход на расчет от расчетной базы

Самым надежным и методически верным способом в 1С:ЗУП 3.1 является расчет надбавки не через показатели времени напрямую, а через РасчетнаяБаза. Посмотрим, почему это эффективнее:

Если мы настроим формулу как:

Результат = РасчетнаяБаза * ПроцентВыслугиЛет / 100

А в список базовых начислений (вкладка «Расчет базы») включим «Оклад по часам», то программа автоматически сделает следующее:

Технический нюанс: ошибка обновления показателей

Иногда возникает ситуация, когда настройки верны, формула правильная, но результат все равно неверный. Это может быть связано с тем, что документ «Начисление зарплаты и взносов» был создан до того, как был проведен «Больничный лист» или заполнен «Табель». Рассмотрим алгоритм действий для исключения программного сбоя:

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

Итоги

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

← На главную