При разработке отчетов или доработке функционала в конфигурациях на базе 1С:ЗУП 3.1, ERP или КА часто возникает задача получения актуальной информации о сотруднике: его должности, дате приема и дате увольнения. Прямое обращение к регистру Кадровая история сотрудников зачастую оказывается неудобным, так как каждое событие (прием, перевод, увольнение) представлено в нем отдельной записью. Разберем, как получить эти данные максимально эффективно.
Основная сложность заключается в структуре регистра. Если вы попытаетесь выбрать данные напрямую, вы получите несколько строк на одного сотрудника, что потребует сложной обработки: использования СрезПоследних, группировок или поиска экстремумов дат (МИН/МАКС). Это не только усложняет код, но и создает проблемы при обновлении конфигурации, так как структура хранения данных в регистрах может быть изменена разработчиками 1С.
Наиболее правильным и рекомендуемым способом получения кадровых данных является использование функционала общего модуля КадровыйУчет. Этот метод является стандартным API, который инкапсулирует в себе всю сложность запросов к различным регистрам (включая плановые начисления и штатное расписание).
Рассмотрим, как правильно использовать функцию КадровыйУчет.КадровыеДанныеСотрудников для решения вашей задачи.
Для получения необходимых данных вам нужно подготовить массив ссылок на сотрудников и вызвать функцию, передав ей нужные поля в виде строки.
МассивСотрудников = Новый Массив;
МассивСотрудников.Добавить(СсылкаНаСотрудника);
// Получение данных одной строкой
ТаблицаДанных = КадровыйУчет.КадровыеДанныеСотрудников(МассивСотрудников, "Должность, ДатаПриема, ДатаУвольнения");
Подразделение, ГрафикРаботы, Стаж или ТекущаяСтавка.Период.При проектировании отчетов или обработок придерживайтесь следующих правил:
ВЫБРАТЬ ... ИЗ РегистрСведений.КадроваяИсторияСотрудников, если это возможно. Стабильность вашего кода напрямую зависит от использования методов общего модуля.СКД, сначала получите нужные данные функцией КадровыеДанныеСотрудников в таблицу значений, а затем поместите её во временную таблицу запроса. Это позволит совместить мощь СКД с надежностью API от 1С.Применяя данные подходы, вы обеспечите стабильность своей разработки и существенно упростите сопровождение кода при последующих обновлениях конфигурации. Данный способ является эталонным при работе с кадровыми данными в современных системах 1С.