Запрос по фактическим отпускам в ЗУП при 2-х и более корректировках отпуска исчезает в отчете

1. ret 64 17.01.20 12:05 Сейчас в теме
Разбираюсь с фактическими отпусками. У сотрудника они не формируются, т.е. отсутствуют в отчете "Фактические отпуска".
Там есть такой запрос, он при инициализации отчета собирается, и выглядит так:
	Запрос = Новый Запрос;
	
	Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ФактическиеОтпускаСотрудниковОтбор.Сотрудник КАК Сотрудник,
	|	ФактическиеОтпускаСотрудниковОтбор.НачалоПериода КАК НачалоПериода,
	|	ФактическиеОтпускаСотрудниковОтбор.ОкончаниеПериода КАК ОкончаниеПериода
	|ПОМЕСТИТЬ ВТОтборСУчетомОстатков
	|ИЗ
	|	ВТФактическиеОтпускаОтбор КАК ФактическиеОтпускаСотрудниковОтбор
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Сотрудник
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ФактическиеОтпуска.Сотрудник КАК Сотрудник,
	|	ФактическиеОтпуска.ВидЕжегодногоОтпуска КАК ВидЕжегодногоОтпуска,
	|	ФактическиеОтпуска.ДатаНачала КАК ДатаНачала,
	|	ФактическиеОтпуска.ДатаОкончания КАК ДатаОкончания,
	|	ФактическиеОтпуска.Количество КАК Количество,
	|	ФактическиеОтпуска.Компенсация КАК Компенсация,
	|	ВЫБОР
	|		КОГДА ФактическиеОтпуска.ВидЕжегодногоОтпуска.СпособРасчетаОтпуска = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОтпуска.ВРабочихДнях)
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ВРабочихДнях,
	|	ФактическиеОтпуска.РабочийПериодС КАК РабочийПериодС,
	|	ФактическиеОтпуска.РабочийПериодПо КАК РабочийПериодПо,
	|	ФактическиеОтпуска.Основание КАК Основание,
	|	ФактическиеОтпуска.Регистратор КАК Регистратор
	|ПОМЕСТИТЬ ВТФактическиеОтпуска
	|ИЗ
	|	РегистрНакопления.ФактическиеОтпуска КАК ФактическиеОтпуска
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТОтборСУчетомОстатков КАК ФактическиеОтпускаОтбор
	|		ПО ФактическиеОтпуска.Сотрудник = ФактическиеОтпускаОтбор.Сотрудник
	|			И ФактическиеОтпуска.ДатаОкончания >= ФактическиеОтпускаОтбор.НачалоПериода
	|			И (ФактическиеОтпуска.ДатаНачала <= ФактическиеОтпускаОтбор.ОкончаниеПериода
	|				ИЛИ ФактическиеОтпускаОтбор.ОкончаниеПериода = ДАТАВРЕМЯ(1, 1, 1))
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Сотрудник
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ФактическиеОтпуска.Сотрудник КАК Сотрудник,
	|	ФактическиеОтпуска.ВидЕжегодногоОтпуска КАК ВидЕжегодногоОтпуска,
	|	ФактическиеОтпуска.ДатаНачала КАК ДатаНачала,
	|	ФактическиеОтпуска.ДатаОкончания КАК ДатаОкончания,
	|	ФактическиеОтпуска.Количество КАК Количество,
	|	ФактическиеОтпуска.Компенсация КАК Компенсация,
	|	ФактическиеОтпуска.ВРабочихДнях КАК ВРабочихДнях,
	|	ФактическиеОтпуска.РабочийПериодС КАК РабочийПериодС,
	|	ФактическиеОтпуска.РабочийПериодПо КАК РабочийПериодПо,
	|	ФактическиеОтпуска.Основание КАК Основание,
	|	ФактическиеОтпуска.Регистратор КАК Регистратор,
	|	ВЫБОР
	|		КОГДА НЕ ФактическиеОтпускаСторно.Сотрудник ЕСТЬ NULL
	|				И ФактическиеОтпуска.Количество > 0
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК СторнируемаяЗапись,
	|	ВЫБОР
	|		КОГДА НЕ ФактическиеОтпускаСторно.Сотрудник ЕСТЬ NULL
	|				И ФактическиеОтпуска.Количество < 0
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК СторноЗапись
	|ПОМЕСТИТЬ ВТФактическиеОтпускаСоСторноПризнаками
	|ИЗ
	|	ВТФактическиеОтпуска КАК ФактическиеОтпуска
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТФактическиеОтпуска КАК ФактическиеОтпускаСторно
	|		ПО ФактическиеОтпуска.Сотрудник = ФактическиеОтпускаСторно.Сотрудник
	|			И ФактическиеОтпуска.ВидЕжегодногоОтпуска = ФактическиеОтпускаСторно.ВидЕжегодногоОтпуска
	|			И ФактическиеОтпуска.ДатаНачала = ФактическиеОтпускаСторно.ДатаНачала
	|			И ФактическиеОтпуска.ДатаОкончания = ФактическиеОтпускаСторно.ДатаОкончания
	|			И (ФактическиеОтпуска.Количество = -ФактическиеОтпускаСторно.Количество)
	|			И ФактическиеОтпуска.Регистратор <> ФактическиеОтпускаСторно.Регистратор
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Сотрудник
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ФактическиеОтпуска.Сотрудник КАК Сотрудник,
	|	ФактическиеОтпуска.ВидЕжегодногоОтпуска КАК ВидЕжегодногоОтпуска,
	|	ФактическиеОтпуска.ДатаНачала КАК ДатаНачала,
	|	ФактическиеОтпуска.ДатаОкончания КАК ДатаОкончания,
	|	ФактическиеОтпуска.Количество КАК КоличествоДней,
	|	ФактическиеОтпуска.Компенсация КАК ЭтоКомпенсация,
	|	ФактическиеОтпуска.Регистратор КАК Регистратор,
	|	ФактическиеОтпуска.ВРабочихДнях КАК ВРабочихДнях,
	|	ФактическиеОтпуска.РабочийПериодС КАК РабочийПериодС,
	|	ФактическиеОтпуска.РабочийПериодПо КАК РабочийПериодПо,
	|	ФактическиеОтпуска.Основание КАК Основание
	|ПОМЕСТИТЬ ВТФактическиеОтпускаСотрудников
	|{ВЫБРАТЬ
	|	Сотрудник.*,
	|	ВидЕжегодногоОтпуска.*,
	|	ДатаНачала,
	|	ДатаОкончания,
	|	КоличествоДней,
	|	ЭтоКомпенсация,
	|	Регистратор,
	|	ВРабочихДнях,
	|	РабочийПериодС,
	|	РабочийПериодПо,
	|	Основание}
	|ИЗ
	|	ВТФактическиеОтпускаСоСторноПризнаками КАК ФактическиеОтпуска
	|ГДЕ
	|	НЕ ФактическиеОтпуска.СторнируемаяЗапись
	|	И НЕ ФактическиеОтпуска.СторноЗапись
	|{ГДЕ
	|	ФактическиеОтпуска.Сотрудник.*,
	|	ФактическиеОтпуска.ВидЕжегодногоОтпуска.*,
	|	ФактическиеОтпуска.ДатаОкончания,
	|	ФактическиеОтпуска.Количество,
	|	ФактическиеОтпуска.Компенсация,
	|	ФактическиеОтпуска.Регистратор,
	|	ФактическиеОтпуска.РабочийПериодС,
	|	ФактическиеОтпуска.РабочийПериодПо,
	|	ФактическиеОтпуска.Основание}
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Сотрудник";
Показать


Смысл таков запроса, как я понимаю, чтобы удалить сторно записи отпусков и взять правильные.
ВТФактическиеОтпускаСоСторноПризнаками определяются сторнируемая это запись или она сама сторнирует другую
И в результатирующей таблице

|ГДЕ
|	НЕ ФактическиеОтпуска.СторнируемаяЗапись
|	И НЕ ФактическиеОтпуска.СторноЗапись


Они отсекаются.
Все хорошо, пока на отпуск есть один документ исправление. А их у некоторых, по 2 штуки.
Получилось так, что сперва исправили, и человек отгулял, потом в следующем году дали годовую премию, и все отпуска пересчитали, т.к. это требует законодательство. Средний заработок изменяется у человека, и надо пересчитывать.
И вот при появлении 2 и более документа исправления, сторно записи по такому запросу, получаются все сторно!
И в результате отчет "Фактические отпуска" выходит пустым!

Кто с таким сталкивался? Как решали?
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

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