Почему сотрудник не отображается в отборе расчетного листка в 1С:ЗУП 3.1 и как это исправить?

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

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

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

Архитектура хранения кадровых данных и причины сбоя

Проанализируем механизм, по которому отчет Расчетный листок выбирает сотрудников. В ЗУП 3.1 отчеты на базе схемы компоновки данных (СКД) соединяют начисления и выплаты не просто со справочником Сотрудники или ФизическиеЛица, а с периодическими и интервальными регистрами сведений:

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

Если во время обновления произошел сбой, реквизиты (например, ВидЗанятости) в интервальных регистрах могут оказаться пустыми или рассинхронизированными с основным регистром. В результате запросы СКД отчета не могут сопоставить интервал работы сотрудника с периодом начисления, и сотрудник отсекается фильтрами.

Способ 1. Проверка и перезапуск отложенного обновления

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

  1. Перейдем в раздел Администрирование → Обслуживание → Результаты обновления и дополнительная обработка данных.
  2. Проверим наличие процедур со статусом ошибки или находящихся в процессе выполнения длительное время.
  3. Если есть прерванные или зависшие процедуры, выполним команду Перезапустить отложенное обновление.
  4. Дождемся полного завершения всех процедур регламентным заданием в монопольном режиме.

Способ 2. Актуализация интервальных регистров перепроведением документов

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

  1. Откроем документ ПриемНаРаботу по проблемному сотруднику.
  2. Если документ проведен, но движений в интервальном регистре нет, изменим любое незначительное поле (например, временно переключим ВидЗанятости или график работы) и проведем документ.
  3. Вернем исходное значение реквизита обратно и повторно проведем документ. Это инициирует вызов подсистем пересчета интервальных регистров и заполнит КадроваяИсторияСотрудниковИнтервальный.
  4. Если проблема носит массовый характер, выполним групповое перепроведение кадровых документов (приемов и кадровых переводов) за проблемный период через форму Все функции (или Функции для технического специалиста) → Групповое перепроведение документов.

Способ 3. Программное обновление интервалов для закрытых периодов

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


НаборЗаписей = РегистрыСведений.КадроваяИсторияСотрудников.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Сотрудник.Установить(ВыбранныйСотрудник);
НаборЗаписей.Прочитать();

// Перезапись набора с вызовом логики обновления зависимых интервальных регистров
НаборЗаписей.Записать();

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

Способ 4. Сброс настроек отчета

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

  1. Откроем форму отчета Расчетный листок.
  2. Нажмем меню Еще → Прочее → Установить стандартные настройки.
  3. Повторно выберем организацию, период и проверим подбор сотрудника.

Важный нюанс: при выборе конкретного сотрудника в отборе расчетного листка подбор в зависимости от настроек варианта отчета может осуществляться по объекту справочника ФизическиеЛица, а не Сотрудники. Убедимся, что у физического лица заполнены актуальные паспортные данные, СНИЛС и установлена связь с созданным элементом справочника Сотрудники.

← На главную