Как использовать показатели времени и стоимости часа за произвольный период в формулах 1С:ЗУП 3.1?

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

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

Ограничения штатного вычислителя формул в 1С:ЗУП 3.1

Проанализируем работу стандартного механизма расчёта начислений. В 1С:ЗУП 3.1 встроенные показатели времени, такие как ВремяВДнях, ВремяВЧасах, НормаДней, НормаЧасов, а также показатели пересчёта тарифной ставки СтоимостьЧаса и СтоимостьДня, строго привязаны к текущему периоду регистрации документа (месяцу начисления).

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

Тем не менее, решить задачу расчёта сумм за произвольные периоды можно с помощью штатных настроек и внешних инструментов.

Способ 1. Использование пользовательских показателей и документа «Данные для расчета зарплаты»

Рассмотрим наиболее гибкий и удобный вариант, не требующий изменения конфигурации. Он заключается в переносе расчёта показателей за произвольный период во вспомогательные пользовательские показатели.

  1. Перейдём в справочник показателей расчета зарплаты и создадим новый показатель (например, ОтработаноДнейЗаПрошлыйПериод или СтоимостьЧасаПрошлогоМесяца).
  2. Установим назначение показателя: Для сотрудника, а порядок ввода — Вводится единовременно документом ввода данных.
  3. Настроим шаблон документа Данные для расчета зарплаты, включив в него созданные показатели.
  4. Создадим и применим формулу вида:

    Показатель * ОтработаноДнейЗаПрошлыйПериод / НормаДнейПрошлогоПериода

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

Способ 2. Расчет базовых показателей через служебное начисление и «Расчетную базу»

Посмотрим на ещё один метод, позволяющий получить долю отработанного времени за предыдущий период (например, за квартал) средствами настроек вида расчёта.

  1. Создадим служебное ежемесячное начисление (например, с назначением доход в натуральной форме или не выплачиваемая сумма). В его формуле укажем ежемесячный расчет доли отработанного времени:

    ВремяВДнях / НормаДней

  2. Для итогового квартального начисления в формуле задействуем показатель РасчетнаяБаза.
  3. На вкладке Расчет базы укажем требуемый базовый период (например, Предыдущий квартал) и выберем созданное служебное начисление.

Обратите внимание: данный метод накапливает данные постепенно начиная с момента запуска служебного начисления, поэтому для прошлых периодов до его внедрения потребуются доначисления или перерасчёты.

Способ 3. Выравнивание показателя «СтоимостьЧаса»

Если в формуле требуется задействовать показатель СтоимостьЧаса, а у сотрудника менялся оклад или норма времени, штатный показатель рассчитывается строго на текущую дату расчёта.

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

Если же требуется учесть именно фактическую стоимость часа за конкретный прошлый месяц при изменяемой ставке, значение необходимо фиксировать в отдельном пользовательском показателе через документ Данные для расчета зарплаты или использовать расширение конфигурации для переопределения расчёта через модули менеджеров МенеджерРасчетаЗарплаты и МенеджерДанныхУчетаВремениСотрудников.

← На главную