8.х Выбрать Первые 1 во вложенном запросе

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем mhl, 1 апр 2016.

  1. TopicStarter Overlay
    mhl
    Offline

    mhl Опытный в 1С

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

    Николаич87 Опытный в 1С

    Регистрация:
    1 апр 2015
    Сообщения:
    122
    Симпатии:
    4
    Баллы:
    29
    для начала я бы переписал запрос касательно параметров виртуальных таблиц и отказался бы от такого количество вложенности запросов
  3. Draco
    Online

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.635
    Симпатии:
    946
    Баллы:
    204
    1 Согласен что надо переписать на ВТ таблицы
    2
    Ну смотрите
    ВЫБРАТЬ ПЕРВЫЕ 1
    ЦеныМоделиСрезПоследних.Модель КАК Модель,
    ЦеныМоделиСрезПоследних.ТипСкидок КАК ТипСкидок,
    ЦеныМоделиСрезПоследних.Цена КАК Цена,
    ЦеныМоделиСрезПоследних.Период КАК Период
    ИЗ
    РегистрСведений.ЦеныМодели.СрезПоследних(, ) КАК ЦеныМоделиСрезПоследних
    ГДЕ
    ЦеныМоделиСрезПоследних.ТипЦен = &ЦенаРеал
    Тут вы берете ТОЛЬКО ОДНУ Запись с отбором по типу цен
    и не факт что у этой цены тип скики будет базовый &БазовыйТип


    Вы же потом
    ВЫБРАТЬ
    ЦеныМоделиСрезПоследних.Модель КАК Модель,
    ЦеныМоделиСрезПоследних.ТипСкидок КАК БазовыйТипСкидок,
    ЦеныМоделиСрезПоследних.Цена КАК БазоваяЦена
    ИЗ
    РегистрСведений.ЦеныМодели.СрезПоследних(, ) КАК ЦеныМоделиСрезПоследних
    ГДЕ
    ЦеныМоделиСрезПоследних.ТипСкидок = &БазовыйТип) КАК БазовыеЦены

    Тут соединяете только по модели без отбора потипу цен

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