|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
prorokk
12.08.13
✎
13:09
|
Нужно Выбрать запросом цены номенклатуры и получить такой вид:
Номенклатура - ЦенаЗакуп - ЦенаОпт - ЦенаРозничная товар 10 12 15 У меня получается Номенклатура - ЦенаЗакуп - ЦенаОпт - ЦенаРозничная товар 10 NULL NULL товар NULL 12 NULL товар NULL NULL 15 Как их Объединить? |
|||
1
Fragster
модератор
12.08.13
✎
13:09
|
Сгруппировать по Номенклатура
|
|||
2
Maxus43
12.08.13
✎
13:11
|
ну и ЕСТЬNULL(ЦенаЗакуп,0) на поля с нулл накладывай конечно
|
|||
3
prorokk
12.08.13
✎
13:15
|
ВЫБОР
КОГДА ЕстьNULL(ЦеныНоменклатурыСрезПоследних.Цена,0) И (ЦеныНоменклатурыСрезПоследних.ВидЦены.Наименование = "Оптовая") ТОГДА ЦеныНоменклатурыСрезПоследних.Цена КОНЕЦ Как правильно это оформить? ну или как вывести цены в колонки? кроме Выбор КОГДА |
|||
4
Maxus43
12.08.13
✎
13:18
|
ВЫБОР
КОГДА ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидОптовая Тогда ЕстьNULL(ЦеныНоменклатурыСрезПоследних.Цена,0) Иначе 0 Конец |
|||
5
palpetrovich
12.08.13
✎
13:20
|
(3) может лучше?
Выбрать ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.ВидЦены, ЦеныНоменклатурыСрезПоследних.Цена |
|||
6
prorokk
12.08.13
✎
13:21
|
(5) такой даст в цены в столбик
|
|||
7
mzelensky
12.08.13
✎
13:22
|
(0) Самое просто сгруппировать по номенклатуре функцией "СРЕДНЕЕ" (это если NULL в 0 не преобразовывать), а если преобразовывать, то через "Максимум"
|
|||
8
Fragster
модератор
12.08.13
✎
13:22
|
(6) цены "в колонку" получаются при выводе
|
|||
9
prorokk
12.08.13
✎
13:26
|
(8) все цены в одну колонку а мне в разные нужно
|
|||
10
Fragster
модератор
12.08.13
✎
13:28
|
(9) я-то понял, а вот понял ли ты (8)?
|
|||
11
prorokk
12.08.13
✎
13:29
|
(10) да будет
товар 10 закуп товар 12 опт и т.д. |
|||
12
prorokk
12.08.13
✎
13:29
|
(4) теперь 0 выводит вместо NULL
Весь запрос: ВЫБРАТЬ ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, ПоступлениеТоваровУслугТовары.Номенклатура.ЭтоГруппа КАК ЭтоГруппа, ПоступлениеТоваровУслугТовары.Количество КАК КоличествоПриход, ПоступлениеТоваровУслугТовары.Цена КАК ЦенаПоступления, ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток, 0 КАК Наценка, 0 КАК ЦенаПродажи, 0 КАК НаценкаОптовой, 0 КАК ЦенаОптовая, ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.ВидЦены = &Оптовая ТОГДА ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) ИНАЧЕ 0 КОНЕЦ КАК ЦенаОптоваяДоПрихода, ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.ВидЦены = &Розничная ТОГДА ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) ИНАЧЕ 0 КОНЕЦ КАК ЦенаДоПрихода, ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.ВидЦены = &Закупочная ТОГДА ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) ИНАЧЕ 0 КОНЕЦ КАК Закупочная ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, ) КАК ТоварыНаСкладахОстатки ПО ПоступлениеТоваровУслугТовары.Номенклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних ПО ПоступлениеТоваровУслугТовары.Номенклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка ГДЕ ПоступлениеТоваровУслугТовары.Ссылка = &Документ ИТОГИ ПО Номенклатура ТОЛЬКО ИЕРАРХИЯ |
|||
13
prorokk
12.08.13
✎
13:30
|
Если ставлю Группировку результат тот же
|
|||
14
Maxus43
12.08.13
✎
13:31
|
что у тебя в &Оптовая?
|
|||
15
prorokk
12.08.13
✎
13:32
|
(14) Справочник.ВидЦены.НайтиПоКоду("001")
|
|||
16
mzelensky
12.08.13
✎
13:32
|
(13) чего ты мозги паришь? возьми запрос, который тебе выдает это
"У меня получается Номенклатура - ЦенаЗакуп - ЦенаОпт - ЦенаРозничная товар 10 NULL NULL товар NULL 12 NULL товар NULL NULL 15 " Засовываешь все это в еще один вложенный запрос и группируешь (без всякиз преобразований NULL к 0) |
|||
17
lapinio
12.08.13
✎
13:32
|
1)Объединение внутри объединения три запроса
|
|||
18
lapinio
12.08.13
✎
13:34
|
(16) как вариант
|
|||
19
Peltzer
12.08.13
✎
13:37
|
ВЫБРАТЬ
ISNULL(ISNULL(Цена1.Номенклатура,Цена2.Номенклатура),Цена3.Номенклатура), Цена1.Цена КАК Цена1, Цена2.Цена КАК Цена2, Цена3.Цена КАК Цена3 ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ТипЦен = &ТипПервыхЦен) КАК Цена1 ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ТипЦен = &ТипТретихЦен) КАК Цена3 ПО Цена1.Номенклатура = Цена3.Номенклатура ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ТипЦен = &ТипВторыхЦен) КАК Цена2 ПО Цена1.Номенклатура = Цена2.Номенклатура |
|||
20
lapinio
12.08.13
✎
13:38
|
Почему полное соединение
|
|||
21
prorokk
12.08.13
✎
13:39
|
(12) Думал над таким...
|
|||
22
Peltzer
12.08.13
✎
13:39
|
Чтобы попала номенклатура у которой нет цены по первому типу
|
|||
23
prorokk
12.08.13
✎
13:39
|
с вложенным результат тот же
ВЫБРАТЬ ВложенныйЗапрос.Номенклатура КАК Номенклатура, ВложенныйЗапрос.ЭтоГруппа, ВложенныйЗапрос.КоличествоПриход, ВложенныйЗапрос.ЦенаПоступления, ВложенныйЗапрос.Остаток, ВложенныйЗапрос.Наценка, ВложенныйЗапрос.ЦенаПродажи, ВложенныйЗапрос.НаценкаОптовой, ВложенныйЗапрос.ЦенаОптовая, ВложенныйЗапрос.ЦенаОптоваяДоПрихода, ВложенныйЗапрос.ЦенаДоПрихода, ВложенныйЗапрос.Закупочная ИЗ (ВЫБРАТЬ ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, ПоступлениеТоваровУслугТовары.Номенклатура.ЭтоГруппа КАК ЭтоГруппа, ПоступлениеТоваровУслугТовары.Количество КАК КоличествоПриход, ПоступлениеТоваровУслугТовары.Цена КАК ЦенаПоступления, ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток, 0 КАК Наценка, 0 КАК ЦенаПродажи, 0 КАК НаценкаОптовой, 0 КАК ЦенаОптовая, ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.ВидЦены = &Оптовая ТОГДА ЦеныНоменклатурыСрезПоследних.Цена КОНЕЦ КАК ЦенаОптоваяДоПрихода, ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.ВидЦены = &Розничная ТОГДА ЦеныНоменклатурыСрезПоследних.Цена КОНЕЦ КАК ЦенаДоПрихода, ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.ВидЦены = &Закупочная ТОГДА ЦеныНоменклатурыСрезПоследних.Цена КОНЕЦ КАК Закупочная ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, ) КАК ТоварыНаСкладахОстатки ПО ПоступлениеТоваровУслугТовары.Номенклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура.Ссылка, РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних ГДЕ ПоступлениеТоваровУслугТовары.Ссылка = &Документ) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.ЭтоГруппа, ВложенныйЗапрос.КоличествоПриход, ВложенныйЗапрос.ЦенаПоступления, ВложенныйЗапрос.Остаток, ВложенныйЗапрос.Наценка, ВложенныйЗапрос.ЦенаПродажи, ВложенныйЗапрос.НаценкаОптовой, ВложенныйЗапрос.ЦенаОптовая, ВложенныйЗапрос.ЦенаОптоваяДоПрихода, ВложенныйЗапрос.ЦенаДоПрихода, ВложенныйЗапрос.Закупочная ИТОГИ ПО Номенклатура ТОЛЬКО ИЕРАРХИЯ |
|||
24
Peltzer
12.08.13
✎
13:39
|
Хотя нужно просто левое соединение, если за основу взять Справочники.Номенклатура
|
|||
25
mzelensky
12.08.13
✎
13:40
|
(23) ты сам понял .что ты сгруппировал?
|
|||
26
lapinio
12.08.13
✎
13:41
|
Примерный запрос на объединение
ВЫБРАТЬ ПродажаИЗакупка.Документ КАК Документ ПОМЕСТИТЬ Продажи ИЗ &ПродажаИЗакупка КАК ПродажаИЗакупка ГДЕ ВЫРАЗИТЬ(ПродажаИЗакупка.Документ КАК Документ.РасходнаяНакладная) ССЫЛКА Документ.РасходнаяНакладная ИНДЕКСИРОВАТЬ ПО Документ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПродажаИЗакупка.Документ КАК Документ ПОМЕСТИТЬ Закупки ИЗ &ПродажаИЗакупка КАК ПродажаИЗакупка ГДЕ ВЫРАЗИТЬ(ПродажаИЗакупка.Документ КАК Документ.ПриходнаяНакладная) ССЫЛКА Документ.ПриходнаяНакладная ИНДЕКСИРОВАТЬ ПО Документ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.РасходнаяНакладная).Номер КАК doc_number, ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.РасходнаяНакладная).Фирма.Код КАК whcode, МИНИМУМ(0) КАК oper_type, ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.РасходнаяНакладная).Дата КАК doc_date, "" КАК doc_parent, "" КАК order_date, "" КАК deliv_date, МИНИМУМ(0) КАК order_stat, МИНИМУМ(1) КАК deliv_type, ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.РасходнаяНакладная).Контрагент.Код КАК clientcode, МИНИМУМ(ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.РасходнаяНакладная).Грузоотправитель.Код) КАК spcode, ПартииНоменклатуры.ТорговыйПредставитель.Код КАК tpcode, &manfid ИЗ РегистрНакопления.ПартииНоменклатуры КАК ПартииНоменклатуры ВНУТРЕННЕЕ СОЕДИНЕНИЕ Продажи КАК Продажи ПО ((ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.РасходнаяНакладная)) = Продажи.Документ) СГРУППИРОВАТЬ ПО ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.РасходнаяНакладная).Номер, ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.РасходнаяНакладная).Фирма.Код, ПартииНоменклатуры.ТорговыйПредставитель.Код, ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.РасходнаяНакладная).Контрагент.Код, ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.РасходнаяНакладная).Дата ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.ПриходнаяНакладная).Номер, ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.ПриходнаяНакладная).Фирма.Код, 2, ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.ПриходнаяНакладная).Дата, "", "", "", 0, 1, ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.ПриходнаяНакладная).Контрагент.Код, "", ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор.Договор КАК Документ.ДоговорСПоставщиком).ОтветственныйСотрудник.Код, &manfid ИЗ РегистрНакопления.ПартииНоменклатуры КАК ПартииНоменклатуры ВНУТРЕННЕЕ СОЕДИНЕНИЕ Закупки КАК Закупки ПО ((ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.ПриходнаяНакладная)) = Закупки.Документ) СГРУППИРОВАТЬ ПО ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.ПриходнаяНакладная).Номер, ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.ПриходнаяНакладная).Дата, ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.ПриходнаяНакладная).Контрагент.Код, ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор КАК Документ.ПриходнаяНакладная).Фирма.Код, ВЫРАЗИТЬ(ПартииНоменклатуры.Регистратор.Договор КАК Документ.ДоговорСПоставщиком).ОтветственныйСотрудник.Код УПОРЯДОЧИТЬ ПО doc_number |
|||
27
palpetrovich
12.08.13
✎
13:45
|
" ПоступлениеТоваровУслугТовары.Номенклатура.ЭтоГруппа КАК ЭтоГруппа," а что, в ТЧ может быть Группа?
|
|||
28
palpetrovich
12.08.13
✎
13:53
|
ниче не понимаю, разве вот такое не решает все?
ВЫБРАТЬ ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, ПоступлениеТоваровУслугТовары.Количество, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследнихЗакупочная.Цена, 0) КАК ЦенаЗакупки, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследнихПродажная.Цена, 0) КАК ЦенаПродажи ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаСреза, ТипЦен = &ТипыЦенЗакупочная) КАК ЦеныНоменклатурыСрезПоследнихЗакупочная ПО ПоступлениеТоваровУслугТовары.Номенклатура = ЦеныНоменклатурыСрезПоследнихЗакупочная.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаСреза, ТипЦен = &ТипыЦенПродажная) КАК ЦеныНоменклатурыСрезПоследнихПродажная ПО ПоступлениеТоваровУслугТовары.Номенклатура = ЦеныНоменклатурыСрезПоследнихПродажная.Номенклатура ГДЕ ПоступлениеТоваровУслугТовары.Ссылка = &Документ |
|||
29
prorokk
12.08.13
✎
13:55
|
(28) Спасибо!, простите за МОЙ большой тупизм....
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |