Имя: Пароль:
1C
1С v8
Как ускорить выполнение запроса в Управляемом приложении?
0 Azmarika
 
27.08.14
15:07
Опыт работы с запросами у меня ни очень большой, что вычитала в интернете пока не помогло. Может кто подскажет, что ни так

ВЫБРАТЬ
        СУММА(ВЫБОР
                КОГДА ОстаткиТоваровНаСкладахОстатки.Склад.КатегорияСклада = ЗНАЧЕНИЕ(Перечисление.КатегорииСкладов.Сеть)
                    ТОГДА ОстаткиТоваровНаСкладахОстатки.КоличествоОстаток
                ИНАЧЕ 0
            КОНЕЦ) КАК Сеть,
        ВЫБОР
            КОГДА ОстаткиТоваровНаСкладахОстатки.Склад.КатегорияСклада = ЗНАЧЕНИЕ(Перечисление.КатегорииСкладов.РЦ)
                ТОГДА ОстаткиТоваровНаСкладахОстатки.КоличествоОстаток
            ИНАЧЕ 0
        КОНЕЦ КАК РЦ,
        ВЫБОР
            КОГДА ТранзитОстатки.КоличествоОстаток ЕСТЬ NULL
                ТОГДА 0
            ИНАЧЕ ТранзитОстатки.КоличествоОстаток
        КОНЕЦ КАК ТранзитОстатки,
        ВЫБОР
            КОГДА ПродажиОбороты.КоличествоОборот ЕСТЬ NULL
                ТОГДА 0
            ИНАЧЕ ПродажиОбороты.КоличествоОборот / (РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ДЕНЬ) + 1)
        КОНЕЦ КАК СДП
    ИЗ
        РегистрНакопления.Транзит.Остатки(
                &ДатаКон,
                УНХ = &УНХ
                    И СкладПолучатель В (&Склад)) КАК ТранзитОстатки
            ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваровНаСкладах.Остатки(
                    &ДатаКон,
                    Номенклатура = &Номенклатура
                        И Склад В (&Склад)) КАК ОстаткиТоваровНаСкладахОстатки
                ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(
                        &ДатаНач,
                        &ДатаКон,
                        Период,
                        Номенклатура = &Номенклатура
                            И Склад В (&Склад)) КАК ПродажиОбороты
                ПО ОстаткиТоваровНаСкладахОстатки.Номенклатура = ПродажиОбороты.Номенклатура
            ПО ТранзитОстатки.УНХ = ОстаткиТоваровНаСкладахОстатки.Номенклатура.ИспользуемыйНаборОсновныхХарактеристик
    
    СГРУППИРОВАТЬ ПО
        ВЫБОР
            КОГДА ОстаткиТоваровНаСкладахОстатки.Склад.КатегорияСклада = ЗНАЧЕНИЕ(Перечисление.КатегорииСкладов.РЦ)
                ТОГДА ОстаткиТоваровНаСкладахОстатки.КоличествоОстаток
            ИНАЧЕ 0
        КОНЕЦ,
        ВЫБОР
            КОГДА ТранзитОстатки.КоличествоОстаток ЕСТЬ NULL
                ТОГДА 0
            ИНАЧЕ ТранзитОстатки.КоличествоОстаток
        КОНЕЦ,
        ВЫБОР
            КОГДА ПродажиОбороты.КоличествоОборот ЕСТЬ NULL
                ТОГДА 0
            ИНАЧЕ ПродажиОбороты.КоличествоОборот / (РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ДЕНЬ) + 1)
        КОНЕЦ
1 Azmarika
 
27.08.14
15:08
Я уже пробовала их по отдельным запросам разбить, и через номенклатуру объединить ничего не помогает
2 Azmarika
 
27.08.14
15:09
Если слишком большой регистр накопления, может есть какие-то хитрости
3 Господин ПЖ
 
27.08.14
15:09
полное соединение
4 Широкий
 
27.08.14
15:10
ПОЛНОЕ СОЕДИНЕНИЕ переделай подзапросы на "Объединить все"
5 Господин ПЖ
 
27.08.14
15:10
вообще "объединить все" обходится дешевле
6 Azmarika
 
27.08.14
15:10
Может быть нужные склады ни через В (&Склад) оформить?
7 Зойч
 
27.08.14
15:11
делай через объединение
8 Wobland
 
27.08.14
15:11
группировка по количеству? а почему бы и нет
9 butterbean
 
27.08.14
15:11
накуа тут соединения если все выбирается по одной номенклатуре??
10 Azmarika
 
27.08.14
15:12
Я пробовала и не соединять таблицы, тогда какая-то фигня выходит с расчетами
11 Azmarika
 
27.08.14
15:14
4 Т.е мне "полное соединение" везде поменять на объединить все?
12 Широкий
 
27.08.14
15:18
(11) Не поменять, а переделать
13 Azmarika
 
27.08.14
15:21
Т.е надо разнести все регистры по разным запросам, а в конце объединить?
14 Azmarika
 
27.08.14
15:59
Всем, спасибо. Получилось!
15 МихаилМ
 
27.08.14
19:13
факты не перемножают? а складывают.

заменяйте join на union
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший