Вход | Регистрация
 

Получить максимальную цену и виды цены этой максимальной цены

Получить максимальную цену и виды цены этой максимальной цены
Я
   Maniac
 
10.08.19 - 19:59
Ребя после моря) Настроение не сильно рабочее.

Короче говоря динамический список номенклатуры. Получаем максимальную цену из всех цен. Но еще нужно также вывести вид цены, соответствующий этой максимальной.

МАКСИМУМ(ЦеныНоменклатуры.Цена) - тут все гуд.
А Вид цены если запрашиваю то уже все равно все цены выгребаются.
 
 
   Maniac
 
1 - 10.08.19 - 20:00
Короче как к максимальной цене получить вид цены так чтобы она не стала группировкой. иначе все цены .
Нужна всего 1 запись.
   МихаилМ
 
2 - 10.08.19 - 20:06
   PuhUfa
 
3 - 10.08.19 - 20:10
(0) а если 2 вида цены с максимальной ценой?
   Garykom
 
4 - 10.08.19 - 20:10
ВЫБРАТЬ ПЕРВЫЕ 1 а перед этим отсортировать по убыванию выбранной цены
   Maniac
 
5 - 10.08.19 - 20:11
Это не в тему.

Как я писал выше есть динамический список номенклатуры. к нему левым соединением цены.
Максимальную получить ерунда. но нужно еще вид этой максимальной цены.

Если строку с видом цены она становится группировокой. соответственно записей становится много.
   Maniac
 
6 - 10.08.19 - 20:11
(3) пофиг. любой из них. такого не будет
   Maniac
 
7 - 10.08.19 - 20:12
(4) выбрать первые 1 это если ты пишешь запрос штучный. ЧИТАЙТЕ что я пишу. это динамический список номенклатуры с левым соединением цен.
   Garykom
 
8 - 10.08.19 - 20:12
(7) Даже запросы не научился писать за столько лет?
   PuhUfa
 
9 - 10.08.19 - 20:15
(6) ну сделай соединение по самой цене
   Garykom
 
10 - 10.08.19 - 20:17
(9) Если для одной номенклатуры две одинаковые максимальные цены разных видов ?
   PuhUfa
 
11 - 10.08.19 - 20:18
(10) тогда смотри (6)
   Maniac
 
12 - 10.08.19 - 20:19
(8) ну судя по тому что от тебя как то ответа правильного нет, то и ты тоже
   МаленькийВопросик
 
13 - 10.08.19 - 20:21
если я тебя правильно понял, то вот как-то так?

ВЫБРАТЬ
    Номенклатура.Ссылка КАК НоменклатураСсылка1
ПОМЕСТИТЬ ВТ_ГруппаНоменклатуры
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ЭтоГруппа = ЛОЖЬ
    И Номенклатура.ПометкаУдаления = ЛОЖЬ
    И Номенклатура.Родитель В ИЕРАРХИИ(&Родитель)

ИНДЕКСИРОВАТЬ ПО
    НоменклатураСсылка1
;

////////////////////////////////////////////////////////////////////////////////

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

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

////////////////////////////////////////////////////////////////////////////////

УНИЧТОЖИТЬ ВТ_ГруппаНоменклатуры
   МаленькийВопросик
 
14 - 10.08.19 - 20:26
вот так, наверное, ближе будет к твоим хотелкам

ВЫБРАТЬ
    Номенклатура.Ссылка КАК НоменклатураСсылка1
ПОМЕСТИТЬ ВТ_ГруппаНоменклатуры
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ЭтоГруппа = ЛОЖЬ
    И Номенклатура.ПометкаУдаления = ЛОЖЬ
    И Номенклатура.Родитель В ИЕРАРХИИ(&Родитель)

ИНДЕКСИРОВАТЬ ПО
    НоменклатураСсылка1
;

////////////////////////////////////////////////////////////////////////////////

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

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

ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    ТипЦен
;

////////////////////////////////////////////////////////////////////////////////

УНИЧТОЖИТЬ ВТ_ГруппаНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    МАКСИМУМ(ВТ_СТипамиЦен.Цена) КАК Цена,
    ВТ_СТипамиЦен.Номенклатура
ИЗ
    ВТ_СТипамиЦен КАК ВТ_СТипамиЦен

СГРУППИРОВАТЬ ПО
    ВТ_СТипамиЦен.Номенклатура
   Maniac
 
15 - 10.08.19 - 20:27
Вы видимо не читаете. Динамический список.....
   Maniac
 
16 - 10.08.19 - 20:27
никаких временных таблиц. тупо список формы справочника номенклатуры. где должны быть еще колонки Цена (максимальная из всех видов цен) и  вид цены который соответствует этой максимальной из всех.
   Maniac
 
17 - 10.08.19 - 20:29
те нужна какая то агрегатная функция на вид цены или выбор. хз что.
я помню уже когда то писал и делал что то подобное, но забыл. из головы вылетело где я это применял уже с чем то.
   МаленькийВопросик
 
18 - 10.08.19 - 20:33
(17) это простейший запрос "получающий максимальную цену по всем типам цен" - дальше крути сам
   МаленькийВопросик
 
19 - 10.08.19 - 20:33
одну запись!
   МаленькийВопросик
 
20 - 10.08.19 - 20:36
если ты делал "срезом последних" - то регистры сведений устроены так, что на каждое из условий измерений - ты получаешь срез последних - поэтому у тебя вываливается куча всего в запросе!
   Maniac
 
21 - 10.08.19 - 20:36
(18) ..... все короче иди отдыхать. вы не помощники сегодня.
   Garykom
 
22 - 10.08.19 - 20:37
(15) Динамический список это такая хрень куда данные попадают запросом
   Maniac
 
23 - 10.08.19 - 20:38
(20) если ты ставишь максимум для получения 1 записи то все измерения урезаются. их нет.
   МаленькийВопросик
 
24 - 10.08.19 - 20:39
(23) тебе запрос написали - смотри дальше сам!
   Maniac
 
25 - 10.08.19 - 20:41
(24) фигню написали не в тему вообще
   Maniac
 
26 - 10.08.19 - 20:42
ВЫБРАТЬ
    МАКСИМУМ(ЦеныНоменклатуры.Цена) КАК Цена,
    ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
    ЦеныНоменклатуры.ТипЦен КАК ТипЦен


вот это выгребет ВСЕ ЦЕНЫ А НЕ ОДНУ максимальную
   Maniac
 
27 - 10.08.19 - 20:43
у тебя две группировки. значит будут получены все цены и максимальная В ПРЕДЕЛАХ ВИДА ЦЕНЫ.

а я уже час пишу что нужно получить ОДНУ МАКИСМАЛЬНУЮ из всех записей регистра по каждой номенклатуре НО отобразить вид цены к которому эта максимальная принадлежит.
   Maniac
 
28 - 10.08.19 - 20:44
если не понимаете то лучше вообще ничего не пишите, отдыхайте.
   Garykom
 
29 - 10.08.19 - 20:47
Это ты не понимаешь.

Сделай сначала табличку
Номенклатура|Макс(Цена)
Затем соедини ее с табличкой
Номенклатура|ТипЦены|Цена

По полям Номенклатура и Цена
   Maniac
 
30 - 10.08.19 - 20:50
(29) НЕ ПОЛУЧИТСЯ. потому что это ДИНАМИЧЕСКИЙ СПИСОК. он ругается если несколько записей с номенклатурой в любом соединении.
Так как там стоит ссылка обязательным элементом. любое попадание нескольких записей номенклатуры сразу выдает ошибку списка.
 
 Рекламное место пустует
   Maniac
 
31 - 10.08.19 - 20:53
(29) Все да получилось. все верно. два запроса правда к регистру цен. но сработало. пока что не ругнулось и вроде бы как верно показывает.
Буду тестировать
   МаленькийВопросик
 
32 - 10.08.19 - 20:55
ВЫБРАТЬ
    Номенклатура.Ссылка КАК НоменклатураСсылка1
ПОМЕСТИТЬ ВТ_ГруппаНоменклатуры
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ЭтоГруппа = ЛОЖЬ
    И Номенклатура.ПометкаУдаления = ЛОЖЬ
    И Номенклатура.Родитель В ИЕРАРХИИ(&Родитель)

ИНДЕКСИРОВАТЬ ПО
    НоменклатураСсылка1
;

////////////////////////////////////////////////////////////////////////////////

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

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

ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    ТипЦен
;

////////////////////////////////////////////////////////////////////////////////

УНИЧТОЖИТЬ ВТ_ГруппаНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    МАКСИМУМ(ВТ_СТипамиЦен.Цена) КАК Цена,
    ВТ_СТипамиЦен.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВТ_МаксЦены
ИЗ
    ВТ_СТипамиЦен КАК ВТ_СТипамиЦен

СГРУППИРОВАТЬ ПО
    ВТ_СТипамиЦен.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////

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

СГРУППИРОВАТЬ ПО
    ВТ_МаксЦены.Цена,
    ВТ_МаксЦены.Номенклатура
   МаленькийВопросик
 
33 - 10.08.19 - 20:57
(29) ты забыл добавить ему МАКСИМУМ по типу цены, иначе у него задвоятся строки если есть 2 одинаковые цены на типы цен.
   Maniac
 
34 - 10.08.19 - 21:02
все уже. сработало. как нужно.


ВЫБРАТЬ
    СправочникНоменклатура.Ссылка КАК Ссылка,
    СправочникНоменклатура.Код КАК Код,
    СправочникНоменклатура.Артикул КАК Артикул,
    СправочникНоменклатура.Наименование КАК Наименование,
    СправочникНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    СправочникНоменклатура.Производитель КАК Производитель,
    СправочникНоменклатура.Родитель КАК Родитель,
    ЕСТЬNULL(ЦеныНоменклатуры.Цена * КурсВалютыВидЦен.Курс * КурсВалютыДокумента.Кратность / (КурсВалютыДокумента.Курс * КурсВалютыВидЦен.Кратность), 0) КАК Цена,
    ЦеныНоменклатуры2.ВидЦен КАК ВидЦен
ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
            МИНИМУМ(ЦеныНоменклатуры.ВидЦен) КАК ВидЦен,
            МАКСИМУМ(ЦеныНоменклатуры.Цена) КАК Цена
        ИЗ
            РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(ВидЦен = &ВидЦеныНоменклатуры)}) КАК ЦеныНоменклатуры
        
        СГРУППИРОВАТЬ ПО
            ЦеныНоменклатуры.Номенклатура) КАК ЦеныНоменклатуры
        ПО (ЦеныНоменклатуры.Номенклатура = СправочникНоменклатура.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(ВидЦен = &ВидЦеныНоменклатуры)}) КАК ЦеныНоменклатуры2
        ПО (ЦеныНоменклатуры2.Номенклатура = ЦеныНоменклатуры.Номенклатура)
            И (ЦеныНоменклатуры2.Цена = ЦеныНоменклатуры.Цена)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(, ) КАК КурсВалютыВидЦен
        ПО (КурсВалютыВидЦен.Валюта = ЦеныНоменклатуры.ВидЦен.ВалютаЦены),
    РегистрСведений.КурсыВалют.СрезПоследних(, {(Валюта = &Валюта)}) КАК КурсВалютыДокумента
ГДЕ
    СправочникНоменклатура.ЭтоГруппа = ЛОЖЬ
   Maniac
 
35 - 10.08.19 - 21:03
опс немного там криво и лишнее есть. уберу уже у себя
   Maniac
 
36 - 10.08.19 - 21:04
ВЫБРАТЬ
    СправочникНоменклатура.Ссылка КАК Ссылка,
    СправочникНоменклатура.Код КАК Код,
    СправочникНоменклатура.Артикул КАК Артикул,
    СправочникНоменклатура.Наименование КАК Наименование,
    СправочникНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    СправочникНоменклатура.Производитель КАК Производитель,
    СправочникНоменклатура.Родитель КАК Родитель,
    ЕСТЬNULL(ЦеныНоменклатуры.Цена * КурсВалютыВидЦен.Курс * КурсВалютыДокумента.Кратность / (КурсВалютыДокумента.Курс * КурсВалютыВидЦен.Кратность), 0) КАК Цена,
    ЦеныНоменклатуры2.ВидЦен КАК ВидЦен
ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
            МАКСИМУМ(ЦеныНоменклатуры.Цена) КАК Цена
        ИЗ
            РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(ВидЦен = &ВидЦеныНоменклатуры)}) КАК ЦеныНоменклатуры
        
        СГРУППИРОВАТЬ ПО
            ЦеныНоменклатуры.Номенклатура) КАК ЦеныНоменклатуры
        ПО (ЦеныНоменклатуры.Номенклатура = СправочникНоменклатура.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(ВидЦен = &ВидЦеныНоменклатуры)}) КАК ЦеныНоменклатуры2
        ПО (ЦеныНоменклатуры2.Номенклатура = ЦеныНоменклатуры.Номенклатура)
            И (ЦеныНоменклатуры2.Цена = ЦеныНоменклатуры.Цена)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(, ) КАК КурсВалютыВидЦен
        ПО (КурсВалютыВидЦен.Валюта = ЦеныНоменклатуры2.ВидЦен.ВалютаЦены),
    РегистрСведений.КурсыВалют.СрезПоследних(, {(Валюта = &Валюта)}) КАК КурсВалютыДокумента
ГДЕ
    СправочникНоменклатура.ЭтоГруппа = ЛОЖЬ
   Maniac
 
37 - 10.08.19 - 21:05
как правильно сработает будет видно у клиента на базе.
   МаленькийВопросик
 
38 - 10.08.19 - 21:14
твой запрос не будет отражать корректную информацию -  если ты используешь срез последних - используй Дату, во-первых, иначе он возьмет самый последний срез хоть от 2100 года - если кто-то поставит туда цену....

во-вторых - что за конфигурация - РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦен - ???????????????
   Maniac
 
39 - 10.08.19 - 21:17
(38) нормально все. УНФ


Список тем форума
Рекламное место пустует  Рекламное место пустует
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс, 1996 г.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.