Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Помогите переделать 1сный запрос  в прямой (число прочтений - 1903 )
g00d
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 68
Зарегистрирован: 13. Ноября 2006
Помогите переделать 1сный запрос  в прямой
18. Июня 2008 :: 06:38
Печать  
Есть закой запрос, не очень быстрый, но и не медленный
Код
Выбрать все
		|Period from ed till ed;
		|Товар=Register.ОстаткиТоваров.Товар, Register.РезервыТоваров.Товар, Register.Недогруз.Товар;
		|Подраздел = Регистр.ОстаткиТоваров.Склад.ПривязкаКподразделению, зделение;
		|РегОстаток = Register.ОстаткиТоваров.ОстатокТовара;
		|Function Остаток = EndRest(РегОстаток);
		|РегРезерв = Register.РезервыТоваров.РезервТовара;
		|Function Резерв = EndRest(РегРезерв);
		|РегДолг = Register.Недогруз.ОстатокТовара;
		|Function Долг = EndRest(РегДолг);
		|Group Товар without groups;
		|"+?(ОтбПодр=1,"Условие (Подраздел=Подразд);","")+"
		|Condition (РеальныйСписокТоваров.Belong(Товар)=1);
 


хочу попытаться ускорить его
вообще стоит переписывать ?
получаю остатки с трех регистров

Код
Выбрать все
SELECT $ОстаткиТоваров.Товар [Товар $Reference.Товары]
	, $ПоследнееЗначение.Склады.ПривязкаКподразделению($ОстаткиТоваров.Склад,) подр
	, $ОстаткиТоваров.Склад Склад
	, Sum($ОстаткиТоваров.ОстатокТовара) Остаток
	, Sum($Недогруз.ОстатокТовара) Долг
	, Sum($РезервыТоваров.РезервТовара) Резерв
FROM $Register.ОстаткиТоваров AS ОстаткиТоваров
	FULL OUTER JOIN $Register.РезервыТоваров AS РезервыТоваров ON $ОстаткиТоваров.Товар = $РезервыТоваров.Товар
	FULL OUTER JOIN $Register.Недогруз AS Недогруз ON $ОстаткиТоваров.Товар = $Недогруз.Товар
LEFT JOIN
    $Справочник.Склады as СпрС ON СпрС.ID = $ОстаткиТоваров.Склад
GROUP BY $ОстаткиТоваров.Товар, $ОстаткиТоваров.Склад
order BY $ОстаткиТоваров.Товар 



а как обратится к общему реквизиту документов "Подразделение" не пойму...
помогите пожалуйста
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Помогите переделать 1сный запрос  в прямой
Ответ #1 - 18. Июня 2008 :: 06:54
Печать  
У тебя каждое подразделение - это свой реквизит в каждом регистре - поэтому надо делать отдельное условие к каждому из регистров
  
Наверх
ICQ  
IP записан
 
g00d
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 68
Зарегистрирован: 13. Ноября 2006
Re: Помогите переделать 1сный запрос  в прямо
Ответ #2 - 18. Июня 2008 :: 07:10
Печать  
Salimbek писал(а) 18. Июня 2008 :: 06:54:
У тебя каждое подразделение - это свой реквизит в каждом регистре - поэтому надо делать отдельное условие к каждому из регистров

не совсем так, поторопился я отправить вопрос

- Подразделение - это общий реквизит Документов

- Регистр.ОстаткиТоваров.Склад - у каждого элемента справочника складов есть привязка к подразделению, реквизит "ПривязкаКподразделению"  отсюда я получаю привязку остатков к подразделению

- Регистр.Недогруз.ДокОснование - ссылка на документ неопределенного вида из которого образовался недогруз\долг "<<Документ>>" 

- Регистр.РезервыТоваров.ДокОснование - ссылка на документ.Счет из которого образовался резерв
через ссылки на документы и обращаюсь к "Подразделение"

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


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Помогите переделать 1сный запрос  в прямо
Ответ #3 - 18. Июня 2008 :: 07:52
Печать  
Запрос можно ускорить штатно если использовать выгрузить итоги
Если бы подразделение было бы в регистре - в раз пять наверное
Condition (РеальныйСписокТоваров.Belong(Товар)=1); - заменить, смотри ЖКК
ЗЫ. Самому приятно читать на двух языках через слово свое творение?
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
g00d
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 68
Зарегистрирован: 13. Ноября 2006
Re: Помогите переделать 1сный запрос  в прямо
Ответ #4 - 18. Июня 2008 :: 08:33
Печать  
Цитата:
Запрос можно ускорить штатно если использовать выгрузить итоги
Если бы подразделение было бы в регистре - в раз пять наверное
Condition (РеальныйСписокТоваров.Belong(Товар)=1); - заменить, смотри ЖКК
ЗЫ. Самому приятно читать на двух языках через слово свое творение?

увы менять структуру данных, на данный момент немогу
а по поводу двуязычного кода, конфа такой досталась (писали разные кодеры в разное время)
сначала тоже раздражало, а теперь даже перестал замечать...

Condition (РеальныйСписокТоваров.Belong(Товар)=1); - глаз алмаз...  спсб
конечно надо так... 
Condition (Товар в РеальныйСписокТоваров);
замылились глаза уже
ощутимо быстрее кстати стало...

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать