Как получить предыдущую запись в регитре сведений "Кадровая история сотрудников"

1. user1803307 11.07.24 08:00 Сейчас в теме
Доброго Всем, времени суток! Не могу понять как получить предыдущую запись по должности сотрудника, отбор ведется по всем сотрудникам предприятия.
Найденные решения
3. Vinzor 107 11.07.24 09:10 Сейчас в теме
Попробуйте
ВЫБРАТЬ
	КадроваяИсторияПредыдущая.Сотрудник КАК Сотрудник,
	КадроваяИсторияПредыдущая.Сотрудник.Код КАК СотрудникКод,
	КадроваяИсторияПредыдущая.ПериодЗаписи КАК ПериодЗаписи,
	ЕСТЬNULL(КадроваяИсторияПредыдущая.Должность, ЗНАЧЕНИЕ(справочник.Должности.Пустаяссылка)) КАК ПредыдущаяДолжность
ИЗ
	РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияТекущая
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияПредыдущая
		ПО КадроваяИсторияТекущая.Сотрудник = КадроваяИсторияПредыдущая.Сотрудник
			И (ДОБАВИТЬКДАТЕ(КадроваяИсторияПредыдущая.ДатаОкончания, СЕКУНДА, 1) = КадроваяИсторияТекущая.ДатаНачала)
ГДЕ
	КадроваяИсторияТекущая.ГоловнаяОрганизация = &Организация
	И КадроваяИсторияТекущая.ДатаНачала <= &НаДату
	И КадроваяИсторияТекущая.ДатаОкончания >= &НаДату
	И НЕ КадроваяИсторияПредыдущая.Сотрудник ЕСТЬ NULL
Показать
user1803307; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. yispepotri 11.07.24 09:01 Сейчас в теме
ну у меня такой вариант, возможно не совсем правильный)

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

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

Выбрать 
	Максимум(Кадры.Период), 
	Кадры.Сотрудник
из
	РегистрСведений.КадроваяИсторияСотрудников Кадры
Левое Соединение
	Кадры1
	по Кадры1.Сотрудник = Кадры.Сотрудник
Где 
	Кадры.Сотрудник = &Сотрудник  
	И Кадры1.Период <> Кадры.Период
Сгруппировать по 
	Кадры.Сотрудник
Показать
4. Vinzor 107 11.07.24 14:11 Сейчас в теме
(2) Если кадровое событие с возвратом, и "дата среза" больше даты возврата, то этот запрос вернёт неверные сведения
user1803307; +1 Ответить
3. Vinzor 107 11.07.24 09:10 Сейчас в теме
Попробуйте
ВЫБРАТЬ
	КадроваяИсторияПредыдущая.Сотрудник КАК Сотрудник,
	КадроваяИсторияПредыдущая.Сотрудник.Код КАК СотрудникКод,
	КадроваяИсторияПредыдущая.ПериодЗаписи КАК ПериодЗаписи,
	ЕСТЬNULL(КадроваяИсторияПредыдущая.Должность, ЗНАЧЕНИЕ(справочник.Должности.Пустаяссылка)) КАК ПредыдущаяДолжность
ИЗ
	РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияТекущая
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияПредыдущая
		ПО КадроваяИсторияТекущая.Сотрудник = КадроваяИсторияПредыдущая.Сотрудник
			И (ДОБАВИТЬКДАТЕ(КадроваяИсторияПредыдущая.ДатаОкончания, СЕКУНДА, 1) = КадроваяИсторияТекущая.ДатаНачала)
ГДЕ
	КадроваяИсторияТекущая.ГоловнаяОрганизация = &Организация
	И КадроваяИсторияТекущая.ДатаНачала <= &НаДату
	И КадроваяИсторияТекущая.ДатаОкончания >= &НаДату
	И НЕ КадроваяИсторияПредыдущая.Сотрудник ЕСТЬ NULL
Показать
user1803307; +1 Ответить
5. user1803307 11.07.24 14:22 Сейчас в теме
6. user1803307 11.07.24 14:36 Сейчас в теме
(3) Не понимаю как вы в запросе получили КадроваяИсторияПредыдущая, где такому учат?))
7. Vinzor 107 11.07.24 15:00 Сейчас в теме
(6) Вы серьёзно? Или вам просто делать нечего?
Вы полное имя регистра сведений в моем запросе прочитали?
user1803307; +1 Ответить
8. user1803307 12.07.24 05:58 Сейчас в теме
(7) Все понял. Спасибо Вам!
9. user1803307 12.07.24 06:12 Сейчас в теме
(7) Не внимательно изучил текст запроса
10. Vinzor 107 12.07.24 07:37 Сейчас в теме
(9) На здоровье ))
Совет.
Чтобы получать данные "На дату, включая саму дату", то параметр &НаДату делайте так: ...УстановитьПараметр("НаДату", КонецДня(ваш параметр))

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот