Запрос по остаткам отпусков

1. AndrewUs 13 13.11.24 10:34 Сейчас в теме
Здравствуйте!
Во внешней обработке использую запрос из отчета остатки отпусков конфигурации ERP.
Сам запрос:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ВидыОтпусков.Ссылка КАК ВидЕжегодногоОтпуска
ПОМЕСТИТЬ ВТЕжегодныеОтпуска
ИЗ
	Справочник.ВидыОтпусков КАК ВидыОтпусков
ГДЕ
	ВидыОтпусков.ОтпускЯвляетсяЕжегодным = ИСТИНА
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ЗаработанныеПраваНаОтпуска.Сотрудник КАК Сотрудник,
	ЗаработанныеПраваНаОтпуска.ВидЕжегодногоОтпуска КАК ВидЕжегодногоОтпуска,
	ЗаработанныеПраваНаОтпуска.ДатаНачала КАК ДатаНачала,
	ЗаработанныеПраваНаОтпуска.ДатаОкончания КАК ДатаОкончания,
	ЗаработанныеПраваНаОтпуска.Период КАК Период,
	ЗаработанныеПраваНаОтпуска.КоличествоДней КАК КоличествоДней,
	ЗаработанныеПраваНаОтпуска.КоличествоДнейЗаПериод КАК КоличествоДнейЗаПериод
ПОМЕСТИТЬ ВТЗаработанныеПрава
ИЗ
	РегистрСведений.ЗаработанныеПраваНаОтпуска КАК ЗаработанныеПраваНаОтпуска
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТЕжегодныеОтпуска КАК ЕжегодныеОтпуска
		ПО ЗаработанныеПраваНаОтпуска.ВидЕжегодногоОтпуска = ЕжегодныеОтпуска.ВидЕжегодногоОтпуска
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
		ПО ЗаработанныеПраваНаОтпуска.Сотрудник = Сотрудники.Ссылка
ГДЕ
	ЗаработанныеПраваНаОтпуска.Период <= &ДатаОтчета
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТЗаработанныеПрава.Сотрудник КАК Сотрудник,
	ВТЗаработанныеПрава.ВидЕжегодногоОтпуска КАК ВидЕжегодногоОтпуска,
	МАКСИМУМ(ВТЗаработанныеПрава.Период) КАК Период
ПОМЕСТИТЬ ВТУказателиПоследних
ИЗ
	ВТЗаработанныеПрава КАК ВТЗаработанныеПрава

СГРУППИРОВАТЬ ПО
	ВТЗаработанныеПрава.Сотрудник,
	ВТЗаработанныеПрава.ВидЕжегодногоОтпуска
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТЗаработанныеПрава.Сотрудник КАК Сотрудник,
	ВТЗаработанныеПрава.ВидЕжегодногоОтпуска КАК ВидЕжегодногоОтпуска,
	ВТЗаработанныеПрава.Период КАК Период,
	ЕСТЬNULL(ВТТекущиеПраваНаОтпуска.ДнейЕжегодно, 0) КАК ДнейЕжегодно
ПОМЕСТИТЬ ВТЗаработанныеОтпускаПоследние
ИЗ
	ВТЗаработанныеПрава КАК ВТЗаработанныеПрава
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТУказателиПоследних КАК ВТУказателиПоследних
			ЛЕВОЕ СОЕДИНЕНИЕ ВТТекущиеПраваНаОтпуска КАК ВТТекущиеПраваНаОтпуска
			ПО ВТУказателиПоследних.Сотрудник = ВТТекущиеПраваНаОтпуска.Сотрудник
				И ВТУказателиПоследних.ВидЕжегодногоОтпуска = ВТТекущиеПраваНаОтпуска.ВидЕжегодногоОтпуска
		ПО ВТЗаработанныеПрава.Сотрудник = ВТУказателиПоследних.Сотрудник
			И ВТЗаработанныеПрава.ВидЕжегодногоОтпуска = ВТУказателиПоследних.ВидЕжегодногоОтпуска
			И ВТЗаработанныеПрава.Период = ВТУказателиПоследних.Период
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЗаработанныеПрава.Сотрудник КАК Сотрудник,
	ЗаработанныеПрава.ВидЕжегодногоОтпуска КАК ВидЕжегодногоОтпуска,
	ЗаработанныеПрава.ДатаНачала КАК ДатаНачала,
	ЗаработанныеПрава.ДатаОкончания КАК ДатаОкончания,
	МАКСИМУМ(ЗаработанныеПрава.Период) КАК Период
ПОМЕСТИТЬ ВТУказателиОкончанийРабочихЛетСотрудников
ИЗ
	ВТЗаработанныеПрава КАК ЗаработанныеПрава

СГРУППИРОВАТЬ ПО
	ЗаработанныеПрава.Сотрудник,
	ЗаработанныеПрава.ВидЕжегодногоОтпуска,
	ЗаработанныеПрава.ДатаНачала,
	ЗаработанныеПрава.ДатаОкончания
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	НачальныеОстаткиОтпусков.Сотрудник КАК Сотрудник,
	МАКСИМУМ(НачальныеОстаткиОтпусков.ДатаОстатка) КАК ДатаОстатка
ПОМЕСТИТЬ ВТНачальныеОстатки
ИЗ
	РегистрСведений.НачальныеОстаткиОтпусков КАК НачальныеОстаткиОтпусков

СГРУППИРОВАТЬ ПО
	НачальныеОстаткиОтпусков.Сотрудник
;

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

СГРУППИРОВАТЬ ПО
	ФактическиеОтпуска.Сотрудник,
	ФактическиеОтпуска.ВидЕжегодногоОтпуска
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЗаработанныеОтпускаПоГодам.Сотрудник КАК Сотрудник,
	ЗаработанныеОтпускаПоГодам.ВидЕжегодногоОтпуска КАК ВидОтпуска,
	ЗаработанныеОтпускаПоГодам.ДатаНачала КАК ДатаНачала,
	ЗаработанныеОтпускаПоГодам.ДатаОкончания КАК ДатаОкончания,
	ЗаработанныеОтпускаПоГодам.Дней КАК Дней,
	ЗаработанныеОтпускаПоГодам.Период КАК Период,
	ЕСТЬNULL(ВТУчитываемыеОтпускаСотрудников.Отгуляно, 0) КАК Отгуляно,
	ЗаработанныеОтпускаПоГодам.Дней - ЕСТЬNULL(ВТУчитываемыеОтпускаСотрудников.Отгуляно, 0) КАК Остаток,
	ВЫБОР
		КОГДА ЗаработанныеОтпускаПоГодам.Дней - ЕСТЬNULL(ВТУчитываемыеОтпускаСотрудников.Отгуляно, 0) <= 0
			ТОГДА ИСТИНА
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ КАК РабочийГодЗакрыт
ПОМЕСТИТЬ ВТРабочиеГодаСотрудников
ИЗ
	ВТЗаработанныеОтпускаПоГодам КАК ЗаработанныеОтпускаПоГодам
		ЛЕВОЕ СОЕДИНЕНИЕ ВТУчитываемыеОтпускаСотрудников КАК ВТУчитываемыеОтпускаСотрудников
		ПО ЗаработанныеОтпускаПоГодам.Сотрудник = ВТУчитываемыеОтпускаСотрудников.Сотрудник
			И ЗаработанныеОтпускаПоГодам.ВидЕжегодногоОтпуска = ВТУчитываемыеОтпускаСотрудников.ВидЕжегодногоОтпуска
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	РабочиеГодаСотрудников.Сотрудник КАК Сотрудник,
	РабочиеГодаСотрудников.ВидОтпуска КАК ВидОтпуска,
	РабочиеГодаСотрудников.ДатаНачала КАК РабочийГодДатаНачала,
	МАКСИМУМ(ЕСТЬNULL(РабочиеГодаСотрудниковПредыдущие.ДатаНачала, РабочиеГодаСотрудников.ДатаНачала)) КАК ПредыдущийРабочийГодДатаНачала
ПОМЕСТИТЬ ВТУказателиРабочихЛет
ИЗ
	ВТРабочиеГодаСотрудников КАК РабочиеГодаСотрудников
		ЛЕВОЕ СОЕДИНЕНИЕ ВТРабочиеГодаСотрудников КАК РабочиеГодаСотрудниковПредыдущие
		ПО РабочиеГодаСотрудников.Сотрудник = РабочиеГодаСотрудниковПредыдущие.Сотрудник
			И РабочиеГодаСотрудников.ВидОтпуска = РабочиеГодаСотрудниковПредыдущие.ВидОтпуска
			И РабочиеГодаСотрудников.ДатаНачала > РабочиеГодаСотрудниковПредыдущие.ДатаНачала

СГРУППИРОВАТЬ ПО
	РабочиеГодаСотрудников.Сотрудник,
	РабочиеГодаСотрудников.ВидОтпуска,
	РабочиеГодаСотрудников.ДатаНачала
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	УказателиРабочихЛет.Сотрудник КАК Сотрудник,
	УказателиРабочихЛет.ВидОтпуска КАК ВидОтпуска,
	УказателиРабочихЛет.РабочийГодДатаНачала КАК РабочийГодДатаНачала,
	РабочиеГодаСотрудников.ДатаОкончания КАК РабочийГодДатаОкончания,
	РабочиеГодаСотрудников.Период КАК Период,
	РабочиеГодаСотрудников.Остаток КАК НарастающийОстаток,
	РабочиеГодаСотрудниковПредыдущие.Остаток КАК ПредыдущийНарастающийОстаток,
	ВЫБОР
		КОГДА РабочиеГодаСотрудников.Остаток < 0
			ТОГДА ВЫБОР
					КОГДА НЕ ВТЗаработанныеОтпускаПоследние.Сотрудник ЕСТЬ NULL
						ТОГДА РабочиеГодаСотрудников.Остаток
					ИНАЧЕ 0
				КОНЕЦ
		КОГДА УказателиРабочихЛет.РабочийГодДатаНачала = УказателиРабочихЛет.ПредыдущийРабочийГодДатаНачала
			ТОГДА РабочиеГодаСотрудников.Остаток
		КОГДА РабочиеГодаСотрудниковПредыдущие.Остаток < 0
			ТОГДА РабочиеГодаСотрудников.Остаток
		ИНАЧЕ РабочиеГодаСотрудников.Остаток - РабочиеГодаСотрудниковПредыдущие.Остаток
	КОНЕЦ КАК ОстатокГода,
	NULL КАК ЧасыОстаток,
	ЕСТЬNULL(ТекущееДнейЕжегодно.ДнейЕжегодно, 0) КАК ДнейЕжегодно,
	ВЫБОР
		КОГДА НЕ ВТЗаработанныеОтпускаПоследние.Сотрудник ЕСТЬ NULL
			ТОГДА ИСТИНА
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ КАК ПоследнийГод
ПОМЕСТИТЬ ВТИтоговыеРабочиеГодаОтпусков
ИЗ
	ВТУказателиРабочихЛет КАК УказателиРабочихЛет
		ЛЕВОЕ СОЕДИНЕНИЕ ВТРабочиеГодаСотрудников КАК РабочиеГодаСотрудников
			ЛЕВОЕ СОЕДИНЕНИЕ ВТЗаработанныеОтпускаПоследние КАК ВТЗаработанныеОтпускаПоследние
			ПО РабочиеГодаСотрудников.Сотрудник = ВТЗаработанныеОтпускаПоследние.Сотрудник
				И РабочиеГодаСотрудников.ВидОтпуска = ВТЗаработанныеОтпускаПоследние.ВидЕжегодногоОтпуска
				И РабочиеГодаСотрудников.Период = ВТЗаработанныеОтпускаПоследние.Период
		ПО УказателиРабочихЛет.Сотрудник = РабочиеГодаСотрудников.Сотрудник
			И УказателиРабочихЛет.ВидОтпуска = РабочиеГодаСотрудников.ВидОтпуска
			И УказателиРабочихЛет.РабочийГодДатаНачала = РабочиеГодаСотрудников.ДатаНачала
		ЛЕВОЕ СОЕДИНЕНИЕ ВТРабочиеГодаСотрудников КАК РабочиеГодаСотрудниковПредыдущие
		ПО УказателиРабочихЛет.Сотрудник = РабочиеГодаСотрудниковПредыдущие.Сотрудник
			И УказателиРабочихЛет.ВидОтпуска = РабочиеГодаСотрудниковПредыдущие.ВидОтпуска
			И УказателиРабочихЛет.ПредыдущийРабочийГодДатаНачала = РабочиеГодаСотрудниковПредыдущие.ДатаНачала
		ЛЕВОЕ СОЕДИНЕНИЕ ВТЗаработанныеОтпускаПоследние КАК ТекущееДнейЕжегодно
		ПО УказателиРабочихЛет.Сотрудник = ТекущееДнейЕжегодно.Сотрудник
			И УказателиРабочихЛет.ВидОтпуска = ТекущееДнейЕжегодно.ВидЕжегодногоОтпуска
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	РабочиеГодаСотрудников.Сотрудник КАК Сотрудник,
	РабочиеГодаСотрудников.ОстатокГода КАК ДниОстаток,
	NULL КАК ЧасыОстаток,
	РабочиеГодаСотрудников.ВидОтпуска КАК ВидОтпуска,
	РабочиеГодаСотрудников.РабочийГодДатаНачала КАК РабочийГодДатаНачала,
	РабочиеГодаСотрудников.РабочийГодДатаОкончания КАК РабочийГодДатаОкончания,
	РабочиеГодаСотрудников.Период КАК Период,
	РабочиеГодаСотрудников.ДнейЕжегодно КАК ДнейЕжегодно,
	РабочиеГодаСотрудников.ПоследнийГод КАК ПоследнийГод
ПОМЕСТИТЬ ВТИтоговыеСотрудники
ИЗ
	ВТИтоговыеРабочиеГодаОтпусков КАК РабочиеГодаСотрудников

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ДниЧасыОтгуловОстатки.Сотрудник,
	ДниЧасыОтгуловОстатки.ДниОстаток,
	ДниЧасыОтгуловОстатки.ЧасыОстаток,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL
ИЗ
	РегистрНакопления.ДниЧасыОтгулов.Остатки(&ДатаОтчета, ) КАК ДниЧасыОтгуловОстатки
;

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

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Сотрудники.Сотрудник КАК Сотрудник
ПОМЕСТИТЬ ВТНеучтенныеСотрудники
ИЗ
	ВТСотрудники КАК Сотрудники
		ЛЕВОЕ СОЕДИНЕНИЕ ВТИтоговыеСотрудники КАК ИтоговыеСотрудники
		ПО Сотрудники.Сотрудник = ИтоговыеСотрудники.Сотрудник
ГДЕ
	ИтоговыеСотрудники.Сотрудник ЕСТЬ NULL
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.Сотрудник КАК Сотрудник,
	ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.ВидЕжегодногоОтпуска КАК ВидОтпуска,
	ПоложенныеВидыЕжегодныхОтпусковСрезПоследних.КоличествоДнейВГод КАК ДнейЕжегодно
ПОМЕСТИТЬ ВТПраваНаОтпускаНеучтенныхСотрудников
ИЗ
	РегистрСведений.ПоложенныеВидыЕжегодныхОтпусков.СрезПоследних(
			&ДатаОтчета,
			Сотрудник В
				(ВЫБРАТЬ
					НеучтенныеСотрудники.Сотрудник
				ИЗ
					ВТНеучтенныеСотрудники КАК НеучтенныеСотрудники)) КАК ПоложенныеВидыЕжегодныхОтпусковСрезПоследних
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ИтоговыеСотрудники.Сотрудник КАК Сотрудник,
	ИтоговыеСотрудники.ВидОтпуска КАК ВидОтпуска,
	ИтоговыеСотрудники.ДнейЕжегодно КАК ДнейЕжегодно,
	ВЫБОР
		КОГДА ИтоговыеСотрудники.ВидОтпуска ЕСТЬ NULL
			ТОГДА 3
		КОГДА ИтоговыеСотрудники.ВидОтпуска = &ОсновнойОтпуск
			ТОГДА 1
		ИНАЧЕ 2
	КОНЕЦ КАК ПриоритетВидаОтпуска,
	ИтоговыеСотрудники.РабочийГодДатаНачала КАК РабочийГодДатаНачала,
	ИтоговыеСотрудники.РабочийГодДатаОкончания КАК РабочийГодДатаОкончания,
	ИтоговыеСотрудники.ДниОстаток КАК Дни,
	ИтоговыеСотрудники.ЧасыОстаток КАК Часы,
	ВЫБОР
		КОГДА ИтоговыеСотрудники.ВидОтпуска ЕСТЬ NULL
			ТОГДА ЛОЖЬ
		ИНАЧЕ ИСТИНА
	КОНЕЦ КАК ЭтоОтпуск,
	ВЫБОР
		КОГДА ИтоговыеСотрудники.ВидОтпуска ЕСТЬ NULL
			ТОГДА ИСТИНА
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ КАК ЭтоОтгул,
	КадровыеДанныеСотрудников.ТабельныйНомер КАК ТабельныйНомер,
	КадровыеДанныеСотрудников.ФизическоеЛицо КАК ФизическоеЛицо,
	КадровыеДанныеСотрудников.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
	КадровыеДанныеСотрудников.Организация КАК ТекущаяОрганизация,
	КадровыеДанныеСотрудников.Подразделение КАК Подразделение,
	КадровыеДанныеСотрудников.Должность КАК Должность,
	КадровыеДанныеСотрудников.ВидЗанятости КАК ВидЗанятости,
	КадровыеДанныеСотрудников.ДатаПриема КАК ДатаПриема,
	КадровыеДанныеСотрудников.ДатаУвольнения КАК ДатаУвольнения,
	КадровыеДанныеСотрудников.Состояние КАК Состояние
ИЗ
	ВТИтоговыеСотрудники КАК ИтоговыеСотрудники
		ЛЕВОЕ СОЕДИНЕНИЕ Представления_КадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
		ПО ИтоговыеСотрудники.Сотрудник = КадровыеДанныеСотрудников.Сотрудник

ОБЪЕДИНИТЬ ВСЕ

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

УПОРЯДОЧИТЬ ПО
	Сотрудник
Показать


Однако, данный запрос выводит всех сотрудников, включая уволенных. Попытки установить параметр по дате увольнения результата не принес.
Подскажите, пожалуйста, как с помощью данного запроса вывести только работающих сотрудников?
Спасибо.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. AndrewUs 13 13.11.24 14:56 Сейчас в теме
Вопрос закрыт.
Спасибо.
Оставьте свое сообщение

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