Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Обработка движение товара - скорость и хитрый JOIN (число прочтений - 2536 )
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Обработка движение товара - скорость и хитрый JOIN
02. Февраля 2007 :: 09:37
Печать  
Есть обработка по движению товара (в модуле формы элемента справочника):

Код
Выбрать все
|Период с НачДата по КонДата;
|Товар = Регистр.Остатки.Товар;
|Партия = Регистр.Остатки.Партия;
|Склад = Регистр.Остатки.Склад;
|ТекДок = Регистр.Остатки.ТекущийДокумент;
|Остаток = Регистр.Остатки.Остаток;
|Функция ОстатокНачОст = НачОст(Остаток);
|Функция ОстатокПриход = Приход(Остаток);
|Функция ОстатокРасход = Расход(Остаток);
|Функция ОстатокКонОст = КонОст(Остаток);
|Группировка ТекДок;
|Условие(Товар = ВыбТовар);
|";

Если ВыбСклад.Выбран()=1 Тогда
     ТекстЗапроса=ТекстЗапроса+"Условие(Склад = ВыбСклад);"
КонецЕсли; 



Переписываю его на прямой запрос с использованием виртуальной таблицы:


Код
Выбрать все
|SELECT
|	Рег.Партия [Партия $Справочник.Партии],
|	Рег.ПозицияДокумента [ТекДок $Документ],
|	Рег.ВидДокумента ТекДок_вид,
|	CAST(LEFT(Рег.ПозицияДокумента, 8) as datetime) ДатаДок,
|	Рег.ОстатокНачальныйОстаток Нач,
|	Рег.ОстатокПриход Прих,
|	Рег.ОстатокРасход Расх,
|	Рег.ОстатокКонечныйОстаток Кон
|FROM
|	$РегистрОстаткиОбороты.Остатки(:НачДата, :КонДата~, Документ ,
| 	         ,
| 	         ,
| 	         Товар = :ВыбТовар "+?(ВыбСклад.Выбран()=1,"AND Склад = :ВыбСклад","")+",
| 	         (Партия) , (Остаток)) Рег
|"; 



2 вопроса:

1.Такая конструкция на маленьком периоде работает значительно медленнее штатного запроса. На большом - примерно так же, может чуть быстрее. Как можно улучшить?
2.В результирующей ТЗ на форме нужно показывать отправителя и получателя из документа, который делал движение. С типизацией ТекДок всё понятно, но как выдернуть эти реквизиты из дока (чтобы выгружать запрос сразу на форму, а не вытаскивать их в переборе)? ТекДок может быть любым документом, реально ли как-нибудь сделать JOIN чтобы извлечь нужные реквизиты?
  
Наверх
 
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: Обработка движение товара - скорость и хитрый
Ответ #1 - 02. Февраля 2007 :: 14:39
Печать  
Что, прям ни одной мысли?  Ужас
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Обработка движение товара - скорость и хитрый
Ответ #2 - 02. Февраля 2007 :: 16:54
Печать  
Есть покамист тупая мысль по п. 2
Объединять через Union разные виды доков если надо сгруппировать и если это не общий реквизит
  

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



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: Обработка движение товара - скорость и хитрый
Ответ #3 - 03. Февраля 2007 :: 13:02
Печать  
Ревизит не общий.
Вопрос в том, какие доки попадут в результаты запроса? Ведь может попасть док одного вида, а может и пяти... И как их джойнить в такой ситауции? На первый взгляд - проще перебором  Нерешительный Думал может всё же есть возможность переделать на запрос
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Обработка движение товара - скорость и хитрый
Ответ #4 - 05. Февраля 2007 :: 14:39
Печать  
Какие напишешь такие и попадут

Выбрать Реквизит, еще что-то из
(
Выбрать Реквизит, что-то из ... где Вид = Реализация
Юнион
Выбрать Реквизит, что-то из ... где Вид = ПоступлениеТМЦ
...)

Вот интересно как такое сделать чтобы побыстрее было
  

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



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: Обработка движение товара - скорость и хитрый
Ответ #5 - 06. Февраля 2007 :: 10:25
Печать  
Нда, так о скорости можно забыть... Если б грузили движение за год или как минимум за несколько месяцев! А так, на маленьких периодах, да с кучей джойнов - будет гораздо медленнее  Плачущий
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать