|
Как задать данное условие в параметре виртуальной таблицы? | ☑ | ||
---|---|---|---|---|
0
SherifSP
03.05.13
✎
17:51
|
Есть запрос, знаю если условие стоит на виртуальной таблице, данные выбираются быстрее, как извратится над данным запросом, чтобы поставить условие с проверкой в параметр?
ТекстЗапроса = "ВЫБРАТЬ | Расчеты.ТорговаяТочка, | Расчеты.ТорговыйПредставитель, | Расчеты.МаршрутКоманды, | Расчеты.Документ, | Расчеты.Склад, | Расчеты.Сумма, | Расчеты.ДатаОплаты, | Расчеты.Просрочка, | Расчеты.СуммаПросрочки, | Расчеты.СуммаДолга |ИЗ | (ВЫБРАТЬ | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ТорговаяТочка КАК ТорговаяТочка, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ТорговыйПредставитель КАК ТорговыйПредставитель, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.МаршрутКоманды КАК МаршрутКоманды, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом КАК Документ, | ВЫБОР | КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом ССЫЛКА Документ.РеализацияТоваровУслуг | ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Склад | КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом ССЫЛКА Документ.ВозвратТоваровОтПокупателя | ТОГДА ВЫБОР | КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.СкладОрдер ССЫЛКА Справочник.Склады | ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.СкладОрдер | КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.СкладОрдер ССЫЛКА Документ.ПриходныйОрдерНаТовары | ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.СкладОрдер.Склад | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) | КОНЕЦ | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) | КОНЕЦ КАК Склад, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток КАК Сумма, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты КАК ДатаОплаты, | РАЗНОСТЬДАТ(&ДатаИтогов, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты, ДЕНЬ) КАК Просрочка, | ВЫБОР | КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.УсловиеОплаты = ЗНАЧЕНИЕ(Перечисление.ВидыУсловийОплат.ОтПоставкиДоПоставки) | ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток | КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.УсловиеОплаты = ЗНАЧЕНИЕ(Перечисление.ВидыУсловийОплат.ПоФакту) | ТОГДА ВЫБОР | КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты < НАЧАЛОПЕРИОДА(&ДатаРасчета, ДЕНЬ) | ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток | ИНАЧЕ 0 | КОНЕЦ | ИНАЧЕ ВЫБОР | КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты < &ДатаИтогов | ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток | ИНАЧЕ 0 | КОНЕЦ | КОНЕЦ КАК СуммаПросрочки, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток КАК СуммаДолга | ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(&ДатаРасчета, Контрагент = &Контрагент) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки) КАК Расчеты |ГДЕ | Расчеты.Склад <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)"; Если ЗначениеЗаполнено(ТорговаяТочка) Тогда ТекстЗапроса = ТекстЗапроса+" | И Расчеты.ТорговаяТочка = &ТорговаяТочка"; КонецЕсли; |
|||
1
SherifSP
03.05.13
✎
17:52
|
+(0) А именно по ТорговойТочке
|
|||
2
mistеr
03.05.13
✎
18:07
|
Ровно так же, как сейчас оно ставится в ГДЕ. Только вставлять в другое место запроса.
|
|||
3
Любопытная
03.05.13
✎
18:08
|
Ты ж контрагента в условиях прописал. Дальше припиши И и твое условие из ГДЕ
|
|||
4
SherifSP
03.05.13
✎
18:20
|
Реализовал это вот так, вроде отбирает, но на сколько это оптимально, подскажите
ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(&ДатаРасчета, Контрагент = &Контрагент {ДокументРасчетовСКонтрагентом.ТорговаяТочка = &ТорговаяТочка}) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки) КАК Расчеты |
|||
5
SherifSP
03.05.13
✎
18:21
|
(3) Но если ТорговаяТочка будит пустой, тогда запрос ничего не выберет
|
|||
6
SherifSP
03.05.13
✎
18:22
|
+(4)
Если ЗначениеЗаполнено(ТорговаяТочка) Тогда Запрос.УстановитьПараметр("ТорговаяТочка",ТорговаяТочка); КонецЕсли; |
|||
7
SherifSP
03.05.13
✎
18:34
|
Надо апать, а то все уснули )
|
|||
8
zak555
03.05.13
✎
18:36
|
зачем вложенный запрос и почему Расчеты.Склад вынесен в ГДЕ ?
|
|||
9
SherifSP
03.05.13
✎
18:40
|
(8) Птому что склад вычисляется как
ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом ССЫЛКА Документ.РеализацияТоваровУслуг ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Склад КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом ССЫЛКА Документ.ВозвратТоваровОтПокупателя ТОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.СкладОрдер ССЫЛКА Справочник.Склады ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.СкладОрдер КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.СкладОрдер ССЫЛКА Документ.ПриходныйОрдерНаТовары ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.СкладОрдер.Склад ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) КОНЕЦ ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) КОНЕЦ |
|||
10
SherifSP
03.05.13
✎
18:41
|
(8) А на счет вложенного запроса, для меня пока остается загадкой
|
|||
11
SherifSP
03.05.13
✎
18:46
|
Вложенный запрос не влияет на скорость выборки данных?
|
|||
12
Sammo
03.05.13
✎
19:11
|
(11) Использование вложенных запросов приводит к непредсказуемому плану запроса. Именно с этим связана рекомендация 1с переписывать через временные таблицы.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |