Имя: Пароль:
1C
 
Оптимизация времени выполнения запросов.
0 xipypg2012
 
04.09.16
13:58
Подскажите.

Вариант 1:
ВЫБРАТЬ
    СУММА(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток) КАК Сумма,
    NULL КАК СуммаНаличныйРасчет,
    NULL КАК СуммаБезналичныйРасчет,
    СУММА(ВЫБОР
            КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОтгрузки, &ДатаОтчета, ДЕНЬ) >

ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности
                    И ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаДоставки = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток
            КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаДоставки, &ДатаОтчета, ДЕНЬ) >

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

СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Проект

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

ВЫБРАТЬ
    NULL,
    СУММА(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток),
    NULL,
    NULL,
    СУММА(ВЫБОР
            КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОтгрузки, &ДатаОтчета, ДЕНЬ) >

ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности
                    И ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаДоставки = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток
            КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаДоставки, &ДатаОтчета, ДЕНЬ) >

ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности
                    И ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаДоставки <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток
        КОНЕЦ),
    NULL,
    NULL,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Проект,
    NULL,
    NULL,
    NULL
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(
            &ДатаОтчета,
            Организация = &Организация
                И ДокументРасчетовСКонтрагентом.Проект = &Проект
                И ДокументРасчетовСКонтрагентом <> &ДокументРасчетовСКонтрагентом) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки
ГДЕ
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ВидВзаиморасчетов.Код = "000000001"

СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Проект

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

ВЫБРАТЬ
    NULL,
    NULL,
    СУММА(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток),
    NULL,
    NULL,
    СУММА(ВЫБОР
            КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОтгрузки, &ДатаОтчета, ДЕНЬ) >

ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности
                    И ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаДоставки = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток
            КОГДА РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаДоставки, &ДатаОтчета, ДЕНЬ) >

ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности
                    И ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаДоставки <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток
        КОНЕЦ),
    NULL,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Проект,
    NULL,
    NULL,
    NULL
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(
            &ДатаОтчета,
            Организация = &Организация
                И ДокументРасчетовСКонтрагентом.Проект = &Проект
                И ДокументРасчетовСКонтрагентом <> &ДокументРасчетовСКонтрагентом) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки
ГДЕ
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДоговорКонтрагента.ВидВзаиморасчетов.Код = "000000002"

СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Проект

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

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

СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Проект

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

ВЫБРАТЬ
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Проект,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом),
    МИНИМУМ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата),
    NULL
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(
            &ДатаОтчета,
            Организация = &Организация
                И ДокументРасчетовСКонтрагентом.Проект = &Проект
                И ДокументРасчетовСКонтрагентом <> &ДокументРасчетовСКонтрагентом
                И Контрагент = &Контрагент) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки
ГДЕ
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток > 0

СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Проект
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(Врем.Сумма) КАК Сумма,
    СУММА(Врем.СуммаНаличныйРасчет) КАК СуммаНаличныйРасчет,
    СУММА(Врем.СуммаБезналичныйРасчет) КАК СуммаБезналичныйРасчет,
    СУММА(Врем.ОбщаяСуммаПросрочки) КАК ОбщаяСуммаПросрочки,
    СУММА(Врем.ПросрочкаНал) КАК ПросрочкаНал,
    СУММА(Врем.ПросрочкаБезнал) КАК ПросрочкаБезнал,
    СУММА(Врем.ПросрочкаНал / Врем.Сумма * 100) КАК ПроцентПросрочкиНал,
    СУММА(Врем.ПросрочкаБезнал / Врем.Сумма * 100) КАК ПроцентПросрочкиБезнал,
    Врем.Проект,
    СУММА(Врем.КоличествоПросроченных) КАК КоличествоПросроченных,
    СУММА(Врем.КоличествоДокументов) КАК КоличествоДокументов,
    МАКСИМУМ(КомандыТП.Ссылка) КАК Команда,
    РАЗНОСТЬДАТ(Врем.ДатаПервойПросрочки, &ДатаОтчета, ДЕНЬ) КАК ДатаПервойПросрочки,
    СУММА(Врем.СуммаДЗПоКлиенту) КАК СуммаДЗПоКлиенту
ПОМЕСТИТЬ времН
ИЗ
    Врем КАК Врем
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КомандыТП КАК КомандыТП
        ПО (Врем.Проект.Родитель = КомандыТП.Проект
                ИЛИ Врем.Проект.Родитель.Родитель = КомандыТП.Проект
                ИЛИ Врем.Проект.Родитель.Родитель.Родитель = КомандыТП.Проект
                ИЛИ Врем.Проект.Родитель.Родитель.Родитель.Родитель = КомандыТП.Проект)
ГДЕ
    НЕ КомандыТП.Ссылка ЕСТЬ NULL

СГРУППИРОВАТЬ ПО
    Врем.Проект,
    РАЗНОСТЬДАТ(Врем.ДатаПервойПросрочки, &ДатаОтчета, ДЕНЬ)
;

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

СГРУППИРОВАТЬ ПО
    времН.Проект,
    времН.Команда

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

СГРУППИРОВАТЬ ПО
    СуммаПросрочки.ДокументРасчетовСКонтрагентом.Проект
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(Врем.Сумма) КАК Сумма,
    СУММА(Врем.СуммаНаличныйРасчет) КАК СуммаНаличныйРасчет,
    СУММА(Врем.СуммаБезналичныйРасчет) КАК СуммаБезналичныйРасчет,
    СУММА(Врем.ОбщаяСуммаПросрочки) КАК ОбщаяСуммаПросрочки,
    СУММА(Врем.ПросрочкаНал) КАК ПросрочкаНал,
    СУММА(Врем.ПросрочкаБезнал) КАК ПросрочкаБезнал,
    СУММА(Врем.ПросрочкаНал / Врем.Сумма * 100) КАК ПроцентПросрочкиНал,
    СУММА(Врем.ПросрочкаБезнал / Врем.Сумма * 100) КАК ПроцентПросрочкиБезнал,
    СУММА(Врем.КоличествоПросроченных) КАК КоличествоПросроченных,
    СУММА(Врем.КоличествоДокументов) КАК КоличествоДокументов,
    МАКСИМУМ(КомандыТП.Ссылка) КАК Команда,
    РАЗНОСТЬДАТ(Врем.ДатаПервойПросрочки, &ДатаОтчета, ДЕНЬ) КАК ДатаПервойПросрочки,
    СУММА(Врем.СуммаДЗПоКлиенту) КАК СуммаДЗПоКлиенту,
    Врем.Проект
ПОМЕСТИТЬ времН
ИЗ
    Врем КАК Врем
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КомандыТП КАК КомандыТП
        ПО (Врем.Проект.Родитель = КомандыТП.Проект
                ИЛИ Врем.Проект.Родитель.Родитель = КомандыТП.Проект
                ИЛИ Врем.Проект.Родитель.Родитель.Родитель = КомандыТП.Проект
                ИЛИ Врем.Проект.Родитель.Родитель.Родитель.Родитель = КомандыТП.Проект)
ГДЕ
    НЕ КомандыТП.Ссылка ЕСТЬ NULL

СГРУППИРОВАТЬ ПО
    РАЗНОСТЬДАТ(Врем.ДатаПервойПросрочки, &ДатаОтчета, ДЕНЬ),
    Врем.Проект
;

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

СГРУППИРОВАТЬ ПО
    времН.Команда,
    времН.Проект

Поидеи 2-й должен выполняться быстрей. Но консоль показывает в первом варианте 1.9, во втором 9.3. Можно как-то это дело оптимизировать и сократить хотя бы до 0.5.
1 H A D G E H O G s
 
04.09.16
14:21
Пишите запросы проще.
2 karabas11
 
04.09.16
14:35
(0) с хера ли второй быстрее должен? Оптимизатор же с ума сходит
и откуда целевая цифра 0.5?
3 xipypg2012
 
04.09.16
14:56
опустил до 0.9

Получилось вот что :

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

СГРУППИРОВАТЬ ПО
    СуммаПросрочки.ДокументРасчетовСКонтрагентом.Проект
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(Врем.Сумма) КАК Сумма,
    СУММА(Врем.СуммаНаличныйРасчет) КАК СуммаНаличныйРасчет,
    СУММА(Врем.СуммаБезналичныйРасчет) КАК СуммаБезналичныйРасчет,
    СУММА(Врем.ОбщаяСуммаПросрочки) КАК ОбщаяСуммаПросрочки,
    СУММА(Врем.ПросрочкаНал) КАК ПросрочкаНал,
    СУММА(Врем.ПросрочкаБезнал) КАК ПросрочкаБезнал,
    СУММА(Врем.ПросрочкаНал / Врем.Сумма * 100) КАК ПроцентПросрочкиНал,
    СУММА(Врем.ПросрочкаБезнал / Врем.Сумма * 100) КАК ПроцентПросрочкиБезНал,
    Врем.Проект,
    СУММА(Врем.КоличествоПросроченных) КАК КоличествоПросроченных,
    СУММА(Врем.КоличествоДокументов) КАК КоличествоДокументов,
    МАКСИМУМ(КомандыТП.Ссылка) КАК Команда,
    РАЗНОСТЬДАТ(Врем.ДатаПервойПросрочки, &ДатаОтчета, ДЕНЬ) КАК ДатаПервойПросрочки,
    СУММА(Врем.СуммаДЗПоКлиенту) КАК СуммаДЗПоКлиенту
ПОМЕСТИТЬ времН
ИЗ
    Врем КАК Врем
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КомандыТП КАК КомандыТП
        ПО (Врем.Проект.Родитель = КомандыТП.Проект
                ИЛИ Врем.Проект.Родитель.Родитель = КомандыТП.Проект
                ИЛИ Врем.Проект.Родитель.Родитель.Родитель = КомандыТП.Проект
                ИЛИ Врем.Проект.Родитель.Родитель.Родитель.Родитель = КомандыТП.Проект)
ГДЕ
    НЕ КомандыТП.Ссылка ЕСТЬ NULL

СГРУППИРОВАТЬ ПО
    Врем.Проект,
    РАЗНОСТЬДАТ(Врем.ДатаПервойПросрочки, &ДатаОтчета, ДЕНЬ)
;

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

СГРУППИРОВАТЬ ПО
    времН.Команда,
    времН.Проект
4 xipypg2012
 
04.09.16
14:57
Можно ли еще что придумать?
5 xipypg2012
 
04.09.16
15:01
щас при первом выполнение показывает от 0.9 до 1.4 . При повторном 0.3 В прежних версиях при любых вариантах 1.9 минимум.
6 Рэйв
 
04.09.16
15:05
(1)+1
7 NcSteel
 
04.09.16
15:14
тех журнал в зубы....
8 NcSteel
 
04.09.16
15:15
(Врем.Проект.Родитель = КомандыТП.Проект
                ИЛИ Врем.Проект.Родитель.Родитель = КомандыТП.Проект
                ИЛИ Врем.Проект.Родитель.Родитель.Родитель = КомандыТП.Проект
                ИЛИ Врем.Проект.Родитель.Родитель.Родитель.Родитель = КомандыТП.Проект)

эпично конечно
9 karabas11
 
04.09.16
15:16
а когда иерархия еще глубже будет, то будете запрос переписывать? :))))
ИЛИ Врем.Проект.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель
10 NcSteel
 
04.09.16
15:20
(9) Особенно если командаТП будет установлена и на группу и на группу группы, то будем иметь завоение строк и в конечном итоге кривой результат...

Такие вещи (соответствие проекта и командыТП) надо хранить однозначно, например в РС.
11 xipypg2012
 
04.09.16
15:27
(10) Это понятно, до меня так все сделано вот так, еще руки не дошли до переделывания....тут бы разобраться с тем г... что есть, то что ничего не проводится из-за безобразных запросов.
12 H A D G E H O G s
 
04.09.16
15:40
(11) Это в проведении документа?
Охренеть.
13 xipypg2012
 
04.09.16
15:42
это в подписи при записи , с условием если проведение.
14 Рэйв
 
04.09.16
15:44
(11)Ты точно уверен, что ты программист 1с?.  А то возникают сомнения.
15 xipypg2012
 
04.09.16
15:45
(14) ну потролить эт святое, вот что нибудь подсказать эт не судьба.
16 Рэйв
 
04.09.16
15:47
(15)"Да как же тебя понять если ты ничего не говоришь"(С)Иван Васильевич меняет профессию.
17 H A D G E H O G s
 
04.09.16
15:49
(15) Никто не будет подсказывать. Кому охота разбираться в вашей портянке. Пищи запрос с нуля, оставляй 2 режима - старый запрос и новый запрос по константе и если все встанет колом - вернешься на старый запрос, изменив константу.
18 xipypg2012
 
04.09.16
15:52
Смысл в том что этот запрос получает ДЗ и просроченную ДЗ по торговому, так же кол-во неоплаченных документом и кол-во документов по которым дз просроченно уже в разрезе клиента. После чего идет проверка полученных значений согласно заданных в программе, если что-то превышено то запрещается проведение документа и торговый или клиент взависимости от условий попадает в блок.

(17) запрос переписал покрайней мере основную часть , это третий вариант  но мне все равно не очень нравится, а как еще оптимизировать не могу придумать.
19 Рэйв
 
04.09.16
15:55
он еще и косноязычен:-)..Нет, я пас.:-)
20 NcSteel
 
04.09.16
15:55
(8) Оптимизируй (8)
21 karabas11
 
04.09.16
15:58
(20) можно я, можно я, можно я не буду... :-)
22 H A D G E H O G s
 
04.09.16
15:59
(18) Избавься вот от этой дичи
И ДокументРасчетовСКонтрагентом.Проект = &Проект
23 NcSteel
 
04.09.16
16:27
(22) и это тоже
24 xReason
 
04.09.16
18:42
(0) NULL-ов маловато
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.