Вход | Регистрация
 
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 или кнопку "Обновить" в браузере.
Рекламное место пустует