helpf.pro
Регистрация

v8: Как оптимизировать запрос?

Migleon
18.12.2020 14:01Прочитано: 749

Запрос работает более 3-х минут. Насколько я понимаю, тормозит финальное соединение таблиц. Может кто-то посоветует как его оптимизировать?

Код 1C v 8.3
 ВЫБРАТЬ РАЗЛИЧНЫЕ
    ОсновнойОстаткиИОбороты.Субконто1 КАК Контрагент,
    ОсновнойОстаткиИОбороты.Субконто2 КАК Договор,
    ОсновнойОстаткиИОбороты.Субконто3.Сделка КАК Сделка
ПОМЕСТИТЬ ВТ_КонтрагентыДоговора
ИЗ
    РегистрБухгалтерии.Основной.ОстаткиИОбороты(&НачалоПериода,КонецПериода, Запись, , Счет В ИЕРАРХИИ (&Счет62), , Организация =Организация) КАК ОсновнойОстаткиИОбороты
ГДЕ
    (ОсновнойОстаткиИОбороты.СуммаНачальныйОстатокДт <> 0
            ИЛИ ОсновнойОстаткиИОбороты.СуммаНачальныйОстатокКт <> 0
            ИЛИ ОсновнойОстаткиИОбороты.СуммаКонечныйОстатокДт <> 0
            ИЛИ ОсновнойОстаткиИОбороты.СуммаКонечныйОстатокКт <> 0
            ИЛИ ОсновнойОстаткиИОбороты.СуммаОборотДт <> 0
            ИЛИ ОсновнойОстаткиИОбороты.СуммаОборотКт <> 0
            ИЛИ ОсновнойОстаткиИОбороты.ВалютнаяСуммаНачальныйОстатокДт <> 0
            ИЛИ ОсновнойОстаткиИОбороты.ВалютнаяСуммаНачальныйОстатокКт <> 0
            ИЛИ ОсновнойОстаткиИОбороты.ВалютнаяСуммаКонечныйОстатокДт <> 0
            ИЛИ ОсновнойОстаткиИОбороты.ВалютнаяСуммаКонечныйОстатокКт <> 0
            ИЛИ ОсновнойОстаткиИОбороты.ВалютнаяСуммаОборотДт <> 0
            ИЛИ ОсновнойОстаткиИОбороты.ВалютнаяСуммаОборотКт <> 0)

СГРУППИРОВАТЬ ПО
    ОсновнойОстаткиИОбороты.Субконто1,
    ОсновнойОстаткиИОбороты.Субконто2,
    ОсновнойОстаткиИОбороты.Субконто3.Сделка

ИНДЕКСИРОВАТЬ ПО
    Контрагент,
    Договор,
    Сделка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_КонтрагентыДоговора.Контрагент КАК Контрагент,
    ВТ_КонтрагентыДоговора.Договор КАК Договор,
    ВТ_КонтрагентыДоговора.Сделка КАК Сделка,
    ОсновнойОбороты.Регистратор КАК ДокументАванса,
    ОсновнойОбороты.Субконто1 КАК КонтрагентАванса,
    ОсновнойОбороты.Субконто2 КАК ДоговорАванса,
    ОсновнойОбороты.Субконто3.Сделка КАК СделкаАванса,
    ОсновнойОбороты.Период КАК ДатаАванса,
    СУММА(ОсновнойОбороты.СуммаОборотКт) КАК СуммаАванса,
    СУММА(ОсновнойОбороты.ВалютнаяСуммаОборотКт) КАК ВалютнаяСуммаАванса,
    ОсновнойОбороты.Валюта КАК ВалютаАванса,
    ОсновнойОбороты.Счет КАК СчетАванса,
    ОсновнойОбороты.КорСчет КАК КорСчетАванса,
    ОсновнойОборотыОтгрузка.Период КАК ДатаОтгрузки,
    СУММА(ОсновнойОборотыОтгрузка.СуммаОборотДт) КАК СуммаОтгрузки,
    ОсновнойОборотыОтгрузка.Валюта КАК ВалютаОтгрузки,
    СУММА(ОсновнойОборотыОтгрузка.ВалютнаяСуммаОборотДт) КАК ВалютнаяСуммаОтгрузки,
    ОсновнойОборотыОтгрузка.Счет КАК СчетОтгрузки,
    ОсновнойОборотыОтгрузка.КорСчет КАК КорСчетОтгрузки,
    ОсновнойОборотыОплата.Период КАК ДатаОплаты,
    СУММА(ОсновнойОборотыОплата.СуммаОборотКт) КАК СуммаОплаты,
    СУММА(ОсновнойОборотыОплата.ВалютнаяСуммаОборотКт) КАК ВалютнаяСуммаОплаты,
    ОсновнойОборотыОплата.Валюта КАК ВалютаОплаты,
    ОсновнойОборотыОплата.Счет КАК СчетОплаты,
    ОсновнойОборотыОплата.КорСчет КАК КорСчетОплаты
ПОМЕСТИТЬ ВТ_ИтогиБезСклада
ИЗ
    ВТ_КонтрагентыДоговора КАК ВТ_КонтрагентыДоговора
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Основной.Обороты(
                ,
                &Конецпериода,
                Регистратор,
                Счет В ИЕРАРХИИ (&СчетАвансов62_4),
                ,
                Организация =Организация
                    И (Субконто1 В
                            (ВЫБРАТЬ
                                ВТ_КонтрагентыДоговора.Контрагент
                            ИЗ
                                ВТ_КонтрагентыДоговора)
                        И Субконто2 В
                            (ВЫБРАТЬ
                                ВТ_КонтрагентыДоговора.Договор
                            ИЗ
                                ВТ_КонтрагентыДоговора)
                        И Субконто3.Сделка В
                            (ВЫБРАТЬ
                                ВТ_КонтрагентыДоговора.Сделка
                            ИЗ
                                ВТ_КонтрагентыДоговора)),
                ,
                ) КАК ОсновнойОбороты
        ПО ВТ_КонтрагентыДоговора.Контрагент = ОсновнойОбороты.Субконто1
            И ВТ_КонтрагентыДоговора.Договор = ОсновнойОбороты.Субконто2
            И ВТ_КонтрагентыДоговора.Сделка = ОсновнойОбороты.Субконто3.Сделка
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Основной.Обороты(
                ,
                &КонецПериода,
                Регистратор,
                Счет В ИЕРАРХИИ (&СчетАвансов62_1),
                ,
                Организация =Организация
                    И (Субконто1 В
                            (ВЫБРАТЬ
                                ВТ_КонтрагентыДоговора.Контрагент
                            ИЗ
                                ВТ_КонтрагентыДоговора)
                        И Субконто2 В
                            (ВЫБРАТЬ
                                ВТ_КонтрагентыДоговора.Договор
                            ИЗ
                                ВТ_КонтрагентыДоговора)
                        И Субконто3.Сделка В
                            (ВЫБРАТЬ
                                ВТ_КонтрагентыДоговора.Сделка
                            ИЗ
                                ВТ_КонтрагентыДоговора)),
                ,
                ) КАК ОсновнойОборотыОтгрузка
        ПО ВТ_КонтрагентыДоговора.Контрагент = ОсновнойОборотыОтгрузка.Субконто1
            И ВТ_КонтрагентыДоговора.Договор = ОсновнойОборотыОтгрузка.Субконто2
            И ВТ_КонтрагентыДоговора.Сделка = ОсновнойОборотыОтгрузка.Субконто3.Сделка
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Основной.Обороты(
                ,
                &КонецПериода,
                Регистратор,
                Счет В ИЕРАРХИИ (&СчетАвансов62_1),
                ,
                Организация =Организация
                    И (Субконто1 В
                            (ВЫБРАТЬ
                                ВТ_КонтрагентыДоговора.Контрагент
                            ИЗ
                                ВТ_КонтрагентыДоговора)
                        И Субконто2 В
                            (ВЫБРАТЬ
                                ВТ_КонтрагентыДоговора.Договор
                            ИЗ
                                ВТ_КонтрагентыДоговора)
                        И Субконто3.Сделка В
                            (ВЫБРАТЬ
                                ВТ_КонтрагентыДоговора.Сделка
                            ИЗ
                                ВТ_КонтрагентыДоговора)),
                ,
                ) КАК ОсновнойОборотыОплата
        ПО ВТ_КонтрагентыДоговора.Контрагент = ОсновнойОборотыОплата.Субконто1
            И ВТ_КонтрагентыДоговора.Договор = ОсновнойОборотыОплата.Субконто2
            И ВТ_КонтрагентыДоговора.Сделка = ОсновнойОборотыОплата.Субконто3.Сделка

СГРУППИРОВАТЬ ПО
    ВТ_КонтрагентыДоговора.Контрагент,
    ВТ_КонтрагентыДоговора.Договор,
    ВТ_КонтрагентыДоговора.Сделка,
    ОсновнойОбороты.Регистратор,
    ОсновнойОбороты.Субконто1,
    ОсновнойОбороты.Субконто2,
    ОсновнойОбороты.Субконто3.Сделка,
    ОсновнойОбороты.Период,
    ОсновнойОбороты.Валюта,
    ОсновнойОбороты.Счет,
    ОсновнойОбороты.КорСчет,
    ОсновнойОборотыОтгрузка.Период,
    ОсновнойОборотыОтгрузка.Валюта,
    ОсновнойОборотыОтгрузка.Счет,
    ОсновнойОборотыОтгрузка.КорСчет,
    ОсновнойОборотыОплата.Период,
    ОсновнойОборотыОплата.Валюта,
    ОсновнойОборотыОплата.Счет,
    ОсновнойОборотыОплата.КорСчет
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОсновнойОбороты.Период КАК Период,
    ОсновнойОбороты.Регистратор КАК ДокументПоступленияматериалов,
    ОсновнойОбороты.КорСчет КАК СчетМатериалов,
    ОсновнойОбороты.КорСубконто1 КАК СкладМатериалов,
    ОсновнойОбороты.Счет КАК Счет,
    ОсновнойОбороты.Субконто1 КАК Поставщик,
    ОсновнойОбороты.Субконто2 КАК ДоговорПоставщика,
    ОсновнойОбороты.Субконто3.Сделка КАК Сделка,
    СУММА(ОсновнойОбороты.СуммаОборотКт) КАК СуммаПоступленияМатериалов,
    ОсновнойОбороты.Валюта КАК ВалютаПоступленияМатериалов,
    СУММА(ОсновнойОбороты.ВалютнаяСуммаОборотКт) КАК ВалютнаяСуммаПоступленияМатериалов,
    ОсновнойОстатки60_1.Счет КАК СчетЗадолженностиПоМатериалам,
    СУММА(ОсновнойОстатки60_1.СуммаОстатокКт) КАК СуммаЗадолженностиЗаМатериалы,
    ОсновнойОстатки60_1.Валюта КАК ВалютаЗадолженностиЗаМатериалы,
    СУММА(ОсновнойОстатки60_1.ВалютнаяСуммаОстатокКт) КАК ВалютнаяСуммаЗадолженностиЗаМатериалы,
    ОсновнойОстатки10_1.СуммаОстатокДт КАК СуммаОстатокаМатериаловНаСкладе
ПОМЕСТИТЬ ВТ_Материалы
ИЗ
    РегистрБухгалтерии.Основной.Обороты(
            ,
            &КонецПериода,
            Регистратор,
            Счет В ИЕРАРХИИ (&Счет60_1),
            ,
            Организация =Организация
                И Субконто3.Сделка В
                    (ВЫБРАТЬ
                        ВТ_КонтрагентыДоговора.Сделка
                    ИЗ
                        ВТ_КонтрагентыДоговора),
            КорСчет =Счет10_1,
            ) КАК ОсновнойОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Основной.Остатки(
                &КонецПериода,
                Счет В ИЕРАРХИИ (&Счет60_1),
                ,
                Организация =Организация
                    И Субконто3.Сделка В
                        (ВЫБРАТЬ
                            ВТ_КонтрагентыДоговора.Сделка
                        ИЗ
                            ВТ_КонтрагентыДоговора)) КАК ОсновнойОстатки60_1
        ПО ОсновнойОбороты.Организация = ОсновнойОстатки60_1.Организация
            И ОсновнойОбороты.Счет = ОсновнойОстатки60_1.Счет
            И ОсновнойОбороты.Субконто1 = ОсновнойОстатки60_1.Субконто1
            И ОсновнойОбороты.Субконто2 = ОсновнойОстатки60_1.Субконто2
            И ОсновнойОбороты.Субконто3.Сделка = ОсновнойОстатки60_1.Субконто3.Сделка
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Основной.Остатки(&КонецПериода, Счет =Счет10_1, , Организация =Организация) КАК ОсновнойОстатки10_1
        ПО ОсновнойОбороты.Организация = ОсновнойОстатки10_1.Организация
            И ОсновнойОбороты.КорСчет = ОсновнойОстатки10_1.Счет
            И ОсновнойОбороты.КорСубконто1 = ОсновнойОстатки10_1.Субконто1
ГДЕ
    (ОсновнойОбороты.СуммаОборотКт <> 0
            ИЛИ ОсновнойОбороты.ВалютнаяСуммаОборотКт <> 0)

СГРУППИРОВАТЬ ПО
    ОсновнойОбороты.Период,
    ОсновнойОбороты.Регистратор,
    ОсновнойОбороты.КорСчет,
    ОсновнойОбороты.КорСубконто1,
    ОсновнойОбороты.Счет,
    ОсновнойОбороты.Субконто1,
    ОсновнойОбороты.Субконто2,
    ОсновнойОбороты.Субконто3.Сделка,
    ОсновнойОбороты.Валюта,
    ОсновнойОстатки60_1.Валюта,
    ОсновнойОстатки60_1.Счет,
    ОсновнойОстатки10_1.СуммаОстатокДт
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ИтогиБезСклада.Контрагент КАК Контрагент,
    ВТ_ИтогиБезСклада.Договор КАК Договор,
    ВТ_ИтогиБезСклада.Сделка КАК Сделка,
    ВТ_ИтогиБезСклада.ДатаАванса КАК ДатаАванса,
    ВТ_ИтогиБезСклада.ДокументАванса КАК ДокументАванса,
    СУММА(ВТ_ИтогиБезСклада.СуммаАванса) КАК СуммаАванса,
    СУММА(ВТ_ИтогиБезСклада.ВалютнаяСуммаАванса) КАК ВалютнаяСуммаАванса,
    ВТ_ИтогиБезСклада.ВалютаАванса КАК ВалютаАванса,
    ВТ_ИтогиБезСклада.ДатаОтгрузки КАК ДатаОтгрузки,
    СУММА(ВТ_ИтогиБезСклада.СуммаОтгрузки) КАК СуммаОтгрузки,
    ВТ_ИтогиБезСклада.ВалютаОтгрузки КАК ВалютаОтгрузки,
    СУММА(ВТ_ИтогиБезСклада.ВалютнаяСуммаОтгрузки) КАК ВалютнаяСуммаОтгрузки,
    ВТ_ИтогиБезСклада.ДатаОплаты КАК ДатаОплаты,
    СУММА(ВТ_ИтогиБезСклада.СуммаОплаты) КАК СуммаОплаты,
    СУММА(ВТ_ИтогиБезСклада.ВалютнаяСуммаОплаты) КАК ВалютнаяСуммаОплаты,
    ВТ_ИтогиБезСклада.ВалютаОплаты КАК ВалютаОплаты,
    ВТ_Материалы.Период КАК Период,
    ВТ_Материалы.ДокументПоступленияматериалов КАК ДокументПоступленияматериалов,
    ВТ_Материалы.СкладМатериалов КАК СкладМатериалов,
    ВТ_Материалы.Поставщик КАК Поставщик,
    ВТ_Материалы.ДоговорПоставщика КАК ДоговорПоставщика,
    СУММА(ВТ_Материалы.СуммаПоступленияМатериалов) КАК СуммаПоступленияМатериалов,
    ВТ_Материалы.ВалютаПоступленияМатериалов КАК ВалютаПоступленияМатериалов,
    СУММА(ВТ_Материалы.ВалютнаяСуммаПоступленияМатериалов) КАК ВалютнаяСуммаПоступленияМатериалов,
    ВТ_Материалы.СуммаЗадолженностиЗаМатериалы КАК СуммаЗадолженностиЗаМатериалы,
    ВТ_Материалы.ВалютаЗадолженностиЗаМатериалы КАК ВалютаЗадолженностиЗаМатериалы,
    ВТ_Материалы.ВалютнаяСуммаЗадолженностиЗаМатериалы КАК ВалютнаяСуммаЗадолженностиЗаМатериалы,
    ВТ_Материалы.СуммаОстатокаМатериаловНаСкладе КАК СуммаОстатокаМатериаловНаСкладе
ИЗ
    ВТ_ИтогиБезСклада КАК ВТ_ИтогиБезСклада
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Материалы КАК ВТ_Материалы
        ПО ВТ_ИтогиБезСклада.Сделка = ВТ_Материалы.Сделка

СГРУППИРОВАТЬ ПО
    ВТ_ИтогиБезСклада.Контрагент,
    ВТ_ИтогиБезСклада.Договор,
    ВТ_ИтогиБезСклада.Сделка,
    ВТ_ИтогиБезСклада.ДатаАванса,
    ВТ_ИтогиБезСклада.ВалютаАванса,
    ВТ_ИтогиБезСклада.ДатаОтгрузки,
    ВТ_ИтогиБезСклада.ВалютаОтгрузки,
    ВТ_ИтогиБезСклада.ДатаОплаты,
    ВТ_ИтогиБезСклада.ВалютаОплаты,
    ВТ_Материалы.Период,
    ВТ_Материалы.ДокументПоступленияматериалов,
    ВТ_Материалы.СкладМатериалов,
    ВТ_Материалы.Поставщик,
    ВТ_Материалы.ДоговорПоставщика,
    ВТ_Материалы.ВалютаПоступленияМатериалов,
    ВТ_Материалы.СуммаЗадолженностиЗаМатериалы,
    ВТ_Материалы.ВалютаЗадолженностиЗаМатериалы,
    ВТ_Материалы.ВалютнаяСуммаЗадолженностиЗаМатериалы,
    ВТ_Материалы.СуммаОстатокаМатериаловНаСкладе,
    ВТ_ИтогиБезСклада.ДокументАванса

УПОРЯДОЧИТЬ ПО
    Контрагент,
    Договор,
    Сделка,
    Поставщик,
    Период
ИТОГИ
    СУММА(СуммаАванса),
    СУММА(ВалютнаяСуммаАванса),
    СУММА(СуммаОплаты),
    СУММА(ВалютнаяСуммаОплаты),
    СУММА(СуммаПоступленияМатериалов),
    СУММА(ВалютнаяСуммаПоступленияМатериалов)
ПО
    Контрагент,
    Договор,
    Сделка,
    ДокументАванса,
    Поставщик
АВТОУПОРЯДОЧИВАНИЕ
Yandex
Возможно, вас также заинтересует
Реклама на портале
Migleon
22.12.2020 10:20Ответ № 1
Вопрос закрыт!
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.