![]() |
![]() |
![]() |
|
условие в запросе на пустую ссылку | ☑ | ||
---|---|---|---|---|
0
selenat
05.10.06
✎
15:30
|
Не срабатывает
|ГДЕ | СделкаВзаиморасчета.Сделка<>Null"; СделкаВзаиморасчета.Сделка - поле в запросе, принимающее значения ссылок на документы разного типа. Как правильно сделать проверку на то, что оно не пустое? |
|||
1
ТелепатБот
гуру
05.10.06
✎
15:30
|
||||
2
igork1966
05.10.06
✎
15:31
|
СделкаВзаиморасчета.Сделка<>&ПустоеЗначение
|
|||
3
megalodon
05.10.06
✎
15:34
|
ГДЕ
СделкаВзаиморасчета.Сделка.Ссылка ЕСТЬ НЕ NULL |
|||
4
igork1966
05.10.06
✎
15:35
|
(3) NULL и пустая ссылка разные вещи.
|
|||
5
megalodon
05.10.06
✎
15:37
|
(3) отловит и пустую ссылку конкретного вида, и Неопределено.
|
|||
6
selenat
05.10.06
✎
15:39
|
(2) А какое значение параметра установить для ПустоеЗначение? Ссылка ведь на объект составного типа.
|
|||
7
igork1966
05.10.06
✎
15:39
|
(5) Хм
Неопределено <> NULL |
|||
8
Defender aka LINN
05.10.06
✎
15:40
|
(6) см (3). Прокатит.
(7) Ага, мне тоже понравилось :) |
|||
9
megalodon
05.10.06
✎
15:43
|
(7) А NULL то нафига ловить? В (0) надо ловить или Неопределено или пустую ссылку какого либо вида.
|
|||
10
selenat
05.10.06
✎
15:46
|
С вариантом (3) у меня попадают в выборку сделки с пустым значением и типом не определено.
(2) не прокатывает, поскольку не установлен параметр. Что делаю не так? |
|||
11
igork1966
05.10.06
✎
15:47
|
(9) NULL то там откуда появится? Если только у него соединение
|
|||
12
megalodon
05.10.06
✎
15:48
|
"С вариантом (3) у меня попадают в выборку сделки с пустым значением и типом не определено." - м-дяя... тебе уже ничего не поможет.
|
|||
13
megalodon
05.10.06
✎
15:49
|
(11) пошевели мозгой, авось доедешь.
|
|||
14
selenat
05.10.06
✎
15:50
|
(12) Иду трассировщиком по выборке и вижу то, о чем написал в (10.1). Вижу пустое значение и тип не определено. Что я сделал не так?
|
|||
15
igork1966
05.10.06
✎
15:51
|
(6) p://www.kb.mista.ru/article.php?id=21
|
|||
16
igork1966
05.10.06
✎
15:52
|
||||
17
igork1966
05.10.06
✎
15:53
|
(13) NULL <> ПустаяСсылка <> Неопределено
Читай (16) внимательно. |
|||
18
megalodon
05.10.06
✎
15:54
|
(14) текст запроса покажи
|
|||
19
megalodon
05.10.06
✎
15:55
|
(17) с этим согласен. ну и что дальше?
|
|||
20
selenat
05.10.06
✎
15:55
|
(16) т.е. должно быть что-то типа
МассивТипов = Новый Массив(); МассивТипов.Добавить(ТипЗнч(ЗначениеНеизвТипа)); ОписаниеТипов= Новый ОписаниеТипов(МассивТипов,,,); ЗначениеПустаяСсылка = ОписаниеТипов.ПривестиЗначение(Неопределено); |ГДЕ Поле = &ПустаяСсылка"; Запрос.УстановитьПараметр("ПустаяСсылка",ЗначениеПустаяСсылка); ? |
|||
21
igork1966
05.10.06
✎
15:57
|
(19) СделкаВзаиморасчета.Сделка.Ссылка ЕСТЬ НЕ NULL
Ну и как это соотносится с субжем: "условие в запросе на пустую ссылку" "сделать проверку на то, что оно не пустое?" Если это запрос к одной таблице без соединения. То твое условие будет всегда истинным и для пустых ссылок на документы и непустых. |
|||
22
selenat
05.10.06
✎
15:57
|
(18)
"ВЫБРАТЬ | ДокументыОтгрузки.Ссылка КАК ДокументОтгрузки, | СделкаВзаиморасчета.Сделка КАК Сделка |ИЗ | Документ.РеализацияТоваровУслуг КАК ДокументыОтгрузки |ВНУТРЕННЕЕ СОЕДИНЕНИЕ | (ВЫБРАТЬ | Взаиморасчеты.Сделка, | Взаиморасчеты.Регистратор | ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&ДатаНач,&ДатаКон,Запись,) КАК Взаиморасчеты | ГДЕ | Взаиморасчеты.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеВходящее | ОБЪЕДИНИТЬ | ВЫБРАТЬ | ВзаиморасчетыК.Сделка, | ВзаиморасчетыК.Регистратор | ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&ДатаНач,&ДатаКон,Запись,) КАК ВзаиморасчетыК | ГДЕ | ВзаиморасчетыК.Регистратор ССЫЛКА Документ.ОтчетКомиссионераОПродажах | И ВзаиморасчетыК.Регистратор.ЧекПробитНаККМ=Ложь | ) КАК СделкаВзаиморасчета |ПО | ДокументыОтгрузки.Ссылка.Сделка=СделкаВзаиморасчета.Сделка |ГДЕ | ДокументыОтгрузки.Ссылка.Проведен = Истина | И СделкаВзаиморасчета.Сделка ЕСТЬ НЕ NULL"; |
|||
23
igork1966
05.10.06
✎
16:02
|
Ну вот видишь, у него Внутреннее соединение. "СделкаВзаиморасчета.Сделка" никогда не будет NULL.
Условие "СделкаВзаиморасчета.Сделка ЕСТЬ НЕ NULL" всегда Истина. ПОсему бесполезно. |
|||
24
megalodon
05.10.06
✎
16:03
|
(21) дятел ты, igork1966. Разыменовывание через точку и есть левое соединение. И если СделкаВзаиморасчета.Сделка будет или Неопределено, или пустая ссылка, то значение СделкаВзаиморасчета.Сделка.Ссылка один хрен будет NULL. Учи матчасть.
(22) ты тоже дятел. тебе сказано написать ГДЕ СделкаВзаиморасчета.Сделка.Ссылка ЕСТЬ НЕ NULL а ты написал ГДЕ СделкаВзаиморасчета.Сделка ЕСТЬ НЕ NULL |
|||
25
selenat
05.10.06
✎
16:04
|
(23) А как правильно это сделать?
|
|||
26
selenat
05.10.06
✎
16:11
|
(24.2) Кажется получилось. Спасибо! Щас буду более внимательно проверять...
|
|||
27
igork1966
05.10.06
✎
16:11
|
(24) Блин пропустил ".Ссылка". Сорри.
Однако вопрос (давно не занимался 8кой), разве так прокатит "СделкаВзаиморасчета.Сделка.Ссылка", если сделка это составной тип? |
|||
28
megalodon
05.10.06
✎
16:12
|
(27) а че бы нет то? от нефига делать.
|
|||
29
igork1966
05.10.06
✎
16:15
|
(28) Блин тормознул тогда я, сорри уж полгода не занимался 8кой + да и занимался совсем немного.
|
|||
30
megalodon
05.10.06
✎
16:16
|
(29) ну и ты меня прости тогда.
|
|||
31
selenat
05.10.06
✎
16:19
|
(30) Еще раз спасибо, что пнул в нужную сторону.
|
|||
32
megalodon
05.10.06
✎
16:25
|
(31) кстати, есть один ньюанс: битые ссылки при таком сравнении примутся за пустые. так что если это критично надо поменять.
|
|||
41
selenat
05.10.06
✎
16:42
|
(32) Думаю, если битые будут - по отчетам вылезет и будем с ними индивидуально разбираться. Не такое частое явление ИМХО.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |