Какой регистр в ЗУП 3.1 отвечает за увольнения сотрудников?

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

При разработке отчетов, выгрузок и интеграций в конфигурации «1С:Зарплата и управление персоналом 3.1» (ЗУП 3.1) программисты регулярно сталкиваются с необходимостью получить точные данные об увольнениях сотрудников. В отличие от старых версий программы (например, ЗУП 2.5), в ЗУП 3.1 реализована сложная интервальная и объектная архитектура учета кадровых данных. Информация об увольнениях распределена по нескольким регистрам, каждый из которых предназначен для решения своего круга задач.

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

Вариант 1. Регистр сведений «Кадровая история сотрудников»

Это основной периодический регистр сведений, в котором фиксируются все кадровые изменения физических лиц: прием на работу, кадровый перевод, изменение оплаты труда и, конечно же, увольнение. Находится он по адресу РегистрСведений.КадроваяИсторияСотрудников.

При увольнении сотрудника документ «Увольнение» или «Увольнение списком» делает запись в этот регистр. Однако здесь кроется важнейший технический нюанс интервального учета ЗУП 3.1, о котором обязательно должен знать разработчик.

Нюанс смещения даты (+1 день):

Согласно Трудовому кодексу РФ, день увольнения является для сотрудника его последним рабочим днем. В этот день он еще числится в штате организации, выполняет свои обязанности и получает за это оплату. По этой причине в регистре КадроваяИсторияСотрудников событие увольнения записывается не датой самого увольнения, а датой «Дата увольнения + 1 день».

Пример: Если сотрудник уволен 15 октября, то в регистре сведений «Кадровая история сотрудников» запись об увольнении будет иметь период 16 октября. Если вы выполните запрос среза последних на 15 октября, то система вернет актуальное рабочее состояние сотрудника (его должность, подразделение и т.д.), поскольку он еще работает. Чтобы понять, уволен ли сотрудник на конкретную дату, срез последних нужно брать на начало следующего дня либо анализировать интервальные таблицы.

Проанализируем пример запроса, выбирающего уволенных сотрудников за определенный период из кадровой истории:


ВЫБРАТЬ
	КадроваяИстория.Сотрудник КАК Сотрудник,
	КадроваяИстория.Организация КАК Организация,
	КадроваяИстория.Подразделение КАК Подразделение,
	КадроваяИстория.Должность КАК Должность,
	ДОБАВИТЬКДАТЕ(КадроваяИстория.Период, ДЕНЬ, -1) КАК ДатаУвольнения
ИЗ
	РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИстория
ГДЕ
	КадроваяИстория.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)
	И КадроваяИстория.Период МЕЖДУ &НачалоПериодаИзм И &КонецПериодаИзм

Обратите внимание на конструкцию ДОБАВИТЬКДАТЕ(КадроваяИстория.Период, ДЕНЬ, -1). Она позволяет вернуть реальную дату увольнения сотрудника, отняв один день от технического периода записи в регистре.

Вариант 2. Регистр сведений «Данные состояний сотрудников»

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

В этом регистре фиксируются такие состояния, как «Работа», «Болезнь», «Отпуск» и «Увольнение». При проведении увольнения система делает запись с состоянием Увольнение (значение перечисления СостоянияСотрудника).

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


ВЫБРАТЬ
	Состояния.Сотрудник КАК Сотрудник,
	Состояния.Состояние КАК Состояние,
	ДОБАВИТЬКДАТЕ(Состояния.Период, ДЕНЬ, -1) КАК ДатаУвольнения
ИЗ
	РегистрСведений.ДанныеСостоянийСотрудников КАК Состояния
ГДЕ
	Состояния.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.Увольнение)
	И Состояния.Период МЕЖДУ &НачалоПериода И &КонецПериода

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

Вариант 3. Регистр сведений «Текущие кадровые данные сотрудников»

Для оптимизации работы интерфейсов и тяжелых отчетов разработчики фирмы «1С» добавили плоский (непериодический) регистр сведений РегистрСведений.ТекущиеКадровыеДанныеСотрудников.

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

Если вам нужно получить простой список сотрудников, которые уволены на текущий момент времени, этот регистр — идеальный выбор, так как запросы к нему работают максимально быстро.

Разберем пример запроса к текущим данным:


ВЫБРАТЬ
	ТекущиеДанные.Сотрудник КАК Сотрудник,
	ТекущиеДанные.Организация КАК Организация,
	ТекущиеДанные.ДатаПриема КАК ДатаПриема,
	ТекущиеДанные.ДатаУвольнения КАК ДатаУвольнения
ИЗ
	РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеДанные
ГДЕ
	ТекущиеДанные.ВШтате = ЛОЖЬ
	И ТекущиеДанные.ДатаУвольнения НЕОПРЕДЕЛЕНО

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

Вариант 4. Регистр сведений «Мероприятия трудовой деятельности» (для СФР / ЕФС-1)

Если ваша задача связана со сдачей регламентированной отчетности в Социальный фонд России (ранее ПФР) или контролем передачи кадровых мероприятий, то использовать обычные кадровые регистры недостаточно.

Для этих целей в системе функционирует специализированный регистр сведений РегистрСведений.МероприятияТрудовойДеятельности. Именно в него записываются сведения о приеме, переводе и увольнении с фиксацией уникального идентификатора мероприятия (UUID), который уходит в составе формы ЕФС-1 (ранее СЗВ-ТД).

В этом регистре дата увольнения пишется точно (без смещения), а вид мероприятия принимает значение Увольнение. При необходимости ручной корректировки записей и их идентификаторов можно применить расширение для редактирования мероприятий трудовой деятельности.

Вариант 5. Использование стандартного программного интерфейса (API) ЗУП 3.1

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

Чтобы получить список сотрудников и даты их увольнения, мы можем использовать функцию общего модуля КадровыйУчет. Программа сама сформирует правильные временные таблицы, учтет смещение дат на +1 день и вернет готовую таблицу значений.

Рассмотрим пример программного вызова этого метода:


// Опишем список полей, которые мы хотим получить
СписокПолей = Новый Массив;
СписокПолей.Добавить("Сотрудник");
СписокПолей.Добавить("ДатаУвольнения");
СписокПолей.Добавить("Подразделение");
СписокПолей.Добавить("Должность");

// Зададим период получения данных
Период = ТекущаяДата();

// Вызовем функцию API кадрового учета
ТаблицаДанных = КадровыйУчет.КадровыеДанныеСотрудников(Истина, СписокСотрудников, СписокПолей, Период);

Для Каждого СтрокаДанных Из ТаблицаДанных Цикл
    Если ЗначениеЗаполнено(СтрокаДанных.ДатаУвольнения) Тогда
        Сообщить(СтрокаДанных.Сотрудник + " уволен: " + Формат(СтрокаДанных.ДатаУвольнения, "ДФ=dd.MM.yyyy"));
    КонецЕсли;
КонецЦикла;

Данный подход гарантирует стабильность работы вашего кода при обновлении конфигурации ЗУП на новые релизы.

Вариант 6. Прямой запрос к документам увольнения

Если для целей отчета вам необходимы не просто кадровые срезы, а реквизиты первичных документов (например, основание увольнения, статья ТК РФ, номер и дата приказа), то правильнее всего обратиться к таблицам документов напрямую.

В ЗУП 3.1 для фиксации прекращения трудовых отношений используются два документа:

  1. Документ.Увольнение — для одиночного увольнения.
  2. Документ.УвольнениеСписком — для группового оформления.

Для объединения данных по обоим документам в одном отчете рекомендуется использовать схему компоновки данных (СКД) с объединением таблиц по уволенным сотрудникам и их приказам.

Вспомогательные регистры, которые также изменяет документ увольнения

Помимо фиксации самого факта увольнения, документ производит закрытие множества учетных цепочек. Он делает движения по следующим вспомогательным регистрам:

Резюме: какой метод выбрать?

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

  1. Если вам нужно написать простой и максимально быстрый отчет по уволенным на текущую дату — используйте регистр ТекущиеКадровыеДанныеСотрудников.
  2. Если требуется построить исторический кадровый отчет за прошлые периоды с учетом должностей и подразделений — обращайтесь к КадроваяИсторияСотрудников, но не забывайте вычитать 1 день из периода записи при получении реальной даты увольнения.
  3. Если вы разрабатываете отчет для отправки сведений в СФР — используйте регистр МероприятияТрудовойДеятельности.
  4. Если вы пишете внешнюю обработку или модуль интеграции — используйте программный интерфейс КадровыйУчет.КадровыеДанныеСотрудников. Это убережет ваш код от поломок при обновлениях программы.
← На главную