К статье
Практический материал

Другое · 12 мин

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

Как узнать подразделение сотрудника в 1С ЗУП: через карточку, отчёты, запросы и программно. Разбор кадровых документов, истории переводов и типичных ошибок.

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

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

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

Где в ЗУП хранится подразделение сотрудника

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

Это принципиально важно для расчётов. Например, при начислении зарплаты за прошлый месяц программа берёт подразделение именно на даты этого месяца, а не текущее. Если сотрудник переведён с 15-го числа, затраты могут распределяться между двумя подразделениями. Поэтому вопрос «какое у сотрудника подразделение» всегда следует уточнять вопросом «на какую дату».

Кроме основного регистра, подразделение фигурирует в штатном расписании (как позиция, которую занимает сотрудник), в документах начислений и в аналитике распределения затрат. При расхождениях между этими данными источником истины для кадрового учёта считается именно кадровая история, сформированная документами.

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

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

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

Как посмотреть подразделение через карточку
  1. 1
    Откройте раздел «Кадры» → «Сотрудники»
  2. 2
    Найдите сотрудника по фамилии или табельному номеру
  3. 3
    Откройте карточку — подразделение указано в шапке
  4. 4
    Для истории изменений откройте список кадровых документов сотрудника
  5. 5
    Проверьте дату последнего кадрового перевода

Обратите внимание: если в шапке карточки подразделение пустое, чаще всего это означает, что приём на работу не проведён или сотрудник уволен. Также пустое значение бывает у только что созданного элемента справочника, для которого кадровый документ ещё не оформлялся.

Получение подразделений через отчёты

Когда нужно увидеть подразделения сразу для группы сотрудников, удобнее всего штатные отчёты. В разделе «Кадры» → «Кадровые отчёты» доступны «Штатная расстановка», «Списки сотрудников», «Штатное расписание» и ряд других. Отчёт «Штатная расстановка» строится с группировкой по подразделениям и показывает, кто где числится на выбранную дату.

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

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

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

Для разработчиков и при создании обработок в ЗУП предусмотрен программный интерфейс кадрового учёта. Рекомендуемый способ — функция общего модуля КадровыйУчет, которая возвращает таблицу кадровых данных сотрудников на заданную дату. Прямое обращение к регистру тоже возможно, но типовой механизм корректнее учитывает особенности хранения, включая уволенных и совместителей.

Типовой вызов выглядит так: в функцию передаётся массив сотрудников, список запрашиваемых полей (в нашем случае «Подразделение») и дата, на которую нужны сведения. Результат — таблица значений, где каждой строке сотрудника соответствует его подразделение.

bsl
СотрудникиМассив = Новый Массив;
СотрудникиМассив.Добавить(СотрудникСсылка);

ЗапрашиваемыеДанные = Новый Массив;
ЗапрашиваемыеДанные.Добавить("Подразделение");
ЗапрашиваемыеДанные.Добавить("Должность");

КадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудников(
    Истина, СотрудникиМассив, ЗапрашиваемыеДанные, ТекущаяДатаСеанса());

Для Каждого Строка Из КадровыеДанные Цикл
    Сообщить("Подразделение: " + Строка.Подразделение);
КонецЦикла;

Если по каким-то причинам типовой API недоступен (например, внешняя обработка в старой версии), можно построить запрос напрямую к регистру сведений «КадроваяИсторияСотрудников» со срезом последних на нужную дату. В запросе используйте виртуальную таблицу СрезПоследних с параметром периода и отбором по сотруднику.

При массовом получении подразделений всегда передавайте в КадровыеДанныеСотрудников весь массив сотрудников одним вызовом. Обращение к функции в цикле по каждому сотруднику резко замедляет обработку на больших базах.
ПЗ
Практическое замечание

Получение подразделения запросом

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

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

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

Учтите ограничение: внешние пользователи и роли без прав на кадровые данные не смогут выполнить такой запрос — доступ к регистру контролируется правами. Для тонкой настройки доступа к подразделениям в ЗУП существует механизм групп доступа, который ограничивает видимость сотрудников по организациям и подразделениям.

Подразделение в штатном расписании и при совместительстве

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

Для внутренних совместителей в ЗУП заводится отдельный элемент справочника «Сотрудники» со своей кадровой историей. Поэтому у одного физического лица может быть два и более подразделений одновременно. При программной выборке не объединяйте сотрудников по физлицу без необходимости — иначе потеряете часть данных или получите дубли в отчётах.

Сравнение способов получения подразделения

Карточка сотрудника

Быстро для одного человека; не подходит для массовой выборки и выгрузки

Кадровые отчёты

Готовые списки с группировкой по подразделениям; требуют ручной настройки под нестандартные задачи

КадровыйУчет.КадровыеДанныеСотрудников

Типовой и надёжный программный способ; доступен только разработчику или в обработках

Запрос к регистру

Гибкие отборы и отладка; нужно учитывать права доступа и особенности среза последних

Типичные ошибки и как их избежать

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

Вторая типичная ошибка — игнорирование уволенных сотрудников. Срез последних вернёт для уволенного человека последнюю кадровую запись, но в рабочих отчётах он не должен отображаться как действующий. Добавляйте проверку вида события или используйте типовые функции, которые учитывают увольнение.

Типичные ошибки
01
Брать подразделение без указания даты — получаете текущее значение вместо исторического и искажаете прошлые периоды
02
Искать подразделение в реквизитах справочника «Сотрудники» — его там нет, данные хранятся в регистре кадровой истории
03
Не учитывать совместителей — одно физлицо с несколькими сотрудниками даёт дубли или потерю данных
04
Игнорировать права доступа — запрос работает у администратора и падает у рядового пользователя
05
Править регистр кадровой истории вручную вместо оформления кадрового документа — ломается связность учёта

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

Контрольные точки

Как проверить результат

Подразделение в карточке сотрудника
Норма

Совпадает с данными последнего кадрового документа

Тревожный признак

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

Отчёт «Штатная расстановка» на дату
Норма

Сотрудник числится в ожидаемом подразделении

Тревожный признак

Сотрудник отсутствует или в старом подразделении

Срез последних регистра на дату
Норма

Возвращает одну актуальную запись по сотруднику

Тревожный признак

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

Итог

Что важно запомнить

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

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

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

Чаще всего приём на работу не проведён, помечен на удаление или сотрудник уже уволен. Также проверьте, что вы открыли нужный элемент справочника: у совместителей несколько карточек, и у каждой своя кадровая история.

Как узнать, в каком подразделении сотрудник работал в прошлом месяце?

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

Можно ли изменить подразделение без кадрового перевода?

Нет, корректный способ только один — документ «Кадровый перевод». Ручная правка регистра нарушит расчёты и отчётность. Если подразделение ошибочно указано в прошлом, исправляйте сам документ или оформляйте исправление типовым механизмом.

Как получить список всех сотрудников конкретного подразделения?

Проще всего отчётом «Штатная расстановка» или «Списки сотрудников» с отбором по подразделению. Программно — запросом к срезу последних регистра кадровой истории с условием «Подразделение = &Подразделение» и проверкой, что сотрудник не уволен.

Чем подразделение отличается от позиции штатного расписания?

Подразделение — это элемент организационной структуры, а позиция штатного расписания — связка подразделения и должности с условиями оплаты. Сотрудник занимает позицию, и через неё его кадровые данные связываются со штатным расписанием.

Почему запрос к регистру возвращает пустой результат у обычного пользователя?

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