Вход | Регистрация
 
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) упрости запрос. форумчане так долго будут с текстом запроса париться. тебе надо оставить только запрос поля, с которым есть проблемы, и добиться его работоспособности. а потом уже добавить остальные поля.


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