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

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

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

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

Основная сложность заключается в структуре регистра. Если вы попытаетесь выбрать данные напрямую, вы получите несколько строк на одного сотрудника, что потребует сложной обработки: использования СрезПоследних, группировок или поиска экстремумов дат (МИН/МАКС). Это не только усложняет код, но и создает проблемы при обновлении конфигурации, так как структура хранения данных в регистрах может быть изменена разработчиками 1С.

Использование публичного метода КадровыйУчет.КадровыеДанныеСотрудников

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

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

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


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

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

Преимущества данного метода

  1. Производительность: Передача массива сотрудников в качестве первого параметра позволяет системе оптимизировать запрос. Это предотвращает выполнение лишних обращений к базе данных в цикле, что критически важно при формировании отчетов по большому списку персонала.
  2. Гибкость: Вы можете запрашивать не только стандартные поля, но и любые другие параметры, поддерживаемые подсистемой: Подразделение, ГрафикРаботы, Стаж или ТекущаяСтавка.
  3. Актуальность: Функция всегда возвращает состояние данных согласно логике конфигурации. Если вам нужно получить данные на конкретную историческую дату, вы можете использовать расширенную версию вызова, передав параметр Период.

Рекомендации по реализации

При проектировании отчетов или обработок придерживайтесь следующих правил:

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

← На главную