Имя: Пароль:
1C
1С v8
Неверные параметры "*" при анализе текста запроса
,
0 ВагонНеЗнаний
 
29.09.15
10:59
Всем привет. Нахожусь в некотором ступоре, ибо не понимаю, почему анализатор синтаксиса текста запроса ругается.
В запросе в выборе поля пишу:
ВЫБОР КОГДА &РасчетЦеныНаОсновеКоэффициентов ТОГДА ЕСТЬNULL(BDS_СебестоимостьИнвойс.Значение, 0) * ЕСТЬNULL(BDS_КНаценкиЦены.Значение, 0)
ИНАЧЕ ЕСТЬNULL(ВЫБОР КОГДА БазовыеЦены.Цена = 0 И БазовыеЦены.ТипЦен.Рассчитывается ТОГДА ЦеныНоменклатурыРассчитываемые.Цена ИНАЧЕ БазовыеЦены.Цена
КОНЕЦ, 0)
КОНЕЦ КАК Цена
Пишет неверные параметры "*". С каких это пор, нельзя делать арифметические операции над полями, да еще и аккуратно обернутые в ЕстьNULL?
1 Ненавижу 1С
 
гуру
29.09.15
11:01
не хватает скобки (не дописал оператор:

ЕСТЬNULL(ВЫБОР КОГДА БазовыеЦены.Цена = 0 И БазовыеЦены.ТипЦен.Рассчитывается
2 ВагонНеЗнаний
 
29.09.15
11:07
Вот так-то работает (убрал арифметическую операцию умножения):
|ВЫБОР
|КОГДА &РасчетЦеныНаОсновеКоэффициентов ТОГДА ЕСТЬNULL(BDS_СебестоимостьИнвойс.Значение, 0)
|ИНАЧЕ ЕСТЬNULL(ВЫБОР
|КОГДА БазовыеЦены.Цена = 0
| И БазовыеЦены.ТипЦен.Рассчитывается
| ТОГДА ЦеныНоменклатурыРассчитываемые.Цена
|ИНАЧЕ БазовыеЦены.Цена
|КОНЕЦ, 0)
|КОНЕЦ КАК Цена
3 shuhard_серый
 
29.09.15
11:08
(0)[С каких это пор, нельзя делать арифметические операции над полями,]
можно делать в любом релизе
4 Гёдза
 
29.09.15
11:09
значение - составной тип. делай выразить
5 ВагонНеЗнаний
 
29.09.15
11:12
Вот упростил выборку поля:
|ВЫБОР
|КОГДА &РасчетЦеныНаОсновеКоэффициентов ТОГДА ЕСТЬNULL(BDS_СебестоимостьИнвойс.Значение, 0)*1
|ИНАЧЕ 1
|КОНЕЦ КАК Цена

Убираю операцию умножения - все ОК.
6 ВагонНеЗнаний
 
29.09.15
11:13
Может анализатор проверять как-то тип значения и в зависимости от этого писать ошибку (если может быть не числом)?
7 bolobol
 
29.09.15
11:13
Нет таких проблем на платформе 1С:Предприятие 8.2 (8.2.19.121)
8 1Сергей
 
29.09.15
11:14
попробуй в скобки взяьб
9 1Сергей
 
29.09.15
11:14
взять
10 bolobol
 
29.09.15
11:15
Нет таких проблем на платформе 1С:Предприятие 8.3 (8.3.5.1186)
11 shuhard_серый
 
29.09.15
11:15
(6) не а
12 bolobol
 
29.09.15
11:15
(6) А может быть "не числом" то, что вы хотите перемножить?
13 Ёпрст
 
29.09.15
11:17
(5) забить болт, обернуть всё в еще один запрос, сверху перемножить.
14 Гёдза
 
29.09.15
11:17
(10) Есть, на всех платформах
15 Гёдза
 
29.09.15
11:17
Правильный ответ в (4)
16 bolobol
 
29.09.15
11:17
(11) Не правда ваша - конструктор всё проверяет, анализатор тоже.
17 Ёпрст
 
29.09.15
11:17
и виноват тут не естьнулл, а кейс
18 Ненавижу 1С
 
гуру
29.09.15
11:19
(15) правильный ответ был еще в (1)
19 bolobol
 
29.09.15
11:19
(17) Тут никто не виноват. ТС пытается перемножить то, что не является числом.
20 Гёдза
 
29.09.15
11:20
(18) про скобку 1с не так бы ругалось
21 Ненавижу 1С
 
гуру
29.09.15
11:21
(20) уговорил, проблема решается в (4)
22 ВагонНеЗнаний
 
29.09.15
11:23
Да, скобки не помогают, 8.3.6.2152 тоже не спасла, значит в (4). Пошел выпрямлять. Спасибо.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший