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

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

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

Почему регистр «ТекущиеКадровыеДанныеСотрудников» не подходит для этой задачи?

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

Когда вы добавляете условие ГДЕ ТекущийВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы), система отсеивает всех, кто на текущий момент уже не числится работающим по основному месту. Именно поэтому уволенные сотрудники не попадают в выборку.

Решение: использование программного интерфейса 1С:ЗУП

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

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

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

Рассмотрим, как правильно сформировать запрос с использованием специализированных функций:

  1. Инициализируем параметры получения данных с помощью функции КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц.
  2. Настраиваем необходимые отборы: период (начало и окончание месяца), организация и вид занятости.
  3. Указываем список необходимых полей, включая ДатаУвольнения и ВидЗанятости.

Пример программного кода для реализации данной задачи:


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

Как настроить отчет на СКД для рассылки

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

Важные советы для реализации:

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

← На главную