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