8.х СКД. Итоги в группировке по одинаковым строкам.

Тема в разделе "Система компоновки данных (СКД)", создана пользователем Jonik_joker, 23 июн 2015.

  1. TopicStarter Overlay
    Jonik_joker
    Offline

    Jonik_joker

    Регистрация:
    11 сен 2013
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Всем привет.Ситуация следующая:
    Часть отчета выводится в виде

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


    В случае, если во 2-й группировке 2 одинаковых инвойса(соответственно и сумма по ним одна и та же) в итог по группировке сумма по данному инвойсу попадает дважды. Как этого избежать?
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Сделать двумя наборами данных. В первом наборе данных получаете данные для первой группировки (СрокиОплаты) во втором для вложенной (Инвойсы), на закладке связи наборов данных соединить их. Итоги по группировке верхнего уровня будут считаться правильно.

    Правда я не совсем понял откуда 2 одинаковых инвойса во второй группировке берутся.
  3. TopicStarter Overlay
    Jonik_joker
    Offline

    Jonik_joker

    Регистрация:
    11 сен 2013
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    вообще есть еще 1 группировка)

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

    Соответственно в разных заявках может быть один и тот же инвойс.
    --- Объединение сообщений, 23 июн 2015 ---
    Вариант обмена местами группировок 2-3 не предлагать)
    --- Объединение сообщений, 23 июн 2015 ---
    ...да и не поможет это
    Последнее редактирование: 23 июн 2015
  4. TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    997
    Симпатии:
    70
    Баллы:
    54
    Т.е. это разные виды документов? и один можно исключить из запроса? или они взаимозаменяемы? Есть что то что есть всегда? Или может быть одна заявка или только Инвойс?
  5. TopicStarter Overlay
    Jonik_joker
    Offline

    Jonik_joker

    Регистрация:
    11 сен 2013
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Заявка состоит из инвойсов

    вот код

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

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

    ////////////////////////////////////////////////////////////////////////////////

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

    УПОРЯДОЧИТЬ ПО
    ВложенныйЗапрос.Инвойс.Дата УБЫВ

    а вот какая таблица получается в итоге

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

    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

    как сделать чтобы в скд при вычислении итога в столбце "стоимость" по группировке "инвойс" ресурсы по MLT-02813 не складывались?
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    ээээ....а если группировать по Инвойс, Заявка, Стоимость и делать СУММА(Оборот)?
  7. TopicStarter Overlay
    Jonik_joker
    Offline

    Jonik_joker

    Регистрация:
    11 сен 2013
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    вы имеете ввиду сделать Стоимость группировкой в настройках скд? попробовал, конечно все красиво, но мне нужно выводить сумму по этому полю
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Группировку делать в запросе, причем это все нужно будет в подзапрос превратить.....
    Сумма будет в группировке по Инвойсу, но она не будет мультиплицироваться в зависимости от количества оборотов по комбинации Инвойс+Заявка.
  9. TopicStarter Overlay
    Jonik_joker
    Offline

    Jonik_joker

    Регистрация:
    11 сен 2013
    Сообщения:
    21
    Симпатии:
    0
    Баллы:
    1
    Решил проблему с помощью функции ВычислитьВыражениеСГруппировкойМассив(),советую.Но потом...переписал заново запрос и обошелся без нее)

Поделиться этой страницей