![]() |
![]() |
|
Помогите с условием запроса | ☑ | ||
---|---|---|---|---|
0
егаис
05.07.13
✎
13:11
|
Есть такой несложный запрос, который выводит на дату текущий процент СН и процент некой доплаты.
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | СведенияОСтажеРаботыНаСевереСрезПоследних.ФизЛицо КАК ФизЛицо, | СведенияОСтажеРаботыНаСевереСрезПоследних.ПорядокНачисленияСеверныхНадбавок КАК ПорядокНачисленияСеверныхНадбавок, | СведенияОСтажеРаботыНаСевереСрезПоследних.НачальныйПроцентСевернойНадбавки КАК НачальныйПроцентСевернойНадбавки, | СведенияОСтажеРаботыНаСевереСрезПоследних.СеверныйСтажМесяцев КАК СеверныйСтажМесяцев, | СведенияОСтажеРаботыНаСевереСрезПоследних.СеверныйСтажДней КАК СеверныйСтажДней, | СведенияОСтажеРаботыНаСевереСрезПоследних.Период КАК ДатаРегистрации, | ЕстьNULL(ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Показатель1,0) КАК Показатель1 |{ВЫБРАТЬ | ФизЛицо, | ПорядокНачисленияСеверныхНадбавок, | НачальныйПроцентСевернойНадбавки, | СеверныйСтажМесяцев, | СеверныйСтажДней, | ДатаРегистрации} |ИЗ | РегистрСведений.СведенияОСтажеРаботыНаСевере.СрезПоследних(&Период {(&Период)}, {(ФизЛицо)}) КАК СведенияОСтажеРаботыНаСевереСрезПоследних | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних( | &Период, | ВидРасчета = &ВидРасчета | И Показатель1 > 0) КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних | ПО СведенияОСтажеРаботыНаСевереСрезПоследних.ФизЛицо = ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник.Физлицо |{ГДЕ | СведенияОСтажеРаботыНаСевереСрезПоследних.ФизЛицо.*, | СведенияОСтажеРаботыНаСевереСрезПоследних.ПорядокНачисленияСеверныхНадбавок.*, | СведенияОСтажеРаботыНаСевереСрезПоследних.НачальныйПроцентСевернойНадбавки, | СведенияОСтажеРаботыНаСевереСрезПоследних.СеверныйСтажМесяцев, | СведенияОСтажеРаботыНаСевереСрезПоследних.СеверныйСтажДней, | СведенияОСтажеРаботыНаСевереСрезПоследних.Период КАК ДатаРегистрации}"; Запрос.УстановитьПараметр("Период", Период); Запрос.УстановитьПараметр("ВидРасчета", ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Персональная надбавка", Истина)); В РН ПлановыеНачисленияРаботниковОрганизаций есть ресурсы "Действие по окончании" м "Дата возврата" Не соображу как в ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних( | &Период, | ВидРасчета = &ВидРасчета | И Показатель1 > 0) КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних добавить условие типа Если "Действие по окончании" = "Прекратить" и "Дата возврата" < Период то записи не выводить, ИНАЧЕ если действие пустое или дата возврата больше - выводить. Спасибо |
|||
1
егаис
05.07.13
✎
13:12
|
можно конечно их проверять на значения в выборке результата, но хочется красиво - в запросе :)
|
|||
2
chelentano
05.07.13
✎
13:14
|
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних ПО СведенияОСтажеРаботыНаСевереСрезПоследних.ФизЛицо = ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник.Физлицо И <Твое условие>
|
|||
3
chelentano
05.07.13
✎
13:15
|
ну или тупо в ГДЕ добавь условие
|
|||
4
егаис
05.07.13
✎
13:15
|
то там несколько условий. Я туплю?
|
|||
5
егаис
05.07.13
✎
13:17
|
Не заполнено "Действие по окончании" - выводить
Заполнено "Действие по окончании" и "Дата возврата" >= Период - выводить Иначе - не выводить |
|||
6
chelentano
05.07.13
✎
13:19
|
ГДЕ <Действие по окончании не заполнено>
ИЛИ (<Действие по окончании не заполнено> И "Дата возврата" >= Период) |
|||
7
chelentano
05.07.13
✎
13:20
|
точнее
ИЛИ (<Действие по окончании заполнено> И "Дата возврата" >= Период) |
|||
8
егаис
05.07.13
✎
13:35
|
ГДЕ
| (ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ПериодЗавершения ЕСТЬ NULL | ИЛИ ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ДействиеЗавершения = &ЗначениеПеречисления | И ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ПериодЗавершения > &Период) Так? |
|||
9
егаис
05.07.13
✎
13:36
|
точнее
|ГДЕ | (ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ПериодЗавершения ЕСТЬ NULL | ИЛИ (ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ДействиеЗавершения = &ЗначениеПеречисления | И ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ПериодЗавершения > &Период)) |
|||
10
chelentano
05.07.13
✎
13:37
|
(9) насчёт "ЕСТЬ NULL" не уверен, значение не заполнено и ЕСТЬ NULL - немного разные вещи
|
|||
11
егаис
05.07.13
✎
13:37
|
разве не так проверяется пустая дата?
|
|||
12
chelentano
05.07.13
✎
13:39
|
(11) не так
|
|||
13
егаис
05.07.13
✎
13:43
|
|ГДЕ
| (ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) | ИЛИ (ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ДействиеЗавершения = &ЗначениеПеречисления | И ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ПериодЗавершения > &Период)) |
|||
14
егаис
05.07.13
✎
13:44
|
другой ньюанс
применение условия не меняет на правое соединение?! не все записи попадают |
|||
15
viktor_vv
05.07.13
✎
13:55
|
(13) Оно меняет на внутреннее, если в Где условия по присоединяемой таблице.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |