Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Пустой результат запроса занимает память! (число прочтений - 2891 )
HonGilDon
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 10. Ноября 2008
Пустой результат запроса занимает память!
10. Ноября 2008 :: 13:29
Печать  
Подскажите пожалуйста как можно решить проблему захвата памяти после выполнения запроса - память захватывается даже если результат выполнения запроса пустой (drop #таблицы не помогает - память не чистится):
                       Если СписокИнгридиентов.РазмерСписка()>0 Тогда
                             ODBCRS.УложитьСписокОбъектов(СписокИнгридиентов, "#tmp_ingrid", "Номенклатура");
                       КонецЕсли;
                             
                       текст = "select $Регистр.ПартииТоваров.Товар tvr,
                                   |$Регистр.ПартииТоваров.Клиент kln,
                                   |$Регистр.ПартииТоваров.ПоДокументу DocPartii,
                                   |$Регистр.ПартииТоваров.Количество kol,
                                   |case when DEBKRED = 1 then $Регистр.ПартииТоваров.СуммаПродажиРуб
                                   |      else -$Регистр.ПартииТоваров.СуммаПродажиРуб end rub,
                                   |case when DEBKRED = 1 then аров.СуммаНДС","")+"
                                   |      else  варов.СуммаНДС","")+" end rub1
                                   |into #tmp "+
                                   "from $Регистр.ПартииТоваров (nolock) where IDDOC='"+
                                   MDW.ЗначениеВСтрокуБД(ТекДок)+"' and "+
                                   "$Регистр.ПартииТоваров.Фирма = '"+
                                   MDW.ЗначениеВСтрокуБД(ФирмаГП)+"'
                                   | and $Регистр.ПартииТоваров.Товар in (select val from #tmp_ingrid) and LINENO_ = '"+
                                   Строка(НайдСтр)+"'";

                       текст = MDW.ОбрМетаСКЛ(текст);
                       ODBCRS.Выполнить(текст);
                       ODBCRS.Выполнить("drop table #tmp_ingrid");
                       ODBCRS.Выполнить("drop table #tmp");
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Пустой результат запроса занимает память!
Ответ #1 - 11. Ноября 2008 :: 06:55
Печать  
Для начала я бы посоветовал использовать не Выполнить() а ВыполнитьСкалярный().
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Пустой результат запроса занимает память!
Ответ #2 - 11. Ноября 2008 :: 07:33
Печать  
как определяется что память остается захваченной?
и чья всетаки память имеется в виду, сервера или клиента?
  
Наверх
ICQ  
IP записан
 
HonGilDon
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 10. Ноября 2008
Re: Пустой результат запроса занимает память!
Ответ #3 - 11. Ноября 2008 :: 07:45
Печать  
"метод ВыполнитьСкалярный() возвращает не таблицу, а единственное значение или структуру, если выбирается несколько колонок" - а мне нужны все движения удовлетворяющие поставленным условиям - или я ошибаюсь?
  
Наверх
 
IP записан
 
HonGilDon
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 10. Ноября 2008
Re: Пустой результат запроса занимает память!
Ответ #4 - 11. Ноября 2008 :: 07:50
Печать  
память определилась по вылету из за ее нехватки (очень много итераций) затем определялась по шаговой прогонкой с контролем диспетчера задач - таким образом выяснилось что пустой результат этого запроса тоже отнимает память (не много но так как этот запрос в цикле ...) 1С запускается на самом сервере
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Пустой результат запроса занимает память!
Ответ #5 - 11. Ноября 2008 :: 08:41
Печать  
Если память съедает процесс 1С? Тогда удаление временной таблицы тут не поможет.
Надо исключить из работы MDW. Используй текстовые параметры, а ОбрМетаСКЛ вообще не нужен передавай сразу текст запроса с метаименами.
А подключение в серверу тоже идет в цикле?
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Пустой результат запроса занимает память!
Ответ #6 - 11. Ноября 2008 :: 09:26
Печать  
Кроме того метод Выполнить объявлен устаревшим. Вместо него необходимо использовать метод ВыполнитьИнструкцию.
  
Наверх
ICQ  
IP записан
 
HonGilDon
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 10. Ноября 2008
Re: Пустой результат запроса занимает память!
Ответ #7 - 11. Ноября 2008 :: 11:17
Печать  
Для использования новых методов нужно обновлять компоненту? Будут ли там работать старые методы? И где ее раздобыть? Желательно со свежим мануалом ...
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Пустой результат запроса занимает память!
Ответ #8 - 11. Ноября 2008 :: 11:27
Печать  
Все что я написал это очень старые методы.
  
Наверх
ICQ  
IP записан
 
HonGilDon
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 10. Ноября 2008
Re: Пустой результат запроса занимает память!
Ответ #9 - 12. Ноября 2008 :: 09:29
Печать  
Премного благодарен за помощь, действительно память забивалась в основном из за метода Выполнить - какойто он неправильный, и про текстовые параметры тоже помогло, но тут уже в плане ускорения запроса.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать