|
v7: 1с 77 + SQL | ☑ | ||
---|---|---|---|---|
0
Lugano
24.09.15
✎
10:10
|
Добрый день!
Суть запроса: вытащить остатки номенклатуры на определенном складе (место хранения - ячейка на стелаже). При таком тексте (указан ниже) Пишет "Syntax error". Без РегистрОстатки.ОстаткиТМЦ запрос отрабатывает отлично. |SELECT | СпрМХН.ID as [МХН $Справочник.МестаХраненияНоменклатуры], | СпрНом.CODE as Код, | RTrim($СпрНом.Артикул) as Артикул, | RTrim(СпрНом.DESCR) as Наименование, | РегИтоги.КоличествоОстаток as Остатки, | СпрНом.ID as [Номенклатура $Справочник.Номенклатура] |FROM | $Справочник.Номенклатура as СпрНом (NOLOCK) |INNER JOIN | $Справочник.МестаХраненияНоменклатуры as СпрМХН (NOLOCK) ON СпрНом.ID=СпрМХН.ParentExt (NOLOCK) |left JOIN | $РегистрОстатки.ОстаткиТМЦ(,,,(Номенклатура),(Количество)) as РегИтоги ON РегИтоги.Номенклатура=СпрНом.ID |WHERE | $СпрМХН.МестоХранения=:МХ |ORDER BY СпрНом.CODE |" Если все параметры в РегистрОстатки.НазваниеРегистра() не обязательны, то в чем же тогда проблема? Буду благодарен за любую подсказку. |
|||
1
Злопчинский
24.09.15
✎
10:14
|
Я не спец по этому вопросу
Но такой синтаксис по моему вообще неприемлем в прямом запросе Могу ошибаться |
|||
2
ДенисЧ
24.09.15
✎
10:17
|
| $РегистрОстатки.ОстаткиТМЦ(,,,(Номенклатура),(Количество)) as РегИтоги ON $РегИтоги.Номенклатура=СпрНом.ID
Не? |
|||
3
Lugano
24.09.15
✎
10:20
|
ДенисЧ, нет... ругается .." неизвестное метаимя или алиас "$РегИтоги""
|
|||
4
akaBrr
24.09.15
✎
10:21
|
$Справочник.МестаХраненияНоменклатуры as СпрМХН (NOLOCK) ON СпрНом.ID=СпрМХН.ParentExt (NOLOCK)
второй nolock лишний |
|||
5
Lugano
24.09.15
✎
10:24
|
akaBrr, тоже самое... "Syntax error".
|
|||
6
patapum
24.09.15
✎
10:24
|
(3) если ты делаешь виртуальную таблицу, то обращаться к ее полям надо без $.
только непонятно, к тебя в запросе нет ни одного $РегИтоги, а ругается на это? или я не проснулся с утра? |
|||
7
Lugano
24.09.15
✎
10:27
|
(6) Проверил то что написал ДенисЧ... 4 комент с его исправлением
|
|||
8
patapum
24.09.15
✎
10:31
|
(7) да, теперь похоже проснулся ))).
а так вообще error без объяснений? я в таких случаях начинаю упрощать до работающего, смотрю, на чем перестает работать. а если nolock-и вообще убрать, работает? |
|||
9
Lugano
24.09.15
✎
10:34
|
Вот что пишет
"FAILED! ICommandText::Execute(): Syntax error." Без nolock тоже самое |
|||
10
ДенисЧ
24.09.15
✎
10:36
|
А если сказать Отладка(1)?
|
|||
11
akaBrr
24.09.15
✎
10:36
|
(9) отладку включи
|
|||
12
patapum
24.09.15
✎
10:38
|
то есть ломает запрос добавления left join $РегистрОстатки.ОстаткиТМЦ? или выбор поля из него?
вроде таблица остатков написана правильно, но попробуй выбор только из нее сделать, будет работать? |
|||
13
Lugano
24.09.15
✎
10:41
|
(12) ломает запрос добавления left join $РегистрОстатки.ОстаткиТМЦ
|
|||
14
akaBrr
24.09.15
✎
10:41
|
(13) с отладкой что показывает?
|
|||
15
PiterPrg
24.09.15
✎
10:46
|
По-моему, когда 1 измерение или 1 ресурс скобки не нужны, т.е.
$РегистрОстатки.ОстаткиТМЦ(,,, Номенклатура, Количество) |
|||
16
patapum
24.09.15
✎
10:51
|
(13) а просто выбор работает?
SELECT TOP 20 * from $РегистрОстатки.ОстаткиТМЦ(,,,(Номенклатура),(Количество)) as РегИтоги |
|||
17
Lugano
24.09.15
✎
10:55
|
(16) тоже самое "Syntax error"
|
|||
18
Lugano
24.09.15
✎
11:05
|
|SELECT
| РегИтоги.КоличествоОстаток as Остаток |FROM | $Справочник.Номенклатура as Спр (nolock) |LEFT JOIN | $РегистрОстатки.ОстаткиТМЦ(,, | Номенклатура=:Номенклатура,(Номенклатура),(Количество)) as РегИтоги ON РегИтоги.Номенклатура=Спр.ID Вот так отработал... не уж то все же условие обязательно |
|||
19
patapum
24.09.15
✎
11:10
|
(18) не должно быть обязательным. у меня работает без него. на крайняк напиши 1=1 )))
|
|||
20
kudlach
24.09.15
✎
14:02
|
|INNER JOIN
| $Справочник.МестаХраненияНоменклатуры as СпрМХН (NOLOCK) ON СпрНом.ID=СпрМХН.ParentExt (NOLOCK) Только меня смущает, что идет попытка прямого соединения Номенклатуры со Складами ? Теплого с мягким.... Ошибки это , может, и не выдаст, но точно пустую таблицу покажет.... |
|||
21
ДенисЧ
24.09.15
✎
14:06
|
(20) ParentExt - это владелец. У него скорее всего склады эти подчинены номенклатуре
|
|||
22
Boroda
24.09.15
✎
14:22
|
В параметрах регистра можно сразу задать соединение, а после второй запятой использовать в условии.
Я бы написал так: |SELECT | РегИтоги.КоличествоОстаток as Остаток |FROM $РегистрОстатки.ОстаткиТМЦ(, | INNER JOIN $Справочник.МестаХраненияНоменклатуры as СпрМХН (NOLOCK) ON Номенклатура = СпрМХН.ParentExt (NOLOCK), | Номенклатура=:Номенклатура AND СпрМХН.ID = :ВыбМестоХранения, | (Номенклатура),(Количество)) as РегИтоги |
|||
23
Boroda
24.09.15
✎
14:26
|
к (22) в запросе, в соединении один (NOLOCK) лишний - брал копированием из (20)
|
|||
24
Boroda
24.09.15
✎
14:27
|
из-за этого и синт.ошибка наверное...
|
|||
25
Ёпрст
24.09.15
✎
14:35
|
(0) запрос к дбф, да ?
:) |
|||
26
kudlach
24.09.15
✎
15:06
|
(21) представляешь себе гемор - на каждую номенклатуру заводить пачку подчиненных складов!.....
Руки бы поотрывал автору такой конфы. |
|||
27
ДенисЧ
24.09.15
✎
15:07
|
(26) почему пачку?
Справочник склады - там 3 элемента... А номенклатуру разбрасывать программно по разным признакам |
|||
28
akaBrr
24.09.15
✎
15:31
|
(25) это будет финиш, предлагаю забанить в таком случае ТСа
|
|||
29
trad
25.09.15
✎
08:48
|
(25) не, не дбф, см (18)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |