Имя: Пароль:
1C
1С v8
В запросе выбрать минимум из трех значений.
,
0 Fedor
 
08.08.12
14:17
Есть 3 значения - a, b, c. В запросе нужно определить минимальное.
Есть ли более правильный способ, чем использования конструкции "ВЫБОР"?
ВЫБОР
   КОГДА <Выражение> ТОГДА <Выражение>
   ИНАЧЕ <Выражение>
КОНЕЦ
1 AlStorm
 
08.08.12
14:17
сортировка, после - первые 3
2 Wobland
 
08.08.12
14:17
(0) чем смущает?
3 AlStorm
 
08.08.12
14:18
тьфу, не так понял.
Сортировка, первые 1
4 Лоботряс
 
08.08.12
14:18
Объединение и Максимум
5 Лоботряс
 
08.08.12
14:19
то есть минимум
6 Eugene_life
 
08.08.12
14:20
(0) Через Выбор будет нормально, ИМХО
7 Ksandr
 
08.08.12
14:29
Сильно зависит от запроса и от объема данных, но склоняюсь к ВЫБОР ... КОГДА ...,
т.к. агрегатные функции уступают по производительности.
8 Fragster
 
гуру
08.08.12
14:31
Выбор
когда А1 < А2 И А1 < А3 Тогда А1
Когда А2 < А3 Тогда А2
Иначе А3
Конец Как А
9 Fragster
 
гуру
08.08.12
14:31
Когда А2 < А3 И А2 < А1 Тогда А2
10 PR
 
08.08.12
14:31
(0) Нет.
11 PR
 
08.08.12
14:32
+(10) При условии конечно же, что значения неизвестны до выполнения запроса.
12 aleks-id
 
08.08.12
14:34
бред понаписали.
1. значения в ВТ в колонку Значение
2. запрос к ВТ
выбрать минимум(вт.значение) из ВТ
13 Fedor
 
08.08.12
14:35
(11) Да, значения заранее не известны. Понятно, спасибо.
14 salvator
 
08.08.12
14:37
(12) +100
15 Fragster
 
гуру
08.08.12
14:43
(12) не работает, если мы и так выбираем значения из таблицы, а потом из 3-х столбцов выбираем меньший. там быстрее ВЫБОР, чем городить огород из объединений
16 Ненавижу 1С
 
гуру
08.08.12
14:44
Выбор
Когда А1 < А2 Тогда
 Выбор
 Когда А3<А1 Тогда А3
 Иначе А1
 Конец
Иначе
 Выбор
 Когда А3<А2 Тогда А3
 Иначе А2
 Конец
Конец Как А
17 Fedor
 
08.08.12
14:44
(8) Спасибо!
18 Fragster
 
гуру
08.08.12
14:45
(16) так вот почему ты ненавидишь 1с...
19 Ненавижу 1С
 
гуру
08.08.12
14:48
(18) нет, не поэтому
20 Fragster
 
гуру
08.08.12
14:49
(19) а зачем тогда вложенные выборы?
21 Ненавижу 1С
 
гуру
08.08.12
14:50
(20) а зачем нет?
22 Fragster
 
гуру
08.08.12
14:50
(21) меньше строк, красивее
23 Ненавижу 1С
 
гуру
08.08.12
14:51
(22) ну красота понятее относительное, а так да - строк меньше
24 Fragster
 
гуру
08.08.12
14:53
кстати, нафига я (9) написал?
25 Ненавижу 1С
 
гуру
08.08.12
14:53
(24) не знаю ))
26 Eugene_life
 
08.08.12
14:53
а если они все одинаковы? где "<="??
27 Ненавижу 1С
 
гуру
08.08.12
14:54
(26) а смысл? разницы никакой
28 Eugene_life
 
08.08.12
14:54
(27) Человек же копипастит!!
29 Ненавижу 1С
 
гуру
08.08.12
14:55
(28) и что?
30 Eugene_life
 
08.08.12
14:57
(29) ничего
31 aleks-id
 
08.08.12
14:58
(15) да ну нафиг
32 Ksandr
 
08.08.12
15:39
Кстати, можно исходя из того, что, чтобы найти меньшее из двух необходимо от полусуммы отнять полуразницу по модулю:
тогда для 2
((a+b) - abs((a-b)))/2

для трех:
(((a+b) - abs((a-b)))/2 + с)/2 - abs(((a+b) - abs((a-b)))/2 - c)/2

вот только ABS в запросах не заюзаешь, а так вполне себе решение :)
33 Ksandr
 
08.08.12
15:42
Скобок многовато, уменьшил:

(a + b - abs(a-b))/4 + c/2 - abs((a + b - abs(a-b))/4 - c/2)
34 Shurjk
 
08.08.12
15:44
группировать не предлагали?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан