Переключение на Главную Страницу Страницы: 1 [2] 3 4 ... 8 ОтправитьПечать
Очень популярная тема (более 25 ответов) Выборка остатков прямым запросом (число прочтений - 30162 )
Foma
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 61
Зарегистрирован: 16. Сентября 2010
Re: Выборка остатков прямым запросом
Ответ #15 - 16. Сентября 2010 :: 08:26
Печать  
Получилось таким вот образом:
стрдатыТА=строка(формат(НачМесяца(ПолучитьДатуТА()),"ДГГГГММДД"));
   
     //RS.Отладка(1);
     
     ТекстЗапроса = "
     |SELECT
     |      SUM($Рег.Количество) as Количество
     |FROM
     |      $РегистрИтоги.ОстаткиТМЦ as Рег
     |WHERE
     |      Рег.PERIOD= cast ('"+стрдатыТА+"'as datetime) AND
     |      $Рег.Номенклатура = ? AND
     |      $Рег.Склад IN (SELECT Val From #ГруппаСкладов) AND
     |      $Рег.Фирма IN (SELECT Val From #ГруппаФирм) ";
     
     RS.УложитьСписокОбъектов(парСклад,"#ГруппаСкладов","Склады");
     RS.УложитьСписокОбъектов(ФирмаДляОстатковТМЦ,"#ГруппаФирм","Фирмы");
     RS.Подготовить(ТекстЗапроса);
     RS.ПостроитьПараметры();
     RS.УстПараметр(1,парНом);
     
     КолОст = RS.ВыполнитьСкалярный();
     
     Возврат КолОст;

Спасибо всем огромное!!!
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Выборка остатков прямым запросом
Ответ #16 - 16. Сентября 2010 :: 10:19
Печать  
И что, так быстрее работает, чем СводныйОстаток на ТА?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Выборка остатков прямым запросом
Ответ #17 - 16. Сентября 2010 :: 10:23
Печать  
Neo писал(а) 16. Сентября 2010 :: 10:19:
И что, так быстрее работает, чем СводныйОстаток на ТА?

А разве сводный остаток считает по любому
подмножеству складов и/или фирм ?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Выборка остатков прямым запросом
Ответ #18 - 16. Сентября 2010 :: 10:29
Печать  
Z1 писал(а) 16. Сентября 2010 :: 10:23:
Neo писал(а) 16. Сентября 2010 :: 10:19:
И что, так быстрее работает, чем СводныйОстаток на ТА?

А разве сводный остаток считает по любому
подмножеству складов и/или фирм ?

Ну вообще то да, если перед этим на регистр фильтр наложить.
Только вот не быстрее, это точно
Улыбка
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Выборка остатков прямым запросом
Ответ #19 - 16. Сентября 2010 :: 10:30
Печать  
Нет,
я имел в виду в принципе, будет ли такой механизм в форме списка (через параметризованный прямой запрос) работать быстрее, чем СводныйОстаток на ТА (берем самый просто случай, когда надо брать 1 склад)? Просто интересно, так как у нас пока все стандартно, и стоит ли этим заморачиваться...
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Выборка остатков прямым запросом
Ответ #20 - 16. Сентября 2010 :: 10:32
Печать  
Eprst писал(а) 16. Сентября 2010 :: 10:29:
Z1 писал(а) 16. Сентября 2010 :: 10:23:
Neo писал(а) 16. Сентября 2010 :: 10:19:
И что, так быстрее работает, чем СводныйОстаток на ТА?

А разве сводный остаток считает по любому
подмножеству складов и/или фирм ?

Ну вообще то да, если перед этим на регистр фильтр наложить.
Только вот не быстрее, это точно
Улыбка

Об этом вообще (наложить фильтр на регистр ) уже забыл.
улучшить #15 можно если
1.если можно заменить in на =  в случае когда склад и/или фирма  )  только один элемент ( не папка ).




  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Выборка остатков прямым запросом
Ответ #21 - 16. Сентября 2010 :: 10:39
Печать  
Просто где-то встречал, по-моему, даже на этом форуме, мысль о том, что СводныйОстаток на ТА уже некуда оптимизировать, и быстрее не получится. Вот и думаю, стоит ли овчинка выделки?

У автора топика каковы результаты, стало быстрее?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Выборка остатков прямым запросом
Ответ #22 - 16. Сентября 2010 :: 10:44
Печать  
Neo писал(а) 16. Сентября 2010 :: 10:30:
Нет,
я имел в виду в принципе, будет ли такой механизм в форме списка (через параметризованный прямой запрос) работать быстрее, чем СводныйОстаток на ТА (берем самый просто случай, когда надо брать 1 склад)? Просто интересно, так как у нас пока все стандартно, и стоит ли этим заморачиваться...

Ну тогда нужно точное описание Вашей задачи.
Склад один Склад это элемент или папка.
Если элемент то надо обязательно in заменять на #

Если папка то надо как минимум знать какой из вариантов
1.Произвольная папка
2. Внутри заданной папки находятся только элементы
тогда можно сделать условие на parentid
3.У заданной папки может быть много вложений но листья и группы не могут иметь одного родителя - Тогда надо строить дерево папок во временную таблицу и  in на parentid к этой вр.таблице.
( не знаю насколько написанное понятно ).
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Выборка остатков прямым запросом
Ответ #23 - 16. Сентября 2010 :: 10:45
Печать  
Neo писал(а) 16. Сентября 2010 :: 10:39:
Просто где-то встречал, по-моему, даже на этом форуме, мысль о том, что СводныйОстаток на ТА уже некуда оптимизировать, и быстрее не получится. Вот и думаю, стоит ли овчинка выделки?

У автора топика каковы результаты, стало быстрее?

не куда оптимизировать и имеет ли смысл оптимизировать
вот в чем вопрос. а куда оптимизировать смотри #22

PS еще можно оптимизировать саму укладку
УложитьСписокОбъектов - т.е. переписав ее скрипт заполнения временной таблицы ( об этом была моя ветка в курилке ) - но
это надо делать внутри 1с++.
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Выборка остатков прямым запросом
Ответ #24 - 16. Сентября 2010 :: 10:51
Печать  
Да задача такая же, как у автора в теме.

Есть форма списка справочника товары. Есть текстовая колонка с функцией, которая возвращает остаток по текущему товару (например, на конкретном складе, либо по группе складов). Остаток считается как СводныйОстаток на ТА.

Вопрос в том, будет ли работать быстрее, если это переписать как-то так, как сделано в (15)? Интересует опыт практической реализации данной задачи у других участников.
  
Наверх
 
IP записан
 
Foma
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 61
Зарегистрирован: 16. Сентября 2010
Re: Выборка остатков прямым запросом
Ответ #25 - 16. Сентября 2010 :: 10:53
Печать  
Стандартными методами 1С СводныйОстаток или ВыгрузитьИтоги на SQL были жуткие тормоза. Выше приведенным способом - быстрее. Наверняка еще можно оптимизировать этот запрос (т.к. он только по остаткам, а еще нужно вычитать Резервы), но и это уже отлично работает.
Стандартными методами 1С:
переход со строки на строку = 3-5 сек
Прямым запросом:
< 1 сек
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Выборка остатков прямым запросом
Ответ #26 - 16. Сентября 2010 :: 10:59
Печать  
Цитата:
Стандартными методами 1С:
переход со строки на строку = 3-5 сек


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

Может у вас там какие-то временные итоги высчитывает, или регистр незакрывается, вот оно так и тормозит
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Выборка остатков прямым запросом
Ответ #27 - 16. Сентября 2010 :: 11:01
Печать  
Переходи на табличное поле, там расчет будет для всех видимых строк сразу, 1 запрос летит на сервер, а не куча мелких для каждой строки.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Выборка остатков прямым запросом
Ответ #28 - 16. Сентября 2010 :: 11:02
Печать  
Neo писал(а) 16. Сентября 2010 :: 10:51:
Да задача такая же, как у автора в теме.

Есть форма списка справочника товары. Есть текстовая колонка с функцией, которая возвращает остаток по текущему товару (например, на конкретном складе, либо по группе складов). Остаток считается как СводныйОстаток на ТА.

Вопрос в том, будет ли работать быстрее, если это переписать как-то так, как сделано в (15)? Интересует опыт практической реализации данной задачи у других участников.

конечно будет быстрее. (Если список склад  фирм не изменился
с предыдущего раза  то его не нужно заново вычислять вот тебе и еще один выигрыш только назвать как нибудь длиннее
#МойСписокСкладовДляСтандартнСпискаТовары)
Также если узнать каким либо образом все отображенные товары
то остатки по ним можно вытащить одним запросом , а не столько
раз сколько товаров.

Также в #15 можно поставить (nolock). Нужно ли это делать зависит от Вашей  задачи.

  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Выборка остатков прямым запросом
Ответ #29 - 16. Сентября 2010 :: 11:06
Печать  
Цитата:
Переходи на табличное поле, там расчет будет для всех видимых строк сразу, 1 запрос летит на сервер, а не куча мелких для каждой строки.


Ну это понятно, просто рассматриваю все варианты)) Если на ТП переходить, то это же надо вообще всю форму переделывать (всякие панельки, дерево групп, механизм копирования и т.п.). Чувствую, много гемороя предстоит  Очень довольный
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 ... 8
ОтправитьПечать