Не определяется расчетный период для расчета среднего заработка в документе «Отпуск» в 1С:ЗУП 3.1: причины и решения

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

В практической работе бухгалтера и кадровика при расчете отпуска в программе 1С:Зарплата и управление персоналом 3.1 (или 1С:ЗКГУ 3.1) иногда возникает крайне неприятная ситуация. При создании документа Отпуск по конкретному сотруднику программа наотрез отказывается автоматически определять расчетный период для среднего заработка. В результате этого средний заработок равен нулю, и отпускные не начисляются. При этом у остальных сотрудников базы этот же документ рассчитывается абсолютно корректно, а у проблемного сотрудника другие документы (например, Больничный лист) могут создаваться и рассчитываться без каких-либо замечаний.

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

Рассмотрим эту проблему детально, изучив как методологические особенности учета, так и техническое устройство регистров конфигурации.

---

Причина 1: Длительное отсутствие заработка в расчетном периоде (Постановление № 922)

Согласно Положению об особенностях порядка исчисления средней заработной платы (утвержденному Постановлением Правительства РФ от 24.12.2007 № 922), стандартный расчетный период для отпуска составляет 12 предшествующих календарных месяцев. Однако если сотрудник длительное время находился в декретном отпуске, отпуске по уходу за ребенком или в затяжном отпуске за свой счет, у него за эти 12 месяцев полностью отсутствуют фактически отработанные дни и начисленная заработная плата.

В соответствии с пунктом 6 Постановления № 922, в этом случае расчетный период должен быть сдвинут назад, на предшествующий период времени, равный расчетному, в котором у сотрудника были фактически отработанные дни и заработок.

В чем заключалась техническая проблема старых релизов (включая 3.1.12):

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

Как это работает в современных релизах 1С (начиная с версии 3.1.34.129):

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

---

Причина 2: Сбои и «битые» записи в регистре «Данные о времени для расчета среднего (общий)»

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

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

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

---

Причина 3: «Зависшие» состояния в регистре «Состояния сотрудников»

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

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

---

Причина 4: Неверные настройки начислений (Вкладка «Учет времени»)

Иногда корни проблемы уходят в настройки видов начислений. Проанализируем настройки основного начисления сотрудника (например, Оплата по окладу или Оплата по часовому тарифу):

Если на вкладке «Учет времени» в карточке начисления ошибочно установлен переключатель в положение «Дополнительная оплата за уже оплаченное время» или За работу в праздничные дни вместо основного значения «За работу полную смену в пределах нормы времени», программа перестает регистрировать отработанное время сотрудника в специализированных регистрах для расчета среднего заработка.

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

---

Пошаговый алгоритм решения проблемы

Давайте разберем по шагам, как локализовать и устранить эту ошибку, не прибегая к увольнению сотрудника и созданию «дублирующих» карточек в системе.

Шаг 1. Проверка гипотезы «Сдвиг периода»

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

Если при переносе даты начисления на более поздний период автозаполнение начинает отрабатывать нормально, это явный признак того, что в стандартном 12-месячном периоде для исходного месяца расчета у сотрудника полностью отсутствуют данные о доходах и времени, а в базе установлена старая версия конфигурации, не поддерживающая автоматический сдвиг.

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

Шаг 2. Использование сервиса обновления данных для расчета среднего

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

Выполним следующие действия:

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

Шаг 3. Анализ регистра «Состояния сотрудников» через функции технического специалиста

Если обновление среднего заработка не помогло, проверим базу на наличие «зависших» состояний по сотруднику. Для этого нам понадобятся права администратора или программиста.

  1. Откроем главное меню программы и перейдем в раздел Функции для технического специалиста (в старых версиях — Все функции).
  2. В строке поиска введем «Состояния сотрудников» и откроем одноименный регистр сведений.
  3. В поле отбора установим фильтр по нашему проблемному сотруднику.
  4. Внимательно проанализируем записи: нет ли там пересекающихся строк, пустых дат окончания или записей, ссылающихся на несуществующие (удаленные) документы (такие ссылки обычно отображаются как <Объект не найден...>).

Для быстрого поиска таких ошибок технический специалист может воспользоваться консолью запросов или написать простой код для выгрузки незакрытых состояний:


// Пример запроса для поиска незакрытых состояний сотрудника
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	СостоянияСотрудников.Сотрудник КАК Сотрудник,
    |	СостоянияСотрудников.Состояние КАК Состояние,
    |	СостоянияСотрудников.Период КАК ДатаНачала,
    |	СостоянияСотрудников.Окончание КАК ДатаОкончания
    |ИЗ
    |	РегистрСведений.СостоянияСотрудников КАК СостоянияСотрудников
    |ГДЕ
    |	СостоянияСотрудников.Сотрудник = &ПроблемныйСотрудник
    |	И СостоянияСотрудников.Окончание = ДАТАВРЕМЯ(1, 1, 1)";
    
Запрос.УстановитьПараметр("ПроблемныйСотрудник", ПроблемныйСотрудникСсылка);
РезультатЗапроса = Запрос.Выполнить();

Если такие строки найдены, их необходимо аккуратно удалить из регистра (или восстановить битые документы-основания).

Шаг 4. Проверка регистра «Данные о времени для расчета среднего (общий)»

Аналогичным образом через «Функции для технического специалиста» проверим регистр накопления Данные о времени для расчета среднего (общий).

  1. Откроем регистр и установим отбор по нашему сотруднику.
  2. Проверим наличие записей за каждый месяц расчетного периода.
  3. Обратим внимание на колонки с отработанными днями и часами. Если суммы начислений в базу попадают, а колонки времени пустые, перейдем к шагу 5.

Шаг 5. Анализ настроек основных видов начислений

Если выяснилось, что в регистре среднего заработка отсутствуют дни при наличии сумм, проверим настройки видов расчетов:

  1. Перейдем в раздел Настройка — Начисления.
  2. Найдем основное начисление сотрудника (например, Оплата по окладу).
  3. Перейдем на вкладку Учет времени.
  4. Убедимся, что переключатель Используемое время установлен в значение Рабочее время, а в поле Вид времени указано Явка (или иной подходящий рабочий вид времени). Если там установлено значение, исключающее фиксацию отработанного времени для среднего заработка, измените его на корректное и перепроведите документы начисления зарплаты за расчетный период.

---

Резюме

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

Прежде чем принимать радикальные решения о пересоздании карточки сотрудника (что повлечет за собой разрыв кадровой истории и проблемы со сдачей отчетности ЕФС-1, РСВ и НДФЛ), выполните диагностику по нашей инструкции. В 90% случаев запуск обработки Обновить данные для расчета среднего заработка или исправление «зависшего» кадрового состояния полностью решает проблему.

← На главную