Имя: Пароль:
1C
 
В следущем запросе как проще сложить булево
,
0 Ivan_495
 
03.07.17
13:22
В следущем запросе как проще сложить булево
Как правильно написать эту строчку
    МАКСИМУМ(ВЫРАЗИТЬ(допусл.Перелет как Число(1)) +ВЫРАЗИТЬ(допусл.СтраховкаМедицинская как ЧИСЛО(1) ) КАК Перелет
?


ВЫБРАТЬ ПЕРВЫЕ 900
    ЗаказТураПакетВключает.Ссылка КАК Ссылка,
    ИСТИНА КАК ГрупповойТрансфер,
    NULL КАК СтраховкаМедицинская,
    NULL КАК ИндивидуальныйТрансфер,
    NULL КАК ВизаЗаказана,
    NULL КАК Перелет
ПОМЕСТИТЬ допусл
ИЗ
    Документ.ЗаказТура.ПакетВключает КАК ЗаказТураПакетВключает
ГДЕ
    ЗаказТураПакетВключает.Услуга.Наименование ПОДОБНО "%групповой трансфер%"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ ПЕРВЫЕ 900
    ЗаказТураПакетВключает.Ссылка,
    NULL,
    ИСТИНА,
    NULL,
    NULL,
    NULL
ИЗ
    Документ.ЗаказТура.ПакетВключает КАК ЗаказТураПакетВключает
ГДЕ
    ЗаказТураПакетВключает.Услуга.Наименование ПОДОБНО "%Страховка медицинская%"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ ПЕРВЫЕ 900
    ЗаказТураПакетВключает.Ссылка,
    NULL,
    NULL,
    ИСТИНА,
    NULL,
    NULL
ИЗ
    Документ.ЗаказТура.ПакетВключает КАК ЗаказТураПакетВключает
ГДЕ
    ЗаказТураПакетВключает.Услуга.Наименование ПОДОБНО "%инд%"
    И ЗаказТураПакетВключает.Услуга.Наименование ПОДОБНО "%тра%"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ ПЕРВЫЕ 900
    ЗаказТураПакетВключает.Ссылка,
    NULL,
    NULL,
    NULL,
    ИСТИНА,
    NULL
ИЗ
    Документ.ЗаказТура.ПакетВключает КАК ЗаказТураПакетВключает
ГДЕ
    ЗаказТураПакетВключает.Услуга.Наименование ПОДОБНО "%виза%"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ ПЕРВЫЕ 900
    ЗаказТураПакетВключает.Ссылка,
    NULL,
    NULL,
    NULL,
    NULL,
    ИСТИНА
ИЗ
    Документ.ЗаказТура.ПакетВключает КАК ЗаказТураПакетВключает
ГДЕ
    ЗаказТураПакетВключает.Услуга.Наименование ПОДОБНО "%перелет%"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    допусл.Ссылка,
    МАКСИМУМ(допусл.СтраховкаМедицинская) КАК СтраховкаМедицинская,
    МАКСИМУМ(допусл.ГрупповойТрансфер) КАК ГрупповойТрансфер,
    МАКСИМУМ(допусл.ИндивидуальныйТрансфер) КАК ИндивидуальныйТрансфер,
    МАКСИМУМ(допусл.ВизаЗаказана) КАК ВизаЗаказана,
    МАКСИМУМ(допусл.Перелет ) КАК Перелет,
    МАКСИМУМ(ВЫРАЗИТЬ(допусл.Перелет как Число(1)) +ВЫРАЗИТЬ(допусл.СтраховкаМедицинская как ЧИСЛО(1) ) КАК Перелет
    
ИЗ
    допусл КАК допусл

СГРУППИРОВАТЬ ПО
    допусл.Ссылка
1 mexanik_96
 
03.07.17
13:24
(1) е б а т ь! попробуй конструкцию выбор когда тогда сюда туда конец
2 Лефмихалыч
 
03.07.17
13:24
булево складывается при помощи ИЛИ
а при помощи И - умножается


тоже максимум возьми
3 mexanik_96
 
03.07.17
13:24
+(1) да потому что одна исходная таблица
4 Вафель
 
03.07.17
13:27

ВЫБОР КОГДА ИСТИНА ТОГДА 1 ИНАЧЕ 0 КОНЕЦ
+
МоеЧисло
5 Ivan_495
 
03.07.17
13:32
допусл.Перелет  ИЛИ допусл.СтраховкаМедицинская
6 PiotrLoginov
 
03.07.17
13:32
(0) весь запрос не курил.

допусл.Перелет тип - Булево?
допусл.СтраховкаМедицинская тип - Булево?


очень интересно будет, если при каких-то условиях и то, и то окажется Истина.   Сложение даст 2 (два) :)
7 Лефмихалыч
 
03.07.17
13:34
кстати, запрос не умеет кастовать типы. Он может только длину-ширину расширить-сузить у одного и того же типа
8 Лефмихалыч
 
03.07.17
13:35
это 1С, детка, тут вот это
CAST(гогно as пуля)
не прокатит
9 Ivan_495
 
03.07.17
14:25
(2) МАКСИМУМ(допусл.ГрупповойТрансфер
            ИЛИ допусл.ИндивидуальныйТрансфер)
2 не получается, детка
остается только 4, но про это я и сам знал
10 mexanik_96
 
03.07.17
14:28
а нельзя через как в (4) и там типа приоритеты указывать(битовые поля), далее как уже говорили через макс

ВЫБРАТЬ ПЕРВЫЕ 900
    ЗаказТураПакетВключает.Ссылка,
    КОГДА  ЗаказТураПакетВключает.Услуга.Наименование ПОДОБНО "%перелет%" ТОГДА 1 //или сколько там
ИНАЧЕ
0 КОНЕЦ    

ИЗ
    Документ.ЗаказТура.ПакетВключает КАК ЗаказТураПакетВключает
11 Ivan_495
 
03.07.17
14:29
ВЫБОР
    КОГДА допусл.ГрупповойТрансфер
        ТОГДА 1
    ИНАЧЕ 0
КОНЕЦ + ВЫБОР
    КОГДА допусл.ИндивидуальныйТрансфер
        ТОГДА 1
    ИНАЧЕ 0
КОНЕЦ
12 Ivan_495
 
03.07.17
14:30
(10) все можно.дело в возможностях 1с . думал что-то не знаю
13 Лефмихалыч
 
03.07.17
14:33
если они булевские, то достаточно
   максимум(допусл.ГрупповойТрансфер или допусл.ИндивидуальныйТрансфер)
14 Лефмихалыч
 
03.07.17
14:33
а, если числовые, то
   максимум(допусл.ГрупповойТрансфер+допусл.ИндивидуальныйТрансфер>0)
15 1dvd
 
03.07.17
14:33
1 и 0 - это число, а не булево
16 Вафель
 
03.07.17
14:38
(10) Маски делать нет смысла, тк для извлечения нужен xor
17 Вафель
 
03.07.17
14:38
(14) за такой код нужно руки отрывать
18 mexanik_96
 
03.07.17
14:42
(16)согласен. ну ксор же это какое то "или" ведь так?
19 mexanik_96
 
03.07.17
14:42
+(18) 1с запрос может в "или" вроде бы...
20 Лефмихалыч
 
03.07.17
14:49
(17) тут вся ветка из такого кода
21 Ivan_495
 
03.07.17
15:14
вопрос решен в (11)