Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) ВТ + соединение + группировка по присоед табл (число прочтений - 3091 )
mixsture
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 14
Зарегистрирован: 17. Июня 2008
ВТ + соединение + группировка по присоед табл
17. Июня 2008 :: 17:50
Печать  
Имеем такой запрос
     ТекстЗапроса = "
     |SELECT
     |*
     |FROM
     |$РегистрОстаткиОбороты.ОстаткиТМЦ(:НачДата,:КонДата~,,,LEFT JOIN $Справочник.Номенклатура as СпрНом on СпрНом.ID = Номенклатура,,(Номенклатура),) as Рег;
     |";                                                    


Вопрос: а как использовать поля присоединенной таблицы в группировке? (Например, хочу сгруппировать по СпрНом.Descr)

При просмотре сгенеренного sql видно, что на нижнем вложенном запросе присоединение нормально участвует - а в запросы выше не выбирается.
На запись в группировки выражений аля "СпрНом.Descr" получаем ошибку про недопустимое значение параметра (7).
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: ВТ + соединение + группировка по присоед табл
Ответ #1 - 17. Июня 2008 :: 19:01
Печать  
эээ ну вообще-то насколько я понял - внутри ВТ описываются именно
Код
Выбрать все
INNER JOIN 


то есть фильтры виртуальной таблицы.
для твоего вида соединений используй соединение к виртуальной таблице снаружи
  
Наверх
IP записан
 
mixsture
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 14
Зарегистрирован: 17. Июня 2008
Re: ВТ + соединение + группировка по присоед табл
Ответ #2 - 18. Июня 2008 :: 06:24
Печать  
Соединение результата выборки из ВТ и таблиц возможно - но сильно усложняет логику при переписывании отчетов на прямые запросы. Скажем, то что легко пишется на внутреннем языке 1с - группировка по основному свойству - здесь приходится делать вне виртуальной таблицы. В итоге:
1) делим логику на несколько частей (фильтры придется писать в 2х местах), что само по себе плохо
2) необходимо включать посторонние группировки (например, для основного свойства нужно включить группировку номенклатуры - иначе не с чем соединять будет)
3) тащим с SQL сервера на клиента заведомо большой кусок данных (лишняя группировка)
4) внутри клиента приходится группировать заново с помощью таблицы значений или индексированной, что накладно.

Итог: хотелось бы функционала внутри ВТ. Тогда всю работу сделает sql и на клиенте останется лишь показать.
Я хочу понять, можно ли такое сейчас сделать? Если нет - то, думаю, стоит feature request сделать.
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: ВТ + соединение + группировка по присоед табл
Ответ #3 - 18. Июня 2008 :: 07:12
Печать  
На твой вопрос есть два ответа:
1) Не используй 1С++ и жди, пока этот функционал напишут
2) Используй 1С++ и реализуй нужное тебе самостоятельно, начиная от собственного написания этого запроса без использования вирт. таблиц.
А вообще - как бы ты себе представил запрос с твоими требованиями, при том, что тебе в следующий раз может понадобится сгруппировать по трем (а чего мелочиться, по пяти!) присоединенным справочникам?
  
Наверх
ICQ  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: ВТ + соединение + группировка по присоед табл
Ответ #4 - 18. Июня 2008 :: 07:23
Печать  
Цитата:
Соединение результата выборки из ВТ и таблиц возможно - но сильно усложняет логику при переписывании отчетов на прямые запросы.

а я вот не вижу например разницы написать JOIN внутри ВТ и за ней - разница то какая?
лиший alias прописать?
так зато все понятно и удобно.
  
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: ВТ + соединение + группировка по присоед табл
Ответ #5 - 18. Июня 2008 :: 07:47
Печать  
mixsture писал(а) 18. Июня 2008 :: 06:24:
но сильно усложняет логику при переписывании отчетов на прямые запросы

Забей...
Тем более погода хорошая... да еще приключилось Евро-2008...
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ВТ + соединение + группировка по присоед табл
Ответ #6 - 18. Июня 2008 :: 09:25
Печать  
это можно сделать только так:
SELECT
    СпрНом.Descr,
    ...
FROM $РегистрОстаткиОбороты.ОстаткиТМЦ(:НачДата,:КонДата~,,,,,(Номенклатура),) as Рег
LEFT JOIN $Справочник.Номенклатура as СпрНом on СпрНом.ID = Рег.Номенклатура
GROUP BY СпрНом.Descr

Кроме того в данном случае соединение снаружи таблицы потенциально эффективнее, так как соединение внутри ВТ произходит с большим количеством записей (может участвовать таблица движений) чем в результате ВТ.
  
Наверх
ICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ВТ + соединение + группировка по присоед табл
Ответ #7 - 18. Июня 2008 :: 10:33
Печать  
А кстати да, разрешить поля вложенных таблиц в секции <Измерение> - получилось бы интересно.  Класс Хотя концепция ВТ при этом изменится.  Круглые глаза
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
mixsture
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 14
Зарегистрирован: 17. Июня 2008
Re: ВТ + соединение + группировка по присоед табл
Ответ #8 - 19. Июня 2008 :: 04:00
Печать  
Да! Конечно, было бы медленнее - соединение на каждую строку из вирт таблиц движений и итогов - зато было бы подобно языку 1с: добавил все соединения ВТ, указал все измерения и фильтры - и вся выборка данных готова. Т.е. совместимость выше со стандартными отчетами .

Тем более, тем, кому хочется скорости - никто не запрещает использовать соединение снаружи.

Да и ничего в концепции не изменилось бы особо. Просто парсеру нужно оценивать, что тащить с нижних запросов.

...Блин, был бы этот парсер на языке 1с - сам бы дописал...

  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: ВТ + соединение + группировка по присоед табл
Ответ #9 - 19. Июня 2008 :: 04:55
Печать  
Цитата:
сам бы дописал...

исходники открыты - вперед и с песней Улыбка только на C++ Улыбка
  
Наверх
IP записан
 
U_zer
Экс-Участник


Re: ВТ + соединение + группировка по присоед табл
Ответ #10 - 19. Июня 2008 :: 05:23
Печать  
mixsture писал(а) 19. Июня 2008 :: 04:00:
Да! Конечно, было бы медленнее - соединение на каждую строку - зато было бы подобно языку 1с:


Спасибо, ненадо! Наелись уже ...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать