Почему сумма премии в регистре среднего заработка меньше начисленной при наличии командировок и отпусков в 1С:ERP и ЗУП?

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

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

Суть проблемы: исчезающие суммы в регистре

Рассмотрим ситуацию: сотруднику начислена премия в размере 10 000 рублей. Однако при проведении документа в регистр сведений для расчета среднего заработка попадает сумма, например, 8 888 рублей. При этом в настройках премии на вкладке Приоритеты может быть пусто, а сама премия кажется независимой от отработанного времени. Выясним причину такого поведения системы, разобрав внутренние механизмы платформы.

Влияние формулы расчета на регистрацию среднего заработка

Первое, на что мы должны обратить внимание — это формула самого начисления. В рассматриваемом примере используется формула:


ВыплатаПоДоговору / 0.87 * ВремяВДнях / НормаДнейПоГрафикуПолногоРабочегоВремени - ВыплаченоЗаМесяц / 0.87

Проанализируем эту конструкцию. Здесь явно присутствуют показатели ВремяВДнях и НормаДнейПоГрафикуПолногоРабочегоВремени. Это означает, что сумма премии уже рассчитывается пропорционально отработанному времени.

Когда система видит в формуле показатели времени, она автоматически связывает результат начисления с фактическим присутствием сотрудника на рабочем месте. Если в этом же периоде проведены документы «Командировка» или «Отпуск», они «съедают» рабочие дни из графика, уменьшая показатель ВремяВДнях.

Ловушка двойного уменьшения

Разберем важнейший методологический момент. В настройках вида расчета на вкладке Средний заработок есть реквизит «В базу начислений входит как». Для премий там обычно выбирается один из двух вариантов:

  1. Премия, полностью учитываемая — сумма попадает в расчет среднего «как есть».
  2. Премия, учитываемая частично — сумма принудительно пересчитывается пропорционально отработанному времени в периоде.

Если в вашей формуле уже заложено деление на норму и умножение на отработку (как в примере выше), а в настройках среднего заработка указано «Премия, учитываемая частично», возникает эффект двойного уменьшения. Программа сначала рассчитывает уменьшенную сумму в документе, а затем при записи в регистр среднего заработка еще раз применяет к этой сумме коэффициент отработанного времени. Чтобы этого избежать, для «самобалансирующихся» формул следует устанавливать признак «Премия, полностью учитываемая».

Хронология проведения документов и «вытеснение» времени

Многие пользователи замечают, что если распровести командировки, то премия в регистр ложится полностью. Рассмотрим, почему это происходит. Программа 1С:ERP при проведении документа «Премия» анализирует состояние регистров расчета и фактические записи о времени (табель) за указанный период.

Если командировки уже проведены, система видит «дыры» в рабочем периоде сотрудника. Даже если вкладка Приоритеты пуста, механизм расчета среднего заработка в коде конфигурации (в частности, в менеджере регистра ДанныеОНачисленияхДляРасчетаСреднегоЗаработкаОбщий) все равно может применять пропорцию, если период действия премии совпадает с периодом отсутствий.

Алгоритм работает примерно так:

Как проверить работу механизмов в коде

Для технических специалистов будет полезно проанализировать работу общего модуля УчетСреднегоЗаработкаКлиентСервер или УчетСреднегоЗаработка. В частности, стоит обратить внимание на функции, определяющие необходимость уменьшения премии. Хотя в ЗУП и ERP эти модули могут незначительно отличаться, логика остается единой: система стремится соблюсти требования Постановления №922 о порядке расчета среднего заработка.

Посмотрим на пример логики, которая может срабатывать при определении доли премии:


// Упрощенная логика определения коэффициента для среднего
ДоляВремени = ?(НормаДней <> 0, ОтработаноДней / НормаДней, 0);
СуммаДляСреднего = СуммаНачисленная * ДоляВремени;

Если вы хотите изменить это поведение глобально (что не всегда рекомендуется), программисты иногда прибегают к расширениям для корректировки функции УменьшатьПремииПроцентомНачисленныеЗаВремяНеВходящееВРасчетныйПериод.

Пошаговая инструкция по решению проблемы

Чтобы премия попадала в регистр среднего заработка в нужном объеме, выполним следующие шаги:

  1. Проанализируем вкладку Средний заработок в настройках начисления. Если формула уже учитывает время, убедимся, что выбрано «Премия, полностью учитываемая».
  2. Проверим Период, за который начисляется премия в самом документе. Если премия за май, а в мае были командировки, система неизбежно будет пытаться сопоставить эти данные.
  3. Обратим внимание на вкладку Зависимости и Приоритеты. Хотя автор темы указал, что они пусты, в типовых конфигурациях для премий часто полезно указать в приоритетах начисления, которые она НЕ должна вытеснять, или наоборот, убедиться, что командировки не стоят в списке вытесняющих, если это противоречит вашей учетной политике.
  4. Если требуется, чтобы премия за май игнорировала майские командировки (например, это годовая премия, выплачиваемая в мае), в документе следует четко указывать Базовый период, за который она выплачивается (например, прошлый год).

Вывод

Нормально ли, что командировки «вытесняют» премию в регистре среднего заработка? С точки зрения методологии 1С — да, если система считает, что премия начислена за период, который был отработан не полностью. Проблема решается не столько хронологией (хотя перепроведение документов после изменения настроек обязательно), сколько правильной комбинацией формулы расчета и настройки способа вхождения в базу среднего заработка.

← На главную