Имя: Пароль:
 
1C
1С v8
СКД Суммирование в группировке
0 QWarLockQ
 
25.10.16
07:03
Доброго времени суток.
Пытаюсь побороть СКД. Есть отчет по заказам покупателя, к заказу привязаны счет на оплату (доход) и заказ поставщику (расход), группировка по заказам покупателя. Проблема состоит в том, что при суммировании всех доходов или расходов происходит следующее: к счету на оплату (колонка доход) привязывается колонка расход, хотя она должна быть пустая (см. скрин: http://s8.hostingkartinok.com/uploads/images/2016/10/178b4a430700bf3636e19f2d477febb5.png). В итоге сумма дохода или расхода считается по всем полям колонки, вне зависимости от того это счет на оплату или заказ поставщику. Вообще в идеале должно быть так: http://s8.hostingkartinok.com/uploads/images/2016/10/eeba80779022708aee92bedc9a9c6d8f.png, только чтобы сумма ещё считалась в полях заказа покупателя. Подскажите как сумму вывести пожалуйста :)
1 Грызлик
 
25.10.16
07:34
(0) Нужно смотреть, что у тебя в запросе. С первого взгляда можно решить так.

Или два объединяющих запроса, где 0, Доход - первый запрос. И Расход, 0 - второй запрос.

НУ или через выборку.
Поле доход рассчитываем

Выбор
   Когда Ргестратор.СчетНаОплату
    Тогда СуммаСчетаНаОплату
    Иначе 0
КОНЕЦ

А скд уже все сама сделает
2 QWarLockQ
 
25.10.16
07:38
Вот так запрос выглядит:

ВЫБРАТЬ
    ДокЗаказПокупателя.Ссылка КАК ЗаказПокупателя,
    ЗаказПоставщику.СуммаДокумента КАК Расход,
    ЗаказПоставщику.Ссылка КАК ЗаказПоставщику,
    СчетНаОплату.Ссылка КАК СчетНаОплату,
    СчетНаОплату.СуммаДокумента КАК Доход,
    ДокЗаказПокупателя.СостояниеЗаказа.Наименование,
    ДокЗаказПокупателя.Контрагент
ИЗ
    Документ.ЗаказПоставщику КАК ЗаказПоставщику
        ПОЛНОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ДокЗаказПокупателя
            ПОЛНОЕ СОЕДИНЕНИЕ Документ.СчетНаОплату КАК СчетНаОплату
            ПО (СчетНаОплату.ДокументОснование.Ссылка = ДокЗаказПокупателя.Ссылка)
        ПО ЗаказПоставщику.ЗаказПокупателя.Ссылка = ДокЗаказПокупателя.Ссылка
ГДЕ
    ДокЗаказПокупателя.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    И ВЫБОР
            КОГДА &СостояниеЗаказа = НЕОПРЕДЕЛЕНО
                    ИЛИ &СостояниеЗаказа = ""
                ТОГДА ИСТИНА
            ИНАЧЕ ДокЗаказПокупателя.СостояниеЗаказа.Наименование = &СостояниеЗаказа
        КОНЕЦ
3 iceman2112
 
25.10.16
08:37
ОБЪЕДИНЕНИТЬ
4 QWarLockQ
 
25.10.16
08:52
(3) Можно подробней, пожалуйста?
5 Грызлик
 
25.10.16
09:16
Если грубо. То примерно так

ВЫБРАТЬ
    ЗаказПокупателя.Ссылка,
    ЗаказПоставщику.СуммаДокумента КАК Приход,
    0 КАК Расход
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК ЗаказПоставщику
        ПО ЗаказПокупателя.Ссылка = ЗаказПоставщику.ОсновнойДокументЗаказа

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

ВЫБРАТЬ
    ЗаказПокупателя.Ссылка,
    0,
    СчетНаОплатуПокупателю.СуммаДокумента
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
        ПО ЗаказПокупателя.ДокументОснование = СчетНаОплатуПокупателю.Ссылка
6 QWarLockQ
 
25.10.16
11:43
(5) Получилось почти хорошо, спасибо ) Только вот: http://s8.hostingkartinok.com/uploads/images/2016/10/b2b5fe8903beb3cadfe265756a84082d.png

Можно как-то пустые строки убрать?
7 QWarLockQ
 
26.10.16
07:21
В итоге запрос такой получился:

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

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

ВЫБРАТЬ
    ДокЗаказПокупателя.Ссылка,
    0,
    СчетНаОплату.СуммаДокумента,
    0,
    СчетНаОплату.Ссылка,
    ДокЗаказПокупателя.Дата,
    ДокЗаказПокупателя.СостояниеЗаказа.Наименование,
    ДокЗаказПокупателя.Контрагент
ИЗ
    Документ.ЗаказПокупателя КАК ДокЗаказПокупателя
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплату КАК СчетНаОплату
        ПО (СчетНаОплату.ДокументОснование.Ссылка = ДокЗаказПокупателя.Ссылка)
8 QWarLockQ
 
26.10.16
07:23
(7) Но появилась за этим ещё одна проблема. При добавлении параметров для фильтра (дата или состояние заказа), колонка Расход не выводит вообще ничего.
9 aleks_default
 
26.10.16
09:21
(7) запрос гуано

ЗаказПоставщику.ЗаказПокупателя.Ссылка КАК ЗаказПокупателя

ПО (СчетНаОплату.ДокументОснование.Ссылка = ДокЗаказПокупателя.Ссылка)

ДокЗаказПокупателя.СостояниеЗаказа.Наименование,
10 QWarLockQ
 
26.10.16
10:09
(9) Если я брать буду заказ покупателя из заказа поставщику, то выберутся не все заказы покупателя которые есть, так как в каждом заказе поставщику есть заказ покупателя, но не в каждом заказе покупателя есть заказ поставщику
11 aleks_default
 
26.10.16
10:12
(10) я вообще то про лишние поля через точку, но и на это отвечу - тогда нужно использовать не ЛЕВОЕ а ВНУТРЕННЕЕ соединение
12 QWarLockQ
 
26.10.16
10:30
(11) Заметил кстати косяк по вашему замечанию ) сам выводил заказы покупателя через поставщика.
Только по (9) всё равно не понял, можно полностью запрос куда это вставлять, пожалуйста?
13 iceman2112
 
26.10.16
10:47

ЗаказПоставщику.ЗаказПокупателя.Ссылка КАК ЗаказПокупателя,

....

  Документ.ЗаказПокупателя КАК ДокЗаказПокупателя
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК ЗаказПоставщику


Вообще огонь
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой