8.х Как в результат запроса вывести только максимальные значения

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Ленок87, 11 май 2012.

  1. TopicStarter Overlay
    Ленок87
    Offline

    Ленок87 Опытный в 1С

    Регистрация:
    7 фев 2012
    Сообщения:
    261
    Симпатии:
    0
    Баллы:
    26
    Как в результат запроса вывести только максимальные значенияиз последних двух колонок?
    Код:
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    РеализацияТоваровУслугТовары.Номенклатура,
    ВидыТоваровВидыНоменклатуры.Ссылка КАК ВидТовара,
    РеализацияТоваровУслугТовары.Ссылка КАК Документ
    ПОМЕСТИТЬ ТоварРеализации
    ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыТоваров.ВидыНоменклатуры КАК ВидыТоваровВидыНоменклатуры
    ПО РеализацияТоваровУслугТовары.Номенклатура.ВидНоменклатуры = ВидыТоваровВидыНоменклатуры.ВидНоменклатуры
    ГДЕ
    РеализацияТоваровУслугТовары.Ссылка = &Ссылка
    ;
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    СкидкиСкидки.Скидка КАК СкидкаПостоянная,
    ТоварРеализации.Номенклатура,
    ТоварРеализации.ВидТовара,
    ТоварРеализации.Документ
    ПОМЕСТИТЬ ТоварыСПостояннойСкидкой
    ИЗ
    ТоварРеализации КАК ТоварРеализации
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Скидки.Скидки КАК СкидкиСкидки
    ПО ТоварРеализации.Документ.Контрагент.ПостояннаяСкидкаКлиента.Ссылка = СкидкиСкидки.Ссылка
    И ТоварРеализации.ВидТовара = СкидкиСкидки.ВидТовара
    И ТоварРеализации.Номенклатура.Производитель = СкидкиСкидки.Поставщик
    ;
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    СкидкиСкидки.Скидка КАК СкидкаДействующая,
    ТоварыСПостояннойСкидкой.СкидкаПостоянная КАК СкидкаПостоянная,
    ТоварыСПостояннойСкидкой.Номенклатура КАК Номенклатура,
    ТоварыСПостояннойСкидкой.ВидТовара КАК ВидТовара,
    ТоварыСПостояннойСкидкой.Номенклатура.Производитель КАК Поставщик
    ИЗ
    ТоварыСПостояннойСкидкой КАК ТоварыСПостояннойСкидкой
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Скидки.Скидки КАК СкидкиСкидки
    ПО (СкидкиСкидки.Поставщик = ТоварыСПостояннойСкидкой.Номенклатура.Производитель)
    И (СкидкиСкидки.ВидТовара = ТоварыСПостояннойСкидкой.ВидТовара)
    ГДЕ
    СкидкиСкидки.Ссылка.ДатаОкон >= &ДатаДокумента
    И СкидкиСкидки.Ссылка.СуммаОт <= &СуммаДокумента
    И СкидкиСкидки.Ссылка.СуммаДо >= &СуммаДокумента
    И СкидкиСкидки.Ссылка.ПостояннаяСкидка = &Ложь
    УПОРЯДОЧИТЬ ПО
    Номенклатура,
    ВидТовара,
    Поставщик,
    СкидкаПостоянная,
    СкидкаДействующая
  2. Зейнал
    Offline

    Зейнал

    Регистрация:
    6 янв 2011
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Названия колонок напишите.
  3. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Максимальное ВидТовара и Поставщик? А какого поставщика будем считать максимальным? У кого в названии букавок больше? Или у кого код меньше (=> внесен в БД раньше => более "старый" партнер)
  4. TopicStarter Overlay
    Ленок87
    Offline

    Ленок87 Опытный в 1С

    Регистрация:
    7 фев 2012
    Сообщения:
    261
    Симпатии:
    0
    Баллы:
    26
    Нет из скидок (действующая и постоянная ) нужно выбрать максимальную вывести .Вне запроса я знаю как а в самом запросе как это сделать?
  5. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а если вот такую конструкцию прикрутить
    Код:
    ВЫБОР
    КОГДА <Выражение> ТОГДА <Выражение>
    ИНАЧЕ <Выражение>
    КОНЕЦ
    в условие КОГДА как раз прописать сравнение скидок
  6. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Вы че граждане. Совсем .....[вырезано цензурой].... ?

    Применить функцию МАКСИМУМ в запросе не? не канает?
    Код:
    ВЫБРАТЬ
    МАКСИМУМ(ЧеЧе.Число1) КАК Число1,
    МАКСИМУМ(ЧеЧе.Число2) КАК Число2,
    ЧеЧе.ЧенитьСсцылко,
    ЧеЧе.ЧенитьЕще
    ИЗ
    Справочник.ЧеЧе КАК ЧеЧе
    СГРУППИРОВАТЬ ПО
    ЧеЧе.ЧенитьСсцылко,
    ЧеЧе.ЧенитьЕще
  7. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    uza, насколько я поняла, ей надо масимум из 2 полей выбрать, а не максимум каждого поля в отдельности....
  8. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Не совсем понятно что нужно, нужна максимальная скидка Б для максимальных А
    А / Б
    100 / 100
    100 / 200
    200 / 50
    200 / 70

    нужно получить строку 200 / 70 (максимальная Б при максимальной А)?

    Ну так запиливаем 4 временных таблицы:
    ВТ 1 - выбираем все данные по фильтру (все значения А и Б по нужным нам складам, фирмам, контрагентам, цветам штанов)
    ВТ 2 - выбираем из ВТ 1 максимальное А (нужно получить только ОДНО поле)
    ВТ 3 - выбираем из ВТ 2 максимальное Б, при условии что А входит в ВТ 2
    ВТ 4 - дергаем данные из ВТ 1 при уловии что (А в ВТ 2 и Б в ВТ 3).

    Можно примерно тоже, только ограничениями не через блок "ГДЕ" а через левые/правые соединения таблиц с условиями связи (ПО ВТ1_.А = ВТ2.А). Сути не меняет.
  9. TopicStarter Overlay
    Ленок87
    Offline

    Ленок87 Опытный в 1С

    Регистрация:
    7 фев 2012
    Сообщения:
    261
    Симпатии:
    0
    Баллы:
    26
    Спасибо

Поделиться этой страницей