Имя: Пароль:
1C
1С v8
ЕСТЬNULL в запросе
0 fatal_error
 
06.09.14
18:48
Доброго вечера всем, есть запрос по табличной части документа

ВЫБРАТЬ
    МатериальныйОтчетЧекиККМ.ВидОперации,
    МатериальныйОтчетЧекиККМ.ТипОплаты,
    МатериальныйОтчетЧекиККМ.Сумма,
    МатериальныйОтчетЧекиККМ.СуммаНДС
ПОМЕСТИТЬ вт
ИЗ
    Документ.МатериальныйОтчет.ЧекиККМ КАК МатериальныйОтчетЧекиККМ
ГДЕ
    МатериальныйОтчетЧекиККМ.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(ЕСТЬNULL(вт.Сумма, 0)) КАК Сумма,
    СУММА(ЕСТЬNULL(вт.СуммаНДС, 0)) КАК СуммаНДС
ИЗ
    вт КАК вт
ГДЕ
    вт.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
    И вт.ТипОплаты = ЗНАЧЕНИЕ(Перечисление.ТипыОплатЧекаККМ.ПлатежнаяКарта)

Табличная часть пустая. По идеи сумма должна выдавать 0, а выдает Null. Что я делаю не так?
1 Wobland
 
06.09.14
18:50
2 mikeone
 
06.09.14
18:54
По какой-такой идее сумма должна быть 0?
Сумма неизвестно чего есть неизвестно чего. Все логично.
3 kumena
 
06.09.14
19:01
>>  а выдает Null

с чего это нулл?
если ничего не выбирается, то и нула тоже не будет. вообще выборка ничего не даст.
4 fatal_error
 
06.09.14
19:04
(3) а вот выдает, и Запрос.Выполнить().Пустой() - Ложь
5 fatal_error
 
06.09.14
19:04
(1) сейчас посмотрю, спс
6 kumena
 
06.09.14
19:08
(4) и в каком месте там нулл?

делай левое соединение с таблицей с одной записью, тогда будет тебе нул

типа так
левое соединение
выбрать 1  КАК дополнение
по Истина
7 fatal_error
 
06.09.14
19:09
Итого: убрал естьnull, запихнул второй пакет запроса в втшку, а уже в третьем пакете использую естьnull.
8 RomanYS
 
06.09.14
19:52
добавь одну нулевую запись с нужными значениями в первую таблицу (через ОБЪЕДИНИТЬ) и тебе не понадобится ни естьnull ни третий запрос
9 Фокусник
 
06.09.14
19:54
(0) с таким ником одни ошибки будут, не мудрено ;)
10 Defender aka LINN
 
06.09.14
19:59
(3) Иногда лучше молчать...
(8) Месье знает толк в
11 RomanYS
 
06.09.14
20:28
ещё можно просто поменять местами СУММА и ЕстьNULL
ЕстьNULL(СУММА(вт.сумма), 0)

(10) по сравнению с (7) (8) вполне себе вариант
Ошибка? Это не ошибка, это системная функция.