Как получить кадровые данные сотрудников в 1С ЗУП 3.1
📋 Содержание
Кадровые данные сотрудника в ЗУП 3.1 достают двумя путями: через готовый отчёт в интерфейсе — если нужен подразделение, должность, график по списку людей, — и запросом к регистру, когда данные тянут в обработку, печатную форму или обмен.
Оба способа берут информацию из одного места — регистра сведений КадроваяИсторияСотрудников. Разберём, где ЗУП хранит кадровые данные сотрудников, как вывести их отчётом и как получить программно на нужную дату.
Где ЗУП 3.1 хранит кадровые данные
Кадровые данные разбросаны по нескольким объектам. Понимание, что где лежит, снимает половину вопросов.
- 👤 Личные данные (ФИО, дата рождения, пол, гражданство) — справочник
ФизическиеЛица. - 📇 Документы физлица (паспорт, СНИЛС, ИНН) — отдельные регистры сведений:
ПаспортныеДанные,СтраховыеНомераФизЛиц,ИНННомераФизЛиц. - 🧑💼 Место работы (подразделение, должность, вид занятости, ставка, график) — регистр сведений
КадроваяИсторияСотрудников. - 💰 Плановые начисления (оклад, надбавки) — регистр
ПлановыеНачисленияСотрудников. - 🔗 Связка человека и работы — справочник
Сотрудники(у одногоФизическоеЛицоможет быть несколько сотрудников — по числу мест работы).
💡 Ключевой момент:
СотрудникиФизическоеЛицо— разные сущности. Личные данные (паспорт, СНИЛС) привязаны к физлицу, кадровые (должность, подразделение) — к сотруднику. Совместитель на двух ставках — это дваСотрудника, но одноФизическоеЛицо.
Кадровые данные сотрудников в отчётах
Для кадровика и бухгалтера самый быстрый путь — готовые отчёты. Программировать ничего не нужно.
Основные отчёты лежат в разделе Кадры → Отчёты по кадрам:
| Отчёт | Что показывает |
|---|---|
| Личные данные сотрудников | ФИО, дата рождения, паспорт, адрес, контакты |
| Штатные сотрудники | список работающих на дату: подразделение, должность, ставка |
| Кадровые данные сотрудников | сводка по личным и служебным сведениям |
| Личная карточка (Т-2) | печатная форма по одному человеку |
| Отчёты по численности и текучести | движение кадров за период |
Если нужного поля в готовом отчёте нет — берите Универсальный отчёт (Главное → Универсальный отчёт) и стройте его прямо над регистром КадроваяИсторияСотрудников.
Главное → Универсальный отчёт (или Администрирование → Печатные формы, отчёты и обработки).Регистр сведений, имя — КадроваяИсторияСотрудников, таблица — Срез последних.Период укажите дату, на которую нужны данные. Пусто = на текущий момент.Настройки → на вкладке «Поля» добавьте Подразделение, Должность, ВидЗанятости; на «Отборах» — по нужному подразделению.Сформировать. Настройку сохраните через Сохранить вариант отчёта — в следующий раз откроется готовой.Универсальный отчёт закрывает 90% разовых задач «нужен список людей с полем X на дату Y» без единой строки кода.
Получение кадровых данных сотрудников запросом
Когда данные нужны в печатной форме, обработке или обмене — пишем запрос. Основа — виртуальная таблица СрезПоследних регистра КадроваяИсторияСотрудников.
Данные одного сотрудника на дату
ВЫБРАТЬ
КадроваяИстория.Сотрудник,
КадроваяИстория.Подразделение,
КадроваяИстория.Должность,
КадроваяИстория.ВидЗанятости,
КадроваяИстория.ГрафикРаботы
ИЗ
РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(
&Дата,
Сотрудник = &Сотрудник) КАК КадроваяИстория
В параметр &Дата подставляем дату среза, в &Сотрудник — ссылку на нужного сотрудника. СрезПоследних вернёт последнюю запись на эту дату — то есть актуальное место работы.
⚠️ Не путайте
&Дата(момент времени) с периодом отбора.СрезПоследних(&Дата, …)берёт запись, действующую на дату, а не за период. Для истории переводов используйте основную таблицу регистра без «Среза».
Список сотрудников через временные таблицы
Когда людей много, отбор Сотрудник В (&Список) в срезе тормозит. Правильнее положить список во временную таблицу и соединить:
ВЫБРАТЬ
СписокСотрудников.Сотрудник КАК Сотрудник
ПОМЕСТИТЬ ВТ_Сотрудники
ИЗ
&ТаблицаСотрудников КАК СписокСотрудников
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ.Сотрудник,
КадроваяИстория.Подразделение,
КадроваяИстория.Должность
ИЗ
ВТ_Сотрудники КАК ВТ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(
&Дата, ) КАК КадроваяИстория
ПО КадроваяИстория.Сотрудник = ВТ.Сотрудник
ЛЕВОЕ СОЕДИНЕНИЕ важно: у уволенного или неоформленного человека записи в срезе может не быть — левое соединение оставит его в результате с пустыми полями, а не выкинет из выборки.
Кадровые данные на разные даты
Задача «должность каждого сотрудника на дату его юбилея» решается соединением списка пар (сотрудник + своя дата) со срезом без параметра периода, с условием по дате в тексте виртуальной таблицы:
ВЫБРАТЬ
ВТ.Сотрудник,
ВТ.ДатаСреза,
История.Должность
ИЗ
ВТ_СотрудникиДаты КАК ВТ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников КАК История
ПО История.Сотрудник = ВТ.Сотрудник
И История.Период <= ВТ.ДатаСреза
Тут придётся дополнительно отобрать максимальный Период по каждому сотруднику (через вложенный запрос или МАКСИМУМ с группировкой) — «Срез последних» на индивидуальные даты не рассчитан.
Функции и общие модули вместо запроса
В типовой ЗУП 3.1 часть кадровых данных отдают экспортные функции общих модулей — КадровыйУчет, ЗарплатаКадрыОбщий. Они внутри выполняют те же запросы, но избавляют от ручного текста.
Плюс — не зависите от структуры регистров: обновится конфигурация, поменяется имя таблицы — типовая функция продолжит работать. Минус — набор возвращаемых полей фиксирован разработчиком типового решения.
💡 Прежде чем писать свой запрос к регистру, откройте
Конфигуратор → Общие модулии поищите готовую функцию с «Кадров» в имени. Часто нужное уже написано и поддерживается вендором.
Кадровые данные в таблицу значений
Результат запроса выгружают в таблицу значений одной строкой — дальше с ней удобно работать в обработке или печатной форме:
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
ТЗ = Запрос.Выполнить().Выгрузить();
Через Выгрузить() получаете таблицу значений с колонками из запроса. Для механизма компоновки (СКД) и представлений подход другой — там кадровые данные тянут схемой компоновки, а не прямым запросом.
Типичные ошибки
Форумы по этой теме забиты одними и теми же граблями. Прогоните свой код через список.
КадроваяИсторияСотрудников есть в актуальных версиях ЗУП 3.1; на старых сборках смотрите РаботаВОрганизации и смежные регистры. Проверьте имя в Конфигураторе.ФизическоеЛицо, а данные — по Сотрудник. Соединяйте строго по Сотрудник.ВНУТРЕННЕЕ СОЕДИНЕНИЕ. На дату среза записи у уволенного нет — замените на ЛЕВОЕ СОЕДИНЕНИЕ.Сотрудник, а не по ФизическоеЛицо.СрезПоследних(&Дата) без времени берёт начало дня. Кадровый приказ этой же датой в срез не попадёт — добавьте к дате конец дня (КонецДня(&Дата)).Если готовые способы не подошли
Не нашли поле ни в отчётах, ни в регистре — вероятно, данные лежат в другом объекте:
- 📌 Адрес, телефон, e-mail — регистр
КонтактнаяИнформация. - 📌 Стаж, воинский учёт, образование — отдельные регистры и табличные части
ФизическиеЛица. - 📌 Начисления и удержания — регистр
ПлановыеНачисленияСотрудников. - 📌 Табельный номер — реквизит справочника
Сотрудники.
Быстрый способ найти источник поля: откройте карточку сотрудника, наведите на реквизит и через Ещё → Изменить форму или отладчик посмотрите путь к данным. Либо ищите поле в Универсальном отчёте по разным регистрам — это не требует Конфигуратора.
Частые вопросы
Чем отличается «Сотрудник» от «Физического лица» в ЗУП 3.1?
ФизическоеЛицо — человек с личными данными (паспорт, СНИЛС). Сотрудник — его место работы. У совместителя на двух ставках одно физлицо и два сотрудника. Кадровые данные (должность, подразделение) храните и тяните по Сотрудник.Из какого регистра брать должность и подразделение?
КадроваяИсторияСотрудников, таблица СрезПоследних на нужную дату. В старых релизах ЗУП смотрите смежные регистры кадрового учёта.Как получить кадровые данные без программирования?
КадроваяИсторияСотрудников или готовые отчёты раздела Кадры → Отчёты по кадрам — «Штатные сотрудники», «Личные данные сотрудников».Почему в отчёт не попадают уволенные?
Как выгрузить данные во внешнюю обработку?
Результат.Выгрузить() — получите таблицу значений. Дальше данные доступны для печатной формы, файла или обмена.Можно ли получить данные на дату приёма или увольнения?
СрезПоследних на индивидуальные даты не рассчитан. Соедините таблицу пар «сотрудник + дата» с регистром по условию Период <= Дата и отберите максимальный период по каждому.Материал подготовлен редакцией 1С 8.3 — независимый справочник. Проверено и обновлено: 12.07.2026. Независимый справочник. Мы не представляем фирму «1С» и не аффилированы с ней.