Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Объединение запросов в СКД

Объединение запросов в СКД
Я
   Aswed
 
08.01.19 - 22:24
Не понимаю что за ерунда происходит.
Делаю простейший запрос. Продажи по периодам с переводом штук в КГ. Формирую простейший запрос:

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

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

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

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

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

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

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

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

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

 

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

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

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


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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует