Имя: Пароль:
1C
1С v8
Группировка или вложенный запрос
, ,
0 abask
 
14.01.19
17:18
Есть номенклатура и несколько видов цен
как получить номенклатуру и минимальную цену с указанием вида цены?

пытаюсь сделать так:

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

СГРУППИРОВАТЬ ПО
    Номен.Ссылка,
    Цены.ВидЦен

Предсказуемо выводит мне все виды цен (не только минимум)

если делаю так:

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

СГРУППИРОВАТЬ ПО
    Номен.Ссылка

Выводит минимум, но не понятно тогда какой вид цены

как передать вид цены? Вложенный запрос делать? или можно как-то одним обойтись?
1 Ёпрст
 
14.01.19
17:30
(0)либо первый запрос, либо последний с условием Где видЦен =&НужныйТебеВидЦены
2 abask
 
14.01.19
17:41
(1) Я не знаю какой вид цены
Нужно выбрать минимальную цену из тех что есть
3 Buster007
 
14.01.19
17:45
чем отличается твоя задача, от получения последней цены на разные периоды?
4 FIXXXL
 
14.01.19
17:45
(0) что хочешь получить в случае одинакового числа Цена по двум(и более) ВидЦен?
если пофиг, делаешь ВТ Номенклатура-Цена и ее соединяешь с регистром цен по Цена-Номенклатура и группируешь Номенклатура-Цена-Мин(ВидЦен)
5 abask
 
14.01.19
17:54
(4) а если два товара с одинаковой минимальной ценой как он определит какой товар мне нужен?

Я ж не смогу соединить по двум условиям, и по номенклатуре и по цене?

Или я не понял мысль?
6 Вафель
 
14.01.19
18:00
так этоже классическая задача на срез последних.
хороший программист должне пореди ночи встать и отруки такой запрос написать
7 FIXXXL
 
14.01.19
18:02
(5) что мешает соединить две таблицы по двум полям?
8 VladZ
 
14.01.19
18:03
(0)  С каким смыслом используешь выборку:

ИЗ
    Справочник.Номенклатура КАК Номен
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК Цены  ???
9 mistеr
 
14.01.19
18:08
(0) Первый запрос - срез последих в ВТ.
Второй запрос - определяешь минимальную цену, и соединяешь еще раз с ВТ, чтобы узнать вид цен.
Справочник можно вообще не трогать.

(7) Страшно наверное.
10 abask
 
14.01.19
18:42
Спасибо (4) (7) и (9)

вот что получилось:

ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    МИНИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена
ПОМЕСТИТЬ табМинЦен
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних


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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    табМинЦен.Номенклатура КАК Номенклатура,
    табМинЦен.Цена КАК Цена,
    ЦеныНоменклатурыСрезПоследних.ВидЦен КАК ВидЦен
ИЗ
    табМинЦен КАК табМинЦен
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
        ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = табМинЦен.Номенклатура И
            ЦеныНоменклатурыСрезПоследних.Цена = табМинЦен.Цена)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс