При работе в 1С:Зарплата и управление персоналом (ЗУП) мы часто сталкиваемся с задачами, которые требуют гибкого подхода к расчету заработной платы и премий. Одна из таких распространенных ситуаций – необходимость начислить дополнительную выплату или премию, если сотрудник отработал определенное количество часов за месяц, превышающее установленный порог. Например, если сотрудник отработал 200 и более часов, ему положена доплата в размере 30 рублей за каждый отработанный час. Давайте вместе разберем, как эффективно решить эту задачу, используя стандартные возможности 1С:ЗУП.
Этот метод является одним из наиболее универсальных и рекомендуемых для сбора промежуточных показателей. Мы создадим специальное "служебное" или "техническое" начисление, которое будет фиксировать общее количество отработанных часов, а затем будем использовать его как РасчетнуюБазу для нашего основного начисления.
Рассмотрим подробнее шаги по настройке:
Создание служебного начисления "ОтработанныеЧасы" (или аналогичное):
Нам потребуется создать новое начисление, которое будет выполнять роль сборщика данных об отработанном времени. Перейдите в раздел Настройка → Начисления и создайте новое начисление. Назовем его, например, "ОтработанныеЧасы".
Назначение начисления: Выберите "Натуральный доход" или "Прочие начисления и выплаты". Это позволит нам не облагать его налогами и взносами, если оно будет выполнять исключительно техническую функцию.
Формула: В поле "Формула" укажите просто ВремяВЧасах. Это обеспечит сбор фактического количества отработанных часов сотрудником за расчетный период.
Важный момент: Если это служебное начисление не должно попадать в расчетный листок или влиять на отчетность, вы можете установить флаг "Начисление больше не используется" после его создания и проверки. Однако, как показывает практика, наличие такой строки в расчетном листке (например, в разделе "Справочно") обычно не мешает и даже может быть полезно для отладки. При необходимости, ее всегда можно убрать из отчетов через настройки отбора.
Учет времени: Установите "Рабочее время". Это гарантирует, что начисление будет корректно собирать часы, отработанные сотрудником.
Настройка основного начисления (премии/доплаты):
Теперь создадим или изменим наше основное начисление, которое будет выплачиваться при превышении порогового значения часов. Перейдите в раздел Настройка → Начисления и откройте или создайте нужное начисление, например, "ДоплатаЗаПереработкуЧасов".
Назначение начисления: Выберите подходящее назначение, например, "Премия" или "Доплата".
Формула: В поле "Формула" пропишите следующую логику:
?(РасчетнаяБаза >= 200, РасчетнаяБаза * 30, 0)
Здесь РасчетнаяБаза будет представлять собой сумму часов, собранных нашим служебным начислением.
Настройка расчетной базы: Перейдите на вкладку Расчет базы. Здесь мы должны указать, какие начисления формируют нашу РасчетнуюБазу. Включите в список наше только что созданное служебное начисление "ОтработанныеЧасы". Убедитесь, что период для расчета базы установлен "Текущий месяц".
Таким образом, наша основная доплата будет рассчитываться только в том случае, если сумма часов, собранных служебным начислением ("ОтработанныеЧасы"), достигнет или превысит 200, и тогда будет умножаться на 30.
Иногда при расчете зарплаты мы можем столкнуться с тем, что одно и то же начисление разбивается на несколько строк в расчетном листке, даже если это, по сути, одно начисление за месяц. Это часто происходит из-за изменений в должности, подразделении или других показателях сотрудника в течение месяца. Давайте разберем, как можно решить эту проблему.
Выясним причину: Проблема появления нескольких строк начислений, особенно когда в формуле присутствует временной показатель (например, ВремяВЧасах), заключается в том, что 1С:ЗУП автоматически разбивает расчет на отдельные строки при каждом изменении значимых учетных данных в течение месяца.
Мы рассмотрим несколько подходов к решению этой задачи:
Использование скрытого реквизита НачисляетсяВЦеломЗаМесяц:
В системе 1С:ЗУП существует скрытый реквизит начислений НачисляетсяВЦеломЗаМесяц. По умолчанию он установлен в значение "Ложь". Если его установить в "Истина" (например, через режим загрузки данных или программно), это может помочь консолидировать начисление в одну строку. Обратите внимание, что изменение этого реквизита требует осторожности и тестирования, так как он может влиять на другие аспекты расчета.
Изменение настройки учета времени в служебном начислении:
Если проблема с множественными строками сохраняется, попробуйте изменить настройку "Учет времени" для вашего служебного начисления "ОтработанныеЧасы". Вместо "Рабочее время" установите значение "Явки". Иногда это помогает системе более корректно агрегировать данные и избежать разбиения на строки.
Продвинутый способ: вывод ВремяВЧасах из РасчетнойБазы:
Наиболее элегантный способ получить одну строку начисления — это исключить явное использование показателя ВремяВЧасах в формуле основного начисления. Вместо этого мы можем вывести его из РасчетнойБазы, если она уже содержит сумму, пропорциональную времени.
Проанализируем ситуацию: Допустим, у сотрудника есть оплата по окладу, которая рассчитывается как Оклад * ВремяВЧасах / НормаЧасов. Если мы включим это начисление (Оплата по окладу) в РасчетнуюБазу нашего служебного начисления, то РасчетнаяБаза будет равна Оклад * ВремяВЧасах / НормаЧасов.
Тогда мы можем выразить ВремяВЧасах из этой формулы:
ВремяВЧасах = РасчетнаяБаза * НормаЧасов / Оклад
Если мы используем такое производное значение ВремяВЧасах в формуле нашей премии, то при отсутствии явного показателя ВремяВЧасах в формуле основного начисления, система с большей вероятностью сформирует только одну строку. Это связано с тем, что РасчетнаяБаза уже агрегирует данные, и если она не разбивается на строки по внутренним причинам, то и начисление, использующее ее, будет одной строкой.
Для полного понимания процесса, давайте рассмотрим дополнительные детали и общие принципы работы 1С:ЗУП, которые помогут нам в настройке.
Различие между премией и прибавкой к часовой ставке:
Прежде всего, важно четко определить, что именно мы рассчитываем. В нашем случае, начисление, зависящее от порога отработанных часов, является скорее премией, а не прибавкой к часовой ставке или оплатой сверхурочной работы. Премии могут рассчитываться по произвольным правилам, установленным организацией, и 1С:ЗУП предоставляет для этого широкие возможности:
Методология учета рабочего времени в 1С:ЗУП:
Для корректного расчета ВремяВЧасах, нам необходимо убедиться, что система правильно учитывает отработанное время:
Настройки → Расчет зарплаты может потребоваться снять флажок "Проверять соответствие фактического времени плановому".Общие настройки начислений:
Рассмотрим несколько важных настроек, которые влияют на поведение начислений:
Мы с вами подробно рассмотрели несколько способов настройки начисления в 1С:ЗУП, зависящего от общего количества отработанных часов за месяц. Каждый из подходов имеет свои нюансы, и выбор конкретного решения будет зависеть от специфики вашей учетной политики и требований к формированию расчетных листков. Всегда тестируйте предложенные настройки на тестовой базе, прежде чем применять их в рабочей системе. Желаем вам успехов в автоматизации расчетов!
← К списку