Как исправить некорректный расчет среднего заработка в 1С:УПП 1.3.244.1 и более поздних релизах?

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

При работе с конфигурацией 1С:Управление производственным предприятием (УПП) версии 1.3.244.1 и последующими релизами пользователи столкнулись с критической проблемой некорректного расчета среднего заработка. Эта ошибка затрагивает расчет отпускных, выплат при увольнении, а также правильность индексации и отражения дней в расчетном периоде. Возникли серьезные расхождения между ожидаемыми суммами и тем, что фактически начисляла программа. Давайте подробно рассмотрим эту проблему, проанализируем предлагаемые решения и разберем, как восстановить корректность расчетов.

Суть проблемы: Неверный расчет среднего заработка в 1С:УПП

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

  1. Неверное количество дней для отпуска: Программа могла задваивать количество дней для всех видов доплат, что приводило к занижению среднедневного заработка. Вместо стандартных 29,3 дней в месяце в расчет могло браться значение, умноженное на количество видов дополнительных расчетов (например, 29,3 * количество видов допрасчетов), что значительно искажало результат.
  2. Проблемы с индексацией: Индексация применялась некорректно или не ко всем видам начислений. Надбавки за вредность, доплаты за ночные часы или праздничные дни должны быть проиндексированы, однако программа могла исключать их из индексируемой базы. Это приводило к уменьшению суммы, делящейся на отработанные дни, и, как следствие, к занижению среднего заработка.
  3. Ошибки в документе «Расчет при увольнении»: Расчет при увольнении зачастую производился неверно, сокращая сумму выплат вдвое или более.
  4. Несоответствие суммы начисления: В документах «Начисление отпуска» и «Оплата по среднему» сумма, отображаемая в поле «Начислено», не совпадала с произведением количества дней отпуска на среднедневной заработок.
  5. Сложности с определенными начислениями: Ошибка проявлялась особенно остро, если у сотрудника в расчетном периоде были начисления типа «Оплата праздничных и выходных дней», «Доплата за работу в праздничные и выходные дни», «Доплата за совмещение профессий», «Доплата к должностному окладу». При наличии таких начислений сумма отпускных становилась намного меньше.
  6. Отсутствие дней в расчетном периоде: В некоторых случаях (например, в релизе 1.3.245.3) на закладке «Расчет среднего заработка» в разделе «Основной заработок: индексируемый» могли не проставляться дни расчетного периода, что делало расчет невозможным.

Методологически, расчет среднего заработка в 1С:УПП должен строго соответствовать законодательству. В базу для расчета включаются все фактические начисления за отработанное время за предыдущие 12 месяцев (оклад, сдельный заработок, надбавки, премии), за исключением материальной помощи, компенсационных выплат, подарков, дивидендов, а также сумм, начисленных за периоды, исключаемые из расчетного (отпускные, больничные, командировочные). Индексация производится при повышении окладов для всех сотрудников, филиала или подразделения, с использованием коэффициента, определяемого делением новых окладов на старые. Неправильная настройка или баги в этом процессе могут привести к значительным искажениям.

Попытки решения и официальная позиция 1С

Многие пользователи, столкнувшись с проблемой, пытались найти обходные пути. Один из первых подходов заключался в изменении настроек Плана видов расчета СреднийЗаработок:

  1. Мы пробовали оставить в Основном заработке: индексируемый только оклад по дням, оклад по часам, оплаты по дневному и по часовому тарифу.
  2. Все остальные начисления, по которым в регистр расчета РасчетСреднегоЗаработка попадают данные по времени, переносили в основной заработок: неиндексируемый.

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

1С подтвердила наличие ошибки. В ответ на обращения пользователей разработчики обещали исправления в последующих релизах. Однако опыт показал, что релизы 1.3.245.1, 1.3.245.2 и даже 1.3.245.3 не полностью решали проблему. Несмотря на то, что в списке исправлений для 1.3.245.2 фигурировала позиция 60021628 Оплата по среднему заработку неверно рассчитывается сумма начисления, пользователи продолжали сообщать о проблемах, таких как «начисление отпуска режется в половину» или «расчет при увольнении не исправлен и режет в половину».

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

Рабочие решения и исправления на уровне кода

Поскольку официальные исправления либо запаздывали, либо были неполными, сообщество 1С-разработчиков предложило несколько программных решений. Рассмотрим их подробнее.

1. Исправление в общем модуле «ПроведениеРасчетовПереопределяемый» для расчета среднего заработка

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

Шаги по исправлению:

  1. Откройте конфигуратор 1С.
  2. Перейдите к общему модулю ПроведениеРасчетовПереопределяемый.
  3. Найдите функцию ПолучитьДанныеДляРасчета2025.
  4. В тексте запроса, который присваивается переменной ДанныеОСреднемЗаработкеТекст, необходимо найти четыре места, где встречается условие:
    
    |КОГДА РасчетСреднегоЗаработка.Начисление.КодДоходаНДФЛ = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.РайонныеСеверныеНадбавки)
    
  5. После каждого такого условия добавьте следующую строку (или её эквивалент, если код уже изменился в вашем релизе):
    
    //Начало изменений 08.04.25
    | или РасчетСреднегоЗаработка.Начисление.ВидВремени <> ЗНАЧЕНИЕ(Перечисление.ВидыВремени.ОтработанноеВПределахНормы)
    //Конец изменений 08.04.25
    
    Эта строка гарантирует, что начисления, которые не являются районными или северными надбавками, но относятся к неотработанному времени, не будут ошибочно учитываться в расчете отработанных дней, что было одной из причин задвоения знаменателя.
  6. Сохраните изменения в модуле и обновите базу данных.

После применения этой правки бухгалтеры сообщали, что расчеты стали выглядеть корректными. Однако стоит учитывать, что кнопки «Рассчитать» на вкладке «Условия» и «Рассчитать начисления» на вкладке «Расчет среднего заработка» в документе «Начисление отпуска» могли продолжать вести себя по-разному, хотя среднедневной заработок рассчитывался одинаково. В релизе 1.3.245.3 поведение этих кнопок было заявлено как одинаковое.

2. Исправление для документа «Расчет при увольнении сотрудника организации» в релизе 1.3.245.3

В релизе 1.3.245.3, даже после частичных исправлений, могла сохраняться проблема с документом «Расчет при увольнении сотрудника организации». Разработчик добавил в РегистрыРасчета.РасчетСреднегоЗаработка новый реквизит Начисление, но в некоторых документах забыл обновить процедуры, которые заполняют данные для этого регистра.

Шаги по исправлению:

  1. Откройте конфигуратор 1С.
  2. Перейдите к модулю документа «Расчет при увольнении сотрудника организации».
  3. Найдите процедуру ДобавитьСтрокуРасчетаСреднего.
  4. Внутри этой процедуры найдите закомментированную или существующую строку, отвечающую за заполнение значений свойств движения, и замените её на следующую:
    
    //ЗаполнитьЗначенияСвойств(Движение,ВыборкаПоСтрокамДокумента,СтрокаСвойствИзСтрокиДокумента);
    ЗаполнитьЗначенияСвойств(Движение,ВыборкаПоСтрокамДокумента); //фиксик
    
    Это изменение гарантирует, что новый реквизит Начисление будет правильно заполняться при формировании движений по регистру расчета среднего заработка, устраняя ошибку, которая могла приводить к некорректным суммам при увольнении.
  5. Сохраните изменения и обновите базу данных.

3. Обсуждение изменения агрегатной функции СУММА на МАКСИМУМ

На ранних этапах поиска решения некоторые пользователи предлагали изменить агрегатную функцию СУММА на МАКСИМУМ для полей ОтработаноДней, ОтработаноДнейПособий, ОтработаноДнейПособий2010, ОтработаноЧасов в том же общем модуле ПроведениеРасчетовПереопределяемый, в функции ПолучитьДанныеДляРасчета2025. Строка 83 функции содержит соответствующий запрос.

Пример изменения:

Вместо:

| СУММА(РасчетСреднегоЗаработка.ОтработаноДней) КАК ОтработаноДней,

Предлагалось:

| МАКСИМУМ(РасчетСреднегоЗаработка.ОтработаноДней) КАК ОтработаноДней,

Этот подход также давал положительные результаты у некоторых пользователей, но не был универсальным. После применения этого изменения кнопка «Рассчитать» на вкладке «Условия» и «Рассчитать начисления» на вкладке «Расчет среднего заработка» в документе «Начисление отпуска» могли менять сумму начисления, иногда приводя её к правильной. Однако, учитывая дальнейшие рекомендации и более точные исправления (как в пункте 1), изменение СУММА на МАКСИМУМ может быть не самым оптимальным или полным решением.

Дополнительные проблемы и нюансы

Даже после применения вышеуказанных исправлений, в некоторых релизах (например, 1.3.245.3) могли появляться новые нюансы:

  1. Расхождения на копейки: В некоторых случаях вновь рассчитанный средний заработок отличался от предыдущего на 1 копейку. Это было связано с тем, что общий средний заработок рассчитывался как сумма отдельно рассчитанного основного среднего и средних для Районного коэффициента (РК) и Северной надбавки (СН). Каждая сумма округлялась до копеек, и при сложении могло возникать расхождение по сравнению с округлением только общей суммы. Методологически, обычно корректнее считать общий средний заработок, а уже из него выделять часть, относящуюся к РК и СН.
  2. Проблемы с РК и СН при праздничных днях: Если в период учебного отпуска был праздничный день (например, 8 марта), то для расчета доли северных/районных коэффициентов количество оплаченных дней уменьшалось на 1, в отличие от оплаченных дней отпуска. Это также приводило к расхождению.
  3. Изменения в законодательстве с 1 сентября 2025 года: Важно помнить, что с 1 сентября 2025 года вступают в силу изменения в расчете выплат при увольнении (Постановление Правительства № 540), которые меняют логику вычисления среднего заработка для выходных пособий. Расчет переходит на усредненные годовые показатели, абстрагируясь от конкретного месяца увольнения. Для расчета пособий будет использоваться фиксированное среднемесячное значение рабочих дней или часов для всего календарного года, а в расчет будут браться только доходы, связанные с трудовой деятельностью (оклад, премии, доплаты за сверхурочную работу, ночные смены). Разработчики 1С планируют выпускать обновления заблаговременно для соответствия этим изменениям. Рекомендуем отслеживать релизы для УПП.

Рекомендации и общие советы

Для минимизации проблем с расчетом среднего заработка и других начислений в 1С:УПП мы рекомендуем:

  1. Регулярное обновление конфигурации: Несмотря на то что новые релизы могут содержать новые ошибки, они также включают исправления старых и актуализацию расчетов в соответствии с законодательством. Убедитесь, что ваша программа находится на официальной поддержке для доступа к обновлениям.
  2. Тщательная проверка после каждого обновления: Всегда проверяйте ключевые расчеты (отпускные, больничные, увольнения) на тестовой базе после каждого обновления, особенно если конфигурация нетиповая.
  3. Проверка заполнения данных: Убедитесь, что производственный календарь и графики работы заполнены корректно. Отсутствие или неверное заполнение этих данных часто приводит к ошибкам в расчете отработанного времени.
  4. Очистка запомненных расчетов: Если вы вносили изменения в виды расчета (например, добавляли новые начисления в базу среднего заработка), не забудьте очистить ранее запомненные расчеты среднего заработка, чтобы изменения были учтены.
  5. Использование отладчика: В случае возникновения неясных ошибок, особенно при отсутствии дней в расчетном периоде, используйте отладчик для пошагового анализа заполнения среднего заработка. Это поможет выяснить, на каком этапе происходит сбой.
  6. Обращение в техподдержку 1С: Если проблема носит массовый характер и не решается локальными методами, не стесняйтесь обращаться в техподдержку 1С с подробным описанием ошибки и шагами для её воспроизведения. Чем больше обращений, тем быстрее разработчики уделят внимание проблеме.

Борьба с ошибками в расчете среднего заработка в 1С:УПП требует внимательности и готовности к локальным корректировкам. Применяя предложенные решения и следуя рекомендациям, мы можем значительно улучшить корректность расчетов в системе.

← На главную