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


1C - зло О_о

Сообщений: 13
Местоположение: Нск
Зарегистрирован: 06. Июня 2008
Пол: Мужской
Прямой запрос работает медленнее стандартной выборки.
15. Сентября 2008 :: 10:01
Печать  
Вот стандартный:
Код
Выбрать все
ВремРегистры = СоздатьОбъект("Регистры");
ВремВСклад = ВремРегистры.ВСклад;

Если ИтогиАктуальны()=0 Тогда
	ВремВСклад.ВременныйРасчет(1);
	ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент());
КонецЕсли;

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
	Партии.УстановитьЗначениеФильтра("Товар", Товар,1);
	Партии.УстановитьЗначениеФильтра("Клиент", Клиент,1);
	Партии.УстановитьЗначениеФильтра("Заявка",ДокументИсточник,1);

	Партии.ВыгрузитьИтоги(ТаблИтогов,1,1);

	"Тут алгоритм обхода полученной ТЗ"
КонецЦикла;
 



А вот мой:
Код
Выбрать все
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
	ЗапросВСклад = СоздатьОбъект("ODBCRecordSet");
	ТекстЗапросаВСклад = "
	|SELECT
	|	Рег.Товар	as [Товар 	$Справочник.Товары],
	|	Рег.Клиент	as [Клиент 	$Справочник.Клиенты],
	|	Рег.Заявка	as [Заявка 	$Документ],
	|	Рег.Счет	as [Счет 	$Документ],
	|   Рег.БазоваяСтоимостьОстаток	as БазоваяСтоимость,
	|   Рег.ОстатокТовараОстаток	as ОстатокТовара
	|FROM
	|	$РегистрОстатки.ВСклад(:ДатаРасчета~,,Товар = :Товар AND Клиент=:Клиент AND Заявка=:Заявка,(Товар,Клиент,Заявка,Счет), (БазоваяСтоимость,ОстатокТовара)) as Рег";

	ЗапросВСклад.УстановитьТекстовыйПараметр("ДатаРасчета",ДатаРасчета);
	ЗапросВСклад.УстановитьТекстовыйПараметр("Товар",Товар);
	ЗапросВСклад.УстановитьТекстовыйПараметр("Клиент",Клиент);
	ЗапросВСклад.УстановитьТекстовыйПараметр("Заявка",ДокументИсточник);

	Попытка
		ТаблИтогов = ЗапросВСклад.ВыполнитьИнструкцию(ТекстЗапросаВСклад);
	Исключение
		Сообщить(ЗапросВСклад.ПолучитьОписаниеОшибки());
	КонецПопытки;


	"Тут алгоритм обхода ТЗ"
КонецЦикла;
 


  

Владей собой среди толпы смятенной, &&Тебя клянущей за смятенье всех, &&Верь сам в себя, наперекор вселенной, &&И маловерным отпусти их грех... &&&&(с) Редьярд Киплинг&&
Наверх
 
IP записан
 
Sirus_Virus
YaBB Newbies
*
Отсутствует


1C - зло О_о

Сообщений: 13
Местоположение: Нск
Зарегистрирован: 06. Июня 2008
Пол: Мужской
Re: Прямой запрос работает медленнее стандартной выборки.
Ответ #1 - 15. Сентября 2008 :: 10:02
Печать  
Параметризованный хотел но так, как возвращается ТЗ его тут использовать невозможно.
  

Владей собой среди толпы смятенной, &&Тебя клянущей за смятенье всех, &&Верь сам в себя, наперекор вселенной, &&И маловерным отпусти их грех... &&&&(с) Редьярд Киплинг&&
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Прямой запрос работает медленнее стандартной выборки.
Ответ #2 - 15. Сентября 2008 :: 10:06
Печать  
А зачем в цикле? Нельзя сразу для всех строк 1 запрос выполнить?
  
Наверх
ICQ  
IP записан
 
villy
Senior Member
****
Отсутствует



Сообщений: 287
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Прямой запрос работает медленнее стандартной выборки.
Ответ #3 - 15. Сентября 2008 :: 12:23
Печать  
Nick писал(а) 15. Сентября 2008 :: 10:06:
А зачем в цикле? Нельзя сразу для всех строк 1 запрос выполнить?

+1
вынести запрос перед циклом и результат будет на лицо Очень довольный
  
Наверх
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Прямой запрос работает медленнее стандартной выборки.
Ответ #4 - 15. Сентября 2008 :: 12:33
Печать  
А  поле "Заявка" входит в индексы(отбор итогов, движений)?
  
Наверх
 
IP записан
 
Sirus_Virus
YaBB Newbies
*
Отсутствует


1C - зло О_о

Сообщений: 13
Местоположение: Нск
Зарегистрирован: 06. Июня 2008
Пол: Мужской
Re: Прямой запрос работает медленнее стандартной выборки.
Ответ #5 - 15. Сентября 2008 :: 12:35
Печать  
Часть параметров можно получить только в цикле.
Таков код написаный предыдущим автором, разбираться в нем очень трудно, но видимо прийдется. Да и общитывается многое на основе данных в цикле. Хотя это можно попробовать реализовать в запросе Улыбка
  

Владей собой среди толпы смятенной, &&Тебя клянущей за смятенье всех, &&Верь сам в себя, наперекор вселенной, &&И маловерным отпусти их грех... &&&&(с) Редьярд Киплинг&&
Наверх
 
IP записан
 
Sirus_Virus
YaBB Newbies
*
Отсутствует


1C - зло О_о

Сообщений: 13
Местоположение: Нск
Зарегистрирован: 06. Июня 2008
Пол: Мужской
Re: Прямой запрос работает медленнее стандартной выборки.
Ответ #6 - 15. Сентября 2008 :: 12:42
Печать  
kiruha писал(а) 15. Сентября 2008 :: 12:33:
А  поле "Заявка" входит в индексы(отбор итогов, движений)?


Спасибо. Попробую индексы врубить, т.к. сейчас они отключены, но всетаки склоняюсь к устранению цикла и общете всего в запросе =\ думаю только так выйграю в скорости.
  

Владей собой среди толпы смятенной, &&Тебя клянущей за смятенье всех, &&Верь сам в себя, наперекор вселенной, &&И маловерным отпусти их грех... &&&&(с) Редьярд Киплинг&&
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямой запрос работает медленнее стандартной выборки.
Ответ #7 - 15. Сентября 2008 :: 13:40
Печать  
Sirus_Virus писал(а) 15. Сентября 2008 :: 12:35:
Часть параметров можно получить только в цикле.
Таков код написаный предыдущим автором, разбираться в нем очень трудно, но видимо прийдется. Да и общитывается многое на основе данных в цикле. Хотя это можно попробовать реализовать в запросе Улыбка

Какой бы код не был, но фильтр идет по значениям строк и реквизитам строки: Товар, Клиент, Заявка. Выгрузить эти значения в списки, списки уложить в временные ТЗ и выполнить запрос однажды - должно дать результат и без индексов. А вот с индексами надо смотреть, если измерения идут вот так Товар,Клиент,Заявка и во всех есть отбор итогов - тогда поможет, а инчае пользы может не быть.
  
Наверх
IP записан
 
Sirus_Virus
YaBB Newbies
*
Отсутствует


1C - зло О_о

Сообщений: 13
Местоположение: Нск
Зарегистрирован: 06. Июня 2008
Пол: Мужской
Re: Прямой запрос работает медленнее стандартной выборки.
Ответ #8 - 16. Сентября 2008 :: 04:22
Печать  
Дело в том, что  есть колчиество "Н" указанное в табличной части документа.
И Полученные результаты перебираются и списываются в разрезе "Заявок" и "Счетов", пока суммовое количество списания "ОстатокТовара" не достигнет "Н".

Пример:

Необходимо списать "Н" - 10 штук (количество по строке указанное в ТЧ).
Запрос вернул 5 строк с количеством (2,4,1,10,11).

Дак вот списание будет такое:
Заявка1, Счет1, колво - 2
Заявка1, Счет2, колво - 4
Заявка1, Счет3, колво - 1
Заявка1, Счет4, колво - 3 из 10

, а 11 будут не тронуты.

Как это реализовать без цикла пока ума не приложу.
  

Владей собой среди толпы смятенной, &&Тебя клянущей за смятенье всех, &&Верь сам в себя, наперекор вселенной, &&И маловерным отпусти их грех... &&&&(с) Редьярд Киплинг&&
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Прямой запрос работает медленнее стандартной выборки.
Ответ #9 - 16. Сентября 2008 :: 17:48
Печать  
Цитата:
Как это реализовать без цикла пока ума не приложу

http://www.sql.ru/forum/actualtopics.aspx?search=fifo&submit=%CD%E0%E9%F2%E8&bid...
  
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Прямой запрос работает медленнее стандартной выборки.
Ответ #10 - 16. Сентября 2008 :: 17:50
Печать  
А еще проще можно сделать с использованием индексированной таблицы Подмигивание
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать