Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Непонятки с парсером ВТ (число прочтений - 3410 )
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Непонятки с парсером ВТ
01. Апреля 2008 :: 11:35
Печать  
ЕСть запрос:
     |select Рег.Товар
     |from $РегистрОстатки.ПартииТоваров(,,
     |Товар in (select Рег1.Товар from $РегистрОстатки.ОстаткиТоваров() Рег1)
     |,Товар,ОстатокТовара) Рег
Обращаю внимание что вложенный это ВТ.
а вот что выдает Отладка:
Код
Выбрать все
select Рег.Товар
from (
select
rg1179_vt.sp1159 as Товар,
sum(rg1179_vt.sp1165) as ОстатокТовараОстаток
from rg1173 as rg1179_vt (nolock)
where rg1179_vt.period={d '2008-04-01'}
and (rg1179_vt.sp1159 in (select Рег1.Товар from (
select
rg1179_vt.sp1174 as rg1179_vt.sp1158,
rg1179_vt.sp1175 as rg1179_vt.sp1159,
rg1179_vt.sp1176 as Склад,
rg1179_vt.sp1177 as ОстатокТовараОстаток
from rg1179 as rg1179_vt (nolock)
where rg1179_vt.period={d '2008-04-01'}
and (
rg1179_vt.sp1177 <> 0
)
) as Рег1))
group by
rg1179_vt.sp1159
having
sum(rg1179_vt.sp1165) <> 0
) as Рег
 



Запрос.ВЫполнитьИнструкцию(Текст).ВыбратьСтроку();
{C:\BASE\STO\EXTFORMS\ЗАПРОС.ERT(11)}: State 42000, native 170, message [Microsoft][ODBC SQL Server Driver][SQL Server]Line 11: Incorrect syntax near '.'.

Таблицы регистров разные, а имя ВТ одинаковое.
Это глюк у меня или у парсера?
как такое может быть:
from rg1173 as rg1179_vt (nolock)
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Непонятки с парсером ВТ
Ответ #1 - 01. Апреля 2008 :: 12:18
Печать  
Опосля анализа пришел вот такому запросу:
Код
Выбрать все
select Рег.Товар
from (
select
rg1173_vt.sp1159 as Товар,
sum(rg1173_vt.sp1165) as ОстатокТовараОстаток
from rg1173 as rg1173_vt (nolock)
where rg1173_vt.period={d '2008-04-01'}
and (rg1173_vt.sp1159 in (
select РегОст.Товар as id from (
select
rg1179_vt.sp1175 as Товар,
sum(rg1179_vt.sp1177) as ОстатокТовараОстаток
from rg1179 as rg1179_vt (nolock)
where rg1179_vt.period={d '2008-04-01'}
group by
rg1179_vt.sp1175
having
sum(rg1179_vt.sp1177) <> 0
) as РегОст))
group by
rg1173_vt.sp1159
having
sum(rg1173_vt.sp1165) <> 0
) as Рег
 


Че бум делать
  
Наверх
 
IP записан
 
sml
Full Member
***
Отсутствует


I Love 1С++!

Сообщений: 186
Зарегистрирован: 28. Февраля 2008
Re: Непонятки с парсером ВТ
Ответ #2 - 02. Апреля 2008 :: 04:54
Печать  
varelchik писал(а) 01. Апреля 2008 :: 11:35:
(select Рег1.Товар from $РегистрОстатки.ОстаткиТоваров() Рег1)


я так думаю, что здеся $ перед выделением не хватает
  
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: Непонятки с парсером ВТ
Ответ #3 - 02. Апреля 2008 :: 05:16
Печать  
sml писал(а) 02. Апреля 2008 :: 04:54:
я так думаю, что здеся $ перед выделением не хватает

Зря ты так думаешь. В данном случае мы обращаемся к полю виртуальной таблицы, а не к измерению регистра, поэтому все правильно.
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Непонятки с парсером ВТ
Ответ #4 - 02. Апреля 2008 :: 05:27
Печать  
Так все таки почему
from rg1173 as rg1179_vt (nolock)?
должно же быть
from rg1173 as rg1173_vt (nolock)
ну и дальше вообще бардак пошел.
  
Наверх
 
IP записан
 
novichek
Экс-Участник


Re: Непонятки с парсером ВТ
Ответ #5 - 02. Апреля 2008 :: 06:01
Печать  
Видимо парсер обрабатывает текст запроса в один проход, а нифига не рекурсивно. Выход, ИМХО, - скидывать вложенный подзапрос во временную табличку. Если данных предполагается много то ее потом можно еще и проиндексировать, что может дать дополнительный выигрыш.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Непонятки с парсером ВТ
Ответ #6 - 02. Апреля 2008 :: 06:18
Печать  
varelchik зарегистрируй баг
  
Наверх
ICQ  
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Непонятки с парсером ВТ
Ответ #7 - 02. Апреля 2008 :: 06:37
Печать  
Nick писал(а) 02. Апреля 2008 :: 06:18:
varelchik зарегистрируй баг

Подтветждаешь?
Седня обязательно зарегю.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Непонятки с парсером ВТ
Ответ #8 - 02. Апреля 2008 :: 06:52
Печать  
А попробуй через join такая же фигня получится?
  
Наверх
ICQ  
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Непонятки с парсером ВТ
Ответ #9 - 02. Апреля 2008 :: 08:29
Печать  
Nick писал(а) 02. Апреля 2008 :: 06:52:
А попробуй через join такая же фигня получится?

Такой запрос парсит нормально
select РегП.*
from $РегистрОстатки.ПартииТОваров() РегП
inner join $РегистрОстатки.ОстаткиТоваров()РегР on РегР.Товар=РегП.Товар

а вот такой:
select РегП.*
from $РегистрОстатки.ПартииТОваров(,
inner join $РегистрОстатки.ОстаткиТоваров()РегР on РегР.Товар=Товар
) РегП
Неверно распарсивает вложенный.
таже история from rg1173 as rg1179_vt (nolock)
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Непонятки с парсером ВТ
Ответ #10 - 02. Апреля 2008 :: 08:32
Печать  
varelchik писал(а) 02. Апреля 2008 :: 08:29:
Nick писал(а) 02. Апреля 2008 :: 06:52:
А попробуй через join такая же фигня получится?

Такой запрос парсит нормально
select РегП.*
from $РегистрОстатки.ПартииТОваров() РегП
inner join $РегистрОстатки.ОстаткиТоваров()РегР on РегР.Товар=РегП.Товар


Я не про это, я про вот что:

$РегистрОстатки.<ИмяРегистра>([<ГраницаРасчета>][,        <Соединение>][,        <Условие>][,        <Измерение>][,<Ресурс>]
) [as <Алиас>]
  
Наверх
ICQ  
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Непонятки с парсером ВТ
Ответ #11 - 02. Апреля 2008 :: 08:35
Печать  
Яж добавил.
второй запрос.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Непонятки с парсером ВТ
Ответ #12 - 02. Апреля 2008 :: 09:01
Печать  
varelchik писал(а) 02. Апреля 2008 :: 08:35:
Яж добавил.
второй запрос.


Я не видел что ты добавил Улыбка. Короче регай баг
  
Наверх
ICQ  
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Непонятки с парсером ВТ
Ответ #13 - 02. Апреля 2008 :: 09:31
Печать  
Баг зафиксировал.
Ждем решения от УВАЖАЕМЫХ РАЗРАБОТЧИКОВ!
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Непонятки с парсером ВТ
Ответ #14 - 02. Апреля 2008 :: 09:33
Печать  
Да и еще в догонку:
Таже история и $ПоследнееЗначение()
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать