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