|
Оптимизация запроса, аналог CASE, но не прямой (не много кода) | ☑ | ||
---|---|---|---|---|
0
Холст
20.08.12
✎
16:12
|
к примеру, нужен отчет с фильтром по грузополучателю (ГП) реквизит ВыбКлиенты, причем ГП берется из реквизита Грузополучатель, а если таковой не заполнен, то ГП берется из Контрагента
получаем такой запрос: ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Контрагент = Документ.Реализация.Контрагент; |Грузополучатель = Документ.Реализация.Грузополучатель; |ТекущийДокумент = Документ.Реализация.ТекущийДокумент; |Группировка ТекущийДокумент без упорядочивания; |Условие( ((ПустоеЗначение(Грузополучатель) = 1) и (Контрагент = ВыбКлиенты)) или ((ПустоеЗначение(Грузополучатель) = 0) и (Грузополучатель = ВыбКлиенты)) ); |"//}}ЗАПРОС ; Понятно, что Условие можно вывести в отдельную функцию. Вопрос: можно ли здесь Грузополучателя по условию получить для фильтра еще в процессе заполнения переменной Грузополучатель, наподобие Грузополучатель = ?(ПустоеЗначение(Документ.Реализация.Грузополучатель) = 1,Документ.Реализация.Контрагент ,Документ.Реализация.Грузополучатель) или по аналогии с SQL языком CASE WHEN ПустоеЗначение(Документ.Реализация.Грузополучатель) = 1 THEN Документ.Реализация.Контрагент ELSE Грузополучатель = Документ.Реализация.Грузополучатель END |
|||
1
SUA
20.08.12
✎
16:20
|
а чем исходный вариант тем более только для фильтра а не для поля не устраивает?
|
|||
2
Холст
20.08.12
✎
16:22
|
(1) тем, что в дальнейшем надо использовать группировку по Грузополучатель
|
|||
3
smaharbA
20.08.12
✎
16:24
|
(Х в Сп) не пойдет ?
|
|||
4
BiBijke
20.08.12
✎
16:25
|
ВЫБОР КОГДА ТОГДА КОГДА ТОГДА ИНАЧЕ КОНЕЦ не предалгать?
|
|||
5
smaharbA
20.08.12
✎
16:26
|
(4) в 77 ?
|
|||
6
SUA
20.08.12
✎
16:28
|
ну в крайнем случае будет 2 группировки...
|
|||
7
BiBijke
20.08.12
✎
16:28
|
(5) прощу прощения за невнимательность
|
|||
8
Ёпрст
20.08.12
✎
16:32
|
(0) переменную и группировку не слепишь
|
|||
9
Ёпрст
20.08.12
✎
16:32
|
в чорном запросе
|
|||
10
Холст
20.08.12
✎
16:32
|
(6) вот от велосипеда с 2мя группировками и хочется избавиться
(3) не понял ... принадлежность к списку ? но нужно на стадии получения переменной запроса применить условие (8) как обходят гуру такое ? |
|||
11
Ёпрст
20.08.12
✎
16:34
|
(10) не знаю как гуру, я пишу прямой запрос и не запариваюсь с чорным
|
|||
12
Ёпрст
20.08.12
✎
16:35
|
либо, вводи 2 переменные и при обходе выбирай из непустых.
|
|||
13
Холст
20.08.12
✎
16:52
|
(11) почему 1С-овский запрос называешь чорным ? разве так 1Сники называют не прямой ?
|
|||
14
Злопчинский
20.08.12
✎
17:03
|
(13) потому что он в пофигураторе отображается чорным0прчорным шрифтом
|
|||
15
ADirks
21.08.12
✎
08:46
|
(11) поначалу прочитал как "не спариваюсь" :))
|
|||
16
ЧеловекДуши
21.08.12
✎
09:01
|
(13)Потому, что он до тупизны кривой,порой лишён, какой либо логики, и по сути имеет скрытую не однозначную логику :)
В общем, не мучайся, не все в 1С делается на одном дыхании ;) Парой бывает нужно написать не один запрос + цикл(ы) для получения результата. :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |