Имя: Пароль:
1C
1С v8
Условия в запросах
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);