Запрос - вывести начисление для сотрудника, если он занимает должность

1. Manticor 66 19.12.13 15:49 Сейчас в теме
Конфигурация ЗУП, слегка подпилена )).
Нужно вывести надбавку например ежемесячное денежное поощерение сотрудника. Если человек не занимает должность которая есть в штатном расписании(в подразделении) (рег сведений штатное расписание), то выводим эту надбавку из НадбавкиПоШтатномуРасписаниюОрганизацийСрезПоследних.Показатель2 - тоесть расчет для должности из рег. свед НадбавкиПоШтатномуРасписаниюОрганизаций, если же человек должность занимает - то выводим по человеку этот показатель(из плановых начислений).

Соответственно левым соединением соединям штатное распиание(оно получается главнее с работниками организации). И через выбор когда и проверкой на NULL вывожу показатель либо из НадбавкиПоШтатномуРасписаниюОрганизацийСрезПоследних.Показатель2, либо ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель2.

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


Правильно ли я замыслил,поскольку в результате выполнения запроса нет данных по должностям.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Manticor 66 19.12.13 17:30 Сейчас в теме
(1) Manticor, структура регистров не изменена.
Оставьте свое сообщение

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