Доброго Всем, времени суток! Не могу понять как получить предыдущую запись по должности сотрудника, отбор ведется по всем сотрудникам предприятия.
---
Попробуйте

```1c
    ВЫБРАТЬ
    КадроваяИсторияПредыдущая.Сотрудник КАК Сотрудник,
    КадроваяИсторияПредыдущая.Сотрудник.Код КАК СотрудникКод,
    КадроваяИсторияПредыдущая.ПериодЗаписи КАК ПериодЗаписи,
    ЕСТЬNULL(КадроваяИсторияПредыдущая.Должность, ЗНАЧЕНИЕ(справочник.Должности.Пустаяссылка)) КАК ПредыдущаяДолжность
    ИЗ
    РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияТекущая
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияПредыдущая
    ПО КадроваяИсторияТекущая.Сотрудник = КадроваяИсторияПредыдущая.Сотрудник
    И (ДОБАВИТЬКДАТЕ(КадроваяИсторияПредыдущая.ДатаОкончания, СЕКУНДА, 1) = КадроваяИсторияТекущая.ДатаНачала)
    ГДЕ
    КадроваяИсторияТекущая.ГоловнаяОрганизация = &Организация
    И КадроваяИсторияТекущая.ДатаНачала <= &НаДату
    И КадроваяИсторияТекущая.ДатаОкончания >= &НаДату
    И НЕ КадроваяИсторияПредыдущая.Сотрудник ЕСТЬ NULL
```
---
ну у меня такой вариант, возможно не совсем правильный)

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

```1c
    Выбрать
    Период,
    Сотрудник
    поместить Кадры1
    ИЗ
    РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&Дата)
    ГДЕ
    Сотрудник = &Сотрудник
    ;

    Выбрать
    Максимум(Кадры.Период),
    Кадры.Сотрудник
    из
    РегистрСведений.КадроваяИсторияСотрудников Кадры
    Левое Соединение
    Кадры1
    по Кадры1.Сотрудник = Кадры.Сотрудник
    Где
    Кадры.Сотрудник = &Сотрудник
    И Кадры1.Период <> Кадры.Период
    Сгруппировать по
    Кадры.Сотрудник
```
---
Если кадровое событие с возвратом, и "дата среза" больше даты возврата, то этот запрос вернёт неверные сведения
---
Попробуйте

```1c
    ВЫБРАТЬ
    КадроваяИсторияПредыдущая.Сотрудник КАК Сотрудник,
    КадроваяИсторияПредыдущая.Сотрудник.Код КАК СотрудникКод,
    КадроваяИсторияПредыдущая.ПериодЗаписи КАК ПериодЗаписи,
    ЕСТЬNULL(КадроваяИсторияПредыдущая.Должность, ЗНАЧЕНИЕ(справочник.Должности.Пустаяссылка)) КАК ПредыдущаяДолжность
    ИЗ
    РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияТекущая
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияПредыдущая
    ПО КадроваяИсторияТекущая.Сотрудник = КадроваяИсторияПредыдущая.Сотрудник
    И (ДОБАВИТЬКДАТЕ(КадроваяИсторияПредыдущая.ДатаОкончания, СЕКУНДА, 1) = КадроваяИсторияТекущая.ДатаНачала)
    ГДЕ
    КадроваяИсторияТекущая.ГоловнаяОрганизация = &Организация
    И КадроваяИсторияТекущая.ДатаНачала <= &НаДату
    И КадроваяИсторияТекущая.ДатаОкончания >= &НаДату
    И НЕ КадроваяИсторияПредыдущая.Сотрудник ЕСТЬ NULL
```
---
Спаисбо!
---
Не понимаю как вы в запросе получили КадроваяИсторияПредыдущая, где такому учат?))
---
Вы серьёзно? Или вам просто делать нечего?
Вы полное имя регистра сведений в моем запросе прочитали?
---
Все понял. Спасибо Вам!
---
Не внимательно изучил текст запроса
---
На здоровье ))
Совет.
Чтобы получать данные "На дату, включая саму дату", то параметр &НаДату делайте так: ...УстановитьПараметр("НаДату", КонецДня(ваш параметр))

Потому что "Период" в кадровых регистрах всегда есть чуть сдвиг вперед от начала дня.
Таким образом вы будете захватывать событие, случившееся в день параметра