Каталог решений - Работа с запросами. Получение последней цены товара из табличной части документа. Несколько вариантов

Работа с запросами. Получение последней цены товара из табличной части документа. Несколько вариантов

Работа с запросами. Получение последней цены товара из табличной части документа. Несколько вариантов

В наличии

На нескольких собеседованиях это спрашивали, решил поделиться. Обычно я использую вариант №2. Остальные варианты нашел в интернете.

Категория:

Описание

Задача. Есть список документов поступлений. Написать запрос, который получает последнюю цену товара из табличной части документа.

Вариант №1. Нашел в интернете.

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

 

Вариант №2. так делаю я, работает быстрее варианта №1.

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

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

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

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

 

Вариант №3. Нашел в интернете.

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

 

Проверял на конфигурации Управление производственным предприятием, редакция 1.3 (1.3.49.1) .

Какие еще есть варианты решения этой задачи через запросы? Поделитесь, добавлю в статью.

has been added to your cart:
Оформление заказа