Тема получения кадровый данных уже поднималась на ресурсе в статье //infostart.ru/1c/articles/938015/ ув. человек fromlion описал как получить кадровые данные в отчетах при помощи функции КадровыйУчет.КадровыеДанныеСотрудников.
Я хочу дополнить его пост, описать как можно получить кадровые данные в запросе.
Так как вызывать функцию КадровыйУчет.КадровыеДанныеСотрудников в выборке запроса не всегда быстро, плюс есть ситуации когда нужно сделать связи таблиц.
Я предлагаю получить ВТ с нужными данными и поместить ее в запрос ниже подробно опишу как это сделать.
1.Создаем массив сотрудников. (можно не создавать если вам нужно получить данные по 1 сотруднику, в таком случае можно просто передать ссылку на сотрудника вместо массива)
МассивСотрудников = Новый Массив;
МассивСотрудников = МассивОбъектов.Сотрудники.ВыгрузитьКолонку("Сотрудник");
// Я выгружаю колонку из табличной части документа, где записаны сотрудники
2.Создаем менеджер временных таблиц, в него помещаем результат функции КадровыйУчет.СоздатьНаДатуВТКадровыеДанныеСотрудников() с описанием необходимых нам данных.
(в примере я получил подразделение и должность, но получить можно много чего, вот добрый человек поделился полным списком http://forum.infostart.ru/forum9/topic203251/message2254962/#message2254962 )
МВТ = новый МенеджерВременныхТаблиц;
Запрос = новый запрос;
Запрос.МенеджерВременныхТаблиц = МВТ;
КадровыйУчет.СоздатьНаДатуВТКадровыеДанныеСотрудников(Запрос.МенеджерВременныхТаблиц,Истина,МассивСотрудников,"Должность, Подразделение",МассивОбъектов.Дата);
3. Создаем запрос, в запросе создаем ВТ - правильно указываем ее имя - обязательно! если сделать описание типов, сможем обращаться к реквизитам, делать связи и группировки.
ВТ называется: "ВТКадровыеДанныеСотрудников"
Запрос.Текст =
4. Теперь в запросе есть кадровые данные, можем выбирать поля и работать с запросом дальше.
5. Готово, делаем обход выборки радуемся быстроте и достоверности данных запроса.