Выборка цены

Версия для печатиPDF-версия

Платформа:

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

ВЫБРАТЬ
ЧекККМТовары.Номенклатура КАК Номенклатура,
ЧекККМТовары.Характеристика КАК Характеристика,
ЦеныНоменклатурыСрезПоследних.Цена КАК Себестоимость,
ЧекККМТовары.Ссылка.Ссылка КАК Ссылка
ИЗ
Документ.ЧекККМ.Товары КАК ЧекККМТовары
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ЧекККМТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
И ЧекККМТовары.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
ГДЕ
ЦеныНоменклатурыСрезПоследних.ВидЦены.ЗакупочнаяЦена
 
Но если в последнем документе закупочная цена = 0, то и выбирается 0. Можно было бы выбрать из среза первых , но закупочная цена может меняться на изделие в случае нового поступления одинаковой номенклатуры с одинаковой характеристикой. Надеюсь понятно объяснила, что мне нужно получить.

Придётся запрос к основной таблице РС делать и выбирать максимальную дату записи, где цена не равна 0.

А пометить на удаление кривой документ установки цен нельзя?

Да я думаю, можно, в принципе, бухгалтеров заставить либо удалить эту колонку из установки цен, либо заполнить её

А это как? Я с таким еще не сталкивалась ((

Вот один из вариантов запроса:

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

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

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

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

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

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ВТ_Чеки.Номенклатура,
	ВТ_Чеки.Характеристика,
	ЕСТЬNULL(ВТ_Цены.Цена, 0) КАК Себестоимость,
	ВТ_Чеки.Ссылка
ИЗ
	ВТ_Чеки КАК ВТ_Чеки
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Цены КАК ВТ_Цены
		ПО ВТ_Чеки.Номенклатура = ВТ_Цены.Номенклатура
			И ВТ_Чеки.Характеристика = ВТ_Цены.Характеристика

Большое спасибо, попробую. Потому что, скорее всего, все равно будут иногда неправильно заполнять установку цен.

В УТ 10.3 в документе Установка цен есть флажок "Не регистрировать нулевые цены". Странно, что в УТ 11 этого нет.