В процессе работы с программой 1С:Зарплата и управление персоналом (редакция 3.1) бухгалтеры и специалисты по расчету зарплаты нередко сталкиваются с ситуацией, когда основное начисление (например, оклад) рассчитывается корректно с учетом отсутствий, а дополнительные надбавки — в частности, за выслугу лет — игнорируют больничные листы или отпуска, начисляясь за полный месяц. Проанализируем, почему это происходит, и разберем пошагово методы решения данной проблемы.
Основная проблема часто кроется в использовании показателя ОтработаноДней в формуле начисления. В некоторых релизах 1С:ЗУП (особенно в ветке 3.1.5 и смежных) данный показатель в сочетании с определенными настройками вида времени может выдавать норму времени вместо фактически отработанных дней. Рассмотрим ситуацию: сотрудник отработал 14 дней, а 5 дней находился на больничном. Программа видит больничный, вытесняет им оклад, но в формуле выслуги лет показатель ОтработаноДней по-прежнему возвращает полную норму (например, 20 дней). Выясним, как это изменить.
Первое, что мы рекомендуем сделать — это проанализировать текущую формулу. Часто она выглядит следующим образом:
?(ОтработаноДней > НормаДней, МесячнаяТарифнаяСтавка * ВыслугаЛет / 100, МесячнаяТарифнаяСтавка / НормаДней * ОтработаноДней * ВыслугаЛет / 100)
В данной конструкции показатель ОтработаноДней может вести себя нестабильно, если начисление настроено как «Дополнительная оплата за уже оплаченное время». Попробуем заменить его на более универсальный показатель ВремяВДнях. Посмотрим на измененную формулу:
?(ВремяВДнях > НормаДней, МесячнаяТарифнаяСтавка * ВыслугаЛет / 100, МесячнаяТарифнаяСтавка / НормаДней * ВремяВДнях * ВыслугаЛет / 100)
Важный нюанс: Если при редактировании формулы вы получаете ошибку «Поле объекта не обнаружено (ОтработаноДней)», это означает, что показатель был удален из списка доступных для данного вида начисления или возник технический сбой в кэше метаданных. В таком случае показатель нужно перевыбрать из списка доступных показателей в редакторе формул.
Даже если формула кажется верной, сумма может рассчитываться правильно, но в расчетном листке программа все равно будет указывать полный период (например, 20 дней вместо 14). Это происходит из-за настройки на вкладке «Учет времени». Разберем шаги по исправлению:
БольничныйЛист, Отпуск и другие отсутствия. Если их там нет, их нужно добавить вручную.Проанализируем последствия: изменение настройки на «Рабочее время» заставит программу четко сопоставлять период надбавки с фактически отработанным временем, указанным в табеле.
Самым надежным и методически верным способом в 1С:ЗУП 3.1 является расчет надбавки не через показатели времени напрямую, а через РасчетнаяБаза. Посмотрим, почему это эффективнее:
Если мы настроим формулу как:
Результат = РасчетнаяБаза * ПроцентВыслугиЛет / 100
А в список базовых начислений (вкладка «Расчет базы») включим «Оклад по часам», то программа автоматически сделает следующее:
ОтработаноДней.Иногда возникает ситуация, когда настройки верны, формула правильная, но результат все равно неверный. Это может быть связано с тем, что документ «Начисление зарплаты и взносов» был создан до того, как был проведен «Больничный лист» или заполнен «Табель». Рассмотрим алгоритм действий для исключения программного сбоя:
Больничный лист проведен.Начисление зарплаты и взносов не просто нажмем кнопку «Пересчитать», а полностью удалим строку с сотрудником.ВремяВДнях, НормаДней) исходя из текущих данных в системе.Для исправления ситуации, когда выслуга лет не видит больничный, мы рекомендуем последовательно проверить три точки контроля. Во-первых, убедиться, что используется показатель ВремяВДнях вместо ОтработаноДней. Во-вторых, проверить, что начисление имеет настроенные приоритеты (вытеснения). В-третьих, рассмотреть возможность перевода начисления на расчет от базы, что является наиболее стабильным вариантом в текущей архитектуре 1С:ЗУП 3.1. Эти действия позволят добиться того, чтобы и сумма, и количество дней в расчетном листке полностью соответствовали фактической выработке сотрудника.