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