Имя: Пароль:
1C
 
v8: Условие в запросе на поле составного типа
0 gndm
 
25.04.07
12:41
Может лыжи на платформе v8 не едут, но скорее второе. Не могу сообразить, как мне в запросе описать условие на непустое значение поля составного типа. То есть хочется мне, допустим, все документы с непустым реквизитом составного типа. И не могу.
Вариант "И Поле<>&ПустоеЗначениеТипа1 И Поле<>&ПустоеЗначениеТипа2 И ..." не работает.
А для варианта "Поле<>&ПустоеЗначениеОписанияТипов" я не соображу как именно мне получить пустое значение нужной природы. Как само описание типов - понятно: через метаданные документов. А как пустое значение этого типа? Пробовал "ПривестиЗначение(NULL)" у этого описания типов - получается "Неопределено", и тоже не работает.
1 selenat
 
25.04.07
12:42
НЕ Поле ЕСТЬ NULL
2 gndm
 
25.04.07
13:04
Получается вообще пустой запрос.
3 selenat
 
25.04.07
13:06
(2) запрос в студию
4 gndm
 
25.04.07
13:08
"ВЫБРАТЬ
   |    РеализацияТоваровУслуг.Заказчик КАК ПлательщикУслуг,
   |    ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслуг.Заказчик),
   |    РеализацияТоваровУслуг.Перевозчик КАК Перевозчик,
   |    ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслуг.Перевозчик),
   |    СУММА(РеализацияТоваровУслуг.СуммаДокумента) КАК СуммаДокумента,
   |    РеализацияТоваровУслуг.Дата,
   |    РеализацияТоваровУслуг.ВидДеятельности КАК ВидДеятельности,
   |    ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслуг.ВидДеятельности)
   |{ВЫБРАТЬ
   |    ПлательщикУслуг.*,
   |    Перевозчик.*,
   |    СуммаДокумента,
   |    ВидДеятельности.*}
   |ИЗ
   |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
   |ГДЕ
   |    РеализацияТоваровУслуг.Дата МЕЖДУ &НачДата И &КонДата
   |    И НЕ РеализацияТоваровУслуг.Заказчик Есть NULL
   |
   |СГРУППИРОВАТЬ ПО
   |    РеализацияТоваровУслуг.Заказчик,
   |    РеализацияТоваровУслуг.Перевозчик,
   |    РеализацияТоваровУслуг.ВидДеятельности,
   |    РеализацияТоваровУслуг.Дата
   |ИТОГИ
   |    СУММА(СуммаДокумента)
   |ПО
   |    ВидДеятельности,
   |    ПлательщикУслуг,
   |    Перевозчик";
5 selenat
 
25.04.07
13:13
(4) между ДатаНач и ДатаКон точно они есть?
выбирает ли что-нить без
   |    И НЕ РеализацияТоваровУслуг.Заказчик Есть NULL ?
6 gndm
 
25.04.07
13:15
Да, конечно.
7 selenat
 
25.04.07
13:17
(6) посмотри что выдаст при
|    И РеализацияТоваровУслуг.Заказчик Есть NULL
8 gndm
 
25.04.07
13:17
Стоп. Сорри. Соврал. Форму после построителя не привел в порядок и не заметил как перепутал даты. Так что запрос не пустой, но условие все равно не работает. Пустые значения с прежним успехом вылезают.
9 selenat
 
25.04.07
13:20
(8) Посмотри в выборки тип и значения поля заказчик для этих строк...
10 ZolotarevAA
 
25.04.07
13:22
(0) Сравнивать надо не с NULL, а с Неопределено.
11 Pike
 
25.04.07
13:22
а добавь такое условие:
ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслуг.Заказчик)<>""
12 selenat
 
25.04.07
13:23
(11) не хорошо...
13 gndm
 
25.04.07
13:34
Все хором получаются "Справочник.Контрагенты".
(10) при варианте "ПривестиЗначение(NULL)" нужного описания типов получается именно "Неопределено", и это тоже не работает.
14 selenat
 
25.04.07
13:37
(13) это тип? А значения?
|    И РеализацияТоваровУслуг.Заказчик<>&ПустойКонтр

ПустойКонтр = Справочники.Контрагенты.ПустаяСсылка();
15 gndm
 
25.04.07
13:43
Значения конечно же пустые. Сейчас попробовал дополнительное условие по "ПустомуКонтрагенту" - тоже не работает. Вообще хреновина какая-то....
16 luns
 
25.04.07
13:45
//
НЕ РеализацияТоваровУслуг.Заказчик.Ссылка Есть NULL
17 gndm
 
25.04.07
13:46
В смысле "ПустаяСсылка". Условие по пустому контрагенту не работает как в сочетании с "НЕ ... Есть NULL", так и без него.
18 Денежко
 
25.04.07
13:46
Неопределено
19 Денежко
 
25.04.07
13:47
если в таблице есть поле составного типа то если оно не заполнено - оно НЕОПРЕДЕЛЕНО. Если это поле не составное -то пустаяССылка
20 gndm
 
25.04.07
13:48
(16) О! Заработало. Большое спасибо. И даже понятно почему заработало.
21 Денежко
 
25.04.07
13:50
Имхо РеализацияТоваровУслуг.Заказчик.Ссылка  будет долше отрабатывать чем  НЕ РеализацияТоваровУслуг.Заказчик = Неопределено
22 luns
 
25.04.07
13:51
(21) Данные составного типа представляются в базе данных несколькими полями. Все поля базы данных, представляющие один объект метаданных, имеют одинаковые имена, различающиеся суффиксами (несколькими последними символами). Количество и состав полей базы данных определяется выбранной для данного объекта метаданных комбинацией типов. Суффикс имени поля базы данных определяет тип и назначение хранимых в нем данных. В таблице перечислены все возможные суффиксы имен полей базы данных с указанием их типа (в терминах Microsoft SQL Server), назначения полей с этими суффиксами и условия, при которых они добавляются к представлению объектов базы данных данного типа.
23 gndm
 
25.04.07
13:55
(10), (18,19,21). Как оказалось, и вы тоже правы. Может быть у 1С есть разные "Неопределено"....
Когда я пытался сначала сделать:
"ПустойЗаказчик= НужноеОписаниеТипов.ПривестиЗначение(NULL)" и в запросе "...<>&ПустойЗаказчик", отладчик мне показывал, что переменная "ПустойЗаказчик" равна именно "Неопределено", но запрос все равно не работал! Но заработал, когда я сейчас "Неопределено" написал в тексте запроса явно.
24 Денежко
 
25.04.07
14:57
22
Это к чему?