Имя: Пароль:
1C
1С v8
Люди добрый, помогите с запросом
,
0 moneyget
 
30.03.16
08:28
Добрый день, спать не могу, запрос снится!

УТ 11.1 вот что выдает http://prntscr.com/alv5tt
Количество правильное, но строки двоит, т.к. реализации две.

Убираю группировку, двит количество http://prntscr.com/alv6gg т.к. реализации две.

Сам запрос:

ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура,
    СУММА(ТоварыНаСкладахОстатки.ВНаличииОстаток) * -1 КАК Количество,
    СУММА(ТоварыНаСкладахОстатки.ВНаличииОстаток) * -1 КАК КоличествоУпаковок,
    МИНИМУМ(РеализацияТоваровУслугТовары.Цена) * (100 - &ПроцентСкидки) / 100 КАК Цена
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОкончания, ) КАК ТоварыНаСкладахОстатки
        ПО РеализацияТоваровУслугТовары.Номенклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура.Ссылка
ГДЕ
    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)
    И РеализацияТоваровУслугТовары.Ссылка.Проведен
    И ТоварыНаСкладахОстатки.ВНаличииОстаток < 0
    И ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура

СГРУППИРОВАТЬ ПО
1 mexanik_96
 
30.03.16
08:31
сам то не видишь?обрати внимание на цену. в группировке как участвует?
2 Ёпрст
 
30.03.16
08:34
(0) выкини группировку по документу
3 Ёпрст
 
30.03.16
08:34
и..вообще, весь запрос в топку
4 moneyget
 
30.03.16
08:40
(1) не как... она в группировку не ставится
5 LordCMEPTb
 
30.03.16
08:40
Чтобы записи не дублировались, надо либо соединять 1 к 1, либо объединять и группировать. Ну и (3) не забыть.
6 Рэйв
 
30.03.16
08:42
(0)Сначала выбери и сгруппируй номенклатуру, помести в вт, а потом соединяй
7 moneyget
 
30.03.16
09:04
всем спасибо, но теорию я знаю... вопрос как поменять запрос, тупо тыкнуть, что куда подставить
8 LordCMEPTb
 
30.03.16
09:11
(7) Пожалуйста. Что именно непонятно из (6) или из (5) ?
9 moneyget
 
30.03.16
09:15
(8) группировать - как? по чем?
10 Рэйв
 
30.03.16
09:19
(9)Убери цену и группируй по номенклатуре. С разными ценами из разных накладных если группировать всегда будет две строки
11 moneyget
 
30.03.16
09:25
(10) цена нужна, но даже если ее убрать все равно количество 12, а должно быть 6
скрин http://prntscr.com/alvkbg


ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура,
    СУММА(ТоварыНаСкладахОстатки.ВНаличииОстаток) * -1 КАК Количество,
    СУММА(ТоварыНаСкладахОстатки.ВНаличииОстаток) * -1 КАК КоличествоУпаковок
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОкончания, ) КАК ТоварыНаСкладахОстатки
        ПО РеализацияТоваровУслугТовары.Номенклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура.Ссылка
ГДЕ
    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)
    И РеализацияТоваровУслугТовары.Ссылка.Проведен
    И ТоварыНаСкладахОстатки.ВНаличииОстаток < 0
    И РеализацияТоваровУслугТовары.Номенклатура = &Номенклатура

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОстатки.Номенклатура
12 Рэйв
 
30.03.16
09:27
(11)Чукча не читатель? Чукча писатель?

Я же сказал сначала сгруппировать по Номенклатуре, поместить в ВТ и только потом соединять ВТ и регистр.
13 LordCMEPTb
 
30.03.16
09:28
(9) Ну как вариант - сгруппировать по номенклатуре.

ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура,
    МИНИМУМ(РеализацияТоваровУслугТовары.Цена) * (100 - &ПроцентСкидки) / 100 КАК Цена
ПОМЕСТИТЬ ВТ_ДанныеПоНоменклатуреИзДокумента
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    И РеализацияТоваровУслугТовары.Ссылка.Проведен
    И РеализацияТоваровУслугТовары.Номенклатура = &Номенклатура    

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОстатки.Номенклатура

А дальше уже брать эту таблицу...

З.Ы. Вот только не догоняю, зачем нужно брать таб.части документов, если это все можно взять из регистров...
14 moneyget
 
30.03.16
09:35
блин... кому и сколько надо дать денег за этот запрос?
15 LordCMEPTb
 
30.03.16
09:42
(14) Т.е. дописать к (13)

; ВЫБРАТЬ * ИЗ ВТ_ДанныеПоНоменклатуреИзДокумента
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОкончания, ) КАК ТоварыНаСкладахОстатки
        ПО РеализацияТоваровУслугТовары.Номенклатура = ТоварыНаСкладахОстатки

уже ну вообще никак? Только теорию знаешь из (7) ?
16 moneyget
 
30.03.16
10:03
не, мозг отключился... создал задание на лансере

всем спасибо