Имя: Пароль:
1C
1С v8
Оптимизация запроса
0 antgrom
 
26.08.14
12:37
v8
Розница. Дописанная , почти типовая.

Есть запрос.
Есть схема : Документ Поступление товаров ( по ордерной схеме ) , на его основании один или несколько документов Приходный ордер. Если возникло несоответствие , то на основании Поступления товаров создается Акт расхождения.
Для проверки правильности заполненных данных написан запрос. Для скорости  проверяем только количество , проверяем  что Акт расхождения указывает в качестве расхождения именно ту разницу , которая есть сейчас между Поступлением товара и приходным ордером.
1 antgrom
 
26.08.14
12:37
сам запрос :

ВЫБРАТЬ
    ВложенныйЗапрос.Ссылка,
    ВложенныйЗапрос.КоличествоУказано,
    ВложенныйЗапрос.Количество,
    ВложенныйЗапрос1.Количество КАК Количество1,
    ВложенныйЗапрос2.Количество КАК Количество2,
    ВложенныйЗапрос1.Количество - ВложенныйЗапрос2.Количество - (ВложенныйЗапрос.Количество - ВложенныйЗапрос.КоличествоУказано) КАК Поле1
ИЗ
    (ВЫБРАТЬ
        АктРасхожденияТовары.Ссылка КАК Ссылка,
        СУММА(АктРасхожденияТовары.КоличествоУказано) КАК КоличествоУказано,
        СУММА(АктРасхожденияТовары.Количество) КАК Количество
    ИЗ
        Документ.АктРасхождения.Товары КАК АктРасхожденияТовары
    
    СГРУППИРОВАТЬ ПО
        АктРасхожденияТовары.Ссылка) КАК ВложенныйЗапрос
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            СУММА(ПоступлениеТоваровТовары.Количество) КАК Количество,
            ПоступлениеТоваровТовары.Ссылка КАК Ссылка
        ИЗ
            Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
        
        СГРУППИРОВАТЬ ПО
            ПоступлениеТоваровТовары.Ссылка) КАК ВложенныйЗапрос1
        ПО ВложенныйЗапрос.Ссылка.ДокОснование = ВложенныйЗапрос1.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ПриходныйОрдерНаТоварыТовары.Ссылка КАК Ссылка,
            СУММА(ПриходныйОрдерНаТоварыТовары.Количество) КАК Количество
        ИЗ
            Документ.ПриходныйОрдерНаТовары.Товары КАК ПриходныйОрдерНаТоварыТовары
        
        СГРУППИРОВАТЬ ПО
            ПриходныйОрдерНаТоварыТовары.Ссылка) КАК ВложенныйЗапрос2
        ПО ВложенныйЗапрос.Ссылка.ДокОснование = ВложенныйЗапрос2.Ссылка.ДокументОснование
            И (ВложенныйЗапрос2.Ссылка.Проведен)
ГДЕ
    ВложенныйЗапрос.Ссылка = &Ссылка
2 antgrom
 
26.08.14
12:38
понятно  ,что это только часть запроса. Условия "где  ВложенныйЗапрос.Ссылка = &Ссылка" не будет , будет левое соединение.

Так вот вопрос ( что то идеи в голову не приходят ) - как оптимизировать запрос ?
3 H A D G E H O G s
 
26.08.14
12:44
хреньполная
4 Lemkus
 
26.08.14
12:48
(1) почитай http://kb.1c.ru/articleView.jsp?id=44 и не пиши больше такие запросы