Имя: Пароль:
1C
1С v8
Как улучшить запрос и его время выполнения
0 zippygrill
 
31.01.17
15:15
Запрос не мой и выполняется он в УПП 1.3.

ВЫБРАТЬ
    ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Номенклатура КАК Номенклатура,
    ОтчетПроизводстваЗаСменуРаспределениеМатериалов.СерияНоменклатуры КАК СерияНоменклатуры,
    ОтчетПроизводстваЗаСменуРаспределениеМатериалов.СерияНоменклатуры.СрокГодности КАК СрокГодности,
    СУММА(ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Количество) КАК Количество,
    ОтчетПроизводстваЗаСменуРаспределениеМатериалов.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    ОтчетПроизводстваЗаСменуРаспределениеМатериалов.ЕдиницаИзмерения.Объем / 10 КАК Литраж,
    СУММА(ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Количество * ОтчетПроизводстваЗаСменуРаспределениеМатериалов.ЕдиницаИзмерения.Объем / 10) КАК Объем,
    ВЫБОР
        КОГДА ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Номенклатура.ВидНоменклатуры = &ВидНоменклатурыМатериал
            ТОГДА 0
        ИНАЧЕ 1
    КОНЕЦ КАК НеобходимоЕщеРазвернуть,
    ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Ссылка.Ссылка КАК ОПзС
ИЗ
    Документ.ОтчетПроизводстваЗаСмену.РаспределениеМатериалов КАК ОтчетПроизводстваЗаСменуРаспределениеМатериалов
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектов
        ПО ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Номенклатура = КатегорииОбъектов.Объект
            И (КатегорииОбъектов.Объект ССЫЛКА Справочник.Номенклатура)
ГДЕ
    ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Ссылка.Проведен
    И ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата_010115, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаТекущая, ДЕНЬ)
    И ОтчетПроизводстваЗаСменуРаспределениеМатериалов.СерияПродукции = &Серия
    И КатегорииОбъектов.Категория = &КатегорияВиноматериал

СГРУППИРОВАТЬ ПО
    ОтчетПроизводстваЗаСменуРаспределениеМатериалов.СерияНоменклатуры,
    ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Номенклатура,
    ОтчетПроизводстваЗаСменуРаспределениеМатериалов.ЕдиницаИзмерения,
    ОтчетПроизводстваЗаСменуРаспределениеМатериалов.ЕдиницаИзмерения.Объем / 10,
    ВЫБОР
        КОГДА ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Номенклатура.ВидНоменклатуры = &ВидНоменклатурыМатериал
            ТОГДА 0
        ИНАЧЕ 1
    КОНЕЦ,
    ОтчетПроизводстваЗаСменуРаспределениеМатериалов.СерияНоменклатуры.СрокГодности,
    ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Ссылка.Ссылка

УПОРЯДОЧИТЬ ПО
    ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Номенклатура.Наименование,
    ОтчетПроизводстваЗаСменуРаспределениеМатериалов.СерияНоменклатуры.СрокГодности

Посмотрел возможность выполнения запроса по УчетуЗатрат, но проблема с наложением отбора по нужной партии. Так что наверное остается только улучшить запрос по ТЧ отчета.
1 zippygrill
 
31.01.17
15:19
Вариант №1
Во временную таблицу сделать запрос только по отчетам с этой серией, индексировать по Номенклатуре и потом в другой запросе сделать соединение по Номенклатуре и Категории
2 shamannk
 
31.01.17
15:22
ОтчетПроизводстваЗаСменуРаспределениеМатериалов.Ссылка.Ссылка КАК ОПзС зачет)
3 zippygrill
 
31.01.17
15:26
(2) Учтено))
4 mistеr
 
31.01.17
15:27
Индекс по периоду не селективен.
В ТЧ Номенклатура наверняка проиндексирована, но ты этот индекс не используешь. Добавь отбор по номенклатуре.
5 zippygrill
 
31.01.17
15:28
(4)

И ОтчетПроизводстваЗаСменуРаспределениеМатериалов.СерияПродукции = &Серия
И ОтчетПроизводстваЗаСменуРаспределениеМатериалов.СерияПродукции.Владелец = &Номенклатура
6 mistеr
 
31.01.17
15:30
(5) Не вижу, где это в исходном запросе.
И да, это не отбор по номенклатуре.
7 zippygrill
 
31.01.17
15:32
(6) В исходом нет. В измененном виде имел ввиду в (5)
Тогда что ты подразумеваешь под отбор по номенклатуре?
8 shamannk
 
31.01.17
15:44
И (КатегорииОбъектов.Объект ССЫЛКА Справочник.Номенклатура) Не лишнее?
9 zippygrill
 
31.01.17
15:45
(8) Точно - нет
10 mistеr
 
31.01.17
15:47
(7) Я имел в виду продукцию. Неважно, там похоже ничего не индексировано.

Собирай все свои виноматериалы в ВТ (их ведь не так много?) и соединяй.

P.S. Из регистров не проще эту информацию вытащить?
11 H A D G E H O G s
 
31.01.17
15:48
Серия продукции каждый раз новая? Тогда - индексируй эту серий в ТЧ документа и все.
12 shamannk
 
31.01.17
15:52
И КатегорииОбъектов.Категория = &КатегорияВиноматериал в условие связи может?
13 zippygrill
 
31.01.17
15:57
(10) Попробую и посмотрю на результат замеров.
(11) Да- новая каждый раз. В смысле индексировать в серию в ТЧ. ТЧ умеет такое? Не знал))
14 zippygrill
 
31.01.17
15:57
(12) Иногда это придает прирост
15 zippygrill
 
31.01.17
15:58
+ (14) если сначала соберу весь виноматериал во временную таб то это И КатегорииОбъектов.Категория = &КатегорияВиноматериал уже не нужно
16 zippygrill
 
31.01.17
16:04
(11) ааа понял тебя. Типовая УПП - не хочется ломать
17 mistеr
 
31.01.17
18:31
(16) Сломать что-то одним индексом — это нужно постараться.

И вообще, "типовая УПП" это что-то вроде снежного человека.
Программист всегда исправляет последнюю ошибку.