Имя: Пароль:
1C
1С v8
Объединение запросов, чтобы в каждом были итоги
,
0 alexio_alexio
 
02.10.16
13:21
Можно ли как-то написать в одном запросе объединение запросов, чтобы в каждом из запросов была своя секция итогов? Поясню на примере: надо получить количество и стоимость в рядом стоящих строках по складам и номенклатуре из РН "Товары на складах" (тут берем количество) и "Партии товаров на складах" (тут берем стоимость), причем итоги тоже надо считать отдельно по количеству и стоимости. Вот примерный (неправильный, т.к. в объединении запросов итоги следуют для результата объединения) код:

ВЫБРАТЬ
    ТоварыНаСкладахОбороты.Склад КАК Склад,
    ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОбороты.КоличествоОборот КАК КоличествоОборот,
    ТоварыНаСкладахОбороты.КоличествоПриход КАК КоличествоПриход,
    ТоварыНаСкладахОбороты.КоличествоРасход КАК КоличествоРасход
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Обороты КАК ТоварыНаСкладахОбороты
ИТОГИ
    СУММА(КоличествоОборот),
    СУММА(КоличествоПриход),
    СУММА(КоличествоРасход)
ПО
    ОБЩИЕ,
    Склад

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

ВЫБРАТЬ
    ПартииТоваровНаСкладахОбороты.Склад,
    ПартииТоваровНаСкладахОбороты.Номенклатура,
    ПартииТоваровНаСкладахОбороты.СтоимостьОборот,
    ПартииТоваровНаСкладахОбороты.СтоимостьПриход,
    ПартииТоваровНаСкладахОбороты.СтоимостьРасход
ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах.Обороты КАК ПартииТоваровНаСкладахОбороты
ИТОГИ
    СУММА(СтоимостьОборот),
    СУММА(СтоимостьПриход),
    СУММА(СтоимостьРасход)
ПО
    ОБЩИЕ,
    Склад

Если использовать вирт. таблицы или вложенные запросы тоже вроде не получается нужное или я не прав? Конечно же приходит на ум выгрузить каждый из запросов в ТЗ и потом работать с ней. Но может есть возможность записать в одном запросе нужное без использования ТЗ?
1 alexio_alexio
 
02.10.16
13:22
(0) ТЗ-таблица значений
2 DailyLookingOnA Sunse
 
02.10.16
13:48
Это надо?

ИТОГИ
    СУММА(КоличествоОборот),
    СУММА(КоличествоПриход),
    СУММА(КоличествоРасход)
    0,
    0,
    0
ОБЪЕДИНИТЬ ВСЕ

ИТОГИ
    0,
    0,
    0,
    СУММА(СтоимостьОборот),
    СУММА(СтоимостьПриход),
    СУММА(СтоимостьРасход)
3 DailyLookingOnA Sunse
 
02.10.16
13:49
Ну и объединение завернуть во вложенный запрос или временную таблицу и сгруппировать.
4 vvp91
 
02.10.16
13:53
Вариант 1:

ВЫБРАТЬ
    ТТ.Склад КАК Склад,
    ТТ.Номенклатура КАК Номенклатура,
    ТТ.КоличествоОборот КАК КоличествоОборот,
    ТТ.КоличествоПриход КАК КоличествоПриход,
    ТТ.КоличествоРасход КАК КоличествоРасход,
    0. КАК СтоимостьОборот,
    0. КАК СтоимостьПриход,
    0. КАК СтоимостьРасход
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Обороты КАК ТТ

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

ИТОГИ
    СУММА(КоличествоОборот),
    СУММА(КоличествоПриход),
    СУММА(КоличествоРасход),
    СУММА(СтоимостьОборот),
    СУММА(СтоимостьПриход),
    СУММА(СтоимостьРасход)
ПО
    ОБЩИЕ,
    Склад


Вариант 2:

ВЫБРАТЬ
    ТТ.Склад КАК Склад,
    "КОЛИЧЕСТВО" КАК ТипИтогов,
    ТТ.Номенклатура КАК Номенклатура,
    ТТ.КоличествоОборот КАК Оборот,
    ТТ.КоличествоПриход КАК Приход,
    ТТ.КоличествоРасход КАК Расход,
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Обороты КАК ТТ

ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    ТТ.Склад,
    "СТОИМОСТЬ" КАК ТипИтогов,
    ТТ.Номенклатура,
    ТТ.СтоимостьОборот КАК Оборот,
    ТТ.СтоимостьПриход КАК Приход,
    ТТ.СтоимостьРасход КАК Расход
ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах.Обороты КАК ТТ

ИТОГИ
    СУММА(Оборот),
    СУММА(Приход),
    СУММА(Расход)
ПО
    ОБЩИЕ,
    Склад,
    ТипИтогов
5 alexio_alexio
 
02.10.16
14:03
(4) вариант 1: но получаем же 6 количественно-суммовых столбцов вместо нужных 3-х?
6 alexio_alexio
 
02.10.16
14:04
(5) т.е. получаете полное соединение
7 vvp91
 
02.10.16
14:10
(6) Какое "полное соединение"?
Матчасть здесь - https://ru.wikipedia.org/wiki/Join_(SQL)#FULL_OUTER_JOIN
8 alexio_alexio
 
02.10.16
14:16
(4) вариант 2: вот за это спасибо, где почитать про конструкцию:
ВЫБРАТЬ
...
"КОЛИЧЕСТВО" КАК ТипИтогов,
...
ПО
    ...
   ТипИтогов ?
9 mistеr
 
02.10.16
14:18
(0) Объединение выполняется в базе, итоги считаются после этого в платформе. Вопрос исчерпан?

Осваивай СКД и считай что угодно и как угодно.
10 alexio_alexio
 
02.10.16
14:19
(4) вариант 2: вот за это спасибо, где почитать про конструкцию:

ВЫБРАТЬ
...
"КОЛИЧЕСТВО" КАК ТипИтогов,
...
ПО
    ...
   ТипИтогов
?
11 alexio_alexio
 
02.10.16
14:20
(9) дорабатываю отчет на базе универсального
12 alexio_alexio
 
02.10.16
14:25
(10) хотя вроде понял, это просто искусственное добавление поля, чтобы потом удобно использовать в итогах?
Ошибка? Это не ошибка, это системная функция.