При работе с начислением зарплаты или аванса (расчетом за первую половину месяца) в программе «1С:Зарплата и Управление Персоналом» пользователи могут столкнуться с ситуацией, когда норма времени рассчитывается некорректно. Например, мы ожидаем увидеть норму по производственному календарю 120 часов (из-за праздников в мае или январе), а программа упорно подставляет число 176 (стандартная норма для полного месяца без праздников). Рассмотрим подробно, почему это происходит, как диагностировать проблему и как ее исправить.
Давайте разберем ситуацию, с которой столкнулся автор темы. Симптомы следующие:
Такое поведение системы указывает на то, что проблема кроется не в графике работы как таковом, а в алгоритме, который программа использует для получения данных о норме. Если даже индивидуальный график игнорируется, значит, формула расчета обращается к источнику данных, который не связан с типовым механизмом учета времени.
Прежде чем искать ошибку, давайте вспомним, как 1С:ЗУП должна работать в штатном режиме. Для расчета стоимости часа или отработки нормы используются предопределенные показатели. Самый распространенный из них — НормаВремениВЧасах.
Иерархия получения данных для этого показателя выглядит так (от высшего приоритета к низшему):
Если мы видим, что в расчете участвует странная цифра (176), которая не соответствует ни одному из уровней этой иерархии в текущем месяце, нам нужно проверить саму формулу начисления.
В ходе обсуждения выяснилось, что ключевая ошибка часто кроется в наименовании показателей. Давайте откроем настройку начисления, по которому производится расчет (раздел Настройка — Начисления).
Внимательно посмотрим на формулу. В корректной типовой формуле для оклада по часам мы обычно видим:
Оклад * ВремяВЧасах / НормаВремениВЧасах
Однако, в проблемной базе формула может выглядеть иначе. Например:
Оклад * ВремяВЧасах / НормаЧасовПоПятидневке
На первый взгляд кажется, что НормаЧасовПоПятидневке — это синоним или правильный показатель. Но в 1С:ЗУП это принципиальный момент. Показатель НормаВремениВЧасах является предопределенным. Это значит, что платформа "знает", как его рассчитывать: она автоматически идет в регистры графиков работы и берет оттуда часы.
Показатель НормаЧасовПоПятидневке (или любое другое похожее название) с вероятностью 99% является пользовательским (произвольным) показателем.
Когда мы создаем произвольный показатель, мы должны определить, как он будет заполняться. У него есть настройки:
Проблема в том, что произвольный показатель не умеет автоматически считывать данные из Графика работы или Производственного календаря, если это специально не запрограммировано.
В рассматриваемом случае показатель НормаЧасовПоПятидневке был настроен как "Постоянный" или "Ежемесячный", и для него когда-то было задано значение 176. Это значение могло быть введено документом Данные для расчета зарплаты полгода назад или установлено как значение по умолчанию.
Поэтому, какие бы манипуляции мы ни проводили с производственным календарем, индивидуальными графиками или табелями, формула продолжает брать жестко заданную цифру 176 из регистра значений периодических показателей.
Для решения проблемы нам необходимо выполнить следующие шаги:
Зайдите в карточку вида начисления, который рассчитывается неверно. Найдите показатель, отвечающий за норму времени (знаменатель дроби). Щелкните по нему, чтобы открыть его свойства, или найдите его в списке Настройка — Показатели расчета зарплаты.
Если показатель является пользовательским (не предопределенным), проверьте его настройки. Скорее всего, вы увидите, что это показатель, значение которого "Вводится для организации" или "Вводится для сотрудника", и он не имеет связи с графиком работы.
Чтобы убедиться, откуда берется цифра 176, можно воспользоваться Универсальным отчетом (доступен через Функции технического специалиста).
Значения периодических показателей расчета зарплаты (для сотрудников) или (для организации).Самое надежное решение — вернуть в формулу типовой механизм. Измените формулу начисления, заменив пользовательский показатель на предопределенный НормаВремениВЧасах (или НормаВремениВДнях, в зависимости от контекста).
Пример изменения:
Было: Оклад * ОтработаноЧасов / МояСтраннаяНорма
Стало: Оклад * ВремяВЧасах / НормаВремениВЧасах
После сохранения формулы пересчитайте документ начисления зарплаты. Программа автоматически обратится к графику работы сотрудника, увидит там 120 часов (согласно производственному календарю) и выполнит расчет корректно.
Если же вы обнаружили, что в формуле уже стоит типовой показатель НормаВремениВЧасах, но расчет все равно неверен, тогда проблему действительно стоит искать в технических данных графиков. Разберем этот вариант.
Бывает, что визуально в графике работы все красиво (часы стоят), но во внутренние регистры данные не записались. Это может произойти из-за сбоев при обновлении или некорректном заполнении.
Для проверки используем Универсальный отчет:
Графики работы по видам времени.Сформируйте отчет. В колонке ресурсов вы увидите фактические часы, которые "видит" система. Если там пусто или цифры не те, что в интерфейсе, необходимо:
Также стоит упомянуть особенность расчета аванса. Если вы используете пользовательский показатель нормы, и он задан одной цифрой на месяц (например, 176), то при расчете аванса (за период с 1 по 15 число) программа может повести себя двояко в зависимости от настроек показателя:
Типовой показатель НормаВремениВЧасах умеет "обрезаться" по датам периода действия документа. То есть при расчете аванса за полмесяца в знаменатель попадет норма только за эти полмесяца (например, 60 часов из 120), если формула и настройки начисления предполагают расчет от фактически отработанного времени за период.
Если вы столкнулись с "лишними" часами в норме времени (например, 176 вместо 120) и уверены в правильности календаря, с высокой долей вероятности проблема заключается в использовании произвольного показателя в формуле начисления. Этот показатель не связан с графиком и хранит статичное значение. Решение — использование типового показателя НормаВремениВЧасах.