Имя: Пароль:
1C
1С v8
Помогите найти ошибку...
, ,
0 OrenDi
 
31.07.19
08:00
Создал запрос, но пишет: синтаксическая ошибка - ВЫРАЗИТЬ(МАКСИМУМ(ТабЦена.Цена * (100 + &СкидкиНаценки"+Строка(ном)+") / 100) КАК ЧИСЛО(10,0)) КАК Цена,

|ВЫБРАТЬ
|ОстаткиТоваровКомпанииОстатки.Номенклатура КАК Номенклатура,
|МАКСИМУМ(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток) КАК КоличествоОстаток,
|ОстаткиТоваровКомпанииОстатки.Номенклатура.Производитель КАК Производитель,
|ОстаткиТоваровКомпанииОстатки.Номенклатура.Артикул КАК Артикул,
|"шт" КАК ЕдиницаИзмерения,
|ВЫБОР КОГДА ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок,0) >0 ТОГДА
|ВЫБОР КОГДА ОстаткиТоваровКомпанииОстатки.КоличествоОстаток / ВЫРАЗИТЬ(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток / ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок,0) КАК ЧИСЛО(10,0)) > 0
|ТОГДА ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок,0) * (ОстаткиТоваровКомпанииОстатки.КоличествоОстаток / ВЫРАЗИТЬ(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток / ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок,0) КАК ЧИСЛО(10,0)))
| КОНЕЦ        
| КОНЕЦ КАК КоличествоОстаток            
|ВЫРАЗИТЬ(МАКСИМУМ(ТабЦена.Цена * (100 + &СкидкиНаценки"+Строка(ном)+") / 100) КАК ЧИСЛО(10,0)) КАК Цена,
|ТабЦена.ТипЦен КАК ТипЦен,
|МАКСИМУМ(ТабЦена.Цена) КАК ЦенаЗакупки
|{ВЫБРАТЬ
|Номенклатура.*,
|КоличествоОстаток,
|Производитель.*,
|Артикул.*,
|ЕдиницаИзмерения.*,
|Цена,
|ТипЦен,
|ЦенаЗакупки}              
|ИЗ
|РегистрНакопления.ОстаткиТоваровКомпании.Остатки(
|&КонецПериода,Номенклатура В ИЕРАРХИИ (&Номенклатура"+Строка(ном)+") {(СкладКомпании).* КАК СкладКомпании}) КАК ОстаткиТоваровКомпанииОстатки
|ЛЕВОЕ СОЕДИНЕНИЕ ТабЦена КАК ТабЦена
|ПО ОстаткиТоваровКомпанииОстатки.Номенклатура = ТабЦена.Номенклатура
|И ТабЦена.ТипЦен = &ТипЦен"+Строка(ном)+"
|И ТабЦена.ПодразделениеКомпании = &ПодразделениеКомпании"+Строка(ном)+"
|ГДЕ
| ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок,0) < ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток,0)    
|СГРУППИРОВАТЬ ПО
|ОстаткиТоваровКомпанииОстатки.Номенклатура,
|ОстаткиТоваровКомпанииОстатки.Номенклатура.Производитель,
|ОстаткиТоваровКомпанииОстатки.Номенклатура.Артикул,
|ТабЦена.ТипЦен,
|ОстаткиТоваровКомпанииОстатки.Номенклатура.БазоваяЕдиницаИзмерения";
1 catena
 
31.07.19
08:06
И что там в Строка(ном)?
2 catena
 
31.07.19
08:07
"шт" - если хочешь получить строку внутри строки, используй двойные кавычки: ""шт""
3 OrenDi
 
31.07.19
08:10
ном =0;
Для Каждого стр ИЗ ТабТовары Цикл
ном = ном + 1;
Если ном > 1 Тогда
ТексЗапроса = ТексЗапроса + "
....
....
В самой обработке стоя двойные кавычки, а консоль запросов ругается на них - поэтому убрал
4 catena
 
31.07.19
08:11
(2)Сколько там этих ном'ов?
5 Zmich
 
31.07.19
08:13
(0). Запятая нужна после
|КОНЕЦ КАК КоличествоОстаток
6 OrenDi
 
31.07.19
08:14
(4) Сколько угодно может быть
7 OrenDi
 
31.07.19
08:15
(5)поставил, но теперь - ожидается выражение ) ВЫРАЗИТЬ(МАКСИМУМ(ТабЦена.Цена * (100 + &СкидкиНаценки"+Строка(ном)+") / 100) КАК ЧИСЛО(10,0)) КАК Цена,
8 OrenDi
 
31.07.19
08:16
(7) *ожидается выражение Выбрать
9 catena
 
31.07.19
08:24
(7)Криво поставил
(6)После 1000 будут сюрпризы
10 OrenDi
 
31.07.19
08:26
(9)
выпрями)
не более 50
11 hhhh
 
31.07.19
08:31
(10) поставь МАКСИМУМ(ВЫРАЗИТЬ(
12 OrenDi
 
31.07.19
08:47
(11) Так же ошибку выдает
13 catena
 
31.07.19
08:47
(10)Мне отсюда не видно, куда поставил
14 OrenDi
 
31.07.19
08:57
(13) вот сюда - | КОНЕЦ КАК КоличествоОстаток,
15 sqr4
 
31.07.19
09:24
&СкидкиНаценки - мне кажется, тут тоже тип невозможно определить и надо обернуть в выразить
16 _Дайвер_
 
31.07.19
09:54
ВЫРАЗИТЬ(МАКСИМУМ(ТабЦена.Цена * (100 + &СкидкиНаценки"+Строка(ном)+") / 100) КАК ЧИСЛО(10,0)) КАК Цена

ты получаешь число + строку и выражаешь как число 10,0 WTF, после КАК пиши СТРОКА()
17 sqr4
 
31.07.19
09:56
(16) да не смотри внимательнее, там текст запроса так формируется, "+Строка(ном)+", т.е получится +1+
18 _Дайвер_
 
31.07.19
10:04
(16) Нда, с преобразованиемми числа в строку есть проблема, на инфостарте видел статью как решали этот вопрос, но там жесть , я бы не стал так делать, через СКД есть вариант преобразования
19 sqr4
 
31.07.19
10:04
(18) млин, нет тут преобразования числа в строку
20 OrenDi
 
31.07.19
10:06
Еще один момент это запрос работал - нормально. Но потребовалось учитывать кратность - добавил вот эти строки:
|ВЫБОР КОГДА ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок,0) >0 ТОГДА
|ВЫБОР КОГДА ОстаткиТоваровКомпанииОстатки.КоличествоОстаток / ВЫРАЗИТЬ(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток / ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок,0) КАК ЧИСЛО(10,0)) > 0
|ТОГДА ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок,0) * (ОстаткиТоваровКомпанииОстатки.КоличествоОстаток / ВЫРАЗИТЬ(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток / ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок,0) КАК ЧИСЛО(10,0)))
| КОНЕЦ        
| КОНЕЦ КАК КоличествоОстаток

После и начались ошибки. Что то в них не так (более ни чего не добавлялось).
21 hhhh
 
31.07.19
10:08
(16) да не, у него числа там
22 VS-1976
 
31.07.19
10:10
(20) Круто ВЫРАЗИТЬ(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток / ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок,0)

Тут можно и деление на 0 получить...

НУЖНО ДЕЛАТЬ В ТАКИХ СЛУЧАЯХ ПРИМЕРНО ТАК:

ВЫБОР КОГДА ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок ЕСТЬ NULL
    ТОГДА ...
    ИНАЧЕ ВЫРАЗИТЬ(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток / ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок,0)
23 Йохохо
 
31.07.19
10:10
(20) что курили с утра?
ВЫРАЗИТЬ(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток / ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок,0)
24 sqr4
 
31.07.19
10:11
(22) да выше проверка на ноль, вы совсем чтоли не глядите
25 sqr4
 
31.07.19
10:15
(20) нет дело именно в той строке и именно в типах которые туда передаются
26 bootini
 
31.07.19
11:38
а ежели плюсики из кавычек вынуть?

ВЫРАЗИТЬ(МАКСИМУМ(ТабЦена.Цена * (100 + &СкидкиНаценки + "Строка(ном)") / 100) КАК ЧИСЛО(10,0)) КАК Цена
27 OrenDi
 
31.07.19
12:21
(26) Тогда пишет - Встроенная функция может быть использована только в выражении. (Строка)
28 PiotrLoginov
 
31.07.19
17:30
(27) упрости запрос. форумчане так долго будут с текстом запроса париться. тебе надо оставить только запрос поля, с которым есть проблемы, и добиться его работоспособности. а потом уже добавить остальные поля.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.