В практической работе с программой 1С:Зарплата и Управление Персоналом (редакция 3.1) пользователи и системные аналитики часто сталкиваются с неочевидным поведением периодических показателей расчета. Типичный сценарий: на предприятии прекращается действие определенного планового начисления (например, персонального повышающего коэффициента — ПКФ), но показатель, который использовался в этом начислении, продолжает «жить своей жизнью». Он остается активным в регистрах программы и некорректно влияет на другие расчеты (надбавки за вредность, классность, ночные или сверхурочные), где этот показатель задействован в сложных формулах.
В рамках данной статьи мы подробно проанализируем, почему возникает эта техническая коллизия, разберем внутреннюю архитектуру регистров 1С:ЗУП 3.1 и изучим пошаговые методики устранения проблемы как стандартными средствами конфигурации, так и с помощью изменения формул расчетов.
Для того чтобы понять природу этой ошибки, нам необходимо заглянуть под капот программного продукта. В 1С:ЗУП 3.1 сведения о плановых начислениях сотрудников и значения их индивидуальных показателей хранятся в принципиально разных структурах данных:
ПКФ) во времени фиксируется в регистре сведений Плановые начисления (или в его интервальном аналоге Плановые начисления интервальный).РазмерПКФ), если для него в настройках выбрано использование «Во всех месяцах после ввода значения», записывается в регистр сведений Значения периодических показателей расчета зарплаты (для сотрудников).Когда мы прекращаем плановое начисление с помощью документов Кадровый перевод, Изменение оплаты труда или специализированного документа Прекращение планового начисления, программа делает соответствующую запись в регистр плановых начислений. Однако запись в регистре значений показателей автоматически не удаляется и не обнуляется, если не выполнены определенные настройки.
В настройках любого начисления на вкладке «Основное» под формулой расположена таблица используемых показателей. В этой таблице есть важнейшая колонка — «Отмена начисления». Для каждого показателя в ней может быть установлен один из двух переключателей:
Если для показателя РазмерПКФ было установлено значение Не изменять, то при прекращении начисления ПКФ показатель продолжает оставаться равным, например, 1.5 или 2. Любые другие формулы (вредность, ночные часы), содержащие данный показатель, обращаются к регистру сведений, видят там ненулевое значение и продолжают применять его при расчетах, приводя к массовым ошибкам.
Рассмотрим подробнее три эффективных способа победить эту проблему на практике.
Это самый методологически верный и безопасный способ, который позволяет скорректировать данные для большого количества сотрудников (даже если их более 700) без необходимости перепроведения старых кадровых документов в закрытых периодах.
Разберем данный процесс по шагам:
Настройка — Показатели расчета зарплаты. Найдем наш показатель РазмерПКФ, откроем его карточку и обязательно установим флаг «Допускается нулевое значение». Если этого не сделать, программа заблокирует попытку записать ноль в регистр показателей.Зарплата — Изменение оплаты сотрудников и создадим документ Изменение плановых начислений. Дата документа должна соответствовать первому числу месяца, с которого начисление должно быть окончательно прекращено для сотрудников.Заполнить или Подбор добавим в табличную часть всех сотрудников, у которых ранее действовало начисление ПКФ. Для массовой работы удобно использовать фильтры по подразделениям или должностям.Начисления. Несмотря на то, что само плановое начисление у сотрудников уже может быть прекращено ранее, программа позволит нам отрегулировать значения показателей. В появившейся колонке для показателя РазмерПКФ принудительно устанавливаем значение 0 (или 1, если в формулах этот показатель выступает в качестве сомножителя и не должен занулять весь расчет).Значения периодических показателей расчета зарплаты (для сотрудников), перекрывая старые «зависшие» значения. Другие начисления теперь будут видеть корректное пустое или единичное значение показателя.Если по каким-то причинам вносить изменения в кадровые документы нежелательно, или если вы хотите обезопасить расчеты от подобных коллизий на будущее, можно скорректировать формулы зависимых начислений. Этот способ часто применяется разработчиками для быстрого исправления ошибок «на лету».
Проанализируем исходную формулу сложного начисления:
?(Оклад * ВремяВЧасах / НормаЧасов = 0, ВремяВЧасах * ТарифнаяСтавкаЧасовая, Оклад * ВремяВЧасах / НормаЧасов) * макс(1, РазмерПКФ) * макс(1, РазмерППК) * 4 / 100
Поскольку показатель РазмерПКФ завис со значением, отличным от нуля или единицы (например, равен 1.5), конструкция макс(1, РазмерПКФ) всегда возвращает 1.5, даже если само начисление ПКФ прекращено.
Для решения проблемы мы можем изменить формулу, добавив условие проверки активности показателя или привязав его к равенству единице. Перепишем формулу следующим образом:
?(Оклад * ВремяВЧасах / НормаЧасов = 0, ВремяВЧасах * ТарифнаяСтавкаЧасовая, Оклад * ВремяВЧасах / НормаЧасов) * ?(РазмерПКФ = 1, макс(1, РазмерППК) * 4 / 100, макс(1, РазмерПКФ) * макс(1, РазмерППК) * 4 / 100)
Или, если мы принудительно обнулили показатель у неактивных сотрудников, формула может быть упрощена. Посмотрим на альтернативный вариант:
?(Оклад * ВремяВЧасах / НормаЧасов = 0, ВремяВЧасах * ТарифнаяСтавкаЧасовая, Оклад * ВремяВЧасах / НормаЧасов) * Выбор Когда РазмерПКФ = 0 Тогда 1 Иначе РазмерПКФ Конец * макс(1, РазмерППК) * 4 / 100
Важное предупреждение: Частое изменение формул задним числом может усложнить дальнейшее сопровождение информационной базы 1С:ЗУП и привести к нежелательным автоматическим перерасчетам зарплаты за прошлые периоды. Используйте этот метод осмотрительно и обязательно тестируйте изменения на копии базы данных перед переносом в рабочую конфигурацию.
Если показатель носит временный характер или часто меняется, вводить его через кадровые приказы как постоянный плановый показатель — методологическая ошибка. Для периодических показателей гораздо удобнее использовать документы ввода данных.
Разберем, как правильно перестроить этот процесс:
РазмерПКФ и переключим назначение использования на «Вводится единовременно документом ввода данных для расчета зарплаты» или установим настройку «Только в месяце, в котором вводится значение».Настройка — Шаблоны ввода исходных данных. Назовем его, например, «Ввод показателей ПКФ».Данные для расчета зарплаты на основании этого шаблона, указывая список сотрудников и значения показателей.Преимущество такого подхода очевидно: как только месяц заканчивается, действие показателя прекращается автоматически. Нам не потребуется создавать никаких документов отмены или обнуления, и показатель гарантированно не повлияет на расчеты в последующих периодах.