Имя: Пароль:
1C
1С v8
Отбор строк по максимальному значению
0 MAPATNK2
 
naïve
14.04.20
21:09
Всем доброго дня. У Физ лица есть карты (Иногда их несколько). У карты есть реквизит "Процент скидки". Нужно получить для каждого физ лица только 1 карту с максимальным значением скидки. Подскажите? Пробовал так:
ВЫБРАТЬ
    ФИОФизЛицСрезПоследних.ФизЛицо КАК ФизЛицо,
    ВложенныйЗапрос.КодКарты КАК КодКарты,
    ВложенныйЗапрос.ВидДисконтнойКарты КАК ВидДисконтнойКарты
ИЗ
    РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
            ИнформационныеКарты.КодКарты КАК КодКарты,
            ИнформационныеКарты.ВладелецКарты КАК ВладелецКарты,
            ИнформационныеКарты.ВидДисконтнойКарты КАК ВидДисконтнойКарты
        ИЗ
            Справочник.ИнформационныеКарты КАК ИнформационныеКарты
        
        УПОРЯДОЧИТЬ ПО
            ИнформационныеКарты.ВидДисконтнойКарты.ПроцентСкидки УБЫВ) КАК ВложенныйЗапрос
        ПО (ФИОФизЛицСрезПоследних.ФизЛицо = ВложенныйЗапрос.ВладелецКарты)
1 dka80
 
14.04.20
21:23
Выбрать различные физлицо, максимум(процент скидки)
левое соединение карты
поместить вт
группировка физлицо
;
выбрать физлицо, максиуму(карта)
из вт
левое соединение карты
группировка физлицо
2 MAPATNK2
 
naïve
14.04.20
21:31
(1) не понятно.
3 MAPATNK2
 
naïve
14.04.20
21:47
(1) Максимум(карта) что это?
4 Kashey
 
14.04.20
21:59
Набросал примерный вид, за синтаксис не уверен.

ВЫБРАТЬ
    ИнформационныеКарты.ВладелецКарты КАК ВладелецКарты,
    Максимум(ИнформационныеКарты.ВидДисконтнойКарты.ПроцентСкидки) КАК ПроцентСкидки
Поместить ВТ_МаксимальныеСкидки    
ИЗ
    Справочник.ИнформационныеКарты КАК ИнформационныеКарты
Сгруппировать По ВладелецКарты    
;
ВЫБРАТЬ    
    ВТ_МаксимальныеСкидки.ВладелецКарты КАК ВладелецКарты,
    ВТ_МаксимальныеСкидки.ПроцентСкидки КАК ПроцентСкидки,
    ИнформационныеКарты.КодКарты КАК КодКарты,
    ИнформационныеКарты.ВидДисконтнойКарты КАК ВидДисконтнойКарты
Поместить ВТ_Карты    
ИЗ
    ВТ_МаксимальныеСкидки
    Внутреннее соединение Справочник.ИнформационныеКарты КАК ИнформационныеКарты
    ПО (ВТ_МаксимальныеСкидки.ПроцентСкидки = ИнформационныеКарты.ВидДисконтнойКарты.ПроцентСкидки
        И ВТ_МаксимальныеСкидки.ВладелецКарты = ИнформационныеКарты.ВладелецКарты)    
;
ВЫБРАТЬ
    ФИОФизЛицСрезПоследних.ФизЛицо КАК ФизЛицо,
    ВложенныйЗапрос.КодКарты КАК КодКарты,
    ВложенныйЗапрос.ВидДисконтнойКарты КАК ВидДисконтнойКарты
ИЗ
    РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
    Левое соединение ВТ_Карты ПО (ФИОФизЛицСрезПоследних.ФизЛицо = ВТ_Карты.ВладелецКарты)
5 Kashey
 
14.04.20
22:01
(3) В финальном запросе выходные поля ВТ_Карты.КодКарты и ВТ_Карты.ВидДисконтнойКарты, конечно
6 MAPATNK2
 
naïve
14.04.20
22:03
(5) ВложенныйЗапрос какой из них?
7 Kashey
 
14.04.20
22:05
(6) 2 первых, где идёт помещение во ВТ
8 MAPATNK2
 
naïve
14.04.20
22:07
(7) Спасибо большое! Помогло
9 MAPATNK2
 
naïve
14.04.20
22:07
Да...хреновый из меня программист. почти ничего не понял.
10 rsv
 
14.04.20
22:26
зато конструктор запросов  ?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn