|
Условия в запросах | ☑ | ||
---|---|---|---|---|
0
shamannk
21.06.12
✎
15:23
|
Как реализовать такие условия в запросах: нужно в запросе отобрать данные в связи со значением параметра. Пример параметр (&пар) может принимать три значение 0, 1 и 2 а в запросе в условие "где" если &пар = 0 равно; если 1 то больше; если 2 то меньше.
если &пар = 0 то в где надо: ... ГДЕ табл.реквизит = 100 если &пар = 1 то в где надо: ... ГДЕ табл.реквизит > 100 если &пар = 2 то в где надо: ... ГДЕ табл.реквизит < 100 Всегда в таких случаях заменой менял текст запроса, но как можно без замены текста? |
|||
1
Avganec
21.06.12
✎
15:24
|
не понял сути проблемы, вы почти все написали сами
|
|||
2
andrewks
21.06.12
✎
15:25
|
выбор когда тогда конец
|
|||
3
shamannk
21.06.12
✎
15:26
|
(2) тогда будет куча ненужных строк
|
|||
4
Avganec
21.06.12
✎
15:29
|
(3) в любом случае, если это запихивать в запрос будут лишние строки. А так, можно сгруппировать условия грамотно на листочки и будет счастье.
|
|||
5
kosts
21.06.12
✎
15:29
|
ГДЕ (&пар = 0 и табл.реквизит = 100)
или (&пар = 1 и табл.реквизит > 100) или (&пар = 2 и табл.реквизит < 100) |
|||
6
Fragster
гуру
21.06.12
✎
15:31
|
сделай 3 текста запроса
|
|||
7
shamannk
21.06.12
✎
15:32
|
(5) Как бы подходит, а если &пар до 999 будет равен?
|
|||
8
andrewks
21.06.12
✎
15:33
|
а если бы у бабушки был хер, то она была бы дедушкой
|
|||
9
kosts
21.06.12
✎
15:33
|
(7) Еще &пар может быть "1234Вася"
|
|||
10
shamannk
21.06.12
✎
15:36
|
(9) Ну да. Не нравится то что нужно значения параметров за ранее указывать в запросе куда бы проще передать в параметр знак сравнения чтоли))
|
|||
11
unregistered
21.06.12
✎
15:37
|
(7) >> если &пар до 999 будет равен?
Тогда четче формулировать задачу надо. Что это за параметр, откуда он берется и т.п. |
|||
12
shamannk
21.06.12
✎
15:38
|
+(10) типа &зн равен > ...ГДЕ табл.реквизит &зс 100
|
|||
13
Ненавижу 1С
гуру
21.06.12
✎
15:38
|
(6) а если еще будут такие условия, комбинаторное возрастание числа вариантов?
лучше уж динамически собирать |
|||
14
Avganec
21.06.12
✎
15:38
|
(10) если вы ищете универсальный способ, то его нет. если решение текущей задачи, то оно есть. Также можете выполнять сравнение уже в передаче параметров.
|
|||
15
shamannk
21.06.12
✎
15:40
|
(14) Также можете выполнять сравнение уже в передаче параметров. Это как?
|
|||
16
katc
21.06.12
✎
15:41
|
Делай через выбор
Где Выбор Когда &пар = 0 Тогда табл.реквизит = 100 Когда &пар = 1 Тогда табл.реквизит > 100 Когда &пар = 2 Тогда табл.реквизит < 100 Rjytw |
|||
17
shamannk
21.06.12
✎
15:43
|
(16) к (3)
|
|||
18
shamannk
21.06.12
✎
15:43
|
(17) упс а так можно?
|
|||
20
shamannk
21.06.12
✎
15:46
|
(19) Гениально конечно. Но в сабже я от этого отказаться хочу
|
|||
21
Ненавижу 1С
гуру
21.06.12
✎
15:47
|
(19) такой текст не открыть конструктором, мне нравится так
Запрос.Текст = "ВЫБРАТЬ | Контрагенты.Ссылка |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | &ДИНАМИЧЕСКОЕУСЛОВИЕ"; |
|||
22
Avganec
21.06.12
✎
15:47
|
(15) в установке параметра ставить необходимое сравнение для получения логического результата
|
|||
23
shamannk
21.06.12
✎
15:48
|
(22) Не понял, пример можно?
|
|||
24
zinch
21.06.12
✎
15:48
|
(21) для каждой строки таблицы в запросе?
|
|||
25
cViper
21.06.12
✎
15:48
|
(0) KEY - VALUE
|
|||
26
Ненавижу 1С
гуру
21.06.12
✎
15:50
|
(20) зря, в (5) и (16) индексы скорее всего использоваться не будут
(24) с чего ты это решил? |
|||
27
cViper
21.06.12
✎
15:50
|
+(25) Затем меняй в запросе символ на VALUE.
|
|||
28
shamannk
21.06.12
✎
15:59
|
пока (5) оптимальный нууууу после (21)
|
|||
30
Avganec
21.06.12
✎
15:59
|
(23) Запрос.УстановитьПараметр("ПервыйПараметр", Пар = 100);
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |