Имя: Пароль:
1C
1С v8
Оптимизация запроса, конфа рарус торговля+crm
0 Простенький вопросик
 
06.05.13
08:50
на закладках стола crm есть закладка продажи, которая открывается при переходе 20-30 секунд, даже если пусто. Там есть такой запрос, который больше всего тормозит по счетчику производительности. Не подскажете, что там может быть не так?

   ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                   |    РасчетыСКонтрагентами.Сделка.Дата КАК Дата,
                   |    РасчетыСКонтрагентами.Сделка.Номер КАК Номер,
                   |    ВЫБОР
                   |        КОГДА РасчетыСКонтрагентами.Сделка.Проведен
                   |            ТОГДА 0
                   |        КОГДА РасчетыСКонтрагентами.Сделка.ПометкаУдаления
                   |            ТОГДА 1
                   |        ИНАЧЕ 2
                   |    КОНЕЦ КАК Проведен,
                   |    РасчетыСКонтрагентами.Сделка КАК Документ,
                   |    РасчетыСКонтрагентами.Контрагент КАК Контрагент,
                   |    РасчетыСКонтрагентами.ДоговорКонтрагента КАК ДоговорКонтрагента,
                   |    РасчетыСКонтрагентами.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК Валюта,
                   |    РасчетыСКонтрагентами.Сделка.Ответственный КАК Ответственный,
                   |    РасчетыСКонтрагентами.Сделка.Подразделение КАК Подразделение,
                   |    ВЫРАЗИТЬ(РасчетыСКонтрагентами.СуммаСделки КАК ЧИСЛО(15, 2)) КАК ОбщаяСуммаСделки,
                   |    ВЫРАЗИТЬ(ЕСТЬNULL(РасчетыСКонтрагентами.СуммаОплачено,РасчетыСКонтрагентами.СуммаСделки - РасчетыСКонтрагентами.ДолгПоОплате) КАК ЧИСЛО(15, 2)) КАК СуммаОплачено,
                   |    ВЫРАЗИТЬ(ЕСТЬNULL(РасчетыСКонтрагентами.СуммаОтгружено,РасчетыСКонтрагентами.СуммаСделки - РасчетыСКонтрагентами.ДолгПоОтгрузке) КАК ЧИСЛО(15, 2)) КАК СуммаОтгружено,
                   |    РасчетыСКонтрагентами.Сделка.ДатаОплаты КАК ДатаОплаты,
                   |    РасчетыСКонтрагентами.Сделка.ДатаОтгрузки КАК ДатаОтгрузки
                   |ИЗ
                   |    (ВЫБРАТЬ
                   |        ВЫРАЗИТЬ(Сделка КАК Документ.ЗаказПокупателя) КАК Сделка,
                   |        РасчетыСКонтрагентамиЗаказы.ДоговорКонтрагента КАК ДоговорКонтрагента,
                   |        ЕСТЬNULL(РасчетыСКонтрагентамиЗаказы.Контрагент,РасчетыСКонтрагентамиЗаказы.ДоговорКонтрагента.Владелец) КАК Контрагент,
                   |        СУММА(ЗаказыПокупателейВсяТаблица.СуммаВзаиморасчетов) КАК СуммаСделки,                    
                   |        МАКСИМУМ(РасчетыСКонтрагентамиЗаказы.ДолгПоОплате) КАК ДолгПоОплате,
                   |        МАКСИМУМ(РасчетыСКонтрагентамиЗаказы.ДолгПоОтгрузке) КАК ДолгПоОтгрузке,
                   |       Null КАК СуммаОплачено,
                   |       Null КАК СуммаОтгружено
                   |
                   |    ИЗ
                   |        (ВЫБРАТЬ
                   |            ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.Сделка, ЗаказыПокупателейОстатки.ЗаказПокупателя) КАК Сделка,
                   |            ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.ДоговорКонтрагента,ЗаказыПокупателейОстатки.ДоговорКонтрагента) КАК ДоговорКонтрагента,
                   |            РасчетыСКонтрагентамиОстатки.Контрагент КАК Контрагент,
                   |            ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток,0) КАК ДолгПоОплате,
                   |            ЕСТЬNULL(ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток,0) КАК ДолгПоОтгрузке
                   |        ИЗ
                   |            РегистрНакопления.РасчетыСКонтрагентами.Остатки(&ДатаОстатков, Сделка ССЫЛКА Документ.ЗаказПокупателя {(Контрагент).* КАК Контрагент, (ВЫРАЗИТЬ(Сделка КАК Документ.ЗаказПокупателя).Дата) КАК Дата,(ВЫРАЗИТЬ(Сделка КАК Документ.ЗаказПокупателя).Ответственный) КАК Ответственный}) КАК РасчетыСКонтрагентамиОстатки
                   |                ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаОстатков,ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя {(ЗаказПокупателя.Контрагент) КАК Контрагент,  (ЗаказПокупателя.Дата) КАК Дата, (ЗаказПокупателя.Ответственный) КАК Ответственный}) КАК ЗаказыПокупателейОстатки
                   |                ПО РасчетыСКонтрагентамиОстатки.Сделка = ЗаказыПокупателейОстатки.ЗаказПокупателя) КАК РасчетыСКонтрагентамиЗаказы
                   |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей КАК ЗаказыПокупателейВсяТаблица
                   |            ПО (ЗаказыПокупателейВсяТаблица.ЗаказПокупателя = РасчетыСКонтрагентамиЗаказы.Сделка)
                   |                И (ЗаказыПокупателейВсяТаблица.Регистратор ССЫЛКА Документ.ЗаказПокупателя
                   |                    ИЛИ ЗаказыПокупателейВсяТаблица.Регистратор ССЫЛКА Документ.КорректировкаЗаказаПокупателя)
                   |    
                   |    СГРУППИРОВАТЬ ПО
                   |        РасчетыСКонтрагентамиЗаказы.Сделка,
                   |        РасчетыСКонтрагентамиЗаказы.ДоговорКонтрагента,
                   |        РасчетыСКонтрагентамиЗаказы.Контрагент
                   |
                   |   ОБЪЕДИНИТЬ ВСЕ
                    | ВЫБРАТЬ
                          |    РасчетыСКонтрагентамиПоСчетам.Сделка,
                          |    РасчетыСКонтрагентамиПоСчетам.Сделка.ДоговорКонтрагента,
                          |    РасчетыСКонтрагентамиПоСчетам.Контрагент,
                          |    РасчетыСКонтрагентамиПоСчетам.Сделка.СуммаДокумента * ВЫБОР
                          |        КОГДА РасчетыСКонтрагентамиПоСчетам.Сделка.ВалютаДокумента = РасчетыСКонтрагентамиПоСчетам.Сделка.ДоговорКонтрагента.ВалютаВзаиморасчетов
                          |            ТОГДА 1
                          |        ИНАЧЕ ВЫБОР
                          |                КОГДА РасчетыСКонтрагентамиПоСчетам.Сделка.КратностьВзаиморасчетов = 0
                          |                    ТОГДА 1
                          |                ИНАЧЕ РасчетыСКонтрагентамиПоСчетам.Сделка.КратностьВзаиморасчетов
                          |            КОНЕЦ / ВЫБОР
                          |                КОГДА РасчетыСКонтрагентамиПоСчетам.Сделка.КурсВзаиморасчетов = 0
                          |                    ТОГДА 1
                          |                ИНАЧЕ РасчетыСКонтрагентамиПоСчетам.Сделка.КурсВзаиморасчетов
                          |            КОНЕЦ
                          |    КОНЕЦ КАК СуммаСделки,
                          |    NULL КАК ДолгПоОплате,
                          |    NULL КАК ДолгПоОтгрузке,
                          |    РасчетыСКонтрагентамиПоСчетам.СуммаОплачено КАК СуммаОплачено,
                          |    РасчетыСКонтрагентамиПоСчетам.СуммаОтгружено КАК СуммаОтгружено
                          |ИЗ
                          |    (ВЫБРАТЬ
                          |        ВЫРАЗИТЬ(РасчетыСКонтрагентамиОбороты.Сделка КАК Документ.СчетНаОплатуПокупателю) КАК Сделка,
                          |        РасчетыСКонтрагентамиОбороты.Контрагент КАК Контрагент,
                          |        СУММА(РасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовРасход) КАК СуммаОплачено,
                          |        СУММА(РасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовПриход) КАК СуммаОтгружено
                          |    ИЗ
                          |        РегистрНакопления.РасчетыСКонтрагентами.Обороты(
                          |                ,
                          |                &ДатаОстатков,
                          |                Регистратор,
                          |                 {(Контрагент).* КАК Контрагент, (ВЫРАЗИТЬ(Сделка КАК Документ.СчетНаОплатуПокупателю).Дата) КАК Дата,(ВЫРАЗИТЬ(Сделка КАК Документ.СчетНаОплатуПокупателю).Ответственный) КАК Ответственный}) КАК РасчетыСКонтрагентамиОбороты
                          |    ГДЕ
                          |        Сделка В
                          |                (ВЫБРАТЬ
                          |                    РасчетыСКонтрагентамиОстатки.Сделка КАК Сделка
                          |                ИЗ
                          |                    РегистрНакопления.РасчетыСКонтрагентами.Остатки(&ДатаОстатков, Сделка ССЫЛКА Документ.СчетНаОплатуПокупателю) КАК РасчетыСКонтрагентамиОстатки)    
                          |    СГРУППИРОВАТЬ ПО
                          |        РасчетыСКонтрагентамиОбороты.Сделка,
                          |        РасчетыСКонтрагентамиОбороты.Контрагент) КАК РасчетыСКонтрагентамиПоСчетам
                         | ) КАК РасчетыСКонтрагентами
                  |{ГДЕ
                  |    (ВЫБОР
                  |            КОГДА (РасчетыСКонтрагентами.ДолгПоОплате) <= 0
                  |                    И (РасчетыСКонтрагентами.ДолгПоОтгрузке) <= 0
                  |                ТОГДА ИСТИНА
                  |            ИНАЧЕ ЛОЖЬ
                  |        КОНЕЦ) КАК СделкаЗакрыта,
                  |    (ВЫБОР
                  |            КОГДА (ЕСТЬNULL(РасчетыСКонтрагентами.СуммаОплачено,РасчетыСКонтрагентами.СуммаСделки - РасчетыСКонтрагентами.ДолгПоОплате)) > 0
                  |                ТОГДА ИСТИНА
                  |            ИНАЧЕ ЛОЖЬ
                  |        КОНЕЦ) КАК ОплаченоПолностью,
                  |    (ВЫБОР
                  |            КОГДА (ЕСТЬNULL(РасчетыСКонтрагентами.СуммаОтгружено,РасчетыСКонтрагентами.СуммаСделки - РасчетыСКонтрагентами.ДолгПоОтгрузке)) > 0
                  |                ТОГДА ИСТИНА
                  |            ИНАЧЕ ЛОЖЬ
                  |        КОНЕЦ) КАК ОтгруженоПолностью,
                  |    (ВЫБОР
                  |            КОГДА РасчетыСКонтрагентами.Сделка.ДатаОплаты <> &ПустаяДата
                  |                    И РасчетыСКонтрагентами.Сделка.ДатаОплаты < &КонтрольнаяДата
                  |                ТОГДА ИСТИНА
                  |            ИНАЧЕ ЛОЖЬ
                  |        КОНЕЦ) КАК СрокОплатыПрошел,
                  |    (ВЫБОР
                  |            КОГДА РасчетыСКонтрагентами.Сделка.ДатаОтгрузки <> &ПустаяДата
                  |                    И РасчетыСКонтрагентами.Сделка.ДатаОтгрузки < &КонтрольнаяДата
                  |                ТОГДА ИСТИНА
                  |            ИНАЧЕ ЛОЖЬ
                  |        КОНЕЦ) КАК СрокОтгрузкиПрошел}";
1 zak555
 
06.05.13
08:51
> Не подскажете, что там может быть не так?

нужно отказаться
2 Ranger_83
 
06.05.13
08:52
отключить RLS
3 Простенький вопросик
 
06.05.13
08:54
(2)
В смысле
4 Ranger_83
 
06.05.13
08:56
(3) Предполагаю,что тормозит из-за RLS
5 Простенький вопросик
 
06.05.13
09:01
(4)
то есть где что отключить, чтобы это проверить?
6 Ranger_83
 
06.05.13
09:03
(5) обычно в настройках программы.Настройка прав доступа на уровне записей
7 tushich
 
06.05.13
11:09
(0) профайлер и план запроса в студию. Сразу вижу соединения с подзапросами.
8 tushich
 
06.05.13
11:11
(5) Убери слово разрешенные из запроса и посмотри быстрее выполняется или нет.