Как исправить ошибки и отрицательные значения при расчете среднего заработка в 1С:ЗУП 3.1.14.97?

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

При работе в программе 1С:Зарплата и Управление Персоналом (релиз 3.1.14.97) многие пользователи столкнулись с критической проблемой: в расчете среднего заработка для отпусков и командировок начали появляться необъяснимые отрицательные значения отработанных дней и часов. Особенно ярко эта проблема проявилась в периоды, следующие за «коронавирусными» нерабочими днями. Рассмотрим причины возникновения этой коллизии и разберем способы ее решения, основываясь на техническом анализе регистров и программного кода.

Анализ проблемы: почему в расчете среднего появляются «минусы»?

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

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

  1. В графике работы стоят дни «ОН», а в табеле фактически проставлена «Я» (явка), так как сотрудник выходил на работу.
  2. Программа пытается одновременно применить логику исключения времени «ОН» из среднего заработка (согласно Постановлению 922) и учесть фактически отработанное время, за которое начислена зарплата.
  3. При перепроведении документов Начисление зарплаты и взносов система ошибочно сторнирует записи в регистре среднего заработка, создавая «минусовые» остатки, которые не перекрываются новыми записями.

Шаг 1: Проверка настроек расчета среднего заработка

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

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

Шаг 2: Использование обработки «Пересчет среднего заработка»

Для исправления накопленных ошибок в регистрах 1С предлагает встроенную обработку. Рассмотрим порядок работы с ней:

  1. Перейдем в раздел Зарплата — Сервис — Пересчет среднего заработка.
  2. Выберем период (например, с марта 2020 года) и конкретных сотрудников, у которых наблюдаются расхождения.
  3. Запустим процесс пересчета.

Важный нюанс: как показывает практика, на релизе 3.1.14.97 эта обработка не всегда справляется, если в базе присутствуют документы Индивидуальный график или Перенос данных. Если после работы обработки «минусы» остались, перейдем к более радикальным мерам.

Шаг 3: Корректное использование Индивидуальных графиков

Для сотрудников, которые работали в периоды «ОН», рекомендуется использовать Индивидуальный график. Разберем правильную последовательность действий, чтобы не «сломать» регистр среднего заработка:

  1. Отменим проведение документа Начисление зарплаты и взносов за проблемный месяц.
  2. Создадим документ Индивидуальный график, где явно укажем вид времени «Я» (Явка) для всех рабочих дней.
  3. Проверим Табель учета рабочего времени — данные в нем должны соответствовать индивидуальному графику.
  4. Заново проведем начисление зарплаты.

Только такая строгая последовательность позволяет корректно зафиксировать связь вида времени и оплаты в регистре сведений Данные о времени для расчета среднего (общий).

Шаг 4: Техническое решение проблемы (для программистов)

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

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


// В процедуре формирования таблицы данных для среднего заработка
// Добавляем проверку на отрицательные значения
Для Каждого СтрокаДанных Из ТаблицаВремениСреднего Цикл
    Если СтрокаДанных.ОтработаноДней < 0 Тогда
        СтрокаДанных.ОтработаноДней = 0;
    КонецЕсли;
    Если СтрокаДанных.ОтработаноЧасов < 0 Тогда
        СтрокаДанных.ОтработаноЧасов = 0;
    КонецЕсли;
КонецЦикла;

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

Особенности работы с патчами (расширениями)

Для релиза 3.1.14.97 выпускались оперативные патчи (исправления). Проанализируем ситуацию: установка одного патча может конфликтовать с другим, если они оба затрагивают общий модуль УчетСреднегоЗаработка. Перед установкой новых расширений обязательно отключайте старые патчи, связанные со средним заработком. Также проверьте настройку «Проверять соответствие фактического времени плановому» в настройках расчета зарплаты — в некоторых случаях именно ее включение позволяло патчам отрабатывать корректно.

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

← На главную