Имя: Пароль:
1C
1С v8
СКД. Итоги в группировке по одинаковым строкам.
,
0 jonik_joker
 
23.06.15
20:56
Всем привет.Ситуация следующая:
Часть отчета выводится в виде

Группировка1(СрокОплаты)  
     Группировка2(Инвойс) СуммаИнвойса(Ресурс)

В случае, если во 2-й группировке 2 одинаковых инвойса(соответственно и сумма по ним одна и та же) в итог по группировке сумма по данному инвойсу попадает дважды. Как этого избежать?
1 runoff_runoff
 
23.06.15
22:17
каким образом определяется "одинаковость" инвойсов?..
2 jonik_joker
 
24.06.15
16:27
вот сам запрос

ВЫБРАТЬ
    ПрохождениеТаможниСостав.Ссылка КАК Инвойс,
    ПрохождениеТаможниСостав.Заявка,
    СУММА(ПрохождениеТаможниСостав.Стоимость) КАК Стоимость
ПОМЕСТИТЬ ТЧТаможня
ИЗ
    Документ.ПрохождениеТаможни.Состав КАК ПрохождениеТаможниСостав
ГДЕ
    ПрохождениеТаможниСостав.Ссылка.Клиент = &Клиент

СГРУППИРОВАТЬ ПО
    ПрохождениеТаможниСостав.Заявка,
    ПрохождениеТаможниСостав.Ссылка
;

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

УПОРЯДОЧИТЬ ПО
    ВложенныйЗапрос.Инвойс.Дата УБЫВ
3 jonik_joker
 
24.06.15
16:41
в результате получается таблица

Инвойс     Заявка       Стоимость       Оборот

MLT-03371  000006309     3719,47            3719,47    
MLT-03371  000006310     13332,76    13332,76    
MLT-03344  000006289     16796,16    16796,16    
MLT-03343  000006289     16796,16    16796,16    
....
MLT-02812  000005907    144,96                            
MLT-02813  000005913       17088,48    2000                
MLT-02813  000005913     17088,48    15088,48
4 Cyberhawk
 
24.06.15
16:42
Покажи на картинке
5 jonik_joker
 
24.06.15
16:43
как сделать чтобы в скд при вычислении итога в столбце "стоимость" по группировке "инвойс" ресурсы по MLT-02813 не складывались?
6 vicof
 
24.06.15
16:47
Добавить ресурс, указать группировку, указать нужное значение
7 jonik_joker
 
24.06.15
16:49
8 jonik_joker
 
24.06.15
16:50
ресурсы Стоимость и Оборот, соответственно они и суммируются
9 jonik_joker
 
24.06.15
16:51
а нужно в случае одинаковой пары (Инвойс,Заявка) сумму по стоимости не считать
10 vicof
 
24.06.15
17:27
(9) Еще раз читаем (6). Ресурсы можно рассчитывать по разным группировкам.
11 jonik_joker
 
24.06.15
17:37
(10), мне в любом случае нужно рассчитать итоги по ресурсу стоимость только в случае одинаковой пары (Инвойс,Заявка) значение суммы инвойса нужно взять только единожды. Так что указанием конкретного поля ничего не изменишь.
12 freetype
 
24.06.15
17:43
Не правильно саму таблицу готовишь.
13 vicof
 
24.06.15
17:46
(11) Ну пару функций пропишешь в выражении и будет тебе счастье
14 jonik_joker
 
28.06.15
08:19
Решил проблему с помощью функции ВычислитьВыражениеСГруппировкойМассив(),советую.Но потом...переписал заново запрос и обошелся без нее)
15 echo77
 
28.06.15
08:54
(14) Теперь расскажи другим по-подробнее.
Задача правильно решается двумя способами:
1. Использовать Объединение таблиц(Таможня, Оплаты), вместо соединения
2. Использовать два набора данных в СКД(Таможня, Оплаты)
16 jonik_joker
 
30.06.15
09:50
(15) Вы угадали) Дело в том что, что нужно еще выводить дату оплаты, поэтому без этого поля можно было бы просто сгруппировать и суммировать по обороту, но пришлось сначала объединить (Таможня,Оплата) без поля даты оплаты,потом соединить с Заявка(оттуда нужно несколько полей вытащить) с групировкой, а потом в СКД создать 2-й набор данных Оплата, откуда вытаскивается дата оплаты.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.