Имя: Пароль:
1C
1C 7.7
v7: Выбор когда иначе если конецесли в v77
0 VovkaBo
 
06.04.12
11:54
Приветствую.
Миллион лет не работал с семеркой, а тут понадобилось.
Можно ли в семерке в запросе выбирать поля, используя конструкция ВЫБОР КОГДА ИНАЧЕ ЕСЛИ КОНЕЦЕСЛИ, по типу как в 8-ке?

И вообще, как можно выбрать то или иное значение в поле в зависимости от
моего условия?

Спасибо :)
1 Guk
 
06.04.12
11:55
можно. только надо будет ВК подцепить...
2 zxcvb
 
06.04.12
12:00
Можно. Проверяй еще условие да выбирай или нет.
3 mikecool
 
06.04.12
12:00
читаем описание функция() и может быть достаточно
4 zxcvb
 
06.04.12
12:08
Автор наверное удивился...
5 VovkaBo
 
06.04.12
12:13
(4) Не, пытаюсь осмыслить и применить советы. Направление размышления понял :) Хотя выглядит геморно :)
6 VovkaBo
 
06.04.12
12:14
В общем-то, мне нужно так:
Если Клиент.Настройка = 1 Тогда взять Сумму
Иначе взять 0
Вот так :)
7 zxcvb
 
06.04.12
12:29
(6)Ну тут еще варианты вон предлагают... Может элегантнее можно.
8 andrewks
 
06.04.12
12:35
если штатно - через внешнюю функцию. только тормозить будет
9 povar
 
06.04.12
12:37
можно использовать 1срр
10 aka AMIGO
 
06.04.12
12:38
не применял никогда в черном ?(,,)
вот интересно, сработает? :)
11 zxcvb
 
06.04.12
12:43
(10) в ? - черный сработает, а ? в черном - что-то не врублюсь куда вставить...
12 aka AMIGO
 
06.04.12
12:46
Условие (Перем=?(,,))
может так :)
13 G-Re
 
06.04.12
12:49
Условие (Клиент.Настройка=1);
14 viktor_vv
 
06.04.12
12:58
Может так

|Функция МояСумма = Сумма(ОписаниеПеременнойСуммы) Когда (Клиент.Настройка = 1);

или Если Можно достучаться

|Настройка = Справочник.Клиенты.Настройка ;
|Функция МояСумма = Сумма(ОписаниеПеременнойСуммы) Когда (Настройка = 1);
15 aka AMIGO
 
06.04.12
12:59
|Сумма = Док.Сумма;
|Условие (Результат=?(,Клиент.Настройка=1,Сумма,0);
16 viktor_vv
 
06.04.12
13:00
(14)+ Что такое сумма и откда берется ?
17 VovkaBo
 
06.04.12
13:37
(15)
Да, если сработает |Условие (Результат=?(,Клиент.Настройка=1,Сумма,0);
это будет то, что надо
18 VovkaBo
 
06.04.12
13:39
(16)
Нужен полный аналог следующей конструкции (так бы я написал в 8-ке)

Выбор Когда
Документ.Клиент.ХитраяНастройка = 1 (истина) Тогда
Документ.Сумма
Иначе
Документ.Сумма / 2
КонецЕсли
19 Он
 
06.04.12
13:43
Давно бы выборкой с условием сделал. И время на трындёж не тратил.
Главное - результат, а не как сделал - кошерно или некошерно.
20 VovkaBo
 
06.04.12
13:51
(19)
я в чужом коде ковыряюсь, и не просто в коде, а в хитром алгоритме. И никто не объяснит, почему это работает так, а не иначе, поэтому пытаюсь очень аккуратно вставить свою конструкцию. Мне нельзя ничего сломать :)
21 viktor_vv
 
11.04.12
17:07
|Функция МояСумма = Сумма(ОписаниеПеременнойСуммы) Когда (Клиент.Настройка = 1);
|Функция МояСуммаДеленная = Сумма(ОписаниеПеременнойСуммы/2) Когда (Клиент.Настройка = 0);

Правда суммированть при обходе уже.
22 viktor_vv
 
11.04.12
17:17
Ну можно еще так попробовать

|Функция МояСумма = Сумма(ОписаниеПеременнойСуммы/(2-Клиент.Настройка )) ;

Может проконает.
23 viktor_vv
 
11.04.12
17:19
Правда не понятно что такое сумма. Если это связано с регистрами и функции отличные от Сумма(), то (22) не пойдет.
24 viktor_vv
 
11.04.12
17:20
Вот это я тормоз :).
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс