Предпоследняя запись из РС Срез последних

1. Zhest 21 28.09.22 16:36 Сейчас в теме
Добрый день! ЗУП КОРП 3.1. Отчет на СКД. Необходимо получить актуальную должность из Регистра сведений "КадроваяИсторияСотрудниковСрезПоследних" на дату отчета. И все бы хорошо, если бы не временный перевод.
Например, Сотрудника переводят с 01.04.22 по 01.09.22 с должности "Инженер" на должность "Ведущий инженер".
В РС следующие записи:

Период Событие Должность Действует до
01.07.16 Прием Инженер
01.04.22 Перевод Ведущий инженер 02.09.22

Т.е. актуальной должностью на дату отчета 31.12.2022 должна быть "Инженер". А при текущем запросе выводит "Ведущий инженер". Помогите решить данную проблему! Заранее спасибо!
Текст запроса:

ВЫБРАТЬ
	ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.Период КАК Период,
	ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.Сотрудник КАК Сотрудник,
	ВЫБОР
		КОГДА ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)
			ТОГДА ИСТИНА
		ИНАЧЕ ВЫБОР
				КОГДА ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.ИспользуетсяПоОкончании
					ТОГДА ИСТИНА
				КОГДА ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.ДействуетДо > &КонецПериода
						И НЕ ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.ИспользуетсяПоОкончании
					ТОГДА ИСТИНА
				ИНАЧЕ ЛОЖЬ
			КОНЕЦ
	КОНЕЦ КАК Булево,
	ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо,
	СУММА(ВЫБОР
			КОГДА ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.ВидЕжегодногоОтпуска.Наименование = "Основной"
				ТОГДА ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.КоличествоДнейВГод
			ИНАЧЕ 0
		КОНЕЦ) КАК КоличествоДнейОсн,
	СУММА(ВЫБОР
			КОГДА НЕ ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.ВидЕжегодногоОтпуска.Наименование = "Основной"
				ТОГДА ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.КоличествоДнейВГод
			ИНАЧЕ 0
		КОНЕЦ) КАК КоличествоДнейДоп,
	КадроваяИсторияСотрудниковСрезПоследних.Организация КАК Организация,
	СУММА(ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.КоличествоДнейВГод) КАК КоличествоДнейВсего,
	КадроваяИсторияСотрудниковСрезПоследних.Подразделение КАК Подразделение,
	ГОД(&КонецПериода) КАК ГрафикГод,
	КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель КАК ПодразделениеРодитель,
	КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Код КАК ПодразделениеКод,
	КадроваяИсторияСотрудниковСрезПоследних.Должность КАК Должность,
	КадроваяИсторияСотрудниковСрезПоследних.ГоловнаяОрганизация КАК ГоловнаяОрганизация
ПОМЕСТИТЬ ВТ_ПоложенныеВидыЕжегодныхОтпусков
ИЗ
	РегистрСведений.ПоложенныеВидыЕжегодныхОтпусков.СрезПоследних(&КонецПериода, ) КАК ПоложенныеВидыЕжегодныхОтпусковСрезПоследних
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&КонецПериода, ) КАК КадроваяИсторияСотрудниковСрезПоследних
		ПО ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.Сотрудник = КадроваяИсторияСотрудниковСрезПоследних.Сотрудник

СГРУППИРОВАТЬ ПО
	ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.Сотрудник,
	ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.Период,
	ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.Сотрудник.ФизическоеЛицо,
	ВЫБОР
		КОГДА ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)
			ТОГДА ИСТИНА
		ИНАЧЕ ВЫБОР
				КОГДА ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.ИспользуетсяПоОкончании
					ТОГДА ИСТИНА
				КОГДА ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.ДействуетДо > &КонецПериода
						И НЕ ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.ИспользуетсяПоОкончании
					ТОГДА ИСТИНА
				ИНАЧЕ ЛОЖЬ
			КОНЕЦ
	КОНЕЦ,
	КадроваяИсторияСотрудниковСрезПоследних.Организация,
	КадроваяИсторияСотрудниковСрезПоследних.Подразделение,
	КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Родитель,
	КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Код,
	КадроваяИсторияСотрудниковСрезПоследних.Должность,
	КадроваяИсторияСотрудниковСрезПоследних.ГоловнаяОрганизация
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.Период КАК Период,
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.Сотрудник КАК Сотрудник,
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.КоличествоДнейОсн КАК КоличествоДнейОсн,
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.КоличествоДнейДоп КАК КоличествоДнейДоп,
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.Организация КАК Организация,
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.КоличествоДнейВсего КАК КоличествоДнейВсего,
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.Подразделение КАК Подразделение,
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.ГрафикГод КАК ГрафикГод,
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.ПодразделениеРодитель КАК ПодразделениеРодитель,
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.Должность КАК Должность,
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.ФизическоеЛицо КАК ФизическоеЛицо
ПОМЕСТИТЬ ВТСотрудники
ИЗ
	ВТ_ПоложенныеВидыЕжегодныхОтпусков КАК ВТ_ПоложенныеВидыЕжегодныхОтпусков
ГДЕ
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.Булево
{ГДЕ
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.Организация.*,
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.Сотрудник.* КАК Сотрудник,
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.Сотрудник.Код КАК ТабельныйНомер,
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.Сотрудник.ГоловнаяОрганизация.*,
	ВТ_ПоложенныеВидыЕжегодныхОтпусков.ФизическоеЛицо.*}
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ДАТАВРЕМЯ(1, 1, 1) КАК Период,
	ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
	"" КАК ТабельныйНомер,
	ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) КАК ФизическоеЛицо,
	ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК ГоловнаяОрганизация,
	ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Организация,
	ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК Подразделение,
	ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка) КАК Должность,
	ДАТАВРЕМЯ(1, 1, 1) КАК ДатаУвольнения,
	ВЫРАЗИТЬ("" КАК СТРОКА) КАК ФИОПолные
ПОМЕСТИТЬ Представления_КадровыеДанныеСотрудников
ИЗ
	ВТСотрудники КАК ВТСотрудники
ГДЕ
	"ТолькоРазрешенные" = ИСТИНА
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	Сотрудники.Сотрудник.Код КАК ТабельныйНомер,
	Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо,
	Сотрудники.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
	Сотрудники.Подразделение КАК Подразделение,
	Сотрудники.Должность КАК Должность,
	ВЫБОР
		КОГДА Представления_КадровыеДанныеСотрудников.ДатаУвольнения <= &КонецПериода
			ТОГДА Представления_КадровыеДанныеСотрудников.ДатаУвольнения
		ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
	КОНЕЦ КАК ДатаУвольнения,
	Представления_КадровыеДанныеСотрудников.ФИОПолные КАК ФИОПолные,
	Сотрудники.Сотрудник КАК Сотрудник,
	Сотрудники.ГрафикГод КАК ГодГрафика,
	Сотрудники.КоличествоДнейОсн КАК КоличествоДнейОсн,
	Сотрудники.КоличествоДнейДоп КАК КоличествоДнейДоп,
	Сотрудники.Организация КАК Организация,
	Сотрудники.КоличествоДнейВсего КАК КоличествоДнейВсего,
	Сотрудники.ПодразделениеРодитель КАК ПодразделениеДляШапки
{ВЫБРАТЬ
	Организация.*,
	ТабельныйНомер,
	ФизическоеЛицо.*,
	ГоловнаяОрганизация.*,
	Подразделение.*,
	ПодразделениеДляШапки.*,
	Должность.*,
	ДатаУвольнения,
	ФИОПолные,
	Сотрудник.*,
	ГодГрафика,
	КоличествоДнейОсн,
	КоличествоДнейДоп,
	КоличествоДнейВсего}
ИЗ
	ВТСотрудники КАК Сотрудники
		ЛЕВОЕ СОЕДИНЕНИЕ Представления_КадровыеДанныеСотрудников КАК Представления_КадровыеДанныеСотрудников
		ПО Сотрудники.Сотрудник = Представления_КадровыеДанныеСотрудников.Сотрудник
			И Сотрудники.Период = Представления_КадровыеДанныеСотрудников.Период
{ГДЕ
	Сотрудники.Организация.*,
	Сотрудники.Сотрудник.*,
	Представления_КадровыеДанныеСотрудников.ТабельныйНомер,
	Представления_КадровыеДанныеСотрудников.ФизическоеЛицо.*,
	Представления_КадровыеДанныеСотрудников.ГоловнаяОрганизация.*,
	Представления_КадровыеДанныеСотрудников.Подразделение.*,
	Представления_КадровыеДанныеСотрудников.Должность.*,
	Представления_КадровыеДанныеСотрудников.ДатаУвольнения,
	Представления_КадровыеДанныеСотрудников.ФИОПолные}
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
3. nomad_irk 72 28.09.22 16:40 Сейчас в теме +1 $m
(1)В первом приближении:
...........
ПОМЕСТИТЬ ВТ_ПоложенныеВидыЕжегодныхОтпусков
ИЗ
    РегистрСведений.ПоложенныеВидыЕжегодныхОтпусков.СрезПоследних(&КонецПериода, ) КАК ПоложенныеВидыЕжегодныхОтпусковСрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&КонецПериода, ДействуетДо >= &КонецПериода) КАК КадроваяИсторияСотрудниковСрезПоследних
        ПО ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.Сотрудник = КадроваяИсторияСотрудниковСрезПоследних.Сотрудник
.................


Проблемы могут быть в запросе, формирующем Представления_КадровыеДанныеСотрудников.
Сам запрос формируется в дебрях общих модулей, необходимо искать, начиная с "ПриКомпоновкеРезультата" в модуле отчета.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. nomad_irk 72 28.09.22 16:40 Сейчас в теме +1 $m
(1)В первом приближении:
...........
ПОМЕСТИТЬ ВТ_ПоложенныеВидыЕжегодныхОтпусков
ИЗ
    РегистрСведений.ПоложенныеВидыЕжегодныхОтпусков.СрезПоследних(&КонецПериода, ) КАК ПоложенныеВидыЕжегодныхОтпусковСрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&КонецПериода, ДействуетДо >= &КонецПериода) КАК КадроваяИсторияСотрудниковСрезПоследних
        ПО ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.Сотрудник = КадроваяИсторияСотрудниковСрезПоследних.Сотрудник
.................


Проблемы могут быть в запросе, формирующем Представления_КадровыеДанныеСотрудников.
Сам запрос формируется в дебрях общих модулей, необходимо искать, начиная с "ПриКомпоновкеРезультата" в модуле отчета.
6. mixa4 28.09.22 16:57 Сейчас в теме
(3) ИЛИ ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)
7. Zhest 21 28.09.22 17:02 Сейчас в теме
(3) Спасибо, помогло! Чучь-чуть только дополнила условие.
ПОМЕСТИТЬ ВТ_ПоложенныеВидыЕжегодныхОтпусков
ИЗ
	РегистрСведений.ПоложенныеВидыЕжегодныхОтпусков.СрезПоследних(&КонецПериода, ) КАК ПоложенныеВидыЕжегодныхОтпусковСрезПоследних
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(
				&КонецПериода,
				ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)
					ИЛИ ДействуетДо >= &КонецПериода) КАК КадроваяИсторияСотрудниковСрезПоследних
		ПО ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.Сотрудник = КадроваяИсторияСотрудниковСрезПоследних.Сотрудник
2. user1831019 28.09.22 16:40 Сейчас в теме
Так установи отбор по измерению, в котором содержится ПРИЕМ/ПЕРЕВОД...
4. Airlord 28.09.22 16:42 Сейчас в теме
Добрый день! Выбрать не первую, а вторую запись, как вариант или можно время от (Даты + время) взять на 1 секунду раньше.
5. user1831019 28.09.22 16:56 Сейчас в теме
Оставьте свое сообщение

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