Имя: Пароль:
1C
1С v8
Объединение запросов в СКД
,
0 Aswed
 
08.01.19
22:24
Не понимаю что за ерунда происходит.
Делаю простейший запрос. Продажи по периодам с переводом штук в КГ. Формирую простейший запрос:

ВЫБРАТЬ
    ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК АналитикаУчетаНоменклатурыНоменклатура,
    СУММА(ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот * ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура.ВесЧислитель) КАК КоличествоОборот1,
    СУММА(ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот) КАК СуммаВыручкиОборот1,
    СУММА(ВыручкаИСебестоимостьПродажОбороты.СтоимостьОборот) КАК СтоимостьОборот1
ПОМЕСТИТЬ Данные
ИЗ
    РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода1, ДЕНЬ), НАЧАЛОПЕРИОДА(&КонецПериода1, ДЕНЬ), , ) КАК ВыручкаИСебестоимостьПродажОбороты

СГРУППИРОВАТЬ ПО
    ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Данные.АналитикаУчетаНоменклатурыНоменклатура КАК Номенклатура,
    Данные.СуммаВыручкиОборот1 КАК СуммаВыручкиОборот1,
    Данные.СтоимостьОборот1 КАК СтоимостьОборот1,
    Данные.КоличествоОборот1 КАК КоличествоОборот1
ИЗ
    Данные КАК Данные

В нём как видно происходит умножение коэффициента веса на количество товара

СУММА(ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот * ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура.ВесЧислитель) КАК КоличествоОборот1,

В отдельном запросе и отчёте в СКД всё отлично выводит и показывает верную цифру.
Но как только делаю объединение запросов эта схема перестаёт работать и показывает просто количество проданных штук.

Т.е. продали 188 штук по 0,7 кг. В одиночном запросе показывает 131,6, как оно и было. Но в объединённом всё равно показывает 188

Почему так выходит?
1 Franchiser
 
гуру
08.01.19
22:38
Объединение каких запросов ?
2 Aswed
 
08.01.19
22:41
(1) Вот этих что в (0)
Там одинаковые запросы в СКД, отличаются только параметрами
3 Радим1987
 
08.01.19
22:55
(1) Я так думаю не объединение запросов, а после помещения во временную таблицу "Данные" показывает просто количество проданных штук?
4 Aswed
 
08.01.19
23:00
(3) Нет. Вот в таком вот виде, с уже выводом из виртуальной таблицы, он всё верно показывает.
Но как только делаю объединение двух запросов, начинается эта чехорда
5 Радим1987
 
08.01.19
23:07
пример объединения запросов



ВЫБРАТЬ
    ПервыйЗапрос.Поле1 КАК Поле1,
    ПервыйЗапрос.Поле2 КАК Поле2,
    ПервыйЗапрос.Поле3 КАК Поле3
ИЗ
    ПервыйЗапрос КАК ПервыйЗапрос

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

ВЫБРАТЬ
    ВторойЗапрос.Поле1,
    ВторойЗапрос.Поле2,
    ВторойЗапрос.Поле3
ИЗ
    ВторойЗапрос КАК ВторойЗапрос

6 mastodont
 
08.01.19
23:08
(4) у тебя первый запрос помещает данные во временную таблицу, второй запрос берет данные из этой таблицы. Что ты объединяешь?
7 Aswed
 
08.01.19
23:25
Объединение запросов в СКД (!)
В СКД я объединяю два запроса)))
8 palsergeich
 
08.01.19
23:30
1) Зачем 2ой запрос в пакете в принципе?
2) Зачем аггрегатная функкция в тексте 1го запроса?
3) ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура - таких вещей надо избегать.
Основная ошибка - вы оперируете с СКД как с запросом.
А надо работать с СКД как с СКД, там есть особенности, роли у полей и ТД
9 palsergeich
 
08.01.19
23:32
ВЫБРАТЬ
    ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК АналитикаУчетаНоменклатурыНоменклатура,
    (ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот * ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура.ВесЧислитель) КАК КоличествоОборот1,
    (ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот) КАК СуммаВыручкиОборот1,
    (ВыручкаИСебестоимостьПродажОбороты.СтоимостьОборот) КАК СтоимостьОборот1

ИЗ
    РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода1, ДЕНЬ), НАЧАЛОПЕРИОДА(&КонецПериода1, ДЕНЬ), , ) КАК ВыручкаИСебестоимостьПродажОбороты
Остальное сделать на уровне компановки.
+ вместо ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура соединить внутренним соединением с аналитикой учета и достать номенклатуру оттуда.
10 palsergeich
 
08.01.19
23:37
https://www.spec8.ru/kurs-po-skd-besplatno вот этого для закрытия пробелов будет достаточно
11 Aswed
 
09.01.19
08:13
(8) Пакет там был потому что я этот запрос взял из куска кода обработки. Что она у меня делала уже и не помню) Но он верно работал и я не стал заморачиваться.

И всё дело оказалось именно в этих лишних виртуальных таблицах. Как только убрал их, так сразу всё стало верно выводить)
12 Aswed
 
09.01.19
08:13
Всем спасибо)
AdBlock убивает бесплатный контент. 1Сергей