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


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 21. Декабря 2007
Прямые запросы в модуле проведения
22. Июля 2010 :: 13:29
Печать  
База DBF, ТИС. Использую 1sqlite там, где возможно и там где умею.
Потестировал прямой запрос с остатками на Документ в сравнении со стандартными методами (РасчитатьРегистрыНа() + ВыгрузитьИтоги()) с установленным фильтром по номенклатуре из табличной части.

Результат воодушевил: Прямой работает быстрее (или тестировщик такой?) 

А вот методу использования продумать не получается.
Взять к примеру документ Реализация. Он работает с информацией по нескольким регистрам, которые одномоментно расчитываются стандартными методами. Получается, что надо выполнить столько запросов сколько используется регистров, чтобы получить соответствующие таблицы с данными.

На верном ли я пути. Как поступают настоящие гуру в таких случаях?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямые запросы в модуле проведения
Ответ #1 - 22. Июля 2010 :: 13:44
Печать  
там всего то 3-4 регистра будет : остаткиТМЦ, ПартииНаличие/Отданные, Покупатели/Поставщики/КнигаПокупок/Продаж ..
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Прямые запросы в модуле проведения
Ответ #2 - 22. Июля 2010 :: 13:44
Печать  
Ну приведи регистры которые рассчитываются - в частности ОстаткиТМЦ и РегистрыТМЦ я бы совместил
А вот ПартииНаличие - в отдельный набор.
  
Наверх
IP записан
 
Kondarat
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 21. Декабря 2007
Re: Прямые запросы в модуле проведения
Ответ #3 - 22. Июля 2010 :: 14:00
Печать  
leshik писал(а) 22. Июля 2010 :: 13:44:
Ну приведи регистры которые рассчитываются - в частности ОстаткиТМЦ и РегистрыТМЦ я бы совместил
А вот ПартииНаличие - в отдельный набор.


Код
Выбрать все
	ВремРегистры 					= СоздатьОбъект("Регистры");
	ВремЗаявки			    = ВремРегистры.Заявки;
	ВремЗаказыЗаявки		    = ВремРегистры.ЗаказыЗаявки;
	ВремОстаткиТМЦ				  = ВремРегистры.ОстаткиТМЦ;
	ВремРезервыТМЦ				  = ВремРегистры.РезервыТМЦ;
	ВремПартииНаличие 				= ВремРегистры.ПартииНаличие;
	ВремПокупатели 					= ВремРегистры.Покупатели;
 



Вот и весь вопрос. Как поступить в такой ситуации?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямые запросы в модуле проведения
Ответ #4 - 22. Июля 2010 :: 14:04
Печать  
Выкинуть временный расчет, заменить ВыгрузитьИтоги и получение остатка (Остаток/СводныйОстсток) на прямой запрос.
ЗЫ: единственное, смотреть на какой момент времени выполняется запрос  - на позицию дока или на та.. ну и в зависимости от этого разный текст запроса.
  
Наверх
 
IP записан
 
Kondarat
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 21. Декабря 2007
Re: Прямые запросы в модуле проведения
Ответ #5 - 22. Июля 2010 :: 14:11
Печать  
Eprst писал(а) 22. Июля 2010 :: 14:04:
Выкинуть временный расчет, заменить ВыгрузитьИтоги и получение остатка (Остаток/СводныйОстсток) на прямой запрос.
ЗЫ: единственное, смотреть на какой момент времени выполняется запрос  - на позицию дока или на та.. ну и в зависимости от этого разный текст запроса.

Код
Выбрать все
	ТаблНоменклатуры.ВыбратьСтроки();
	Пока ТаблНоменклатуры.ПолучитьСтроку()=1 Цикл
.
.
.
	    ОстатокНаСкладе =	ВремОстаткиТМЦ.СводныйОстаток(,ТекНоменклатура,Склад,,"Количество");
	   КонецЦикла;

 



Получается, что надо выполнять столько запросов сколько номенклатуры в цикле?

Это нормально? Не станет ли это еще медленнее?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямые запросы в модуле проведения
Ответ #6 - 22. Июля 2010 :: 14:14
Печать  
Переписать логику проведения еще пока не запрещено.. и сделать 1 запрос со списком номенклатуры.
Ну или  подготовленный запрос использовать.
  
Наверх
 
IP записан
 
Antes
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 57
Зарегистрирован: 17. Октября 2008
Re: Прямые запросы в модуле проведения
Ответ #7 - 22. Июля 2010 :: 14:14
Печать  
Сделать по одному запросу ко всем регистрам по всей номенклатуре из дока. А затем уже выбирать из результатов запросов по каждому товару в отдельности.
  
Наверх
 
IP записан
 
Kondarat
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 21. Декабря 2007
Re: Прямые запросы в модуле проведения
Ответ #8 - 22. Июля 2010 :: 14:27
Печать  
Antes писал(а) 22. Июля 2010 :: 14:14:
Сделать по одному запросу ко всем регистрам по всей номенклатуре из дока. А затем уже выбирать из результатов запросов по каждому товару в отдельности.


Вот это я и хочу понять. В примере я привел 7 регистров. Значи в модуле проведения делаем 7 запросов ко всем регистрам, получаем результаты в соответствующие таблицы и затем из них выбираем то, что нужно. 

Отсюда вопрос? Будет ли быстрее выполнение семи запросов вместо одного РасчитатьРегистрыНа()?

Как вы решаете такую задачу?
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Прямые запросы в модуле проведения
Ответ #9 - 22. Июля 2010 :: 14:35
Печать  
Повторюсь еще раз -
1) Все ли регистры задействованы в работе? Используются ли Резервы, Заявки, ЗаказыЗаявки?
2) Можно совместить Остатки и Резервы. Партии и Взаиморасчеты у меня выделены в отдельные запросы.
Модуль кстати относительно не сильно перерабатывать надо
  
Наверх
IP записан
 
Kondarat
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 21. Декабря 2007
Re: Прямые запросы в модуле проведения
Ответ #10 - 22. Июля 2010 :: 14:39
Печать  
leshik писал(а) 22. Июля 2010 :: 14:35:
Повторюсь еще раз -
1) Все ли регистры задействованы в работе? Используются ли Резервы, Заявки, ЗаказыЗаявки?
2) Можно совместить Остатки и Резервы. Партии и Взаиморасчеты у меня выделены в отдельные запросы.
Модуль кстати относительно не сильно перерабатывать надо


Да как на зло, из приведенного мной используется все.

Если можешь, кинь примером.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать