Имя: Пароль:
1C
1С v8
Как в ДинамическомСписке вывести итоги суммы по двум табличным частям?
,
0 arsik
 
гуру
15.06.22
11:56
Документ. У него 2 табличные части "Товары", "Услуги".
Хочу в динамическом списке вывести Документ, ИтогСуммыПоТоварам, ИтогСуммыПоУслугам.
Не понимаю как это сделать.
1 Жан Пердежон
 
15.06.22
12:17
запросом
2 RomanYS
 
15.06.22
12:21
(0) Если это регулярная потребность, то лучше добавить поля или РС и заполнять их ПередЗаписью.
Если нужно в лоб здесь и сейчас - запросом соединяй с таблицами ТЧ
3 arsik
 
гуру
15.06.22
12:22
(1) Не получается. С использованием временных таблиц все долго делается. Левым соединением и группировкой не получится, т.к. тут 2 ТЧ.
4 Выпрь
 
15.06.22
12:31
(3) открой для себя 2 левых соединения
5 arsik
 
гуру
15.06.22
12:46
(4) Это как? С 2мя соединениями билиберда же получится.
Вот пример. В тч товары 1 строка, а в ТЧ услуги 2 строки. Общая сумма по документу 1982. В результате запроса же получится 2214
https://i.imgur.com/ggNRyNk.png
6 Выпрь
 
15.06.22
12:48
так нужно соединять сс сгруппированными таблицами, но будет тормозить
7 arsik
 
гуру
15.06.22
13:02
(6) Сделал через вложенный запрос. Оптимизатор в этом случае работает быстро.
8 hhhh
 
15.06.22
15:44
(6) в тч 2 строки и будет тормозить?
9 vicof
 
15.06.22
16:08
А я бы сделал два реквизита в документе, куда перед записью писал итоги сумм
10 Выпрь
 
15.06.22
16:16
(6) группировка вызовет чтение всей таблицы
11 arsik
 
гуру
15.06.22
18:29
(10) через вложенный запрос с соединением быстро работает,а вот через временную таблицу - да, там чтение всей таблицы
12 Ёпрст
 
15.06.22
18:53
13 Mihasya
 
17.06.22
10:40
(0) А если так?

ВЫБРАТЬ
    ПоступлениеТоваровУслуг.Ссылка КАК Ссылка,
    СУММА(ЕСТЬNULL(ПоступлениеТоваровУслугТовары.Сумма, 0)) / ВЫБОР
        КОГДА МАКСИМУМ(ЕСТЬNULL(ПоступлениеТоваровУслугУслуги.НомерСтроки, 0)) > 0
            ТОГДА МАКСИМУМ(ЕСТЬNULL(ПоступлениеТоваровУслугУслуги.НомерСтроки, 0))
        ИНАЧЕ 1
    КОНЕЦ КАК СуммаТоваров,
    СУММА(ЕСТЬNULL(ПоступлениеТоваровУслугУслуги.Сумма, 0)) / ВЫБОР
        КОГДА МАКСИМУМ(ЕСТЬNULL(ПоступлениеТоваровУслугТовары.НомерСтроки, 0)) > 0
            ТОГДА МАКСИМУМ(ЕСТЬNULL(ПоступлениеТоваровУслугТовары.НомерСтроки, 0))
        ИНАЧЕ 1
    КОНЕЦ  КАК СуммаУслуг
ИЗ
    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
        ПО (ПоступлениеТоваровУслуг.Ссылка = ПоступлениеТоваровУслугТовары.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Услуги КАК ПоступлениеТоваровУслугУслуги
        ПО (ПоступлениеТоваровУслуг.Ссылка = ПоступлениеТоваровУслугУслуги.Ссылка)
ГДЕ
    ПоступлениеТоваровУслуг.Ссылка = &Ссылка

СГРУППИРОВАТЬ ПО
    ПоступлениеТоваровУслуг.Ссылка
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.