Как выбрать сотрудников организации по должности в 1С:ЗУП 3.1?

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

При переходе с редакции 2.5 на редакцию 3.1 конфигурации «Зарплата и управление персоналом» разработчики часто сталкиваются с изменением архитектуры кадрового учета. В ЗУП 2.5 для получения информации о работающих сотрудниках достаточно было написать простой запрос к регистру сведений РегистрСведений.РаботникиОрганизаций. В ЗУП 3.1 структура хранения кадровых данных существенно изменилась, и обращаться к регистрам напрямую не рекомендуется.

Рассмотрим, как правильно решать задачу выборки сотрудников по заданной организации и должности в ЗУП 3.1 с учетом современных стандартов разработки 1С.

Архитектурные особенности кадровых данных в ЗУП 3.1

Прежде чем писать код выборки, проанализируем ключевые особенности учета в ЗУП 3.1:

  1. Разделение справочников: В системе есть справочник Должности и справочник ШтатноеРасписание. Если в базе включено ведение штатного расписания, сотрудник занимает конкретную позицию штатного расписания, с которой связана позиция должности. Это важно учитывать при составлении условий отбора.
  2. Связь сотрудников и физических лиц: Одному физическому лицу может соответствовать несколько элементов справочника Сотрудники (например, при внутреннем совместительстве или повторном приеме на работу).
  3. Периодичность и структура регистров: Кадровая история хранится с учетом интервалов и дат. Регистры периодически меняют внутреннюю структуру при обновлениях конфигурации.

Использование программного интерфейса модуля КадровыйУчет

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

Для получения сведений о сотрудниках на определенную дату применим метод КадровыеДанныеСотрудников:


// Формируем массив сотрудников для получения данных
МассивСотрудников = Новый Массив;
МассивСотрудников.Добавить(СсылкаНаСотрудника);

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

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

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


// Создание временной таблицы с кадровыми сведениями в запросе
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;

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

КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(
    МенеджерВТ,
    Истина,
    ПараметрыПолученияДанных,
    ОписательВТ
);

Прямые запросы к кадровым регистрам

В случаях, когда использование программного API по каким-то причинам невозможно, проанализируем источники данных, доступные для прямой выборки запросом:

  1. РегистрСведений.ТекущиеКадровыеДанные — содержательный плоский регистр, хранящий срез актуальных данных сотрудников на текущий момент. Идеально подходит для быстрой выборки текущих сотрудников без учета историчности.
  2. РегистрСведений.КадроваяИсторияСотрудниковИнтервальный — служебный регистр для выборки данных на произвольную дату с проверкой вхождения в интервал (ДатаНачала <= &ДатаИдеиИКонец >= &Дата).

Альтернативный вариант: Регистр сведений "Ответственные лица"

Если выборка сотрудника по должности выполняется для заполнения подписантов в печатных формах (например, «Начальник юридической службы», «Руководитель» или «Главный бухгалтер»), лучше не привязываться к жесткому наименованию должности в справочнике.

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

← На главную