Имя: Пароль:
1C
1С v8
Как использовать ЕСТЬ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 и все!