Имя: Пароль:
1C
 
СКД не выводит поля
0 sqr4
 
11.05.17
17:36
Запрос который в СКД работает не правильно -
ВЫБРАТЬ
    ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента КАК ЗаказКлиента,
    ИСТИНА КАК ПолностьюОтгружен,
    ЗаказыКлиентовОстаткиИОбороты.ЗаказаноРасход КАК ЗаказаноРасход
ПОМЕСТИТЬ ВТ
ИЗ
    РегистрНакопления.ЗаказыКлиентов.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , ) КАК ЗаказыКлиентовОстаткиИОбороты
ГДЕ
    ЗаказыКлиентовОстаткиИОбороты.ЗаказаноКонечныйОстаток = 0

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

ВЫБРАТЬ
    РасчетыСКлиентамиОбороты.ЗаказКлиента,
    ЛОЖЬ,
    0
ИЗ
    РегистрНакопления.РасчетыСКлиентами.Обороты(&ДатаНач, &ДатаКон, , ЗаказКлиента ССЫЛКА Документ.ЗаказКлиента) КАК РасчетыСКлиентамиОбороты
ГДЕ
    РасчетыСКлиентамиОбороты.СуммаРасход > 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ.ЗаказКлиента КАК ЗаказКлиента,
    МАКСИМУМ(ВТ.ПолностьюОтгружен) КАК ПолностьюОтгружен,
    СУММА(ВТ.ЗаказаноРасход) КАК ЗаказаноРасход
ПОМЕСТИТЬ ВТЗаказы
ИЗ
    ВТ КАК ВТ

СГРУППИРОВАТЬ ПО
    ВТ.ЗаказКлиента

ИНДЕКСИРОВАТЬ ПО
    ЗаказКлиента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОтчетБанкаПоОперациямЭквайринга.ЗаказКлиента,
    СУММА(ОтчетБанкаПоОперациямЭквайринга.СуммаКомиссии) КАК СуммаКомиссии
ПОМЕСТИТЬ ВТЭквайринг
ИЗ
    Документ.ОтчетБанкаПоОперациямЭквайринга КАК ОтчетБанкаПоОперациямЭквайринга
ГДЕ
    ОтчетБанкаПоОперациямЭквайринга.Проведен
    И ОтчетБанкаПоОперациямЭквайринга.ЗаказКлиента В
            (ВЫБРАТЬ
                ВТЗаказы.ЗаказКлиента
            ИЗ
                ВТЗаказы КАК ВТЗаказы)
    И ОтчетБанкаПоОперациямЭквайринга.Дата МЕЖДУ &ДатаНач И &ДатаКон

СГРУППИРОВАТЬ ПО
    ОтчетБанкаПоОперациямЭквайринга.ЗаказКлиента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТЗаказы.ЗаказКлиента,
    ВозвратТоваровОтКлиента.Ссылка
ПОМЕСТИТЬ ВсеВозвраты
ИЗ
    ВТЗаказы КАК ВТЗаказы
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтКлиента КАК ВозвратТоваровОтКлиента
        ПО ВТЗаказы.ЗаказКлиента = ВозвратТоваровОтКлиента.ДокументРеализации.ЗаказКлиента
ГДЕ
    ВозвратТоваровОтКлиента.Проведен
    И ВозвратТоваровОтКлиента.Дата МЕЖДУ &ДатаНач И &ДатаКон
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеВозвраты.ЗаказКлиента,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВсеВозвраты.Ссылка) КАК Ссылка
ПОМЕСТИТЬ ВозвратыПоЗаказам
ИЗ
    ВсеВозвраты КАК ВсеВозвраты

СГРУППИРОВАТЬ ПО
    ВсеВозвраты.ЗаказКлиента
;

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

ИНДЕКСИРОВАТЬ ПО
    ЗаказПокупателя
;

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

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

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.ЗаказКлиента

ИНДЕКСИРОВАТЬ ПО
    ЗаказКлиента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОтчетБанкаПоОперациямЭквайринга.ЗаказКлиента,
    СУММА(ОтчетБанкаПоОперациямЭквайринга.СуммаКомиссии) КАК СуммаКомиссии
ПОМЕСТИТЬ ВТЭквайринг
ИЗ
    Документ.ОтчетБанкаПоОперациямЭквайринга КАК ОтчетБанкаПоОперациямЭквайринга
ГДЕ
    ОтчетБанкаПоОперациямЭквайринга.Проведен
    И ОтчетБанкаПоОперациямЭквайринга.ЗаказКлиента В
            (ВЫБРАТЬ
                ВТЗаказы.ЗаказКлиента
            ИЗ
                ВТЗаказы КАК ВТЗаказы)
    И ОтчетБанкаПоОперациямЭквайринга.Дата МЕЖДУ &ДатаНач И &ДатаКон

СГРУППИРОВАТЬ ПО
    ОтчетБанкаПоОперациямЭквайринга.ЗаказКлиента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТЗаказы.ЗаказКлиента,
    ВозвратТоваровОтКлиента.Ссылка
ПОМЕСТИТЬ ВсеВозвраты
ИЗ
    ВТЗаказы КАК ВТЗаказы
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтКлиента КАК ВозвратТоваровОтКлиента
        ПО ВТЗаказы.ЗаказКлиента = ВозвратТоваровОтКлиента.ДокументРеализации.ЗаказКлиента
ГДЕ
    ВозвратТоваровОтКлиента.Проведен
    И ВозвратТоваровОтКлиента.Дата МЕЖДУ &ДатаНач И &ДатаКон
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеВозвраты.ЗаказКлиента,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВсеВозвраты.Ссылка) КАК Ссылка
ПОМЕСТИТЬ ВозвратыПоЗаказам
ИЗ
    ВсеВозвраты КАК ВсеВозвраты

СГРУППИРОВАТЬ ПО
    ВсеВозвраты.ЗаказКлиента
;

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

ИНДЕКСИРОВАТЬ ПО
    ЗаказПокупателя
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТПродажи.Менеджер КАК МенеджерОсн,
    ВТПродажи.ЗаказПокупателя,
    ВТПродажи.Номенклатура,
    ВТПродажи.СуммаЗаказа,
    ВТПродажи.Оплата,
    ВЫБОР
        КОГДА ЕСТЬNULL(ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход, 0) = 0
            ТОГДА ВТПродажи.КоличествоПриход * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)
        ИНАЧЕ ВТПродажи.КоличествоПриход * (ЗаказыПоставщикам.ЗаказыПоставщикамСуммаВзаиморасчетовПриход / ЕСТЬNULL(ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход, 0))
    КОНЕЦ КАК ПлановаяСебестоимость,
    ВТПродажи.СуммаВзаиморасчетовПриход - ВЫБОР
        КОГДА ЕСТЬNULL(ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход, 0) = 0
            ТОГДА ВТПродажи.КоличествоПриход * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)
        ИНАЧЕ ВТПродажи.КоличествоПриход * (ЗаказыПоставщикам.ЗаказыПоставщикамСуммаВзаиморасчетовПриход / ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход)
    КОНЕЦ КАК ПлановаяВаловая,
    ВТПродажи.СуммаПродажи,
    ВЫБОР
        КОГДА ВТПродажи.СуммаПродажи > 0
            ТОГДА ВЫБОР
                    КОГДА ЕСТЬNULL(ВТПродажи.Себестоимость, 0) = 0
                        ТОГДА ВЫБОР
                                КОГДА ЕСТЬNULL(ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход, 0) = 0
                                    ТОГДА ВТПродажи.КоличествоПриход * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)
                                ИНАЧЕ ВТПродажи.КоличествоПриход * (ЗаказыПоставщикам.ЗаказыПоставщикамСуммаВзаиморасчетовПриход / ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход)
                            КОНЕЦ
                    ИНАЧЕ ВЫБОР
                            КОГДА ЕСТЬNULL(ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход, 0) <> 0
                                ТОГДА ВТПродажи.КоличествоПриход * (ЗаказыПоставщикам.ЗаказыПоставщикамСуммаВзаиморасчетовПриход / ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход)
                            ИНАЧЕ ВТПродажи.Себестоимость
                        КОНЕЦ
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ КАК Себестоимость,
    ВТПродажи.СуммаПродажи - ВЫБОР
        КОГДА ВТПродажи.СуммаПродажи > 0
            ТОГДА ВЫБОР
                    КОГДА ЕСТЬNULL(ВТПродажи.Себестоимость, 0) = 0
                        ТОГДА ВЫБОР
                                КОГДА ЕСТЬNULL(ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход, 0) = 0
                                    ТОГДА ВТПродажи.КоличествоПриход * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)
                                ИНАЧЕ ВТПродажи.КоличествоПриход * (ЗаказыПоставщикам.ЗаказыПоставщикамСуммаВзаиморасчетовПриход / ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход)
                            КОНЕЦ
                    ИНАЧЕ ВЫБОР
                            КОГДА ЕСТЬNULL(ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход, 0) <> 0
                                ТОГДА ВТПродажи.КоличествоПриход * (ЗаказыПоставщикам.ЗаказыПоставщикамСуммаВзаиморасчетовПриход / ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход)
                            ИНАЧЕ ВТПродажи.Себестоимость
                        КОНЕЦ
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ КАК ВаловаяПрибыль,
    ВЫБОР
        КОГДА ЕСТЬNULL(ВТПродажи.СуммаПродажи, 0) = 0
            ТОГДА 0
        ИНАЧЕ ВЫРАЗИТЬ((ВТПродажи.СуммаПродажи - ВЫБОР
                    КОГДА ВТПродажи.СуммаПродажи > 0
                        ТОГДА ВЫБОР
                                КОГДА ЕСТЬNULL(ВТПродажи.Себестоимость, 0) = 0
                                    ТОГДА ВЫБОР
                                            КОГДА ЕСТЬNULL(ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход, 0) = 0
                                                ТОГДА ВТПродажи.КоличествоПриход * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)
                                            ИНАЧЕ ВТПродажи.КоличествоПриход * (ЗаказыПоставщикам.ЗаказыПоставщикамСуммаВзаиморасчетовПриход / ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход)
                                        КОНЕЦ
                                ИНАЧЕ ВЫБОР
                                        КОГДА ЕСТЬNULL(ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход, 0) <> 0
                                            ТОГДА ВТПродажи.КоличествоПриход * (ЗаказыПоставщикам.ЗаказыПоставщикамСуммаВзаиморасчетовПриход / ЗаказыПоставщикам.ЗаказыПоставщикамКоличествоПриход)
                                        ИНАЧЕ ВТПродажи.Себестоимость
                                    КОНЕЦ
                            КОНЕЦ
                    ИНАЧЕ ЕСТЬNULL(ВТПродажи.Себестоимость, 0)
                КОНЕЦ) / ВТПродажи.СуммаПродажи * 100 КАК ЧИСЛО(15, 2))
    КОНЕЦ КАК Рентабельность,
    ВТПродажи.СуммаКомиссии,
    ВТПродажи.КоличествоВозвратов
ИЗ
    ВТПродажи КАК В
1 sqr4
 
11.05.17
17:36
Прошу помощи
2 vicof
 
11.05.17
17:43
Возьми инструменты разработчика да сравни, что у тебя в консоли, что в скд.
3 echo77
 
11.05.17
17:44
(0) Я думал этот запрос никогда не кончится.
Вложенный запрос оставить нельзя?
4 vicof
 
11.05.17
17:44
(3) Наняли оптимизатора, видимо)
5 sqr4
 
11.05.17
17:46
(3) Во вложенном нельзя использовать "Разрешенные", а там РЛС включены, объект не найден выводит для ролей с неполными правами. А сейчас ошибка и под полными.
6 sqr4
 
11.05.17
17:47
(4) Главное чтобы не такого как ты наняли. Два поста КПД = 0
7 vicof
 
11.05.17
17:51
(6) И в чем логика?
8 sqr4
 
11.05.17
17:57
(7) А ты зачем комментируешь? Цель твоих комментариев?
9 echo77
 
11.05.17
17:59
(0) Как вариант - протащить поля, которые СКД удаляет через все пакеты запросов и затем в настройках поля СКД поставить галку Обязательное
10 vicof
 
11.05.17
18:14
(8) посмотри (2) сначала.
11 vicof
 
11.05.17
18:14
Ещё вопросы?
12 Franchiser
 
гуру
11.05.17
18:49
Нужно поля разыменовать: создай ещё 1 Вт и возьми их неё данные.
13 Franchiser
 
гуру
11.05.17
18:51
Возьми инструменты разработчика и смотри результат работы оптимизатора СКД в макете компоновки
14 Franchiser
 
гуру
11.05.17
18:53
Когда сложный запрос имеет смысл  использовать внешние наборы данных,  а не писать запрос в схеме скд
15 sqr4
 
11.05.17
19:04
(11) Смотри (0) и не задавай тупые вопросы и тупые умозаключения
16 echo77
 
12.05.17
16:26
+ (9) Только сегодня видел схему коллеги - была такая же проблема, что СКД удаляет поля, которые нужны - она протащила эти поля через запросы пакета и установила флаг Обязательное - все работает