Имя: Пароль:
1C
1С v8
Запрос КогдаТогда
,
0 Маркусс
 
26.04.12
09:28
Добрый день.

Подскажите, плиз почему не работает условие в запросе?
ВЫБРАТЬ
   Контрагенты.Ссылка,
   Контрагенты.Представление,
   Контрагенты.ИНН,
   ВЫБОР
       КОГДА Контрагенты.ИНН <> NULL
           ТОГДА 1
       ИНАЧЕ 2
   КОНЕЦ КАК Расчётное
ИЗ
   Справочник.Контрагенты КАК Контрагенты

Спасибо.
1 Ненавижу 1С
 
гуру
26.04.12
09:29
НЕ (Контрагенты.ИНН ЕСТЬ NULL)
2 ДенисЧ
 
26.04.12
09:29
<> NULL
?????
ЕстьNULL для кого придумали????
3 Ненавижу 1С
 
гуру
26.04.12
09:29
(0) только здесь NULL может быть только у групп
4 Wobland
 
26.04.12
09:30
(0) работает. просто всегда ложь даёт
5 Maxus43
 
26.04.12
09:30
NULL <> NULL
6 Wobland
 
26.04.12
09:31
(1) Ненавижу 1С, кстати, есть разница?
НЕ Контрагенты.ИНН ЕСТЬ NULL
Контрагенты.ИНН НЕ ЕСТЬ NULL

проверять лениво ;)
7 proger2011
 
26.04.12
09:32
(0) Автор ты сколько лет с СУБД работаешь? И ни разу не слышал про трёхзначную логику?
8 Ненавижу 1С
 
гуру
26.04.12
09:32
(6) обленились совсем, разницы нет
9 aleks-id
 
26.04.12
09:32
у контрагента ИНН не может быть NULL

   ВЫБОР
       КОГДА Контрагенты.ИНН <> ""
           ТОГДА 1
       ИНАЧЕ 2
   КОНЕЦ КАК Расчётное
10 Ненавижу 1С
 
гуру
26.04.12
09:33
(9) может быть, смотри (3)
11 andrewks
 
26.04.12
09:33
(5) угу
12 Ненавижу 1С
 
гуру
26.04.12
09:34
NULL<>NULL в запросе
NULL=NULL во встроенном языке
13 aleks-id
 
26.04.12
09:34
(10) я исходил из логики вещей. для красоты добавим:
ГДЕ НЕ Контрагенты.ЭтоГруппа
14 Ненавижу 1С
 
гуру
26.04.12
09:34
(13) я тоже ))
15 andrewks
 
26.04.12
09:38
(6) разница есть. в первом случае ты предписываешь кушать NULL не контрагентам, а во втором - предписываешь не кушать NULL контрагентам :)
16 Маркусс
 
26.04.12
10:16
Вот такое условие почему не срабатывает? как правильно написать?
ВЫБОР
   КОГДА ЗначениеСвойстваЦенаПоФакту.Значение = Ложь
       ТОГДА ПродажиОборот.КоличествоОборот * Цена_ТТ.Цена
   ИНАЧЕ ПродажиОборот.СтоимостьОборот
КОНЕЦ
17 Ненавижу 1С
 
гуру
26.04.12
10:20
хз почему, отсюда не видно
нужно больше текста
18 Ненавижу 1С
 
гуру
26.04.12
10:20
может значение это NULL?
19 Wobland
 
26.04.12
10:20
(16) правильно написал (если значение у тебя булево). смотри в данные. выведи ещё и поле значение рядом, к примеру
20 Маркусс
 
26.04.12
10:23
ВЫБРАТЬ
   ЗначениеСвойстваЦенаПоФакту.Значение,
   Цена_ТТ.Цена,
   Цена_ТТ.ТипЦен,
   ПродажиОборот.Номенклатура КАК Номенклатура,
   ПродажиОборот.Контрагент,
   ПродажиОборот.смТорговаяТочка,
   ПродажиОборот.смМаршрутТП,
   ПродажиОборот.КоличествоОборот,
   ПродажиОборот.СтоимостьОборот,
   ПродажиОборот.смТорговаяТочкаТипТорговойТочкиТипКампина,
   ВЫБОР
       КОГДА ЗначениеСвойстваЦенаПоФакту.Значение = ЛОЖЬ
           ТОГДА ПродажиОборот.КоличествоОборот * Цена_ТТ.Цена
       ИНАЧЕ ПродажиОборот.СтоимостьОборот
   КОНЕЦ КАК СуммаПродаж
ИЗ
   (ВЫБРАТЬ
       ПродажиОбороты.Номенклатура КАК Номенклатура,
       ПРЕДСТАВЛЕНИЕ(ПродажиОбороты.Номенклатура) КАК НоменклатураПредставление,
       ПродажиОбороты.Контрагент КАК Контрагент,
       ПРЕДСТАВЛЕНИЕ(ПродажиОбороты.Контрагент) КАК КонтрагентПредставление,
       ПродажиОбороты.смТорговаяТочка КАК смТорговаяТочка,
       ПРЕДСТАВЛЕНИЕ(ПродажиОбороты.смТорговаяТочка) КАК смТорговаяТочкаПредставление,
       ПродажиОбороты.смМаршрутТП КАК смМаршрутТП,
       ПРЕДСТАВЛЕНИЕ(ПродажиОбороты.смМаршрутТП) КАК смМаршрутТППредставление,
       СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот,
       СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот,
       ПродажиОбороты.смТорговаяТочка.ТипТорговойТочки.ТипКампина КАК смТорговаяТочкаТипТорговойТочкиТипКампина
   ИЗ
       РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, День, ) КАК ПродажиОбороты
   ГДЕ
       ПродажиОбороты.Номенклатура В ИЕРАРХИИ(&Кампина)
   
   СГРУППИРОВАТЬ ПО
       ПродажиОбороты.Контрагент,
       ПродажиОбороты.Номенклатура,
       ПродажиОбороты.смТорговаяТочка,
       ПродажиОбороты.смМаршрутТП,
       ПродажиОбороты.смТорговаяТочка.ТипТорговойТочки.ТипКампина) КАК ПродажиОборот
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ЗначенияСвойствОбъектов.Объект КАК Объект,
           ЗначенияСвойствОбъектов.Свойство КАК Свойство,
           ЗначенияСвойствОбъектов.Значение КАК Значение
       ИЗ
           РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
       ГДЕ
           ЗначенияСвойствОбъектов.Свойство = &Свойство
           И ЗначенияСвойствОбъектов.Значение = ИСТИНА) КАК ЗначениеСвойстваЦенаПоФакту
       ПО ПродажиОборот.Контрагент = ЗначениеСвойстваЦенаПоФакту.Объект
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
           ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
           ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен
       ИЗ
           РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних) КАК Цена_ТТ
       ПО ПродажиОборот.Номенклатура = Цена_ТТ.Номенклатура

СГРУППИРОВАТЬ ПО
   ЗначениеСвойстваЦенаПоФакту.Значение,
   Цена_ТТ.Цена,
   Цена_ТТ.ТипЦен,
   ПродажиОборот.Номенклатура,
   ПродажиОборот.Контрагент,
   ПродажиОборот.смТорговаяТочка,
   ПродажиОборот.смМаршрутТП,
   ПродажиОборот.КоличествоОборот,
   ПродажиОборот.СтоимостьОборот,
   ПродажиОборот.смТорговаяТочкаТипТорговойТочкиТипКампина

УПОРЯДОЧИТЬ ПО
   Номенклатура УБЫВ
21 Wobland
 
26.04.12
10:25
выбор когда не естьnull(ЗначениеСвойстваЦенаПоФакту.Значение, ложь) тогда...
22 Ненавижу 1С
 
гуру
26.04.12
10:25
(20) вполне реально что значение равно NULL, напиши так:

ВЫБОР
       КОГДА НЕ ЕСТЬNULL(ЗначениеСвойстваЦенаПоФакту.Значение,ЛОЖЬ)
           ТОГДА
23 Ненавижу 1С
 
гуру
26.04.12
10:25
(21) блин...
24 Wobland
 
26.04.12
10:25
(23) :-Р
25 Маркусс
 
26.04.12
10:29
(22) неверные параметры "не"
26 Маркусс
 
26.04.12
10:32
Может причина в том, что вместо "истина-ложь" в конфе используется "да-нет"?
27 Ненавижу 1С
 
гуру
26.04.12
10:32
(26) не в этом ))
28 Ненавижу 1С
 
гуру
26.04.12
10:32
это вообще представление
29 Ненавижу 1С
 
гуру
26.04.12
10:33
(25) показывай текст, который ты сделал, с ошибкой
30 Wobland
 
26.04.12
10:33
(25) включи мозг и убери скобки
(26) вместо истина/ложь там используется  правда/неправда, блин
31 Sancha
 
26.04.12
10:33
В языке запросов сравнивать так с Null нельзя.
Null - это просто дырка. Для сравнения есть специальная функция НЕ ЕСТЬ NULL
32 Wobland
 
26.04.12
10:35
(31) NULL - это не дырка, NULL - это отсутствие самой дырки
33 Wobland
 
26.04.12
10:35
(32) точнее места, где могла бы быть дырка ;)
34 Ненавижу 1С
 
гуру
26.04.12
10:35
(32) хахахахахаха
35 Ненавижу 1С
 
гуру
26.04.12
10:36
NULL это либо отсутствие значение, либо неопределенное значение, именно так и не иначе
никаких НЕОПРЕДЕЛЕНО и пустых ссылок в SQL нет
это правильно
36 Маркусс
 
26.04.12
10:37
(29) ВЫБОР
       КОГДА  НЕ ЕСТЬNULL(ЗначениеСвойстваЦенаПоФакту.Значение,ЛОЖЬ)
           ТОГДА ПродажиОборот.КоличествоОборот * Цена_ТТ.Цена
   ИНАЧЕ ПродажиОборот.СтоимостьОборот
КОНЕЦ
37 Sancha
 
26.04.12
10:38
(32)место от дырки где должна была быть дырка.
Null придумали для языка запросов, чтобы заткнуть отсутствующие значения, при соединениях таблиц
38 hhhh
 
26.04.12
10:39
(36)

ВЫБОР
       КОГДА  ЕСТЬNULL(ЗначениеСвойстваЦенаПоФакту.Значение,ЛОЖЬ) = ЛОЖЬ
           ТОГДА ПродажиОборот.КоличествоОборот * Цена_ТТ.Цена
   ИНАЧЕ ПродажиОборот.СтоимостьОборот
КОНЕЦ
39 Wobland
 
26.04.12
10:39
ЗначениеСвойстваЦенаПоФакту.Значение какого типа?
40 Ненавижу 1С
 
гуру
26.04.12
10:42
(37) теперь еще расскажи, что 1С придумала NULL ))
41 Wobland
 
26.04.12
10:43
начинается...
42 Маркусс
 
26.04.12
10:43
(39) Булево
43 Ненавижу 1С
 
гуру
26.04.12
10:43
КОГДА  НЕ ЕСТЬNULL(ВЫРАЗИТЬ(ЗначениеСвойстваЦенаПоФакту.Значение КАК БУЛЕВО),ЛОЖЬ)
44 Ненавижу 1С
 
гуру
26.04.12
10:44
(42) составного типа, надо выразить явно к булево
45 Волесвет
 
26.04.12
10:49
Hyv?? iltap?iv??
46 Волесвет
 
26.04.12
10:51
+(45) пачему нет поддержки а с точками наверху?
47 Ненавижу 1С
 
гуру
26.04.12
11:08
(46) называется умлаут, деревенщина ))
48 Wobland
 
26.04.12
11:10
(47) умляут
49 Ненавижу 1С
 
гуру
26.04.12
11:11
(48) оба варианта допустимы wiki:Умлаут_(диакритический_знак)
50 Wobland
 
26.04.12
11:27
(49) умлаут - явление, умляут (ну так германцы произносят) - знак. понимаю сомнительность своих утверждений, спорить не буду
51 Маркусс
 
26.04.12
11:31
(43) не работает ни фига(
52 Wobland
 
26.04.12
11:31
(51) ну ёмаё..
выбор когда оно есть NULL или не оно тогда
53 Wobland
 
26.04.12
11:32
(52) НЕ (оно ИЛИ оно ЕСТЬ NULL)
54 Маркусс
 
26.04.12
11:42
(53) Спасибо огромное
55 cViper
 
26.04.12
11:51
(0) С какого перепугу ты делаешь проверку на нулл? У тебя же нет соединения. Делай проверку на пустое значение типа.
56 Wobland
 
26.04.12
11:51
(55) сейчас ты дочитаешь до групп справочника
57 cViper
 
26.04.12
11:55
(56) так и чего? Надо иначе условие строить. ЭтоГруппа ...
58 Wobland
 
26.04.12
11:56
(57) не спорю. ещё ниже второй вопрос будет
59 Маркусс
 
27.04.12
15:42
Цена на товар не установлена. как это описать в запросе?
ВЫБОР
   КОГДА ЗначениеСвойстваЦенаПоФакту.Значение = ЛОЖЬ
           ИЛИ НЕ ЕСТЬNULL(ВЫРАЗИТЬ(ЗначениеСвойстваЦенаПоФакту.Значение КАК БУЛЕВО), ЛОЖЬ)
       ТОГДА ВЫБОР
               КОГДА ПродажиОборот.смТорговаяТочкаТипТорговойТочкиТипКампина = &Тип_MTSM
                       И НЕ Цена_MTSM.Цена ЕСТЬ NULL    //Влож запрос по регистру ЦеныНоменклатуры
                       И НЕ Цена_MTSM.Цена = 0          //Влож запрос по регистру ЦеныНоменклатуры
                   ТОГДА ПродажиОборот.КоличествоОборот * Цена_MTSM.Цена
               КОНЕЦ
   ИНАЧЕ ПродажиОборот.СтоимостьОборот
КОНЕЦ
60 Wobland
 
27.04.12
18:28
(59) слушай, я сдаюсь.. но ИНАЧЕ ПродажиОборот.СтоимостьОборот - это точно цена? или ты как-то не так вопрос задаёшь?