Имя: Пароль:
1C
1С v8
Как правильно свернуть в запросе
0 Coldboy
 
09.04.14
12:25
Здравствуйте. Делаю запрос к двум табличным частям документа. При связи получается замноживание одной из таблиц, в результате получаются кривые данные.  Как правильно сделать связь? Если оставить только вложенный запрос, то все хорошо. Вот запрос:
ВЫБРАТЬ
    ВложенныйЗапрос.Ссылка КАК Документ,
    ВложенныйЗапрос.Номенклатура КАК Блюдо,
    ВложенныйЗапрос.Стоимость КАК СтоимостьБлюда,
    ВложенныйЗапрос.ВсегоСтоимость КАК ВсегоСтоимостьБлюда,
    ВложенныйЗапрос.Количество КАК КоличествоБлюда,
    ВложенныйЗапрос.Склад,
    СБ_ВыпускПродукцииИнгредиенты.Номенклатура КАК Ингредиент,
    СБ_ВыпускПродукцииИнгредиенты.Количество КАК КоличествоИнгредиента,
    СБ_ВыпускПродукцииИнгредиенты.Стоимость КАК СтоимостьИнгредиента,
    СБ_ВыпускПродукцииИнгредиенты.ВсегоСтоимость КАК ВсегоСтоимостьИнгредиента
ИЗ
    (ВЫБРАТЬ
        СБ_ВыпускПродукцииТовары.Ссылка КАК Ссылка,
        СБ_ВыпускПродукцииТовары.Номенклатура КАК Номенклатура,
        СУММА(СБ_ВыпускПродукцииТовары.Стоимость) КАК Стоимость,
        СУММА(СБ_ВыпускПродукцииТовары.ВсегоСтоимость) КАК ВсегоСтоимость,
        СБ_ВыпускПродукцииТовары.Идентификатор КАК Идентификатор,
        СУММА(СБ_ВыпускПродукцииТовары.Количество) КАК Количество,
        СБ_ВыпускПродукцииТовары.Ссылка.Склад КАК Склад
    ИЗ
        Документ.СБ_ВыпускПродукции.Товары КАК СБ_ВыпускПродукцииТовары
    ГДЕ
        СБ_ВыпускПродукцииТовары.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
        И СБ_ВыпускПродукцииТовары.Ссылка.Проведен = ИСТИНА
    
    СГРУППИРОВАТЬ ПО
        СБ_ВыпускПродукцииТовары.Ссылка,
        СБ_ВыпускПродукцииТовары.Номенклатура,
        СБ_ВыпускПродукцииТовары.Идентификатор,
        СБ_ВыпускПродукцииТовары.Ссылка.Склад) КАК ВложенныйЗапрос
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СБ_ВыпускПродукции.Ингредиенты КАК СБ_ВыпускПродукцииИнгредиенты
        ПО ВложенныйЗапрос.Ссылка = СБ_ВыпускПродукцииИнгредиенты.Ссылка
            И ВложенныйЗапрос.Идентификатор = СБ_ВыпускПродукцииИнгредиенты.ИдентификаторПродукция

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Номенклатура,
    ВложенныйЗапрос.Количество,
    ВложенныйЗапрос.Стоимость,
    ВложенныйЗапрос.ВсегоСтоимость,
    ВложенныйЗапрос.Ссылка,
    ВложенныйЗапрос.Склад,
    СБ_ВыпускПродукцииИнгредиенты.Номенклатура,
    СБ_ВыпускПродукцииИнгредиенты.Количество,
    СБ_ВыпускПродукцииИнгредиенты.Стоимость,
    СБ_ВыпускПродукцииИнгредиенты.ВсегоСтоимость
1 hhhh
 
09.04.14
12:29
СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Количество,
    ВложенныйЗапрос.Стоимость,
    ВложенныйЗапрос.ВсегоСтоимость,

сразу расстрелять.
2 Coldboy
 
09.04.14
12:31
(1) пытался убрать задвоение, уже от без исходности ...
3 _fvadim
 
09.04.14
12:31
группировки тут вообще лишние, в запросе ни одной агрегатной функции нет.
4 Coldboy
 
09.04.14
12:34
как мне быть, чтобы не было замножение полей. замножение появляется после связи, количествоблюда, его стоимость считается неправильно. это надо исправить ...
5 _fvadim
 
09.04.14
12:35
(4) полей или записей?

и вкратце структуру таблиц давай
6 dk
 
09.04.14
12:36
приведи пример попроще
есть таблица1 с полями .... и таблица2 с полями ....
пример таблиц на 2-3 строчки приведи и итоговую таблицу3 какую хочешь получить
7 Coldboy
 
09.04.14
12:37
допустим, изначально
Блюдо количество Сумма
Блюдо1 5            10

после связи, получается уже вообще количество 100, а сумма 1000
происходит замножение этих записей в СКД.

(5) зачем тебе структура?
8 Coldboy
 
09.04.14
12:39
записи замножаются...
9 Coldboy
 
09.04.14
12:46
ап
10 _fvadim
 
09.04.14
12:49
(7) действительно, зачем мне...
11 Coldboy
 
09.04.14
12:52
(10) 2 табличные части одного документа, которые связаны по поле индефикатор. выбираю в запросе эти табличные части. Если беру 1 табличную часть, записи все нормально выбираются. после того как делаю связь по ссылке данного документа и индефикатору происходит дублирование или замножение даже записей.
12 piter3
 
09.04.14
12:55
не особо понял условие задачи, но может сначала свернуть таб. части, а уж потом их соединять
13 Coldboy
 
09.04.14
12:56
(12) свернул, во вложенном запросе табличную часть.
14 _fvadim
 
09.04.14
12:56
Я так понимаю, у тебя одному идентификатору товара соответствует несколько ингридиентов.
Если так, то при соединении должны быть дубли.

Сформулируй, что ты хочешь получить на выходе?
15 Coldboy
 
09.04.14
12:57
(14) да правильно понимаешь. одному индефикатору несколько ингридентов.
16 Coldboy
 
09.04.14
12:58
чтобы после связи, количество и сумма не замножилась из за того одному блюду, несколько ингредиентов идет в соответствие...
17 _fvadim
 
09.04.14
12:58
(15) значит запрос работает правильно
18 Coldboy
 
09.04.14
12:58
(17) а как мне быть в моем случае?
19 Coldboy
 
09.04.14
12:59
я хочу чтобы в СКД, при свертке мое количества блюда оставалось нормальным.
20 piter3
 
09.04.14
12:59
(15) там же пф есть всякие потребности ингридиентов по блюдам. оттуда возьми что ли для примера
21 Coldboy
 
09.04.14
12:59
(15) где там?
22 _fvadim
 
09.04.14
13:00
(19) это СКД тебе портит суммы, дело не в запросе
23 Coldboy
 
09.04.14
13:01
(22) и как быть?
24 _fvadim
 
09.04.14
13:03
(23) хз, я в СКД не шарю :)
может где-то "сумма" на "максимум" заменить?
25 piter3
 
09.04.14
13:11
(23) внимательно посмотреть ПечатьПотребностьВИнгредиентах имхо
26 Coldboy
 
09.04.14
22:50
(25) а где смотреть?
27 Фокусник
 
09.04.14
23:04
группировка по товару, количество и сумму сделать Максимум()
28 elCust
 
09.04.14
23:18
У тебя видимо так все выглядит:

ТЧ1:
Номенклатура1 10 шт 100 руб
ТЧ2
Номенклатура1...
Номенклатура1...
Номенклатура1...
Номенклатура1...
Номенклатура1...

Так?

И ты пытаешься их соединить ЛЕВЫМ соединением? Это не верно.
29 Coldboy
 
10.04.14
08:29
(28) да да именно так. и как мне бытЬ?
(27) а как итоги выводить?
30 Coldboy
 
10.04.14
08:37
(28) тип того, точнее вот так
ТЧ1:
Номенклатура1 ПолеСвязи 10 шт 100 руб
ТЧ2:
Номенклатура2 ПолеСвязи 2 шт 5 руб
Номенклатура2 ПолеСвязи 3 шт 7 руб

Хочу вывести
Номенклатура 1  10 шт 100 руб
   Номенклатура2 2 шт 5 руб
   Номенклатура2 3 шт 7 руб.
Как бы подчиненные вещи Номенклатуре1, только без замножения сумма и количеств..
31 _fvadim
 
10.04.14
09:52
(30) деревом что-ли?
32 Coldboy
 
10.04.14
10:38
(31) ну тип того, это продукция же на игрдиенты раскладывается и хочет все это в отчет вывести
33 KokotovDV
 
10.04.14
11:20
(30) В СКД, в разделе Ресурсы, убрать агрегатную функцию СУММА(Количество) , рассчитывать по Номенклатура
сделать просто:
Количество , рассчитывать по Номенклатура
34 Coldboy
 
10.04.14
12:01
(33) и суммирование должно же быть или как?
35 CountR
 
10.04.14
12:31
вместо Сумма поставь Максимум (или Минимум)
36 KokotovDV
 
10.04.14
12:37
(35) Этот вариант (как и вариант (33))решит только локальную задачу: не суммировать задвоенное количество по группировке номенклатуры. Но общие итоги суммировать необходимо. Вижу только один выход. Считать общее количество на уровне запроса. Но это привязывает к конкретной структуре группировок отчета. И выглядит криво.
37 Coldboy
 
10.04.14
13:29
(36) сделал СКД через объект, а все программно обрабатываю ... но блин не нравится ) хочу красоту )
38 Kalambur
 
10.04.14
13:32
Сумма(ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ("Стоимость","Номенклатура")) по Блюдо