Как рассчитать стоимость часа за предыдущий месяц в 1С:ЗКГУ и 1С:ЗУП 3.1

Бухгалтер 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Бухгалтерский учет
← На главную

При расчете заработной платы в программах 1С:Зарплата и кадры государственного учреждения и 1С:Зарплата и управление персоналом (редакция 3.1) расчетчики часто сталкиваются со сложными методологическими задачами. Одна из таких задач — необходимость рассчитать надбавку или доплату (например, доплату за буксировку, сверхурочные или работу в праздники), исходя из стоимости часа предыдущего месяца, а не текущего.

Сложность заключается во встроенном ограничении системы: стандартные показатели времени, такие как ВремяВЧасах, НормаВремениВЧасах, КалендарныеДни и другие, в формулах 1С всегда рассчитываются по периоду регистрации (текущему месяцу). Даже если для показателя РасчетнаяБаза в настройках начисления мы зададим период «Предыдущий месяц», программа не сможет автоматически «сдвинуть» показатели времени на прошлый месяц внутри одной формулы.

В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем ситуацию на конкретном примере и рассмотрим три эффективных способа настройки программы для автоматического и полуавтоматического решения этой задачи.

Суть проблемы: почему стандартная формула не работает?

Рассмотрим практический пример. В организации существует доплата за буксировку, которая учитывается в часах. Формула расчета доплаты должна выглядеть следующим образом:

Результат = Стоимость часа предыдущего месяца * Количество часов буксировки в текущем месяце

Казалось бы, стоимость часа за прошлый месяц можно получить, разделив оклад прошлого месяца на количество часов прошлого месяца. Мы пытаемся составить формулу:

Результат = РасчетнаяБаза / ВремяВЧасах * КоличествоЧасовБуксировки

Где в качестве расчетной базы выступает оклад сотрудника с настройкой «Предыдущий месяц». Однако при такой настройке программа выполнит следующее действие: она возьмет оклад за прошлый месяц (через РасчетнаяБаза), но разделит его на ВремяВЧасах текущего месяца. В итоге мы получим некорректную стоимость часа. Нам необходимо заставить программу взять и оклад, и отработанные часы (или норму часов) именно за прошлый месяц. Выясним, как это сделать.

---

Способ 1. Настройка вспомогательного («справочного») начисления

Этот способ является самым надежным и полностью автоматизированным. Он не требует ручного вмешательства расчетчика или программирования. Суть метода заключается в том, чтобы рассчитывать стоимость часа непосредственно в том месяце, в котором она действует, сохранять ее «справочно» в системе, а в следующем месяце просто забирать готовое значение через расчетную базу.

Выполним настройку по шагам:

Шаг 1. Создаем справочное начисление для расчета стоимости часа

  1. Перейдем в меню Настройка — Начисления и создадим новое начисление. Назовем его, например, «Вспомогательный расчет стоимости часа».
  2. На вкладке Основное укажем следующие ключевые параметры:
    • Назначение начисления: выберем значение Доход в натуральной форме. Это очень важно, поскольку такое начисление будет рассчитываться в документе «Начисление зарплаты и взносов», но его результат не будет увеличивать сумму к выплате сотруднику и не отразится во взаиморасчетах.
    • Начисление выполняется: укажем значение Ежемесячно.
  3. В поле Формула введем расчет стоимости часа для текущего месяца: Оклад / ВремяВЧасах

    Примечание: вместо показателя ВремяВЧасах вы можете использовать НормаВремениВЧасах или индивидуальный показатель стоимости часа в зависимости от того, как в вашей организации принято рассчитывать часовую ставку.

  4. На вкладке Налоги, взносы, бухучет обязательно укажем, что данный доход не облагается НДФЛ и не облагается страховыми взносами, а также не входит в расчет среднего заработка. Нам этот показатель нужен исключительно как математический контейнер.
  5. Назначим это вспомогательное начисление сотрудникам в плановом порядке (например, документом «Изменение плановых начислений» или «Прием на работу»). Теперь программа каждый месяц будет автоматически рассчитывать и сохранять точную стоимость часа для каждого сотрудника.

Шаг 2. Настраиваем основное начисление «Доплата за буксировку»

  1. Создадим наше основное начисление «Доплата за буксировку».
  2. На вкладке Основное укажем, что начисление выполняется, например, «Только если введено значение показателя» (показателем будет КоличествоЧасовБуксировки) или «По отдельному документу».
  3. Запишем формулу расчета: РасчетнаяБаза * КоличествоЧасовБуксировки
  4. Перейдем на вкладку Расчет базы:
    • В список базовых начислений добавим только наше созданное на Шаге 1 начисление — «Вспомогательный расчет стоимости часа».
    • Переключатель Период расчета базы установим в положение «Предыдущий месяц» (или укажем «Период действия: Предыдущий месяц»).

Проанализируем, как сработает эта схема в июне. Программа обратится к РасчетнаяБаза (которая настроена на май) и найдет там результат нашего справочного начисления за май (а он равен стоимости часа за май). Затем она просто умножит эту стоимость на часы буксировки, введенные в июне. Задача решена красиво и полностью автоматически!

---

Способ 2. Использование стандартного механизма перерасчетов (Доначислений)

Этот метод базируется на типовом поведении программ линейки 1С:Предприятие 8 при регистрации событий «задним числом». Рассмотрим, как его реализовать.

Нам потребуется настроить формулу доплаты стандартным образом, ориентируясь на текущий период:

Оклад / ВремяВЧасах * КоличествоЧасовБуксировки

Если нам нужно начислить доплату за буксировку, которая происходила в мае, но рассчитываем мы ее в июне, порядок действий будет следующим:

  1. В июне мы открываем документ регистрации времени (например, шаблон «Данные для расчета зарплаты» или документ «Табель») и вводим часы буксировки за май.
  2. Поскольку майский период уже закрыт, программа автоматически зафиксирует необходимость перерасчета сотрудника за май.
  3. При заполнении документа «Начисление зарплаты и взносов» за июнь на вкладке «Доначисления, перерасчеты» программа автоматически произведет расчет доплаты за май. При этом она обратится к показателям мая: возьмет майский оклад и разделит его на майские часы. Результат отразится в июньском документе, но расчет будет произведен по правилам прошлого месяца.

Важный нюанс: данный метод требует от расчетчика строгого контроля периодов действия начислений и своевременного ввода документов. Если на предприятии запрещено возвращаться в прошлые периоды или это вызывает административные трудности, лучше воспользоваться Способом 1.

---

Способ 3. Ручной ввод стоимости часа через «Данные для расчета зарплаты»

Если описанные выше ситуации возникают крайне редко и только по отдельным сотрудникам, мы можем использовать полуручной ввод данных. Для этого выполним следующие действия:

  1. Перейдем в меню Настройка — Показатели расчета зарплаты и создадим новый показатель:
    • Имя: СтоимостьЧасаПрошлогоМесяца.
    • Назначение: Для сотрудника.
    • Тип показателя: Денежный.
    • Использование: Вводится только в месяце начисления непосредственно перед расчетом.
  2. В меню Настройка — Шаблоны ввода исходных данных создадим новый шаблон документа. Назовем его «Ввод данных для доплаты за буксировку». На вкладке «Показатели» отметим флажками наш новый показатель СтоимостьЧасаПрошлогоМесяца и показатель КоличествоЧасовБуксировки.
  3. Формулу начисления «Доплата за буксировку» настроим следующим образом: СтоимостьЧасаПрошлогоМесяца * КоличествоЧасовБуксировки
  4. Теперь каждый месяц расчетчик будет создавать документ «Данные для расчета зарплаты», выбирать сотрудников и вручную (или копированием из таблицы Excel) вносить стоимость часа за прошлый месяц и количество отработанных часов буксировки.

Этот способ лишен автоматизации расчета стоимости часа, но он максимально прозрачен и исключает любые ошибки округления или методологические споры в алгоритмах программы.

Выбирайте наиболее подходящий для вашей организации способ и автоматизируйте расчет заработной платы в 1С эффективно!

← На главную