Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Помогите найти ошибку...

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

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

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

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

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

ВЫБОР КОГДА ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок ЕСТЬ NULL
    ТОГДА ...
    ИНАЧЕ ВЫРАЗИТЬ(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток / ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок,0)
   Йохохо
 
23 - 31.07.19 - 10:10
(20) что курили с утра?
ВЫРАЗИТЬ(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток / ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.Номенклатура.КратностьПоставок,0)
   sqr4
 
24 - 31.07.19 - 10:11
(22) да выше проверка на ноль, вы совсем чтоли не глядите
   sqr4
 
25 - 31.07.19 - 10:15
(20) нет дело именно в той строке и именно в типах которые туда передаются
   bootini
 
26 - 31.07.19 - 11:38
а ежели плюсики из кавычек вынуть?
ВЫРАЗИТЬ(МАКСИМУМ(ТабЦена.Цена * (100 + &СкидкиНаценки + "Строка(ном)") / 100) КАК ЧИСЛО(10,0)) КАК Цена
   OrenDi
 
27 - 31.07.19 - 12:21
(26) Тогда пишет - Встроенная функция может быть использована только в выражении. (Строка)
   PiotrLoginov
 
28 - 31.07.19 - 17:30
(27) упрости запрос. форумчане так долго будут с текстом запроса париться. тебе надо оставить только запрос поля, с которым есть проблемы, и добиться его работоспособности. а потом уже добавить остальные поля.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.