|
Как использовать ЕСТЬNULL | ☑ | ||
---|---|---|---|---|
0
sevensword
28.07.15
✎
08:03
|
Подскажите не пойму в чем ошибка
{(3, 1)}: Синтаксическая ошибка "Выбрать" <<?>>Выбрать ЕСТЬNULL (СУММА(СменныйОтчетРозница.Сумма),0) КАК Сумма запрос такой Записать(); ЗапросСуммыТипаОплат = Новый Запрос; ЗапросСуммыТипаОплат.Текст = "ВЫБРАТЬ | СменныйОтчетРозница.ВидОплаты.ТипОплаты, // | СУММА(СменныйОтчетРозница.Сумма) КАК Сумма |Выбрать ЕСТЬNULL (СУММА(СменныйОтчетРозница.Сумма),0) КАК Сумма |ИЗ | Документ.СменныйОтчет.Розница КАК СменныйОтчетРозница |ГДЕ |(СменныйОтчетРозница.ВидОплаты.ТипОплаты = &ТипОплаты) и (СменныйОтчетРозница.Ссылка=&Ссылка) | |СГРУППИРОВАТЬ ПО | СменныйОтчетРозница.ВидОплаты.ТипОплаты"; пытаюсь присвоить ноль если значение пустое. |
|||
1
Александр056
28.07.15
✎
08:07
|
||||
2
shpioleg
28.07.15
✎
08:08
|
(0) Откуда NULL здесь появится?
|
|||
3
1Сергей
28.07.15
✎
08:08
|
убери слово "Выбрать"
|
|||
5
shpioleg
28.07.15
✎
08:10
|
Короче, все ..ня. Давай заново :)
|
|||
6
sevensword
28.07.15
✎
08:13
|
(3) выбрать убрал ошибка исчезла, но осталась основная
Преобразование значения к типу Число не может быть выполнено |
|||
7
1Сергей
28.07.15
✎
08:16
|
(6) а какого типа Сумма в документе?
|
|||
8
Ващета
28.07.15
✎
08:17
|
(6) ЕСТЬNULL тоже убери
|
|||
9
AntonyFO
28.07.15
✎
08:17
|
(7) совершенно не важно, в этом контексте ошибки быть не должно
|
|||
10
AntonyFO
28.07.15
✎
08:18
|
а пробел зачем между? ЕСТЬNULL (
|
|||
11
shpioleg
28.07.15
✎
08:18
|
(5) Если уж так хочешь NULL, то поставь его после СУММА
|
|||
13
Lex_Liven
28.07.15
✎
08:19
|
|Выбрать ЕСТЬNULL (СУММА(СменныйОтчетРозница.Сумма),0) КАК Сумма
замени на |СУММА(ЕСТЬNULL (СменныйОтчетРозница.Сумма,0)) КАК Сумма |
|||
14
1Сергей
28.07.15
✎
08:20
|
(9) Очень даже важно
СУММА(СменныйОтчетРозница.Сумма) |
|||
15
sevensword
28.07.15
✎
08:20
|
ошибка вылетает когда пытаюсь получить сумму по итогам двух запросов
Процедура РасчетПриходИпоКартам(Элемент) Записать(); ЗапросСуммыТипаОплат = Новый Запрос; ЗапросСуммыТипаОплат.Текст = "ВЫБРАТЬ | СменныйОтчетРозница.ВидОплаты.ТипОплаты, |ЕСТЬNULL(СУММА(СменныйОтчетРозница.Сумма),0) КАК Сумма |ИЗ | Документ.СменныйОтчет.Розница КАК СменныйОтчетРозница |ГДЕ |(СменныйОтчетРозница.ВидОплаты.ТипОплаты = &ТипОплаты) и (СменныйОтчетРозница.Ссылка=&Ссылка) | |СГРУППИРОВАТЬ ПО | СменныйОтчетРозница.ВидОплаты.ТипОплаты"; ЗапросСуммыТипаОплат.УстановитьПараметр("Ссылка",ЭтотОбъект.Ссылка); ЗапросСуммыТипаОплат.УстановитьПараметр("ТипОплаты",Перечисления.ТипыОплат.Наличные); РезультатЗапросаСТО = ЗапросСуммыТипаОплат.Выполнить(); ВыборкаСТО=РезультатЗапросаСТО.Выбрать(); Если ВыборкаСТО.Следующий()тогда Приход1=ВыборкаСТО.Сумма; КонецЕсли; ЗапросСуммыТипаОплат.УстановитьПараметр("ТипОплаты",Перечисления.ТипыОплат.ПлатежнаяКарта); РезультатЗапросаСТО = ЗапросСуммыТипаОплат.Выполнить(); ВыборкаСТО=РезультатЗапросаСТО.Выбрать(); Если ВыборкаСТО.Следующий()тогда ПоКартам1=ВыборкаСТО.Сумма; КонецЕсли; //товары ЗапросСуммыТипаОплат = Новый Запрос; ЗапросСуммыТипаОплат.Текст = "ВЫБРАТЬ | СменныйОтчетРозница.ВидОплаты.ТипОплаты, |ЕСТЬNULL(СУММА(СменныйОтчетРозница.Сумма),0) КАК Сумма |ИЗ | Документ.СменныйОтчет.Товары КАК СменныйОтчетРозница |ГДЕ |(СменныйОтчетРозница.ВидОплаты.ТипОплаты = &ТипОплаты) и (СменныйОтчетРозница.Ссылка=&Ссылка) | |СГРУППИРОВАТЬ ПО | СменныйОтчетРозница.ВидОплаты.ТипОплаты"; ЗапросСуммыТипаОплат.УстановитьПараметр("Ссылка",ЭтотОбъект.Ссылка); ЗапросСуммыТипаОплат.УстановитьПараметр("ТипОплаты",Перечисления.ТипыОплат.Наличные); РезультатЗапросаСТО = ЗапросСуммыТипаОплат.Выполнить(); ВыборкаСТО=РезультатЗапросаСТО.Выбрать(); Если ВыборкаСТО.Следующий()тогда Приход2=ВыборкаСТО.Сумма; КонецЕсли; ЗапросСуммыТипаОплат.УстановитьПараметр("ТипОплаты",Перечисления.ТипыОплат.ПлатежнаяКарта); РезультатЗапросаСТО = ЗапросСуммыТипаОплат.Выполнить(); ВыборкаСТО=РезультатЗапросаСТО.Выбрать(); Если ВыборкаСТО.Следующий()тогда ПоКартам2=ВыборкаСТО.Сумма; КонецЕсли; Приход=Приход1+ПРиход2; ПоКартам=Покартам1+Покартам2; КонецПроцедуры |
|||
16
Lex_Liven
28.07.15
✎
08:21
|
(15) Ты сначала суммируешь, а потом проверяешь, а не NULL ли?
Сделай наоборот. |
|||
17
Ващета
28.07.15
✎
08:25
|
ёмаё, не будет там null.. автор про null, пустое значение типа и неопределено почитай прежде чем запросы писать начать
|
|||
18
1Сергей
28.07.15
✎
08:25
|
(16) нет там NULL и не будет. У него соединение (явных) нет
|
|||
19
AntonyFO
28.07.15
✎
08:26
|
(16) а это зачем?
|
|||
20
Lex_Liven
28.07.15
✎
08:28
|
(19) Даже если будет NULL, то его нельзя сложить с чем-нибудь. Сначала его в 0 превратить надо, а потом суммировать.
|
|||
21
shpioleg
28.07.15
✎
08:40
|
(15) Выкинь это все. Сделай одним запросом.
|
|||
22
hhhh
28.07.15
✎
09:12
|
(20) СУММА() с этим нормально разбирается
|
|||
23
mistеr
28.07.15
✎
09:28
|
(20) Перечитай основы SQL.
|
|||
25
Vladal
28.07.15
✎
11:18
|
(0) {(3, 1)}: Синтаксическая ошибка "Выбрать"
<<?>>Выбрать ЕСТЬNULL (СУММА(СменныйОтчетРозница.Сумма),0) КАК Сумма Вот и убери слово Выбрать перед суммой. Да и вынести СУММУ за скобки: СУММА(ЕСТЬNULL(СменныйОтчетРозница.Сумма,0)) КАК Сумма Должно получиться так: "ВЫБРАТЬ | СменныйОтчетРозница.ВидОплаты.ТипОплаты, | СУММА(ЕСТЬNULL(СменныйОтчетРозница.Сумма,0)) КАК Сумма |ИЗ | Документ.СменныйОтчет.Розница КАК СменныйОтчетРозница |ГДЕ | (СменныйОтчетРозница.Ссылка=&Ссылка) | И (СменныйОтчетРозница.ВидОплаты.ТипОплаты = &ТипОплаты) | |СГРУППИРОВАТЬ ПО | СменныйОтчетРозница.ВидОплаты.ТипОплаты"; То же самое тебе сделает и конструктор запроса - вынесет сумму за скобки |
|||
26
nikolsmir
28.07.15
✎
20:59
|
други, вы о чем! null внутри суммы прекрасно обработается!!! так же как и количество и прочие агрегатные функции - все это прекрасно работает с null. просто убрать проверку на null и все!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |