Почему в ЗУП 3.1 справка по отпускам пустая, хотя остатки есть: разбираемся в механизмах программы

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

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

Как ЗУП 3.1 хранит данные об отпусках

Прежде всего, важно понять фундаментальный принцип: в ЗУП 3.1 текущие остатки отпусков не хранятся в виде готового числа. Система рассчитывает их динамически в момент формирования отчета. Расчет строится по следующей формуле:

Остаток = (Права на отпуск + Начальные остатки) – Фактически использованные дни

Рассмотрим основные объекты, в которых «живут» эти данные:

  1. Регистр сведений НачальныеОстаткиОтпусков. Сюда попадают сведения, введенные вручную через документ «Ввод остатков отпусков» или автоматически при переносе данных через документ «Начальная штатная расстановка». Именно здесь фиксируется точка отсчета для сотрудников, которые уже работали в компании на момент начала ведения учета в базе.
  2. Регистр накопления ФактическиеОтпуска. В этом регистре отражаются все дни, которые сотрудник уже отгулял. Данные сюда записывают документы «Отпуск», «Увольнение» (компенсация) и технические документы переноса данных.
  3. Справочник Сотрудники и его настройки прав. В карточке сотрудника (или в кадровых документах) должно быть указано право на отпуск (например, основной ежегодный — 28 дней). Без этого «двигателя» система не будет начислять новые дни за отработанное время.

Разница между отчетом «Остатки отпусков» и «Справкой по отпускам»

Почему один отчет видит 97 дней, а другой — ничего? Ответ кроется в алгоритмах их формирования. Проанализируем ситуацию подробнее.

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

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

Проблемы после переноса данных из ЗУП 2.5

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

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

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

Шаг 1: Проверка регистра начальных остатков

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

Шаг 2: Анализ документа «Перенос данных»

Найдите документы переноса с кодами ОТП (Данные об отпусках) и НЗП (Начальная штатная расстановка). Проверьте вкладку, связанную с регистром накопления ФактическиеОтпуска. Сравните эти данные с тем, что было в ЗУП 2.5. Если в 2.5 остаток был 111 дней, а в 3.1 перенеслось 97, значит, часть данных о фактическом использовании или правах была потеряна или интерпретирована неверно.

Шаг 3: Проверка права на отпуск

Убедитесь, что у сотрудника в актуальном кадровом состоянии назначено право на отпуск. Рассмотрим пример: если в документе «Прием на работу» или «Восстановление в должности» не указано количество дней отпуска в год, система будет видеть накопленный остаток из прошлого, но не сможет построить прогноз и детальную справку на текущую дату.

Шаг 4: Техническое обновление данных

В ЗУП 3.1 существует внутренний вспомогательный механизм — регистр сведений КакСотрудникИспользовалОтпуска. Иногда после массовой загрузки данных он не обновляется автоматически. В этом случае может помочь запуск процедуры пересчета фактических отпусков. Это можно сделать программно, вызвав метод общего модуля:


// Пример вызова пересчета для конкретного сотрудника (для программистов)
ОстаткиОтпусков.ОбновитьДанныеОФактическихОтпусках(ВыбранныйСотрудник);

Резюме

Если «Справка по отпускам» пуста, это всегда признак разрыва в хронологии. Проверьте, чтобы в регистрах не было «дыр» между датой приема, периодами в документе переноса и текущим моментом. Помните, что справка — это детальный аудит стажа, и она требует идеального заполнения рабочих лет в документе «Начальная штатная расстановка» или «Ввод остатков отпусков».

← На главную