Как получить кадровые данные сотрудников в ЗУП 3.1

· 7 мин

Содержание

Кадровые данные сотрудника в 1С ЗУП 3.1 — подразделение, должность, график работы, вид занятости, дата приёма — хранятся в регистре сведений «Кадровая история сотрудников». Посмотреть их можно в карточке сотрудника и кадровых отчётах, а получить программно — запросом, срезом последних на нужную дату.

Ниже — три сценария под разные задачи. Бухгалтеру или кадровику хватит карточки и типового отчёта. Разработчику под свой отчёт или обработку понадобится запрос к регистру: для одного человека, для списка через временные таблицы и на разные даты.

Что относят к кадровым данным сотрудника

Кадровые данные — это то, что меняется приказами по личному составу, а не в справочнике физлица. Их набор в ЗУП 3.1:

  • 🏢 Подразделение — где числится сотрудник на дату.
  • 💼 Должность — занимаемая по штатному расписанию.
  • 📅 Дата приёма и вид кадрового события (приём, перемещение, увольнение).
  • График работы — плановый график из справочника графиков.
  • 👤 Вид занятости — основное место, внутреннее или внешнее совместительство.

ФИО, ИНН, СНИЛС, паспорт, адрес — это данные физического лица, а не кадровые. Они лежат в справочнике «Физические лица» и не зависят от даты. У одного физлица может быть несколько сотрудников (основное место + совместительство), поэтому кадровые данные всегда привязаны к сотруднику, а не к физлицу.

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

Где посмотреть кадровые данные сотрудника

Три быстрых способа без программирования.

  1. Карточка сотрудника. Раздел Кадры → Сотрудники, открыть карточку. Ссылки «Принять на работу», «Кадровый перевод», «Уволить» показывают текущий статус и историю.
  2. Печатная форма Т-2. В карточке сотрудника — кнопка Печать → Личная карточка Т-2. Собирает и кадровые, и личные данные в один документ.
  3. Кадровые отчёты. Раздел Кадры → Кадровые отчёты. Здесь и «Личные данные сотрудников», и «Штатные сотрудники», и списки по подразделениям.

Если нужного набора полей в готовых отчётах нет — собираем свой отчёт.

Отчёт с нужными данными сотрудников: как сформировать

Самый гибкий инструмент без доработки конфигурации — универсальный отчёт по регистру кадровой истории.

  1. Откройте Отчёты → Универсальный отчёт (в разделе «Администрирование» или «Зарплата», зависит от прав).
  2. В поле «Тип объекта» выберите Регистр сведений , в «Имя объекта» — Кадровая история сотрудников, таблица — Срез последних.
  3. Кнопка Настройки → Расширенный. На вкладке «Параметры» задайте дату среза.
  4. На вкладке «Поля и сортировки» добавьте Сотрудник, Подразделение, Должность, График работы.
  5. На вкладке «Отборы» при желании ограничьте организацией или подразделением.
  6. Сформируйте. Настройку сохраните через Ещё → Сохранить вариант, чтобы не собирать заново.
Свой отчёт по кадровым данным за 5 минут
Выполнено: 0 / 6

Универсальный отчёт по срезу последних покажет данные на одну дату. Чтобы увидеть историю перемещений за период — стройте отчёт по основной таблице регистра (без «Среза последних») с отбором по периоду.

Как получить кадровые данные сотрудников запросом

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

Имя регистра и его реквизитов может немного отличаться между релизами ЗУП 3.1. Перед вставкой в свой код сверьте точные имена в конфигураторе: Регистры сведений → Кадровая история…. Ниже — типовая схема, а не гарантированный дословный синтаксис вашего релиза.

Получение кадровых данных для одного сотрудника

Простейший случай — данные одного человека на конкретную дату:

ВЫБРАТЬ
    КадроваяИстория.Сотрудник           КАК Сотрудник,
    КадроваяИстория.Подразделение       КАК Подразделение,
    КадроваяИстория.Должность           КАК Должность,
    КадроваяИстория.ГрафикРаботы         КАК ГрафикРаботы,
    КадроваяИстория.ВидЗанятости         КАК ВидЗанятости
ИЗ
    РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(
        &Дата,
        Сотрудник = &Сотрудник) КАК КадроваяИстория

Параметры &Дата и &Сотрудник устанавливаются перед выполнением. Результат — одна строка на дату среза.

Сопоставление полей
СотрудникСсылка на сотрудника (не на физлицо!)
ПодразделениеПодразделение на дату среза
ДолжностьЗанимаемая должность
ГрафикРаботыПлановый график работы
ВидЗанятостиОсновное место / совместительство

Получение кадровых данных в таблицу значений

Чтобы вернуть результат в код как таблицу значений — обычная выгрузка результата запроса:

Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Дата", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
ТаблицаКадровыхДанных = Запрос.Выполнить().Выгрузить();

Дальше с ТаблицаКадровыхДанных работаете как с обычной таблицей значений: обход, отбор, заполнение реквизитов документа.

Получение для списка сотрудников через временные таблицы

Для списка людей не гоняйте запрос в цикле — это медленно. Загрузите список во временную таблицу и один раз соедините её со срезом последних:

ВЫБРАТЬ
    СписокСотрудников.Сотрудник КАК Сотрудник
ПОМЕСТИТЬ ВТ_Сотрудники
ИЗ
    &СписокСотрудников КАК СписокСотрудников
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Сотрудники.Сотрудник        КАК Сотрудник,
    КадроваяИстория.Подразделение  КАК Подразделение,
    КадроваяИстория.Должность      КАК Должность
ИЗ
    ВТ_Сотрудники КАК ВТ_Сотрудники
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(
            &Дата,
            Сотрудник В (ВЫБРАТЬ Сотрудник ИЗ ВТ_Сотрудники)) КАК КадроваяИстория
        ПО ВТ_Сотрудники.Сотрудник = КадроваяИстория.Сотрудник

ЛЕВОЕ СОЕДИНЕНИЕ важно: сотрудники без кадровой записи на дату (например, ещё не принятые) не выпадут из списка — просто получат пустые поля.

Получение кадровых данных на разные даты

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

Решение — поместить во временную таблицу пары «сотрудник + дата», а затем соединить с полной таблицей регистра по условию Период <= Дата и взять максимальный период на каждого:

  • Шаг 1 — ВТ с колонками Сотрудник и Дата.
  • Шаг 2 — соединить с РегистрСведений.КадроваяИсторияСотрудников по Сотрудник и Период <= Дата.
  • Шаг 3 — сгруппировать и взять МАКСИМУМ(Период), затем ещё раз соединить, чтобы вытащить значения на этот период.

Так вы получаете «срез последних» индивидуально для каждой строки — то, что штатная виртуальная таблица на список дат не отдаёт.

Получение через механизм представлений и БСП

Часть данных лежит не в кадровой истории:

  • Личные данные (ФИО, дата рождения) — справочник Физические лица, реквизит Сотрудник.Физлицо.
  • Контактная информация (телефон, адрес, email) — подсистема БСП «Контактная информация», получается через её типовые методы, а не прямым запросом к таблице.

Механизм представлений (ПРЕДСТАВЛЕНИЕ(...), ПРЕДСТАВЛЕНИЕССЫЛКИ(...)) в запросе удобен, когда данные идут в отчёт или на печать: он подставляет читаемое наименование справочника вместо ссылки, без дополнительного соединения.

Типичные ошибки при получении кадровых данных

Форумы по ЗУП полны одинаковых граблей. Разберём частые.

Диагностика: выберите симптом

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

Если не помогло: альтернативные пути

Не собирается запрос или не хватает прав в конфигураторе? Есть обходные варианты.

  • Универсальный отчёт (см. выше) — 90% задач «выгрузить кадровые данные списком» закрывает без единой строки кода.
  • Дополнительные отчёты в режиме Администрирование → Печатные формы, отчёты и обработки — подключаются как внешний файл без снятия конфигурации с поддержки.
  • Выгрузка в Excel из любого сформированного отчёта: Ещё → Сохранить как. Дальше — сводные таблицы.
  • Нет доступа к конфигуратору на рабочей базе — тренируйтесь на копии базы, там же проверяйте текст запроса через консоль запросов.

Частые вопросы

В каком регистре хранятся кадровые данные сотрудников в ЗУП 3.1?
В периодическом регистре сведений «Кадровая история сотрудников». Точное имя реквизитов лучше сверить в конфигураторе — оно может немного меняться между релизами.
Чем кадровые данные отличаются от личных?
Кадровые (подразделение, должность, график) меняются приказами и привязаны к сотруднику и дате. Личные (ФИО, паспорт, СНИЛС) хранятся в справочнике «Физические лица» и от даты не зависят.
Как получить данные сразу по списку сотрудников?
Не запросом в цикле, а через временную таблицу: загрузите список в ВТ и один раз соедините её со срезом последних. Это быстрее и не грузит базу.
Почему запрос возвращает пустоту по принятому сотруднику?
Скорее всего дата среза раньше даты приёма или кадровый документ не проведён. Проверьте &Дата и статус документа приёма.
Можно ли получить кадровые данные без программирования?
Да. Универсальный отчёт по регистру «Кадровая история сотрудников» с типом таблицы «Срез последних» даёт список с нужными полями на выбранную дату.
Как посмотреть историю перемещений, а не только текущие данные?
Стройте отчёт или запрос по основной таблице регистра (без «Среза последних») с отбором по периоду — увидите все записи по датам.