Имя: Пароль:
1C
1С v8
ЛЕВОЕ СОЕДИНЕНИЕ с условием
0 grasshoper
 
09.03.21
15:59
День добрый. Столкнулся недавно с непонятным поведением запроса (может что-то упускаю). При соединении с таблицей в конструкции ВЫБОР КОГДА ТОГДА КОНЕЦ второе условие (ИЛИ СпецификацииНоменклатуры.ВидСпецификации = ЗНАЧЕНИЕ(Перечисление.ВидыСпецификаций.Сырье)) не отрабатывает. Если оставляю один какой-то из операндов условия, то оно срабатывает как нужно, но при добавлении ИЛИ отрабатывает только первая его часть. Может у кого есть идеи?

ЛЕВОЕ СОЕДИНЕНИЕ СпецификацииНоменклатуры КАК СпецификацииНоменклатуры
ПО ЗаказыНаПроизводство.Номенклатура = СпецификацииНоменклатуры.Номенклатура
    И (ВЫБОР
        КОГДА ЗаказыНаПроизводство.Оформление <> &Строк
            ТОГДА СпецификацииНоменклатуры.Оформление = ЗаказыНаПроизводство.Оформление
                ИЛИ СпецификацииНоменклатуры.ВидСпецификации = ЗНАЧЕНИЕ(Перечисление.ВидыСпецификаций.Сырье)
        ИНАЧЕ СпецификацииНоменклатуры.ВидСпецификации = ЗНАЧЕНИЕ(Перечисление.ВидыСпецификаций.Сборочная)
    КОНЕЦ)
1 ДенисЧ
 
09.03.21
16:00
Если первое срабатывает в ложь, то второе уже не вычисляется.
2 mikecool
 
09.03.21
16:01
(1) + "о сколько нам открытий чудных..."
3 grasshoper
 
09.03.21
16:01
(1) Почему? ИЛИ строгое?
4 ДенисЧ
 
09.03.21
16:02
(1) я имел в виду наоборот )))
Если первое истина, тогда...

Спутал...
5 grasshoper
 
09.03.21
16:04
(4) Всё, понял, вычисляется как выражение) Всем спасибо)
6 grasshoper
 
10.03.21
10:45
(4) В результате если первое ложь, то второе не вычисляется, потому что есть записи соответствующие обеим частям условиям, а выводятся только соответствующие первой его части.
Независимо от того, куда вы едете — это в гору и против ветра!