Имя: Пароль:
1C
 
как изменить результаты запроса чтобы не задваивались значения
0 Luganchanin
 
15.06.15
16:02
Добрый день, люди добрые!

Помогите, никак не могу добить запрос чтобы он корректно выдавал реальные остатки на складе.
В результате следующего запроса

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ХарактеристикиНоменклатуры.Владелец КАК Владелец,
    ШтрихкодыНоменклатуры.Штрихкод,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика,
    ВЫБОР
        КОГДА ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ЛОЖЬ
                И ПоступлениеТоваровУслугТовары.Ссылка.ПометкаУдаления = ЛОЖЬ
            ТОГДА ПоступлениеТоваровУслугТовары.Количество
        ИНАЧЕ 0
    КОНЕЦ КАК Количество,
    ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК КоличествоКонечныйОстаток,
    СвободныеОстаткиОстатки.Склад КАК СкладТовара
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
        ПО ХарактеристикиНоменклатуры.Ссылка = ШтрихкодыНоменклатуры.Характеристика
            И ХарактеристикиНоменклатуры.Владелец = ШтрихкодыНоменклатуры.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
        ПО ХарактеристикиНоменклатуры.Ссылка = ПоступлениеТоваровУслугТовары.Характеристика
            И ХарактеристикиНоменклатуры.Владелец = ПоступлениеТоваровУслугТовары.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки
        ПО ХарактеристикиНоменклатуры.Ссылка = СвободныеОстаткиОстатки.Характеристика
ГДЕ
    ШтрихкодыНоменклатуры.Номенклатура = &"1017-118RS"

СГРУППИРОВАТЬ ПО
    ХарактеристикиНоменклатуры.Владелец,
    ШтрихкодыНоменклатуры.Штрихкод,
    ХарактеристикиНоменклатуры.Ссылка,
    ВЫБОР
        КОГДА ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ЛОЖЬ
                И ПоступлениеТоваровУслугТовары.Ссылка.ПометкаУдаления = ЛОЖЬ
            ТОГДА ПоступлениеТоваровУслугТовары.Количество
        ИНАЧЕ 0
    КОНЕЦ,
    СвободныеОстаткиОстатки.ВНаличииОстаток,
    СвободныеОстаткиОстатки.Склад

УПОРЯДОЧИТЬ ПО
    Владелец

получаю:

Владелец    Штрихкод    Характеристика    Количество    КоличествоКонечныйОстаток    СкладТовара
1017-118RS    2000000385112    RS        1    1йСклад
1017-118RS    2000000385112    RS        6    2йСклад
1017-118RS    2000000496559    RS-O            
1017-118RS    5901259464849    RS        1    1йСклад
1017-118RS    5901259464849    RS        6    2йСклад

А получить хочется только первые две строчки
1 antotti
 
15.06.15
16:03
А итоги?
2 Luganchanin
 
15.06.15
16:13
а с итогами получается совсем бяка
например,
ИТОГИ ПО
    СкладТовара
получаю:

Владелец    Штрихкод    Характеристика    Количество    КоличествоКонечныйОстаток    СкладТовара
                    1йСклад
1017-118RS    2000000385112    RS        1    1йСклад
1017-118RS    5901259464849    RS        1    1йСклад
                    2йСклад
1017-118RS    2000000385112    RS        6    2йСклад
1017-118RS    5901259464849    RS        6    2йСклад
                    
1017-118RS    2000000496559    RS-O
3 Господин ПЖ
 
15.06.15
16:16
ВЫБОР
        КОГДА ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ЛОЖЬ
                И ПоступлениеТоваровУслугТовары.Ссылка.ПометкаУдаления = ЛОЖЬ
            ТОГДА ПоступлениеТоваровУслугТовары.Количество
        ИНАЧЕ 0
    КОНЕЦ КАК Количество,
    ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0)

это как минимум в Сумма() завернуть надо каждую
4 Господин ПЖ
 
15.06.15
16:17
а так он тебе размножил все по кол-ву поступлений. как минимум
5 Господин ПЖ
 
15.06.15
16:17
агитировать "не писать так" не буду, надо понимать конечный смысл - а в него вникать неохота
6 Luganchanin
 
15.06.15
16:30
(5) та да. смысл есть. ;-)
и смыслы меняются и добавляются. потому и вопросы такие дуракцие возникают что не понятно как сформулировать
в любом случае - спасибо
7 ВРедная
 
15.06.15
16:32
(0) Если у тебя два штрихкода на один товар, что тебе должен выдать запрос?
8 Luganchanin
 
15.06.15
16:52
(7) та в том то и дело, что штрихи поле вроде как бы информационное и их может быть два и больше. один это тот что 1с нагенерила, а второй это я от производителя добавил штрих
9 ВРедная
 
15.06.15
17:17
(8) И все же ответь на вопрос в (7)
10 IVT_2009
 
15.06.15
17:28
у вас один из подзапросов выдает дубли. Следовательно по соединению с ним то же дубли. В основной таблице сделайте критерий уникальности , например Максимум(код) и сгуппируйте, потом можно уже соединять.
11 Luganchanin
 
15.06.15
17:42
(9) запрос должен выдать один штрих. тот который более правильный

ГДЕ
    ШтрихкодыНоменклатуры.Номенклатура = &Номенклатура
    И ПОДСТРОКА(ШтрихкодыНоменклатуры.Штрихкод, 1, 5) = "20000"

пока вроде так мыслю
12 IVT_2009
 
15.06.15
17:44
(11) сделайте запрос с выводом ШК, ИД = 1
потом результат слейте в ТЗ и сверните с суммированием по ИД. Скорей всего дубли будут в результате. Они корень зла.
13 ВРедная
 
15.06.15
17:45
(11) Значит нужно сделать запрос таким образом, чтобы фильтровались только "более правильные" штрихкоды. Сейчас выводятся все.
14 ВРедная
 
15.06.15
17:46
(11) Выглядит неплохо.
Что будет, когда будет два кода с началом "20000"?
15 Luganchanin
 
15.06.15
17:48
(14)
Владелец    Характеристика    КоличествоОстаток    СкладТовара    Штрихкод
1017-118RS    RS    1    1йСклад    2000000385112
1017-118RS    RS    6    2йСклад    2000000385112
1017-118RS    RS-O            2000000496559

получается примерно так.
осталось придумать чтобы не выводились строки без количества. или может быть ноль ставился, но тогда и ноль нужен по двум складам