Имя: Пароль:
1C
1С v8
Поле, по которму рассчитываются итоги, должно присутствовать в списке выборки
0 John83
 
03.02.17
12:46
После того, как в запросе добавляю группировку, появляется такая проблема.
Ругается на
СУММА(<<?>>Данные.СтоимостьБезНДС) - СУММА(Данные.СебестоимостьКредитНота) КАК Прибыль
Хотя в выборке эти поля есть.
Можно ли без вложенного запроса обойтись?
1 John83
 
03.02.17
12:46
ВЫБРАТЬ
    ЕСТЬNULL(Данные.Организация, РасходыНаДоставкуТовараПокупателюОбороты.Организация) КАК Организация,
    ЕСТЬNULL(Данные.Покупатель, РасходыНаДоставкуТовараПокупателюОбороты.Покупатель) КАК Покупатель,
    Данные.ДоговорПокупателя,
    Данные.Прибыль КАК Прибыль,
    ЕСТЬNULL(РасходыНаДоставкуТовараПокупателюОбороты.СуммаОборот, 0) + ЕСТЬNULL(ДопРасходыНаДоставкуТовараНаСклад.СуммаЗатрат, 0) КАК ТранспортныеРасходы,
    Данные.Прибыль * 0.15 КАК ЗатратыФирмы,
    ВЫБОР
        КОГДА Данные.Наценка >= 1.27
                И Данные.Наценка < 1.3
            ТОГДА Данные.Прибыль * 0.02
        КОГДА Данные.Наценка >= 1.3
                И Данные.Наценка < 1.35
            ТОГДА Данные.Прибыль * 0.04
        КОГДА Данные.Наценка >= 1.35
                И Данные.Наценка < 1.44
            ТОГДА Данные.Прибыль * 0.05
        КОГДА Данные.Наценка >= 1.44
                И Данные.Наценка < 1.6
            ТОГДА Данные.Прибыль * 0.07
        КОГДА Данные.Наценка >= 1.6
            ТОГДА Данные.Прибыль * 0.1
        ИНАЧЕ 0
    КОНЕЦ КАК Бонус,
    ЕСТЬNULL(Данные.Прибыль, 0) - ЕСТЬNULL(РасходыНаДоставкуТовараПокупателюОбороты.СуммаОборот, 0) - ЕСТЬNULL(ДопРасходыНаДоставкуТовараНаСклад.СуммаЗатрат, 0) - ЕСТЬNULL(Данные.Прибыль * 0.15, 0) - ЕСТЬNULL(ВЫБОР
            КОГДА Данные.Наценка >= 1.27
                    И Данные.Наценка < 1.3
                ТОГДА Данные.Прибыль * 0.02
            КОГДА Данные.Наценка >= 1.3
                    И Данные.Наценка < 1.35
                ТОГДА Данные.Прибыль * 0.04
            КОГДА Данные.Наценка >= 1.35
                    И Данные.Наценка < 1.44
                ТОГДА Данные.Прибыль * 0.05
            КОГДА Данные.Наценка >= 1.44
                    И Данные.Наценка < 1.6
                ТОГДА Данные.Прибыль * 0.07
            КОГДА Данные.Наценка >= 1.6
                ТОГДА Данные.Прибыль * 0.1
            ИНАЧЕ 0
        КОНЕЦ, 0) КАК Итого,
    Данные.СтоимостьБезНДС КАК СтоимостьБезНДС,
    Данные.НДС КАК НДС,
    Данные.Стоимость КАК Стоимость,
    Данные.СебестоимостьКредитНота КАК СебестоимостьКредитНота,
    Данные.ВаловаяПрибыль КАК ВаловаяПрибыль,
    Данные.Эффективность КАК Эффективность,
    Данные.Рентабельность КАК Рентабельность,
    Данные.ОплаченоВТечении КАК ОплаченоВТечении,
    Данные.Наценка КАК Наценка,
    Данные.СебестоимостьБУ КАК СебестоимостьБУ,
    ЕСТЬNULL(ЕСТЬNULL(Данные.ОсновнойМенеджер, Данные.ОсновнойМенеджер), РасходыНаДоставкуТовараПокупателюОбороты.МенеджерПокупателя) КАК ОсновнойМенеджер,
    Данные.СуммаОплаты КАК СуммаОплаты,
    ЕСТЬNULL(РасходыНаДоставкуТовараПокупателюОбороты.СуммаОборот, 0) КАК РасходыНаДоставкуПокупателю,
    ЕСТЬNULL(ДопРасходыНаДоставкуТовараНаСклад.СуммаЗатрат, 0) КАК СуммаЗатратДоставкиНаСклад
ИЗ
    Данные КАК Данные
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.РасходыНаДоставкуТовараПокупателю.Обороты(
                &ДатаНач,
                &ДатаКон,
                ,
                МенеджерПокупателя В
                    (ВЫБРАТЬ РАЗЛИЧНЫЕ
                        Т.ОсновнойМенеджер
                    ИЗ
                        Данные КАК Т)) КАК РасходыНаДоставкуТовараПокупателюОбороты
        ПО Данные.Организация = РасходыНаДоставкуТовараПокупателюОбороты.Организация
            И Данные.Покупатель = РасходыНаДоставкуТовараПокупателюОбороты.Покупатель
            И Данные.Покупатель = РасходыНаДоставкуТовараПокупателюОбороты.Покупатель
            И Данные.ДокументПродажи = РасходыНаДоставкуТовараПокупателюОбороты.ДокументРеализации
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДопРасходыНаДоставкуТовараНаСклад КАК ДопРасходыНаДоставкуТовараНаСклад
        ПО Данные.ДокументПродажи = ДопРасходыНаДоставкуТовараНаСклад.ДокументРеализации
            И (ВЫБОР
                КОГДА ДопРасходыНаДоставкуТовараНаСклад.ДокументРеализации.ДоговорКонтрагента.ОсновнойМенеджер <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)
                    ТОГДА ДопРасходыНаДоставкуТовараНаСклад.ДокументРеализации.ДоговорКонтрагента.ОсновнойМенеджер = &Менеджер
                ИНАЧЕ ДопРасходыНаДоставкуТовараНаСклад.ДокументРеализации.Контрагент.ОсновнойМенеджерПокупателя = &Менеджер
            КОНЕЦ)
ИТОГИ
    СУММА(Данные.СтоимостьБезНДС) - СУММА(Данные.СебестоимостьКредитНота) КАК Прибыль,
    СУММА(ТранспортныеРасходы),
    СУММА(ЗатратыФирмы),
    СУММА(Бонус),
    СУММА(Итого),
    ВЫБОР
        КОГДА &НеВключатьНДСВСтоимостьПартий
            ТОГДА СУММА(Данные.СтоимостьБезНДС)
        ИНАЧЕ СУММА(Данные.Стоимость)
    КОНЕЦ - СУММА(Данные.СебестоимостьКредитНота) КАК ВаловаяПрибыль,
    ВЫБОР
        КОГДА СУММА(Данные.СебестоимостьКредитНота) <> 0
            ТОГДА СУММА(Данные.СтоимостьБезНДС) / СУММА(Данные.СебестоимостьКредитНота)
        ИНАЧЕ 0
    КОНЕЦ КАК Наценка,
    СУММА(РасходыНаДоставкуПокупателю),
    СУММА(СуммаЗатратДоставкиНаСклад)
ПО
    ОБЩИЕ,
    Покупатель
АВТОУПОРЯДОЧИВАНИЕ
2 John83
 
03.02.17
12:46
запрос с ошибкой после группировки

ВЫБРАТЬ
    ЕСТЬNULL(Данные.Организация, РасходыНаДоставкуТовараПокупателюОбороты.Организация) КАК Организация,
    ЕСТЬNULL(Данные.Покупатель, РасходыНаДоставкуТовараПокупателюОбороты.Покупатель) КАК Покупатель,
    Данные.ДоговорПокупателя,
    СУММА(Данные.Прибыль) КАК Прибыль,
    СУММА(ЕСТЬNULL(РасходыНаДоставкуТовараПокупателюОбороты.СуммаОборот, 0) + ЕСТЬNULL(ДопРасходыНаДоставкуТовараНаСклад.СуммаЗатрат, 0)) КАК ТранспортныеРасходы,
    СУММА(Данные.Прибыль * 0.15) КАК ЗатратыФирмы,
    СУММА(ВЫБОР
            КОГДА Данные.Наценка >= 1.27
                    И Данные.Наценка < 1.3
                ТОГДА Данные.Прибыль * 0.02
            КОГДА Данные.Наценка >= 1.3
                    И Данные.Наценка < 1.35
                ТОГДА Данные.Прибыль * 0.04
            КОГДА Данные.Наценка >= 1.35
                    И Данные.Наценка < 1.44
                ТОГДА Данные.Прибыль * 0.05
            КОГДА Данные.Наценка >= 1.44
                    И Данные.Наценка < 1.6
                ТОГДА Данные.Прибыль * 0.07
            КОГДА Данные.Наценка >= 1.6
                ТОГДА Данные.Прибыль * 0.1
            ИНАЧЕ 0
        КОНЕЦ) КАК Бонус,
    СУММА(ЕСТЬNULL(Данные.Прибыль, 0) - ЕСТЬNULL(РасходыНаДоставкуТовараПокупателюОбороты.СуммаОборот, 0) - ЕСТЬNULL(ДопРасходыНаДоставкуТовараНаСклад.СуммаЗатрат, 0) - ЕСТЬNULL(Данные.Прибыль * 0.15, 0) - ЕСТЬNULL(ВЫБОР
                КОГДА Данные.Наценка >= 1.27
                        И Данные.Наценка < 1.3
                    ТОГДА Данные.Прибыль * 0.02
                КОГДА Данные.Наценка >= 1.3
                        И Данные.Наценка < 1.35
                    ТОГДА Данные.Прибыль * 0.04
                КОГДА Данные.Наценка >= 1.35
                        И Данные.Наценка < 1.44
                    ТОГДА Данные.Прибыль * 0.05
                КОГДА Данные.Наценка >= 1.44
                        И Данные.Наценка < 1.6
                    ТОГДА Данные.Прибыль * 0.07
                КОГДА Данные.Наценка >= 1.6
                    ТОГДА Данные.Прибыль * 0.1
                ИНАЧЕ 0
            КОНЕЦ, 0)) КАК Итого,
    СУММА(Данные.СтоимостьБезНДС) КАК СтоимостьБезНДС,
    СУММА(Данные.НДС) КАК НДС,
    СУММА(Данные.Стоимость) КАК Стоимость,
    СУММА(Данные.СебестоимостьКредитНота) КАК СебестоимостьКредитНота,
    СУММА(Данные.ВаловаяПрибыль) КАК ВаловаяПрибыль,
    СУММА(Данные.Эффективность) КАК Эффективность,
    СУММА(Данные.Рентабельность) КАК Рентабельность,
    СУММА(Данные.ОплаченоВТечении) КАК ОплаченоВТечении,
    СУММА(Данные.Наценка) КАК Наценка,
    СУММА(Данные.СебестоимостьБУ) КАК СебестоимостьБУ,
    ЕСТЬNULL(ЕСТЬNULL(Данные.ОсновнойМенеджер, Данные.ОсновнойМенеджер), РасходыНаДоставкуТовараПокупателюОбороты.МенеджерПокупателя) КАК ОсновнойМенеджер,
    СУММА(Данные.СуммаОплаты) КАК СуммаОплаты,
    СУММА(ЕСТЬNULL(РасходыНаДоставкуТовараПокупателюОбороты.СуммаОборот, 0)) КАК РасходыНаДоставкуПокупателю,
    СУММА(ЕСТЬNULL(ДопРасходыНаДоставкуТовараНаСклад.СуммаЗатрат, 0)) КАК СуммаЗатратДоставкиНаСклад
