Доброго дня!
Как программно получить текущую должность сотрудника в Бух 3.0 ?
---
```1c
    Функция ПолучитьДолжностьСотрудника(Сотрудник)
    ЗапросПоСотрудникам = Новый Запрос;
    ЗапросПоСотрудникам.Текст = "ВЫБРАТЬ ТекущиеКадровыеДанныеСотрудников.ТекущаяДолжность
    |ИЗ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
    |ГДЕ ТекущиеКадровыеДанныеСотрудников.Сотрудник = &Сотрудник";
    ЗапросПоСотрудникам.Параметры.Вставить("Сотрудник", Сотрудник);
    Результат = ЗапросПоСотрудникам.Выполнить();
    Если Не Результат.Пустой() Тогда
    Выборка = Результат.Выбрать();
    Выборка.Следующий();
    Возврат Выборка.ТекущаяДолжность;
    Иначе
    Возврат Неопределено
    КонецЕсли;

    КонецФункции
```
---
ну в регистре сведений посмотреть (запросом можно)
---
```1c
    рс.СрезПоследних()
```
---
более конкретно можно ?
---
а зачем? Или нужно название регистра сведений? Так это может зависит от того, в какой конфигурации Вы это пытаетесь делать...
---
Бух 3.0
---
Регистр сведений Кадровая история сотрудников
---
можно пример кинуть ?
---
```1c
    Функция ПолучитьДолжностьСотрудника(Сотрудник)
    ЗапросПоСотрудникам = Новый Запрос;
    ЗапросПоСотрудникам.Текст = "ВЫБРАТЬ ТекущиеКадровыеДанныеСотрудников.ТекущаяДолжность
    |ИЗ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
    |ГДЕ ТекущиеКадровыеДанныеСотрудников.Сотрудник = &Сотрудник";
    ЗапросПоСотрудникам.Параметры.Вставить("Сотрудник", Сотрудник);
    Результат = ЗапросПоСотрудникам.Выполнить();
    Если Не Результат.Пустой() Тогда
    Выборка = Результат.Выбрать();
    Выборка.Следующий();
    Возврат Выборка.ТекущаяДолжность;
    Иначе
    Возврат Неопределено
    КонецЕсли;

    КонецФункции
```
---
Штатный (правильный) способ - через функцию КадровыйУчет.КадровыеДанныеСотрудников():

```1c
    //получаем, собссно, должность

    &НаСервереБезКонтекста
    Функция ДолжностьСотрудника(Сотрудник)
    МассивСотрудников = Новый Массив;
    МассивСотрудников.Добавить(Сотрудник);
    ТЗСведения = КадровыйУчет.КадровыеДанныеСотрудников(Истина,МассивСотрудников,"Организация,Должность");
    Если ТЗСведения.Количество()>0 Тогда
    Должность = ТЗСведения[0].Должность;
    Иначе
    Должность = ПредопределенноеЗначение("Справочник.Должности.ПустаяСсылка");
    КонецЕсли;
    Возврат Должность;
    КонецФункции

    // это - обработчик нажатия кнопки, показывает должность сотрудника Реквизит1

    &НаКлиенте
    Процедура Команда1(Команда)
    ПоказатьЗначение(,ДолжностьСотрудника(Реквизит1));
    КонецПроцедуры
```
---
Да, так корректнее, согласен
---
ТЗСведения = КадровыйУчет.КадровыеДанныеСотрудников(Истина,МассивСотрудников,"Организация,Должность");
    Если ТЗСведения.Количество()>0 Тогда
Помогите разобраться с кодом
---
ТЗСведения = КадровыйУчет.КадровыеДанныеСотрудников(Истина,МассивСотрудников,"Организация,Должность");
    Если ТЗСведения.Количество()>0 Тогда
Помогите разобраться с кодом
---
А я бы еще упростил))

```1c
    Сведения = КадровыйУчет.КадровыеДанныеСотрудников(Истина, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Сотрудник), "Должность");
    Должность = ?(Сведения.Количество(), Сведения[0].Должность, ПредопределенноеЗначение("Справочник.Должности.ПустаяСсылка"));
```
---
Ну, и, разумеется, то что я дал - это шаблон, информация к размышлению. Я бы обрабатывал и организацию, и дату среза сведений... Читайте описание функции и экспериментируйте!
---
Хороший шаблон! Думаю, ТС можно уже подумать о свой публикации на эту тему, учитывая его усилия на поиски (вероятно, кому-то пригодится то же).
---
// Формирует временную таблицу, содержащую поля с запрашиваемыми кадровыми данными сотрудников, в том числе носящими
// периодический характер.
// Содержит обязательные поля Сотрудник, ФизическоеЛицо и Период, соответствующие переданным во временной таблице
// отборов.
//
// Параметры:
// ТолькоРазрешенные - Булево, если Истина то текст запроса будет построен с использованием
// ключевого слова РАЗРЕШЕННЫЕ.
// ОписательВременнойТаблицыОтборов - структура, описывающая временную таблицу, служащую фильтром
// по сотрудникам для получения кадровых данных
// см. КадровыйУчет.ОписаниеВременнойТаблицыОтборовСотрудников.
// КадровыеДанные - Строка, перечисление имен кадровых данных, разделенных запятыми.
// - Массив, содержащий строки имен кадровых данных.
// ФормироватьСПериодичностьДень - Булево, при получении кадровых данных, хранящихся в периодических
// регистрах сведений с периодичностью менее чем День, значение Истина позволяет
// отбирать самое последние значения в пределах дня.
// ИсточникиДанных - Соответствие, содержит служебную информацию об используемых в построении запроса
// источниках данных
// ИмяВТПостоянныеКадровыеДанныеСотрудников - Строка, указывает оригинальное имя временной таблицы,
// формируемой методом.
//
// Список полей, допустимых в параметре КадровыеДанные, если сведений в базе данных нет, возвращается
// NULL, исключения приведены в скобках, поле указания типа кадровых данных.
//
// - Все имена кадровых данных физических лиц (см. ЗапросВТКадровыеДанныеФизическихЛиц).
//
// - Все имена кадровых данных, разрешенных для метода ЗапросВТПостоянныеКадровыеДанныеСотрудников.
//
// Информация о рабочем месте.
// - РабочееМестоПериодРегистрации - Дата
// - РабочееМестоРегистратор - ДокументСсылка
// - Организация - СправочникСсылка.Организации
// - Подразделение - СправочникСсылка.ПодразделенияОрганизаций
// - Должность - СправочникСсылка.Должности
// - ВидЗанятости - ПеречисленияСсылка.ВидыЗанятости
// - ВидСобытия - ПеречисленияСсылка. ВидыКадровыхСобытий
// - КоличествоСтавок - Число, в этой конфигурации всегда 1.
// - ДолжностьПоШтатномуРасписанию - СправочникСсылка.ШтатноеРасписание
// - ВидДоговора - ПеречислениеСсылка.ВидыДоговоровССотрудниками
// - МестоВСтруктуреПредприятия - СправочникСсылка.СтруктураПредприятия.
//
// - РазрядКатегорияПериодРегистрации - Дата
// - РазрядКатегорияРегистратор - ДокументСсылка
// - РазрядКатегория - СправочникСсылка.РазрядыКатегорииДолжностей.
//
// - ПКУПериодРегистрации - Дата
// - ПКУРегистратор - ДокументСсылка
// - ПКУ - СправочникСсылка.РазрядыКатегорииДолжностей.
//
// - СостояниеПериодРегистрации - Дата
// - Состояние - ПеречислениеСсылка.СостоянияСотрудника.
//
// - ТерриторияПериодЗаписи - Дата
// - ТерриторияРегистратор
// - Территория - СправочникСсылка.ТерриторииВыполненияРабот.
//
// Информация о свойствах рабочего места.
// - ЯвляетсяЧленомЛетногоЭкипажа - Булево (Ложь)
// - ЯвляетсяШахтером - Булево (Ложь)
// - ЯвляетсяФармацевтом - Булево (Ложь)
// - ЯвляетсяРаботникомСДосрочнойПенсией - ПеречислениеСсылка.ВидыРаботСДосрочнойПенсией
// (Перечисления.ВидыРаботСДосрочнойПенсией.ПустаяСсылка).
// - ЯвляетсяЧленомЭкипажаСуднаПодФлагомРФ - Булево (Ложь)
// - ТарифнаяСетка - СправочникСсылка.ТарифныеСетки
// - ТарифнаяСеткаНадбавки - СправочникСсылка.ТарифныеСетки
// - КлассныйЧинРангДолжности - СправочникСсылка.КлассныеЧиныРанги.
//
// Информация об оплате труда.
// - ОплатаТрудаПериодЗаписи - Дата
// - ОплатаТрудаРегистратор - ДокументСсылка
// - ТарифнаяСтавка - Число
// - ФОТ - Число
// - Надбавка - Число, в этой конфигурации всегда 0.
// - ОсновноеНачисление - ПланВидовРасчета.Начисления
// - ПоказательТарифнойСтавки - СправочникСсылка.ПоказателиРасчетаЗарплаты.
//
// - СовокупнаяТарифнаяСтавкаПериодРегистрации - Дата
// - СовокупнаяТарифнаяСтавкаРегистратор - ДокументСсылка
// - СовокупнаяТарифнаяСтавка - Число
// - ВидСовокупнойТарифнойСтавки - ПеречислениеСсылка.ВидыТарифныхСтавок.
//
// - ПорядокРасчетаСтоимостиЕдиницыВремениПериодРегистрации - Дата
// - ПорядокРасчетаСтоимостиЕдиницыВремениРегистратор - ДокументСсылка
// - ПорядокРасчетаСтоимостиЕдиницыВремени - ПеречислениеСсылка.ПорядокРасчетаСтоимостиЕдиницыВремениОплатыТруда.
//
// - ГрейдПериодРегистрации - Дата
// - ГрейдРегистратор - ДокументСсылка
// - Грейд - СправочникСсылка.Грейды.
//
// - ГрафикРаботыПериодРегистрации - Дата
// - ГрафикРаботыРегистратор - ДокументСсылка
// - ГрафикРаботы - СправочникСсылка.ГрафикиРаботыСотрудников
// - СуммированныйУчетРабочегоВремени - Булево.
//
// - ДоляНеполногоРабочегоВремени - Число
//
// - АвансПериодЗаписи - Дата
// - АвансРегистратор - ДокументСсылка
// - СпособРасчетаАванса - ПеречислениеСсылка.СпособыРасчетаАванса
// - Аванс - Число.
//
// - ЗарплатныйПроектПериодРегистрации - Дата
// - ЗарплатныйПроектРегистратор - ДокументСсылка.ПодтверждениеОткрытияЛицевыхСчетовСотрудников
// - ЗарплатныйПроект - СправочникСсылка.ЗарплатныеПроекты
// - НомерЛицевогоСчета - Строка.
//
// Информация об учете затрат.
// - УчетЗатратПериодРегистрации - Дата
// - СтатьяФинансирования - СправочникСсылка.СтатьиФинансированияЗарплата
// - СпособОтраженияЗарплатыВБухучете - СправочникСсылка.СпособыОтраженияЗарплатыВБухУчете
// - ОтношениеКЕНВД - ПеречислениеСсылка.ОтношениеКЕНВДЗатратНаЗарплату
// - УчетЗатратДокументОснование - ДокументСсылка.ПриемНаРаботу.
//
// Основные данные контрактов, договоров сотрудников.
// - ДатаДоговораКонтракта - Дата, так же поддерживается идентификатор ТрудовойДоговорДата
// - НомерДоговораКонтракта - Строка, так же поддерживается идентификатор ТрудовойДоговорНомер
// - ДатаНачала - Дата
// - ПоступлениеНаСлужбуВпервые - Булево.
//
// Сведения контракта, договора сотрудника.
// - ПредставительНанимателя - СправочникСсылка.ФизическиеЛица
// - ДолжностьПредставителяНанимателя - СправочникСсылка.Должности
// - ОснованиеПредставителя - Строка
// - ВидАктаГосоргана - Строка
// - ДатаОкончания - Дата
// - СрочныйДоговор - Булево
// - СрокЗаключенияДоговора - Строка
// - ОборудованиеРабочегоМеста - Строка
// - ИныеУсловияДоговора - Строка
// - ОснованиеСрочногоДоговора - СправочникСсылка.ОснованияЗаключенияСрочныхКонтрактовГосслужащих
// - СправочникСсылка.ОснованияЗаключенияСрочныхДоговоровМуниципальныхСлужащих
// - СправочникСсылка.ОснованияЗаключенияСрочныхТрудовыхДоговоров.
//
// Информация о классах условий труда по результатам специальной оценки на рабочем месте.
// - КлассУсловийТрудаПериодРегистрации - Дата
// - КлассУсловийТруда - ПеречислениеСсылка.КлассыУсловийТрудаПоРезультатамСпециальнойОценки
// - КлассУсловийТрудаДатаРегистрацииИзменений - Дата.
//
Функция ЗапросВТКадровыеДанныеСотрудников(ТолькоРазрешенные, ОписательВременнойТаблицыОтборов, КадровыеДанные, ПоляОтбораПериодическихДанных, ФормироватьСПериодичностьДень, ИсточникиДанных, ИмяВТКадровыеДанныеСотрудников, ТаблицаОтборовСодержитПолеФизическоеЛицо, УничтожитьВспомогательныеТаблицы) Экспорт

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

КонецФункции
---
УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "Должность")
---
```1c
    ДанныеФизЛица = ОбщегоНазначенияБПВызовСервера.ДанныеФизЛица(СсылкаНаОбъект.Организация,СсылкаНаОбъект.Сотрудник,СсылкаНаОбъект.Дата);
    Область.Параметры.СотрудникДолжность = ДанныеФизЛица.Должность;
    Область.Параметры.СотрудникФИО = ДанныеФизЛица.Представление;
```