пятница, 21 марта 2014 г.

Запрос 1с: Получить цену последненего прихода по всем номенклатурам на дату

База Розница 2.0:
1)Получим список номенклатур
2)По этому списку получим максимальную дату поступления
3)По максимальной дате поступления и номенклатуре - получим из документа (дата которого равна максимальной дате) цену.



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