ИЗ
    Данные КАК Данные
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.РасходыНаДоставкуТовараПокупателю.Обороты(
                &ДатаНач,
                &ДатаКон,
                ,
                МенеджерПокупателя В
                    (ВЫБРАТЬ РАЗЛИЧНЫЕ
                        Т.ОсновнойМенеджер
                    ИЗ
                        Данные КАК Т)) КАК РасходыНаДоставкуТовараПокупателюОбороты
        ПО Данные.Организация = РасходыНаДоставкуТовараПокупателюОбороты.Организация
            И Данные.Покупатель = РасходыНаДоставкуТовараПокупателюОбороты.Покупатель
            И Данные.Покупатель = РасходыНаДоставкуТовараПокупателюОбороты.Покупатель
            И Данные.ДокументПродажи = РасходыНаДоставкуТовараПокупателюОбороты.ДокументРеализации
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДопРасходыНаДоставкуТовараНаСклад КАК ДопРасходыНаДоставкуТовараНаСклад
        ПО Данные.ДокументПродажи = ДопРасходыНаДоставкуТовараНаСклад.ДокументРеализации
            И (ВЫБОР
                КОГДА ДопРасходыНаДоставкуТовараНаСклад.ДокументРеализации.ДоговорКонтрагента.ОсновнойМенеджер <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)
                    ТОГДА ДопРасходыНаДоставкуТовараНаСклад.ДокументРеализации.ДоговорКонтрагента.ОсновнойМенеджер = &Менеджер
                ИНАЧЕ ДопРасходыНаДоставкуТовараНаСклад.ДокументРеализации.Контрагент.ОсновнойМенеджерПокупателя = &Менеджер
            КОНЕЦ)

СГРУППИРОВАТЬ ПО
    ЕСТЬNULL(Данные.Организация, РасходыНаДоставкуТовараПокупателюОбороты.Организация),
    Данные.ДоговорПокупателя,
    ЕСТЬNULL(ЕСТЬNULL(Данные.ОсновнойМенеджер, Данные.ОсновнойМенеджер), РасходыНаДоставкуТовараПокупателюОбороты.МенеджерПокупателя),
    ЕСТЬNULL(Данные.Покупатель, РасходыНаДоставкуТовараПокупателюОбороты.Покупатель)
ИТОГИ
    СУММА(Данные.СтоимостьБезНДС) - СУММА(Данные.СебестоимостьКредитНота) КАК Прибыль,
    СУММА(ТранспортныеРасходы),
    СУММА(ЗатратыФирмы),
    СУММА(Бонус),
    СУММА(Итого),
    ВЫБОР
        КОГДА &НеВключатьНДСВСтоимостьПартий
            ТОГДА СУММА(Данные.СтоимостьБезНДС)
        ИНАЧЕ СУММА(Данные.Стоимость)
    КОНЕЦ - СУММА(Данные.СебестоимостьКредитНота) КАК ВаловаяПрибыль,
    ВЫБОР
        КОГДА СУММА(Данные.СебестоимостьКредитНота) <> 0
            ТОГДА СУММА(Данные.СтоимостьБезНДС) / СУММА(Данные.СебестоимостьКредитНота)
        ИНАЧЕ 0
    КОНЕЦ КАК Наценка,
    СУММА(РасходыНаДоставкуПокупателю),
    СУММА(СуммаЗатратДоставкиНаСклад)
ПО
    ОБЩИЕ,
    Покупатель
АВТОУПОРЯДОЧИВАНИЕ
3 shamannk
 
03.02.17
12:49
В конструкторе сделай
4 John83
 
03.02.17
12:49
(3) так в нем и делаю, он же и ругается
5 shamannk
 
03.02.17
13:04
(4) И что непонятно?
6 John83
 
03.02.17
13:49
вместо Данные.Себестоимость сделал просто Себестоимость - вроде схавал