|   |   | 
| 
 | Запрос. ВЫБОР КОГДА | ☑ | ||
|---|---|---|---|---|
| 0
    
        first_may 09.06.17✎ 09:55 | 
        Добрый день.
 Подскажите пож, можно ли использовать конструкцию в запросе ВЫБРАТЬ ... ВЫБОР КОГДА условие1 ТОГДА значение1 КОГДА условие2 ТОГДА значение2 КОГДА (ВЫБРАТЬ .. ИЗ ..) = ИСТИНА ТОГДА значение3 ИНАЧЕ значение4 .. ИЗ .. то есть в одном из полей использовать запрос? | |||
| 1
    
        Лефмихалыч 09.06.17✎ 09:56 | 
        нет. ВЫБОР применяется к каждой строке выборки     | |||
| 2
    
        elCust 09.06.17✎ 09:58 | 
        (1) Че за ерунда, можно канечно. 
 Обычная конструкция SELECT CASE | |||
| 3
    
        first_may 09.06.17✎ 10:01 | 
        Пробую написать в конструкторе в поле
 ВЫБОР КОГДА ТОГДА КОГДА ТОГДА КОГДА ТОГДА КОГДА ТОГДА КОГДА ЕСТЬNULL(выбрать 1 из истина, ЛОЖЬ) = ИСТИНА ТОГДА МАКСИМУМ(ВложенныйЗапросНДФЛ.Сумма) ИНАЧЕ 0 КОНЕЦ ругается на то, что синтаксическая ошибка и "ожидается выражение выбрать".. | |||
| 4
    
        Лефмихалыч 09.06.17✎ 10:02 | 
        (2) почитай топик внимательно.
 (3) в КОГДА так нельзя | |||
| 5
    
        elCust 09.06.17✎ 10:03 | 
        (3) Может я неправильно понял тебя))
 Вот как ты написал в примере правильно сказано в (1). | |||
| 6
    
        first_may 09.06.17✎ 10:05 | 
        То есть селект в поле нельзя?     | |||
| 7
    
        dezss 09.06.17✎ 10:14 | 
        (6) конечно нельзя, делай соединение и тогда уж проверяй в своем "когда".     | |||
| 8
    
        Неверный Параметр И 09.06.17✎ 10:14 | 
        (3) > выбрать 1 из истина
 Эта чо? | |||
| 9
    
        НЕА123 09.06.17✎ 10:17 | 
        (8)
 это толпа единичек. колво= колво записей ВТ истина. я так думаю (с) | |||
| 10
    
        apokrit 09.06.17✎ 10:18 | 
        (0) Нельзя
 (6) Ни где нельзя, не только в поле. Можно только IN (SELECT) | |||
| 11
    
        elCust 09.06.17✎ 10:25 | 
        (6) Давай обратимся к матчасти:
 В качестве описания поля выборки может быть выражение, использующее следующие элементы: Литералы типов: число, строка (в кавычках), булево (значения Истина и Ложь), Null, Неопределено. [Замечание: Чтобы указать литерал типа "дата", можно воспользоваться ключевым словом языка запросов ДАТАВРЕМЯ или передать дату через параметр запроса]. Параметры запроса (со знаком &) Имя поля Имя табличной части Разыменование ссылочного поля (через одну или несколько точек) Арифметические операции (+, -, /, *) [Замечание: операция получения остатка % в языке запросов не поддерживается] Операция конкатенации строк (+) [Замечание: операцию конкатенации нельзя использовать для виртуальных полей] Встроенные функции языка запросов (ДЕНЬ, МЕСЯЦ, ГОД и т.д.) Агрегатные функции (СУММА, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, КОЛИЧЕСТВО) Операция выбора ВЫБОР / CASE - позволяет получить одно из возможных значений в соответствии с указанными условиями. Операция приведения типов ВЫРАЗИТЬ / CAST | |||
| 12
    
        first_may 09.06.17✎ 10:29 | 
        (10) "Можно только IN (SELECT)" - то есть, что то вроде этого
 ВЫБОР КОГДА ТОГДА 1 КОГДА ТОГДА 2 КОГДА ТОГДА 3 КОГДА ТОГДА 4 КОГДА ИСТИНА В (ВЫБРАТЬ .. ИЗ ..) ТОГДА 5 ИНАЧЕ 0 КОНЕЦ ?? | |||
| 13
    
        elCust 09.06.17✎ 10:33 | 
        >> КОГДА ИСТИНА В (ВЫБРАТЬ .. ИЗ ..)
 Низя так | |||
| 14
    
        Неверный Параметр И 09.06.17✎ 10:41 | 
        (13) Можно     | |||
| 15
    
        Неверный Параметр И 09.06.17✎ 10:42 | 
        КОГДА ИСТИНА В (ВЫБРАТЬ ИСТИНА ИЗ РегистрСведений.РегистрСведений1) ТОГДА "Пыщь"     | |||
| 16
    
        first_may 09.06.17✎ 10:42 | 
        (14) например?     | |||
| 17
    
        first_may 09.06.17✎ 10:44 | 
        да, получилось.. вот 
 ВЫБОР КОГДА ВложенныйЗапросНачисления.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоДням) ТОГДА МАКСИМУМ(ВложенныйЗапросНДФЛ.Сумма) КОГДА ВложенныйЗапросНачисления.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ДополнительныеНачисленияОрганизаций.ДоговорПодряда) ТОГДА МАКСИМУМ(ВложенныйЗапросНДФЛ.Сумма) КОГДА ВложенныйЗапросНачисления.ВидРасчета = &ОкладПоДнямАкционеры ТОГДА МАКСИМУМ(ВложенныйЗапросНДФЛ.Сумма) КОГДА ВложенныйЗапросНачисления.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоЧасам) ТОГДА МАКСИМУМ(ВложенныйЗапросНДФЛ.Сумма) КОГДА ИСТИНА В (ВЫБРАТЬ ИСТИНА ИЗ РегистрСведений.ВерсииПодсистем) ТОГДА МАКСИМУМ(ВложенныйЗапросНДФЛ.Сумма) ИНАЧЕ 0 КОНЕЦ | |||
| 18
    
        Неверный Параметр И 09.06.17✎ 10:46 | 
        (17) Тебе точно нужна логика "когда в регистре версий подситем есть записи, тогда максимум сумм"
 (: | |||
| 19
    
        first_may 09.06.17✎ 10:48 | 
        спасибо всем, дальше буду думать сам..     | |||
| 20
    
        first_may 09.06.17✎ 10:53 | 
        (18) будет конечно не РегистрСведений.ВерсииПодсистем, заменю на то, что мне надо.
 Главное логика мне понятна. Спасибо. | |||
| 21
    
        youalex 09.06.17✎ 10:54 | 
        Интересно. Всегда думал что можно. Попробовал - и правда можно:
 ВЫБРАТЬ ВЫБОР КОГДА 1 = 0 ТОГДА 0 КОГДА 1 В (ВЫБРАТЬ 1) ТОГДА 99 КОГДА 0 = 0 ТОГДА 1 КОНЕЦ работает. | |||
| 22
    
        first_may 09.06.17✎ 10:58 | 
        (21) я то же где то раньше видел, а как правильно писать не отложилось в голове :).     | |||
| 23
    
        h-sp 09.06.17✎ 11:05 | 
        (22) непонятно что с чем сравниваешь
 КОГДА (ВЫБРАТЬ .. ИЗ ..) = ИСТИНА выборка же не может равняться истине. Она же не логическое выражение, а выборка. | |||
| 24
    
        first_may 09.06.17✎ 11:08 | 
        (23) условие такое надо
 КОГДА ИСТИНА В (ВЫБРАТЬ ИСТИНА ИЗ | |||
| 25
    
        youalex 09.06.17✎ 11:18 | 
        (24) Да. вложенный должен возвращать один ряд значения (одну колонку), тогда можно использовать условие IN()     | |||
| 26
    
        youalex 09.06.17✎ 11:21 | 
        upd. Удобно кстати, когда нужно использовать EXISTS (которого в 1С нет), тогда просто 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ Таблица)     | |||
| 27
    
        first_may 09.06.17✎ 11:22 | 
        (26) Да, да. Согласен :).     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |