Имя: Пароль:
1C
1С v8
Построитель отчета долго выполняет запрос.
,
0 1Сергей
 
09.12.13
08:31
Использую УниверсальныйОтчет. Пакет запросов выполняется в консоли отчетов за 17 сек., в УО, в  построителе зависает на строке:

ПостроительОтчета.Выполнить();

Ждал два часа - не дождался.

Возникают вопросы:
1. Целесообразно ли использовать пакет запросов в построителе?
2. Действительно ли один и тот же запрос выполняется за разное количество времени в Построителе и просто в коде?
3. Может, что-то не так в запросе? На что обратить внимание?

ЗЫ Запрос не выкладываю ибо простыня.
1 Zero on a dice
 
09.12.13
08:42
ЗаполнитьНастройки() есть?
давеча обнаружил "фишку", при использовании без этого метода, вроде как выполняется, но при следующем обращении к построителю зажирает всю возможную память и падает - даже на пустом результате запроса.
2 1Сергей
 
09.12.13
08:43
(1) Нет такого в Универсальном отчете
3 Zero on a dice
 
09.12.13
08:46
через слово читал, прошу прощения
4 Fragster
 
модератор
09.12.13
08:47
(0) т.е. запроса и настроек не будет?
5 Fragster
 
модератор
09.12.13
08:48
ну и у построителя еще неплохо бы глянуть то, что он там сгенерил - чисто для понимания.
6 ДенисЧ
 
09.12.13
08:48
(4) А зачем тебе? Тебе же показали строку торможения....

:-)))))
7 1Сергей
 
09.12.13
08:48
(5) в смысле сгенерил? Как это посмотреть?
8 Fragster
 
модератор
09.12.13
08:49
(7) у (6) купи синтакс-помошник, там все методы построителя описаны
9 1Сергей
 
09.12.13
08:49
(6) продай сп
10 Fragster
 
модератор
09.12.13
08:50
получитьзапрос или что-то типа того
11 1Сергей
 
09.12.13
08:51
(10) нашел, спс.
Сейчас выложу
12 1Сергей
 
09.12.13
08:51

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

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВзаиморасчетыБезДокументовОбороты.Организация,
    ВзаиморасчетыБезДокументовОбороты.Контрагент,
    ВзаиморасчетыБезДокументовОбороты.ДоговорКонтрагента,
    ВЫБОР
        КОГДА ВзаиморасчетыБезДокументовОбороты.ДоговорКонтрагента.КонтролироватьЧислоДнейЗадолженности
            ТОГДА ВзаиморасчетыБезДокументовОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности
        ИНАЧЕ 0
    КОНЕЦ,
    ВзаиморасчетыБезДокументовОбороты.Сделка,
    НЕОПРЕДЕЛЕНО,
    ВЫБОР
        КОГДА ВзаиморасчетыБезДокументовОбороты.СуммаВзаиморасчетовПриход > 0
            ТОГДА ВзаиморасчетыБезДокументовОбороты.СуммаВзаиморасчетовПриход
        ИНАЧЕ 0
    КОНЕЦ - ВЫБОР
        КОГДА ВзаиморасчетыБезДокументовОбороты.СуммаВзаиморасчетовРасход < 0
            ТОГДА ВзаиморасчетыБезДокументовОбороты.СуммаВзаиморасчетовРасход
        ИНАЧЕ 0
    КОНЕЦ,
    ВзаиморасчетыБезДокументовОбороты.Период
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&СамаяРанняяДата, &ДатаОстатков, День, ((НЕ ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом) И Организация = &Параметр2) И Контрагент = &Параметр6) КАК ВзаиморасчетыБезДокументовОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОстаткиПоПериодам.Организация КАК Организация,
    ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.Организация) КАК ОрганизацияПредставление,
    ОстаткиПоПериодам.Контрагент КАК Контрагент,
    ОстаткиПоПериодам.Контрагент.Код + ОстаткиПоПериодам.Контрагент.Наименование КАК КонтрагентПредставление,
    ОстаткиПоПериодам.ДоговорКонтрагента КАК ДоговорКонтрагента,
    ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.ДоговорКонтрагента) КАК ДоговорКонтрагентаПредставление,
    ОстаткиПоПериодам.Контрагент.Код КАК КодКонтрагента,
    ОстаткиПоПериодам.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
    ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.ДоговорКонтрагента.ВалютаВзаиморасчетов) КАК ВалютаВзаиморасчетовПредставление,
    ВЫБОР
        КОГДА ОстаткиПоПериодам.ДоговорКонтрагента.КонтролироватьСуммуЗадолженности
            ТОГДА ОстаткиПоПериодам.ДоговорКонтрагента.ДопустимаяСуммаЗадолженности
        ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК КредитныйЛимит,
    ВЫБОР
        КОГДА ОстаткиПоПериодам.ДоговорКонтрагента.КонтролироватьЧислоДнейЗадолженности
            ТОГДА ОстаткиПоПериодам.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности
        ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК УсловияОплаты,
    ОстаткиПоПериодам.ОстатокДолга0 КАК ОстатокДолга,
    ОстаткиПоПериодам.ОстатокДолга0 - ОстаткиПоПериодам.ОстатокДолга1 КАК ОстатокПериода1,
    ОстаткиПоПериодам.ОстатокДолга1 - ОстаткиПоПериодам.ОстатокДолга2 КАК ОстатокПериода2,
    ОстаткиПоПериодам.ОстатокДолга2 - ОстаткиПоПериодам.ОстатокДолга3 КАК ОстатокПериода3,
    ОстаткиПоПериодам.ОстатокДолга3 - ОстаткиПоПериодам.ОстатокДолга4 КАК ОстатокПериода4,
    ОстаткиПоПериодам.ОстатокДолга4 - ОстаткиПоПериодам.ОстатокДолга5 КАК ОстатокПериода5,
    ОстаткиПоПериодам.ОстатокДолга5 КАК ОстатокПериода6
ИЗ
    (ВЫБРАТЬ
        ОстатокИОбороты.Организация КАК Организация,
        ОстатокИОбороты.Контрагент КАК Контрагент,
        ОстатокИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
        ОстатокИОбороты.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
        ОстатокИОбороты.Сделка КАК Сделка,
        ОстатокИОбороты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
        ОстатокИОбороты.ОстатокДолга0 КАК ОстатокДолга0,
        ОстатокИОбороты.УвеличениеДолгаНепросроченное КАК УвеличениеДолгаНепросроченное,
        ВЫБОР
            КОГДА ОстатокИОбороты.ОстатокДолга0 - ОстатокИОбороты.УвеличениеДолгаНепросроченное - ОстатокИОбороты.УвеличениеДолга1 > 0
                ТОГДА ОстатокИОбороты.ОстатокДолга0 - ОстатокИОбороты.УвеличениеДолгаНепросроченное - ОстатокИОбороты.УвеличениеДолга1
            ИНАЧЕ 0
        КОНЕЦ КАК ОстатокДолга1,
        ВЫБОР
            КОГДА ОстатокИОбороты.ОстатокДолга0 - ОстатокИОбороты.УвеличениеДолгаНепросроченное - ОстатокИОбороты.УвеличениеДолга1 - ОстатокИОбороты.УвеличениеДолга2 > 0
                ТОГДА ОстатокИОбороты.ОстатокДолга0 - ОстатокИОбороты.УвеличениеДолгаНепросроченное - ОстатокИОбороты.УвеличениеДолга1 - ОстатокИОбороты.УвеличениеДолга2
            ИНАЧЕ 0
        КОНЕЦ КАК ОстатокДолга2,
        ВЫБОР
            КОГДА ОстатокИОбороты.ОстатокДолга0 - ОстатокИОбороты.УвеличениеДолгаНепросроченное - ОстатокИОбороты.УвеличениеДолга1 - ОстатокИОбороты.УвеличениеДолга2 - ОстатокИОбороты.УвеличениеДолга3 > 0
                ТОГДА ОстатокИОбороты.ОстатокДолга0 - ОстатокИОбороты.УвеличениеДолгаНепросроченное - ОстатокИОбороты.УвеличениеДолга1 - ОстатокИОбороты.УвеличениеДолга2 - ОстатокИОбороты.УвеличениеДолга3
            ИНАЧЕ 0
        КОНЕЦ КАК ОстатокДолга3,
        ВЫБОР
            КОГДА ОстатокИОбороты.ОстатокДолга0 - ОстатокИОбороты.УвеличениеДолгаНепросроченное - ОстатокИОбороты.УвеличениеДолга1 - ОстатокИОбороты.УвеличениеДолга2 - ОстатокИОбороты.УвеличениеДолга3 - ОстатокИОбороты.УвеличениеДолга4 > 0
                ТОГДА ОстатокИОбороты.ОстатокДолга0 - ОстатокИОбороты.УвеличениеДолгаНепросроченное - ОстатокИОбороты.УвеличениеДолга1 - ОстатокИОбороты.УвеличениеДолга2 - ОстатокИОбороты.УвеличениеДолга3 - ОстатокИОбороты.УвеличениеДолга4
            ИНАЧЕ 0
        КОНЕЦ КАК ОстатокДолга4,
        ВЫБОР
            КОГДА ОстатокИОбороты.ОстатокДолга0 - ОстатокИОбороты.УвеличениеДолгаНепросроченное - ОстатокИОбороты.УвеличениеДолга1 - ОстатокИОбороты.УвеличениеДолга2 - ОстатокИОбороты.УвеличениеДолга3 - ОстатокИОбороты.УвеличениеДолга4 - ОстатокИОбороты.УвеличениеДолга5 > 0
                ТОГДА ОстатокИОбороты.ОстатокДолга0 - ОстатокИОбороты.УвеличениеДолгаНепросроченное - ОстатокИОбороты.УвеличениеДолга1 - ОстатокИОбороты.УвеличениеДолга2 - ОстатокИОбороты.УвеличениеДолга3 - ОстатокИОбороты.УвеличениеДолга4 - ОстатокИОбороты.УвеличениеДолга5
            ИНАЧЕ 0
        КОНЕЦ КАК ОстатокДолга5
    ИЗ
        (ВЫБРАТЬ
            Остатки.Организация КАК Организация,
            Остатки.Контрагент КАК Контрагент,
            Остатки.ДоговорКонтрагента КАК ДоговорКонтрагента,
            Остатки.Сделка КАК Сделка,
            Остатки.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
            Остатки.ОстатокДолга0 КАК ОстатокДолга0,
            ОборотыНепросроченные.УвеличениеДолгаНепросроченное КАК УвеличениеДолгаНепросроченное,
            ЕСТЬNULL(Обороты1.УвеличениеДолга1, 0) КАК УвеличениеДолга1,
            ЕСТЬNULL(Обороты2.УвеличениеДолга2, 0) КАК УвеличениеДолга2,
            ЕСТЬNULL(Обороты3.УвеличениеДолга3, 0) КАК УвеличениеДолга3,
            ЕСТЬNULL(Обороты4.УвеличениеДолга4, 0) КАК УвеличениеДолга4,
            ЕСТЬNULL(Обороты5.УвеличениеДолга5, 0) КАК УвеличениеДолга5
        ИЗ
            (ВЫБРАТЬ
                ВзаиморасчетыПоДокументамОстатки.Организация КАК Организация,
                ВзаиморасчетыПоДокументамОстатки.Контрагент КАК Контрагент,
                ВзаиморасчетыПоДокументамОстатки.ДоговорКонтрагента КАК ДоговорКонтрагента,
                ВзаиморасчетыПоДокументамОстатки.Сделка КАК Сделка,
                ВзаиморасчетыПоДокументамОстатки.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
                ВзаиморасчетыПоДокументамОстатки.СуммаВзаиморасчетовОстаток КАК ОстатокДолга0
            ИЗ
                РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(&ДатаОстатков, (Организация = &Параметр3) И Контрагент = &Параметр7) КАК ВзаиморасчетыПоДокументамОстатки
            ГДЕ
                ВзаиморасчетыПоДокументамОстатки.СуммаВзаиморасчетовОстаток > 0
            
            ОБЪЕДИНИТЬ ВСЕ
            
            ВЫБРАТЬ
                ВзаиморасчетыБезДокументовОстатки.Организация,
                ВзаиморасчетыБезДокументовОстатки.Контрагент,
                ВзаиморасчетыБезДокументовОстатки.ДоговорКонтрагента,
                ВзаиморасчетыБезДокументовОстатки.Сделка,
                НЕОПРЕДЕЛЕНО,
                ВзаиморасчетыБезДокументовОстатки.СуммаВзаиморасчетовОстаток
            ИЗ
                РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ДатаОстатков, ((НЕ ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом) И Организация = &Параметр4) И Контрагент = &Параметр8) КАК ВзаиморасчетыБезДокументовОстатки
            ГДЕ
                ВзаиморасчетыБезДокументовОстатки.СуммаВзаиморасчетовОстаток > 0) КАК Остатки
                ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    ВсеОбороты.Организация КАК Организация,
                    ВсеОбороты.Контрагент КАК Контрагент,
                    ВсеОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
                    ВсеОбороты.Сделка КАК Сделка,
                    ВсеОбороты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
                    ВсеОбороты.УвеличениеДолга КАК УвеличениеДолгаНепросроченное
                ИЗ
                    ВТ_ВсеОбороты КАК ВсеОбороты
                ГДЕ
                    ДОБАВИТЬКДАТЕ(ВсеОбороты.Период, ДЕНЬ, ВсеОбороты.УсловияОплаты) >= &ДатаОстатков) КАК ОборотыНепросроченные
                ПО Остатки.Организация = ОборотыНепросроченные.Организация
                    И Остатки.Контрагент = ОборотыНепросроченные.Контрагент
                    И Остатки.ДоговорКонтрагента = ОборотыНепросроченные.ДоговорКонтрагента
                    И Остатки.Сделка = ОборотыНепросроченные.Сделка
                    И Остатки.ДокументРасчетовСКонтрагентом = ОборотыНепросроченные.ДокументРасчетовСКонтрагентом
                ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    ВсеОбороты.Организация КАК Организация,
                    ВсеОбороты.Контрагент КАК Контрагент,
                    ВсеОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
                    ВсеОбороты.Сделка КАК Сделка,
                    ВсеОбороты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
                    ВсеОбороты.УвеличениеДолга КАК УвеличениеДолга1
                ИЗ
                    ВТ_ВсеОбороты КАК ВсеОбороты
                ГДЕ
                    ДОБАВИТЬКДАТЕ(ВсеОбороты.Период, ДЕНЬ, ВсеОбороты.УсловияОплаты) МЕЖДУ &НачалоИнтервала1 И &КонецИнтервала1) КАК Обороты1
                ПО Остатки.Организация = Обороты1.Организация
                    И Остатки.Контрагент = Обороты1.Контрагент
                    И Остатки.ДоговорКонтрагента = Обороты1.ДоговорКонтрагента
                    И Остатки.Сделка = Обороты1.Сделка
                    И Остатки.ДокументРасчетовСКонтрагентом = Обороты1.ДокументРасчетовСКонтрагентом
                ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    ВсеОбороты.Организация КАК Организация,
                    ВсеОбороты.Контрагент КАК Контрагент,
                    ВсеОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
                    ВсеОбороты.Сделка КАК Сделка,
                    ВсеОбороты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
                    ВсеОбороты.УвеличениеДолга КАК УвеличениеДолга2
                ИЗ
                    ВТ_ВсеОбороты КАК ВсеОбороты
                ГДЕ
                    ДОБАВИТЬКДАТЕ(ВсеОбороты.Период, ДЕНЬ, ВсеОбороты.УсловияОплаты) МЕЖДУ &НачалоИнтервала2 И &КонецИнтервала2) КАК Обороты2
                ПО Остатки.Организация = Обороты2.Организация
                    И Остатки.Контрагент = Обороты2.Контрагент
                    И Остатки.ДоговорКонтрагента = Обороты2.ДоговорКонтрагента
                    И Остатки.Сделка = Обороты2.Сделка
                    И Остатки.ДокументРасчетовСКонтрагентом = Обороты2.ДокументРасчетовСКонтрагентом
                ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    ВсеОбороты.Организация КАК Организация,
                    ВсеОбороты.Контрагент КАК Контрагент,
                    ВсеОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
                    ВсеОбороты.Сделка КАК Сделка,
                    ВсеОбороты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
                    ВсеОбороты.УвеличениеДолга КАК УвеличениеДолга3
                ИЗ
                    ВТ_ВсеОбороты КАК ВсеОбороты
                ГДЕ
                    ДОБАВИТЬКДАТЕ(ВсеОбороты.Период, ДЕНЬ, ВсеОбороты.УсловияОплаты) МЕЖДУ &НачалоИнтервала3 И &КонецИнтервала3) КАК Обороты3
                ПО Остатки.Организация = Обороты3.Организация
                    И Остатки.Контрагент = Обороты3.Контрагент
                    И Остатки.ДоговорКонтрагента = Обороты3.ДоговорКонтрагента
                    И Остатки.Сделка = Обороты3.Сделка
                    И Остатки.ДокументРасчетовСКонтрагентом = Обороты3.ДокументРасчетовСКонтрагентом
                ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    ВсеОбороты.Организация КАК Организация,
                    ВсеОбороты.Контрагент КАК Контрагент,
                    ВсеОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
                    ВсеОбороты.Сделка КАК Сделка,
                    ВсеОбороты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
                    ВсеОбороты.УвеличениеДолга КАК УвеличениеДолга4
                ИЗ
                    ВТ_ВсеОбороты КАК ВсеОбороты
                ГДЕ
                    ДОБАВИТЬКДАТЕ(ВсеОбороты.Период, ДЕНЬ, ВсеОбороты.УсловияОплаты) МЕЖДУ &НачалоИнтервала4 И &КонецИнтервала4) КАК Обороты4
                ПО Остатки.Организация = Обороты4.Организация
                    И Остатки.Контрагент = Обороты4.Контрагент
                    И Остатки.ДоговорКонтрагента = Обороты4.ДоговорКонтрагента
                    И Остатки.Сделка = Обороты4.Сделка
                    И Остатки.ДокументРасчетовСКонтрагентом = Обороты4.ДокументРасчетовСКонтрагентом
                ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    ВсеОбороты.Организация КАК Организация,
                    ВсеОбороты.Контрагент КАК Контрагент,
                    ВсеОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
                    ВсеОбороты.Сделка КАК Сделка,
                    ВсеОбороты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
                    ВсеОбороты.УвеличениеДолга КАК УвеличениеДолга5
                ИЗ
                    ВТ_ВсеОбороты КАК ВсеОбороты
                ГДЕ
                    ДОБАВИТЬКДАТЕ(ВсеОбороты.Период, ДЕНЬ, ВсеОбороты.УсловияОплаты) МЕЖДУ &НачалоИнтервала5 И &КонецИнтервала5) КАК Обороты5
                ПО Остатки.Организация = Обороты5.Организация
                    И Остатки.Контрагент = Обороты5.Контрагент
                    И Остатки.ДоговорКонтрагента = Обороты5.ДоговорКонтрагента
                    И Остатки.Сделка = Обороты5.Сделка
                    И Остатки.ДокументРасчетовСКонтрагентом = Обороты5.ДокументРасчетовСКонтрагентом) КАК ОстатокИОбороты) КАК ОстаткиПоПериодам

УПОРЯДОЧИТЬ ПО
    Организация,
    Контрагент,
    ДоговорКонтрагента
ИТОГИ
    СУММА(ОстатокДолга),
    СУММА(ОстатокПериода1),
    СУММА(ОстатокПериода2),
    СУММА(ОстатокПериода3),
    СУММА(ОстатокПериода4),
    СУММА(ОстатокПериода5),
    СУММА(ОстатокПериода6)
ПО
    ОБЩИЕ,
    Организация КАК Организация,
    Контрагент КАК Контрагент,
    ДоговорКонтрагента КАК ДоговорКонтрагента
АВТОУПОРЯДОЧИВАНИЕ
13 1Сергей
 
09.12.13
08:52
это уже сгенерированный
14 Fragster
 
модератор
09.12.13
08:53
зачем тебе временные таблицы, если ты все равно 100500 вложенных запросов забабахал?
15 Fragster
 
модератор
09.12.13
08:55
а тормозят подобные условия: ГДЕ
                    ДОБАВИТЬКДАТЕ(ВсеОбороты.Период, ДЕНЬ, ВсеОбороты.УсловияОплаты) >= &ДатаОстатков)
16 1Сергей
 
09.12.13
08:55
(14) дык вложенные из ВТ и тянут
17 Wobland
 
09.12.13
08:55
(13) у тебя же бесполезно искать всяческие операции со строками и через точку? и сколько времени ушло на генерацию?
//построитель не люблю, построителем не интересуюсь
18 Fragster
 
модератор
09.12.13
08:56
(15)+ считай дату в ВТ_Всеобороты и сравнивай ее
19 Fragster
 
модератор
09.12.13
08:57
а еще лучше - дополнительно и интервалы посчитать там же
20 Fragster
 
модератор
09.12.13
08:57
чтобы потом один раз соединять
21 Fragster
 
модератор
09.12.13
08:58
тогда добавление индекса на ВТ_всеобороты по полям соединения будет иметь смысл
22 1Сергей
 
09.12.13
09:00
(19) в смысле, в ВТ определить к какому из интервалов относится, а во втором запросе уже по колонкам распихать?
23 1Сергей
 
09.12.13
09:02
тут смысл в том, что нужно посчитать Дебиторскую задолженность по срокам долга, НО учитывая отсрочку оплаты по договору
24 1Сергей
 
09.12.13
09:08
(17) не замерял, но почти мгновенно
25 1Сергей
 
09.12.13
09:27
Всё-равно запрос (12) в консоли выполняется за 17 сек. А в построителе бесконечно.

Думаете, оптимизация поможет?
26 Fragster
 
модератор
09.12.13
10:27
(25) убери автоупорядочивание
27 m-serg74
 
09.12.13
18:02
(13) а на хрена каждый раз новый параметр:

РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(&ДатаОстатков, (Организация = &Параметр3) И Контрагент = &Параметр7)            
РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ДатаОстатков, ((НЕ ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом) И Организация = &Параметр4) И Контрагент = &Параметр8)
28 Fragster
 
модератор
09.12.13
18:04
(27) это построитель
29 m-serg74
 
10.12.13
08:20
(28) построитель для Организация придумал название "&Параметр3" что то не верится... да еще и для каждого объединения последовательно пронумеровал...
30 Fragster
 
модератор
10.12.13
10:24
(29) ну, тут ты сам волен проверить, какие имена построитель для своих отборов дает
31 GANR
 
10.12.13
10:57
(0) А что находиться в Построитель.ПолучитьЗапрос() ?
32 m-serg74
 
10.12.13
11:05
(30) причем тут вообще построитель? видно же что текст запроса не автоматом/универсально как то сформирован, а писан руками, и отборы не построительные, а обычные, что то я фигурных скобок не наблюдаю...
33 Fragster
 
модератор
10.12.13
12:01
(32)(31)... я, конечно, не автор, но в (13) написано, что приведенный текст запроса - то, что возвращает ПолучитьЗапрос...
34 m-serg74
 
10.12.13
12:05
(33)
[то, что возвращает ПолучитьЗапрос] <> то что построитель сам в тексте запроса намудрил:-)
35 Fragster
 
модератор
10.12.13
12:08
(34) сфига ли?
36 m-serg74
 
10.12.13
12:12
(35) не понял вопроса, построитель сам угадывает что мы от него хотим?
37 1Сергей
 
10.12.13
12:15
Это не просто построитель, а универсальный отчет. Он сам придумывает имена параметрам и запихивает их в построитель.
38 Fragster
 
модератор
10.12.13
12:20
(36):

ВЫБРАТЬ
    Номенклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
{ГДЕ
    Номенклатура.Ссылка.*}

если установить отбор вида "Ссылка равно ..." в ПолучитьЗапрос() превращается в

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Ссылка = &Параметр1
39 m-serg74
 
10.12.13
12:24
(38) понятно, не обращал как то внимания, извиняюсь что сразу не согласился :)
40 GANR
 
10.12.13
13:13
Открыл запрос конструктором http://xmage.ru/images/mlmmlm.png и у меня возникает вопрос - много ли данных в соединяемых таблицах? Если да - то понятие "быстро" для такого запроса неприменимо.
41 1Сергей
 
10.12.13
13:17
1 600 000 строк в запросе
42 1Сергей
 
10.12.13
13:17
(41) > (40)
43 Fragster
 
модератор
10.12.13
13:24
(41) выполнил мои рекомендации по определению вычисляемых полей прямо в первой таблице и одному соединению вместо кучи и без кучи вложенных запросов?
44 Лефмихалыч
 
10.12.13
13:25
(40) пятнадцать человек на сундук холодца, йо-хо-хо и ботинки гнома!
отличный запрос, ящетаю
45 1Сергей
 
10.12.13
13:25
(44) ващета это из типовой УТ
46 Лефмихалыч
 
10.12.13
13:26
(45) что это меняет?
47 1Сергей
 
10.12.13
13:27
(43) переписываю весь запрос. Там самое интересно, что он вис, если не указано никакого отбора. Если отфильтровать по контру, например, то всё летает на "ура"
48 1Сергей
 
10.12.13
13:29
(46) и ещё он генерится в зависимости от настроек. Т.е. Сроков долга может быть сколько угодно. У меня так: http://savepic.net/4055540.png
49 Лефмихалыч
 
10.12.13
13:31
(47) и в чем вопрос-то? То, что без отборов оно работать не хочет, - это нормально и так и должно быть
50 GANR
 
10.12.13
13:31
(47) Естественно. Если в правой таблице N записей, а в левой M, то количество проверок условия соединения равняется M x N, а если отобрать M и N существенно уменьшатся.
51 1Сергей
 
10.12.13
13:33
(49) (50) Просто, я ещё в (0) спросил  - что не так. Оказалось, что запрос рабочий, но не оптимизированный. О чем мне так никто и не сказал до сих пор
52 1Сергей
 
10.12.13
15:06
=========================================================================
Блин. Уже всю бошку сломал.

Подскажите, почему в результат следущего запроса не попадают минуса?

ВЫБРАТЬ
        ВзаиморасчетыПоДокументамОбороты.Организация КАК Организация,
        ВзаиморасчетыПоДокументамОбороты.Контрагент КАК Контрагент,
        ВзаиморасчетыПоДокументамОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
        ВзаиморасчетыПоДокументамОбороты.Сделка КАК Сделка,
        ВзаиморасчетыПоДокументамОбороты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
        ВЫБОР
            КОГДА ВзаиморасчетыПоДокументамОбороты.ДоговорКонтрагента.КонтролироватьЧислоДнейЗадолженности
                ТОГДА ВзаиморасчетыПоДокументамОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности
            ИНАЧЕ 0
        КОНЕЦ КАК УсловияОплаты,
        ВЫБОР
            КОГДА ВзаиморасчетыПоДокументамОбороты.СуммаВзаиморасчетовПриход > 0
                ТОГДА ВзаиморасчетыПоДокументамОбороты.СуммаВзаиморасчетовПриход
            ИНАЧЕ 0
        КОНЕЦ - ВЫБОР
            КОГДА ВзаиморасчетыПоДокументамОбороты.СуммаВзаиморасчетовРасход < 0
                ТОГДА ВзаиморасчетыПоДокументамОбороты.СуммаВзаиморасчетовРасход
            ИНАЧЕ 0
        КОНЕЦ КАК УвеличениеДолга,
        ВЫБОР
            КОГДА НЕ ВзаиморасчетыПоДокументамОбороты.ДоговорКонтрагента.КонтролироватьЧислоДнейЗадолженности
                ТОГДА ВзаиморасчетыПоДокументамОбороты.Период
            КОГДА ВзаиморасчетыПоДокументамОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности = 0
                ТОГДА ВзаиморасчетыПоДокументамОбороты.Период
            ИНАЧЕ ДОБАВИТЬКДАТЕ(ВзаиморасчетыПоДокументамОбороты.Период, ДЕНЬ, ВзаиморасчетыПоДокументамОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности)
        КОНЕЦ КАК Период
    ИЗ
        РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Обороты(&СамаяРанняяДата, &ДатаОстатков, День, Контрагент = &Контрагент) КАК ВзаиморасчетыПоДокументамОбороты
53 1Сергей
 
10.12.13
15:09
Какой сакральный смысл брать только положительный приход и отрицательный расход?

        ВЫБОР
            КОГДА ВзаиморасчетыПоДокументамОбороты.СуммаВзаиморасчетовПриход > 0
                ТОГДА ВзаиморасчетыПоДокументамОбороты.СуммаВзаиморасчетовПриход
            ИНАЧЕ 0
        КОНЕЦ - ВЫБОР
            КОГДА ВзаиморасчетыПоДокументамОбороты.СуммаВзаиморасчетовРасход < 0
                ТОГДА ВзаиморасчетыПоДокументамОбороты.СуммаВзаиморасчетовРасход
            ИНАЧЕ 0
        КОНЕЦ КАК УвеличениеДолга,
54 neckto
 
10.12.13
15:22
(53) Сторно
А по теме: попробуй избавиться от вложенных запросов, сделай ввсе на временных таблицах. По одному запросу скармливай Построителю и Консоли, выяснишь, какой запрос тормозит.
55 1Сергей
 
10.12.13
15:48
(54) Всё-равно не понятно почему в отчет по долгам не должны попадать сторно.


Подскажите, пожалуйста, где в подсказке написано про конструкции построителя {…} ?
56 neckto
 
10.12.13
16:49
(55) Гуманитарий? Минус на минус дает плюс.
57 1Сергей
 
10.12.13
16:49
УРА!!! Я ЕГО ПОБЕДИЛ!

Сделал как в (54), как и советовали раньше. Переписал всё на ВТ.
Теперь он выполняется несколько секунд.

Спасибо всем оргомное!!!