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

Тема в разделе "1C и всё что с ней связано", создана пользователем Дайнеко, 29 янв 2012.

  1. Дайнеко

    Дайнеко Well-Known Member
    1C Team

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

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

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

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    А база скулевая или ДБФ?

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

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Можно попробовать убрать партии из запроса, а при его обработке перебирать партии для каждого товара
     
  4. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Или даже попробовать сначала отобрать товары. Черт его знает, во что эта 7.7 превращает запрос.
     
  5. Дайнеко

    Дайнеко Well-Known Member
    1C Team

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

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

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Ну без условия - это не маленькая группа, а вообще все записи. Так что наверно побыстрее. Боюсь что проверка на иерархию гробить всё на корню. Как вариант - при выборе группы программно сделать списочек возможных владельцев и в дальнейшем использовать в запросе его.

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

Поделиться этой страницей