Вход | Регистрация



Оптимизация времени выполнения запросов.

Оптимизация времени выполнения запросов.
Я
   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.
 
 
   H A D G E H O G s
 
1 - 04.09.16 - 14:21
Пишите запросы проще.
   karabas11
 
2 - 04.09.16 - 14:35
(0) с хера ли второй быстрее должен? Оптимизатор же с ума сходит
и откуда целевая цифра 0.5?
   xipypg2012
 
3 - 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
        КОНЕЦ) КАК ПроцентПросрочкиБезНал,
    времН.Проект,
    СУММА(времН.КоличествоПросроченных) КАК КоличествоПросроченных,
    СУММА(времН.КоличествоДокументов) КАК КоличествоДокументов,
    времН.Команда КАК Команда,
    МАКСИМУМ(БлокировкиУсловия.СуммаЗадолжности) КАК СуммаЗадолжности,
    МАКСИМУМ(БлокировкиУсловия.ЧислоДнейЗадолжности) КАК ЧислоДнейЗадолжности,
    МАКСИМУМ(БлокировкиУсловия.ГлубинаНакладных) КАК ГлубинаНакладных,
    МАКСИМУМ(БлокировкиУсловия.ГлубинаПросроченныхНакладных) КАК ГлубинаПросроченныхНакладных,
    МАКСИМУМ(БлокировкиУсловия.ПроцентПДЗНал) КАК ПроцентПДЗНал,
    МАКСИМУМ(БлокировкиУсловия.ПроцентПДЗБезНал) КАК ПроцентПДЗБезНал,
    СУММА(времН.СуммаДЗПоКлиенту) КАК СуммаДЗПоКлиенту,
    СУММА(времН.ДатаПервойПросрочки) КАК ДатаПервойПросрочки
ИЗ
    времН КАК времН
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Блокировки.Условия КАК БлокировкиУсловия
        ПО времН.Команда = БлокировкиУсловия.КомандаТП
            И (БлокировкиУсловия.Ссылка.Владелец = &Контрагент)

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

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
Независимо от того, куда вы едете — это в гору и против ветра!
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует