Запрос По Справочнику Очень Медленный

Дайнеко

Well-known member
19.11.2009
951
0
#1
Нужен запрос по 2-м спр-кам: головной "Товары" и подчиненный "Партии". На базе с 10 тыс ну так уж медленно (минуты 3). Может я чего не оптимально творю? Складывается впечателение, что торомзит подчиненный справочник (долго висит сообщение "Обрабатывается справочник Партии").

Код:
	|Товар	= Справочник.Товары.ТекущийЭлемент, Справочник.Партии.Владелец.ТекущийЭлемент;
|Партия	= Справочник.Партии.ТекущийЭлемент;
|Условие (Товар.П_НеПеч <> 1);
|Условие (Товар.ПринадлежитГруппе(ВыбТовар) = 1);
|Группировка Товар упорядочить по Товар.Наименование;
|Группировка Партия упорядочить по Партия.Код Без Групп;
Еще писал, но на результат совсем не повлияло:
//	ТекстЗапроса = ТекстЗапроса + "Условие (Партия.Владелец.ПринадлежитГруппе(ВыбТовар) = 1);";

Пока Запрос.Группировка("Товар") = 1 Цикл
Пока Запрос.Группировка("Партия") = 1 Тогда
Аналогичный запрос по Регистр.ОстаткиТоваров отрабатывает в момент. Но мне нужны товары, которых и нет в наличии.
 

puh14

Well-known member
11.07.2008
1 412
0
#2
А база скулевая или ДБФ?

Если убрать Условие (Товар.ПринадлежитГруппе(ВыбТовар) = 1); наколько скорость изменится?

Есть ли битые ссылки на товар?
 

vbs

Well-known member
18.02.2007
1 708
1
#3
Можно попробовать убрать партии из запроса, а при его обработке перебирать партии для каждого товара
 

unknown181538

НеГуру
28.12.2008
1 417
0
#4
Или даже попробовать сначала отобрать товары. Черт его знает, во что эта 7.7 превращает запрос.
 

Дайнеко

Well-known member
19.11.2009
951
0
#5
База dbf. Строк товаров 12тыс. Партий раз в 5-7 больше.
Выполняет запрос на маленькой группе из 10 строк минуты 3. Если без условия, то немного дольше, раза в 2-3
Видно ничего не попрешь.
Вот с уловияем по партиям не могу совладать.
Пишу:
Код:
Вариант 1
|Партия	= Справочник.Партии.ТекущийЭлемент;
|Условие (Партия.Владелец.ПринадлежитГруппе(ВыбТовар) = 1);
Вариант 2
|Партия	= Справочник.Партии.ТекущийЭлемент;
|Владелец	= Справочник.Партии.ТекущийЭлемент.Владелец;
|Условие (Владелец.ПринадлежитГруппе(ВыбТовар) = 1);
Оба раза выдет во время выполения сообщение в диалоге:
"Значение не представляет агрегатный объект (ПринадлежитГруппе)
Раза 3 (может столько групп-родителей у выбранной группы?)

А нужно ли вообще ставить уловие на партии? Если есть условие по товару? Результат вроде одинаковый.
 

puh14

Well-known member
11.07.2008
1 412
0
#6
Ну без условия - это не маленькая группа, а вообще все записи. Так что наверно побыстрее. Боюсь что проверка на иерархию гробить всё на корню. Как вариант - при выборе группы программно сделать списочек возможных владельцев и в дальнейшем использовать в запросе его.

|Партия = Справочник.Партии.ТекущийЭлемент;
|Владелец = Справочник.Партии.ТекущийЭлемент.Владелец;
|Условие (Владелец.Владелец в СписокГрупп);