Как исправить ошибку "Нет данных для расчета среднего заработка" при расчете отпуска в 1С:УПП 1.3?

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

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

Причина возникновения проблемы

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

  1. Некорректное заполнение "Дней расчетного периода" для оклада: В новой логике программы, поле "Дней расчетного периода" (например, 29.3 для полностью отработанного месяца) перестало автоматически заполняться для строки, соответствующей окладу или тарифу сотрудника. Это критично, поскольку именно эти дни являются знаменателем при расчете среднего дневного заработка. Если данные дни отсутствуют, система не может выполнить расчет, выдавая сообщение "Нет данных для расчета среднего заработка".
  2. Изменения в логике учета дней: До 2025 года на вкладке среднего заработка обычно присутствовала одна строка для каждого месяца с общим заработком и одним числом дней для знаменателя. С 2025 года потребовалось выделять каждое начисление (оклад, надбавка и т.д.) отдельной строкой. Изначально разработчики столкнулись с дилеммой: либо оставлять дни только в одиночестве для каждого месяца, либо исключать дни из запроса для всех начислений, кроме оклада. Был выбран первый путь, но с ошибками в реализации, что привело к тому, что дни либо не проставлялись вовсе, либо ошибочно суммировались по всем строкам начислений в месяце (если дни проставлялись для всех), что приводило к завышению знаменателя и, как следствие, к занижению суммы отпускных.
  3. Проблемы с РК и СН: Хотя изначально с 2025 года районные коэффициенты и северные надбавки должны были выделяться в отдельную налоговую базу для НДФЛ, позже ФНС изменила свою позицию, разъяснив, что при расчете оплат по среднему заработку выделять доли РК и СН не требуется. Эти изменения в разъяснениях также могли потребовать корректировок в программах и стать причиной ошибок в ранних релизах 2025 года.

Шаг 1: Первичная диагностика и ручная проверка

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

  1. Обновите данные сотрудника: Иногда ошибка может быть связана с некорректно кэшированными или устаревшими данными. Мы рекомендуем перейти на вкладку "Основной" в документе расчета отпуска, выбрать другого сотрудника, а затем снова выбрать текущего сотрудника. Это действие может обновить внутренние данные и повторно запустить некоторые механизмы заполнения.
  2. Используйте правильную последовательность кнопок расчета:

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

    1. Откройте вкладку "Расчет среднего заработка".
    2. Нажмите кнопку "Рассчитать" (обычно расположенную на этой вкладке или рядом с ней, не общую "РассчитатьВсе").
    3. После того как средний заработок будет рассчитан (или появится ошибка), перейдите на вкладку "Оплата отпуска по календарным дням" (или другую вкладку с фактическим расчетом начислений) и нажмите соответствующую кнопку расчета.

    Если после этого расчет не происходит, мы переходим к самому эффективному ручному способу.

  3. Ручное заполнение "Дней расчетного периода":

    Если предыдущие шаги не помогли, наиболее верный способ временно решить проблему — это вручную проставить количество дней расчетного периода на вкладке "Расчет среднего заработка" для строк, соответствующих окладу или тарифу. Мы проанализируем этот подход подробнее:

    1. Откройте документ "Оплата отпуска" и перейдите на вкладку "Расчет среднего заработка".
    2. Найдите строки, соответствующие начислениям по окладу (или тарифу) за каждый месяц расчетного периода. Обычно это начисления с видом "Оклад по дням", "Оклад по часам", "Тариф часовой", "Тариф дневной".
    3. В колонке "Дней расчетного периода" (или аналогичной) для каждой такой строки, где дни отсутствуют или равны нулю, вручную установите значение 29.3 (для полностью отработанного месяца). Если месяц отработан не полностью, мы рекомендуем рассчитать пропорциональное количество дней.
    4. Важное уточнение: Вставлять 29.3 (или другие дни) нужно ТОЛЬКО для строк, относящихся к окладу/тарифу, и НЕ для строк с премиями, надбавками (кроме районных и северных, где наличие дней менее критично, так как они могут быть исключены в запросе, как мы выяснили из обсуждений). Если вы проставите дни во всех строках (включая премии), это приведет к "космической" (очень большой) сумме в знаменателе, что, в свою очередь, катастрофически занизит среднедневной заработок и общую сумму отпускных.
    5. После ручного ввода дней, мы снова нажимаем кнопку "Рассчитать" на вкладке "Расчет среднего заработка", а затем уже переходим к расчету начислений на основной вкладке. Вы увидите, что расчет будет произведен, и ошибка "Нет данных для расчета среднего заработка" исчезнет.

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

Шаг 2: Анализ и корректировка конфигурации

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

Понимание проблемы с кодом

Мы проанализировали, что до 2025 года в УПП на вкладке среднего заработка присутствовал только общий заработок без деления по начислениям, и по каждому месяцу была одна строка с одним числом дней для знаменателя. Несколько строк появлялись, когда внутри месяца зарплата делилась по каким-то причинам. В коде, соответственно, использовалась агрегатная функция СУММА в запросе по дням. С 2025 года потребовалось выделять каждое начисление: оклад, надбавка и т.д. Если для каждой строки месяца (Оклад, Надбавка, Премия) проставлялось 29.3 дня, то в результате СУММА в запросе брала 29.3 + 29.3 + 29.3, что приводило к резкому занижению отпускных сумм. Разработчики должны были либо оставить дни только для базового начисления, либо исключить их в запросе для всех, кроме оклада. В их реализации возникли недочеты, которые нам предстоит исправить.

Программное решение: корректировка модуля

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

Найдем в указанном модуле место, где происходит заполнение отработанных дней и часов, и добавим логику, которая будет корректно устанавливать эти значения для основных видов начислений. Код, который мы будем использовать, поможет обеспечить, что ОтработаноДней и ОтработаноЧасов будут заполнены для оклада и тарифа, но не будут задваиваться для других начислений.

Вот пример кода, который необходимо добавить или скорректировать в процедуре СформироватьИЗаписатьДанныеРасчетаСреднего2025:


// ... (существующий код процедуры) ...

Если ТипЗнч(ВыборкаБазы.Начисление) <> Тип("ПланВидовРасчетаСсылка.СреднийЗаработок") Тогда
    Если ВыборкаБазы.Начисление.КодДоходаНДФЛ = Справочники.ДоходыНДФЛ.РайонныеСеверныеНадбавки Тогда
        СтрокаДвижений.ОтработаноДней = ВыборкаОтработанноеВремя.ОтработаноДней;
        СтрокаДвижений.ОтработаноЧасов = ВыборкаОтработанноеВремя.ОтработаноЧасов;
        // 2025-04-29 ошибка расчета среднего заработка
    ИначеЕсли ВыборкаБазы.Начисление = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ТарифЧасовой ИЛИ
             ВыборкаБазы.Начисление = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоДням ИЛИ
             ВыборкаБазы.Начисление = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоЧасам ИЛИ
             ВыборкаБабазы.Начисление = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ТарифДневной Тогда
        СтрокаДвижений.ОтработаноДней = ВыборкаОтработанноеВремя.ОтработаноДней;
        СтрокаДвижений.ОтработаноЧасов = ВыборкаОтработанноеВремя.ОтработаноЧасов;
        // 2025-04-29 ошибка расчета среднего заработка
    КонецЕсли;
КонецЕсли;

// ... (остальной код процедуры) ...

Мы разберем этот фрагмент кода:

  1. Если ТипЗнч(ВыборкаБазы.Начисление) <> Тип("ПланВидовРасчетаСсылка.СреднийЗаработок") Тогда: Эта проверка гарантирует, что мы работаем с обычными начислениями, а не с самим видом расчета "СреднийЗаработок", который является служебным.

  2. Если ВыборкаБазы.Начисление.КодДоходаНДФЛ = Справочники.ДоходыНДФЛ.РайонныеСеверныеНадбавки Тогда: Мы сначала обрабатываем районные и северные надбавки. Для них также проставляются отработанные дни и часы из выборки ВыборкаОтработанноеВремя. Это соответствует текущей логике, где эти надбавки могут влиять на средний заработок.

  3. ИначеЕсли ВыборкаБазы.Начисление = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ТарифЧасовой ИЛИ ... Тогда: Это ключевая часть кода. Мы явно указываем, что для следующих видов основных начислений:

    • ТарифЧасовой
    • ОкладПоДням
    • ОкладПоЧасам
    • ТарифДневной

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

  4. Комментарий // 2025-04-29 ошибка расчета среднего заработка: Это полезный комментарий, который был оставлен разработчиком или тем, кто внес это исправление. Он указывает на контекст изменений.

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

Важно: Перед внесением изменений в типовую конфигурацию всегда создавайте резервную копию базы данных. Мы рекомендуем также протестировать изменения на копии базы перед их применением в рабочей среде.

Дополнительные аспекты и рекомендации

Мы также рассмотрим несколько дополнительных рекомендаций, которые могут быть полезны в контексте данной проблемы.

  1. Обновление конфигурации: 1С признала наличие ошибок в расчете среднего заработка в УПП 1.3, и предполагалось, что они будут исправлены в следующих релизах. Мы настоятельно рекомендуем поддерживать конфигурацию в актуальном состоянии, устанавливая последние доступные обновления. Иногда проблему могут решить обновления, однако, как показывает практика, в некоторых случаях обновления не полностью устраняли проблему, и ручные корректировки кода все равно требовались.
  2. Перезаполнение и перепроведение документов: После обновления конфигурации или внесения программных изменений, мы рекомендуем перезаполнить и перепровести все документы начисления (зарплата, больничные, командировки и т.п.) за соответствующие периоды (например, за январь 2025 года и далее) в хронологической последовательности. Это обеспечит корректное отражение всех данных в регистрах и позволит новым алгоритмам расчета среднего заработка вступить в силу.
  3. Контекст законодательных изменений 2025 года: Мы помним, что с 1 сентября 2025 года вводятся новые правила расчета среднего заработка, утвержденные Постановлением Правительства РФ № 540 от 24.04.2025.
    • Расчет отпускных и командировочных: Для оплаты отпусков, командировок и других случаев сохранения среднего заработка алгоритм расчета существенно не меняется. Внесены лишь некоторые уточнения и дополнения в формулировки нормативно-правовых актов.
    • Расчет выходного пособия: Основные кардинальные изменения коснулись расчета выходного пособия. Теперь оно определяется путем умножения среднего дневного заработка на среднемесячное количество рабочих дней (или среднего часового заработка на среднемесячное количество часов) за год увольнения, а не за месяц, следующий за увольнением. Это переход на усредненные годовые показатели.
    • Учет выплат: При расчете среднего заработка учитываются все виды выплат, предусмотренные системой оплаты труда, включая оклад, премии, доплаты, независимо от источников. Исключаются периоды оплачиваемых и неоплачиваемых отпусков, больничных, простоя по вине работодателя, оплачиваемых выходных по уходу за ребенком-инвалидом.
    • МРОТ: Средний заработок сотрудника, полностью отработавшего месяц, не может быть ниже МРОТ (в 2025 году — 22 440 рублей). Если сумма получилась меньше, работодатель обязан доплатить разницу.

    Понимание этих изменений поможет нам лучше ориентироваться в логике расчетов и выявлять потенциальные ошибки.

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

← На главную