Имя: Пароль:
1C
 
Итоги в СКД
0 ejikbeznojek
 
12.11.15
13:19
Есть запрос
В нём соединение 2х таблиц
Таблица Накладных и таблица затрат на доставку.
Если доставки было 2, то получается табличка из 2х строчек на каждую такую накладную.

Накладная  КоличествоНакладной   СуммаЗаДоставку   ТК

SNL-00001       100                 10р           DHL
SNL-00001       100                 20р           ЭйрТранс

SNL-00002       200                 10р           DHL
SNL-00002       200                20р           ЭйрТранс

Итоги           600р                 60р

Как сделать чтобы количество накладной суммировало в итогах правильно и получалось 300?

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

СГРУППИРОВАТЬ ПО
    РаспределениеУСОпоНакладным.Период,
    РаспределениеУСОпоНакладным.Регистратор,
    РаспределениеУСОпоНакладным.Накладная.ДатаОтгрузки,
    ЗаявкаНаОтгрузкуНакладные.Автомобиль,
    РаспределениеУСОпоНакладным.ПериодРасходов,
    ЗаявкаНаОтгрузкуНакладные.Ссылка,
    ВЫБОР
        КОГДА РаспределениеУСОпоНакладным.Накладная ЕСТЬ NULL
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ,
    ЕСТЬNULL(РаспределениеУСОпоНакладным.Накладная, ЗаявкаНаОтгрузкуНакладные.Накладная),
    ЕСТЬNULL(РаспределениеУСОпоНакладным.Подразделение, ЗаявкаНаОтгрузкуНакладные.Накладная.Подразделение),
    ЕСТЬNULL(РаспределениеУСОпоНакладным.ДатаОтгрузки, ЗаявкаНаОтгрузкуНакладные.Ссылка.ДатаОтгрузки),
    ЕСТЬNULL(РаспределениеУСОпоНакладным.Контрагент, ЗаявкаНаОтгрузкуНакладные.Получатель),
    ВЫБОР
        КОГДА РаспределениеУСОпоНакладным.Регистратор ЕСТЬ NULL
            ТОГДА "Не распределено!!!!!!!!"
        ИНАЧЕ ЕСТЬNULL(РаспределениеУСОпоНакладным.Регистратор.Контрагент, "ОВЛ")
    КОНЕЦ,
    ЕСТЬNULL(РаспределениеУСОпоНакладным.Регистратор.Автомобиль, ЗаявкаНаОтгрузкуНакладные.Автомобиль),
    ВЫБОР
        КОГДА РаспределениеУСОпоНакладным.Регистратор ЕСТЬ NULL
            ТОГДА ЕСТЬNULL(ЗаявкаНаОтгрузкуНакладные.Накладная.ПунктДоставки, ЗаявкаНаОтгрузкуНакладные.Накладная.ПунктДоставкиПолучатель)
        ИНАЧЕ РаспределениеУСОпоНакладным.ПунктДоставки
    КОНЕЦ,
    ВЫБОР
        КОГДА РаспределениеУСОпоНакладным.Регистратор ЕСТЬ NULL
            ТОГДА ВЫБОР
                    КОГДА ЗаявкаНаОтгрузкуНакладные.ВидНакладной = "ЗТО"
                        ТОГДА ВЫРАЗИТЬ(ЗаявкаНаОтгрузкуНакладные.Накладная.ПунктДоставкиПолучатель.АдресПолучателя КАК СТРОКА(100))
                    ИНАЧЕ ВЫРАЗИТЬ(ЗаявкаНаОтгрузкуНакладные.Накладная.ПунктДоставки.АдресПолучателя КАК СТРОКА(100))
                КОНЕЦ
        ИНАЧЕ ВЫРАЗИТЬ(РаспределениеУСОпоНакладным.Накладная.ПунктДоставки.АдресПолучателя КАК СТРОКА(100))
    КОНЕЦ,
    ВЫБОР
        КОГДА РаспределениеУСОпоНакладным.Регистратор ЕСТЬ NULL
            ТОГДА ВЫБОР
                    КОГДА ЗаявкаНаОтгрузкуНакладные.ВидНакладной = "ЗТО"
                        ТОГДА ВЫРАЗИТЬ(ЗаявкаНаОтгрузкуНакладные.Накладная.ПунктДоставкиПолучатель.ПочтовыйАдрес КАК СТРОКА(100))
                    ИНАЧЕ ВЫРАЗИТЬ(ЗаявкаНаОтгрузкуНакладные.Накладная.ПунктДоставки.ПочтовыйАдрес КАК СТРОКА(100))
                КОНЕЦ
        ИНАЧЕ ВЫРАЗИТЬ(РаспределениеУСОпоНакладным.Накладная.ПунктДоставки.ПочтовыйАдрес КАК СТРОКА(100))
    КОНЕЦ,
    ВЫБОР
        КОГДА РаспределениеУСОпоНакладным.Регистратор ЕСТЬ NULL
            ТОГДА ВЫБОР
                    КОГДА ЗаявкаНаОтгрузкуНакладные.ВидНакладной = "ЗТО"
                        ТОГДА ВЫРАЗИТЬ(ЗаявкаНаОтгрузкуНакладные.Накладная.ПунктДоставкиПолучатель.ПунктПерегруза.АдресПолучателя КАК СТРОКА(100))
                    ИНАЧЕ ВЫРАЗИТЬ(ЗаявкаНаОтгрузкуНакладные.Накладная.ПунктДоставки.ПунктПерегруза.АдресПолучателя КАК СТРОКА(100))
                КОНЕЦ
        ИНАЧЕ ВЫРАЗИТЬ(РаспределениеУСОпоНакладным.Накладная.ПунктДоставки.ПунктПерегруза.АдресПолучателя КАК СТРОКА(100))
    КОНЕЦ,
    РаспределениеУСОпоНакладным.НомерСтроки,
    РаспределениеУСОпоНакладным.СуммаНакладной,
    ЗаявкаНаОтгрузкуНакладные.ВидНакладной,
    ВЫБОР
        КОГДА ЗаявкаНаОтгрузкуНакладные.ВидНакладной = "ПНК"
            ТОГДА ПОДСТРОКА(ЗаявкаНаОтгрузкуНакладные.АдресОтправитель, 1, 1000)
        КОГДА ЗаявкаНаОтгрузкуНакладные.ВидНакладной = "ЗТО"
                И ЗаявкаНаОтгрузкуНакладные.Отправитель ССЫЛКА Справочник.Контрагенты
            ТОГДА ПОДСТРОКА(ЗаявкаНаОтгрузкуНакладные.АдресОтправитель, 1, 1000)
        ИНАЧЕ ПОДСТРОКА(ЗаявкаНаОтгрузкуНакладные.АдресПолучатель, 1, 1000)
    КОНЕЦ,
    НАЧАЛОПЕРИОДА(ЗаявкаНаОтгрузкуНакладные.Ссылка.ДатаОтгрузки, МЕСЯЦ)
[/code]
1 ejikbeznojek
 
12.11.15
13:20
p.s как сделать чтобы код сворачивался?)
попытался сейчас вначале написать
[code]
а в конце [/code]
2 ejikbeznojek
 
12.11.15
13:26
(0) И чтобы, если я в настройках я уберу поле ТК
из этой таблички

Накладная  КоличествоНакладной   СуммаЗаДоставку   ТК
SNL-00001       100                 10р           DHL
SNL-00001       100                 20р           ЭйрТранс
Итог            200                 30

Было

Накладная  КоличествоНакладной   СуммаЗаДоставку
SNL-00001       100                 30
Итог            100                 30

А не

Накладная  КоличествоНакладной   СуммаЗаДоставку
SNL-00001       200                 30
Итог            200                 30
3 Tetragrammathon
 
12.11.15
13:27
Не соединяй в запросе тогда, а соедини наборы в СКД, или убери количество и прицепи отдельно таблицу количества.
4 ejikbeznojek
 
12.11.15
13:33
Т.е. я ещё раз добавляю 2ю накладных, соединяю по накладной с 1й таблицей. И из этой таблицы беру поле Сумма(КоличествоНакладной). Но это получается не ресурс будет, который виден в итогах
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан