Как с помощью запроса получить список сотрудников и дату их увольнения в 1С:ЗУП 3.1?

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

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

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

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

Обратите внимание, что в старых версиях системы (например, ЗУП 2.5) использовались другие регистры, такие как РаботникиОрганизации. В современных версиях ЗУП 3.1 структура метаданных изменилась, и для получения истории изменений (например, всех перемещений между подразделениями за год) рекомендуется использовать регистр КадроваяИсторияСотрудников. Однако для базовой задачи получения текущей даты увольнения ТекущиеКадровыеДанныеСотрудников подходит идеально.

Разбор структуры запроса

Для построения отчета или простой выборки в консоли запросов выполним следующие шаги. Нам нужно выбрать поле сотрудника, его текущее подразделение и даты событий.

Напишем базовый запрос:


ВЫБРАТЬ
    ТекущиеКадровыеДанныеСотрудников.Сотрудник КАК Сотрудник,
    ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение КАК ТекущееПодразделение,
    ТекущиеКадровыеДанныеСотрудников.ДатаПриема КАК ДатаПриема,
    ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения КАК ДатаУвольнения
ИЗ
    РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
УПОРЯДОЧИТЬ ПО
    ДатаУвольнения УБЫВ

Фильтрация сотрудников по дате увольнения

При выполнении такого запроса вы заметите, что в список попадают все сотрудники, включая тех, кто продолжает работать в компании. У работающих сотрудников поле ДатаУвольнения остается «пустым». В 1С «пустая дата» — это не значение NULL, а специальное значение, соответствующее 01 января 0001 года.

Чтобы отфильтровать только уволенных сотрудников, мы должны добавить условие ГДЕ. Мы исключаем записи, в которых дата увольнения равна начальной дате системы.

Применяем следующий код:


ВЫБРАТЬ
    ТекущиеКадровыеДанныеСотрудников.Сотрудник КАК Сотрудник,
    ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение КАК ТекущееПодразделение,
    ТекущиеКадровыеДанныеСотрудников.ДатаПриема КАК ДатаПриема,
    ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения КАК ДатаУвольнения
ИЗ
    РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
ГДЕ
    ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1)
УПОРЯДОЧИТЬ ПО
    ДатаУвольнения УБЫВ

Почему используется ДАТАВРЕМЯ(1, 1, 1)?

Конструкция ДАТАВРЕМЯ(1, 1, 1) в языке запросов 1С — это стандартный литерал для обозначения пустой даты. В платформе 1С любое неинициализированное поле типа Дата всегда принимает это значение.

Практический совет: Если вы планируете использовать этот код в модуле конфигурации, а не просто в консоли запросов, профессиональным тоном считается передача пустой даты через параметр. Вместо жестко заданного ДАТАВРЕМЯ(1, 1, 1), используйте параметр &ПустаяДата и устанавливайте его значение в программном коде через Дата(1, 1, 1). Это обеспечит гибкость и чистоту вашего кода.

Дополнительные рекомендации по работе с кадрами

  1. Анализ истории: Если вам нужно посмотреть не только факт увольнения, но и все изменения подразделений сотрудника за год, не ограничивайтесь ТекущиеКадровыеДанныеСотрудников. Используйте регистр КадроваяИсторияСотрудников, так как именно он содержит хронологию всех событий по сотруднику.
  2. Типовые отчеты: Прежде чем писать сложный запрос, изучите стандартный отчет «Свод кадровых изменений». В системе 1С:ЗУП 3.1 уже реализованы механизмы отбора и настройки, которые позволяют выводить информацию о движениях персонала без написания программного кода.
  3. Версионирование: Если вам необходимо отследить, кто именно внес изменения в карточку сотрудника или документ перевода, убедитесь, что в разделе Администрирование включена опция «История изменений». Это позволит просматривать версии документов и видеть, какие значения были изменены и кем.

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

← На главную