Последние цены на дату

1. user821186 26.10.17 16:14 Сейчас в теме
Добрый день!
Нужны последние цены на начало 2017 года. Поняла уже, что простой срез регистра дает много повторов с разными ценами. После всех размышлений получилось. Кажется, близко к правде, но все равно по некоторым позициям выдает странные повторы: номенклатура и характеристика совпадают, но первая цена правильная, а вторая вообще левая (с первой установки цены или вообще другая). Может, можно как-то подредактировать этот запрос?

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

СГРУППИРОВАТЬ ПО
	ЦеныНоменклатурыСрезПоследних.Номенклатура,
	ЦеныНоменклатурыСрезПоследних.Цена,
	ЦеныНоменклатурыСрезПоследних.ТипЦен,
	ЦеныНоменклатурыСрезПоследних.Период,
	ЦеныНоменклатурыСрезПоследних.Валюта,
	ЦеныНоменклатурыСрезПоследних.СпособРасчетаЦены,
	ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
	ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Цены.Номенклатура,
	МАКСИМУМ(ВТ_Цены.Период) КАК Период,
	ВТ_Цены.ТипЦен,
	ВТ_Цены.Валюта,
	ВТ_Цены.СпособРасчетаЦены,
	ВТ_Цены.ЕдиницаИзмерения,
	ВТ_Цены.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ ВТ_ДатыПоследнихЦен
ИЗ
	ВТ_Цены КАК ВТ_Цены
ГДЕ
	ВТ_Цены.Период <= &Дата

СГРУППИРОВАТЬ ПО
	ВТ_Цены.Номенклатура,
	ВТ_Цены.ТипЦен,
	ВТ_Цены.Валюта,
	ВТ_Цены.СпособРасчетаЦены,
	ВТ_Цены.ЕдиницаИзмерения,
	ВТ_Цены.ХарактеристикаНоменклатуры
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ВТ_Цены.Номенклатура,
	ВТ_Цены.Цена,
	ВТ_Цены.ТипЦен,
	ВТ_Цены.Период,
	ВТ_ДатыПоследнихЦен.Валюта,
	ВТ_ДатыПоследнихЦен.СпособРасчетаЦены,
	ВТ_ДатыПоследнихЦен.ЕдиницаИзмерения,
	ВТ_ДатыПоследнихЦен.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ ВТ_ПоследниеЦены
ИЗ
	ВТ_Цены КАК ВТ_Цены
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ДатыПоследнихЦен КАК ВТ_ДатыПоследнихЦен
		ПО ВТ_Цены.Номенклатура = ВТ_ДатыПоследнихЦен.Номенклатура
			И ВТ_Цены.Период = ВТ_ДатыПоследнихЦен.Период

СГРУППИРОВАТЬ ПО
	ВТ_Цены.Номенклатура,
	ВТ_Цены.Цена,
	ВТ_Цены.ТипЦен,
	ВТ_Цены.Период,
	ВТ_ДатыПоследнихЦен.Валюта,
	ВТ_ДатыПоследнихЦен.СпособРасчетаЦены,
	ВТ_ДатыПоследнихЦен.ЕдиницаИзмерения,
	ВТ_ДатыПоследнихЦен.ХарактеристикаНоменклатуры
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ВТ_ПоследниеЦены.Номенклатура,
	МИНИМУМ(ВТ_ПоследниеЦены.Цена) КАК Цена,
	ВТ_ПоследниеЦены.ТипЦен,
	ВТ_ПоследниеЦены.Валюта,
	ВТ_ПоследниеЦены.СпособРасчетаЦены,
	ВТ_ПоследниеЦены.ЕдиницаИзмерения,
	ВТ_ПоследниеЦены.ХарактеристикаНоменклатуры
ИЗ
	ВТ_ПоследниеЦены КАК ВТ_ПоследниеЦены

СГРУППИРОВАТЬ ПО
	ВТ_ПоследниеЦены.Номенклатура,
	ВТ_ПоследниеЦены.ТипЦен,
	ВТ_ПоследниеЦены.Валюта,
	ВТ_ПоследниеЦены.СпособРасчетаЦены,
	ВТ_ПоследниеЦены.ЕдиницаИзмерения,
	ВТ_ПоследниеЦены.ХарактеристикаНоменклатуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. BackinSoda 26.10.17 16:16 Сейчас в теме
(1) Условие по нужному типу цен поставьте
upd: может всё сократить до :
ВЫБРАТЬ 
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена,
    ЦеныНоменклатурыСрезПоследних.ТипЦен,
    ЦеныНоменклатурыСрезПоследних.Период КАК Период,
    ЦеныНоменклатурыСрезПоследних.Валюта,
    ЦеныНоменклатурыСрезПоследних.СпособРасчетаЦены,
    ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
    ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
Показать
4. user821186 26.10.17 22:04 Сейчас в теме
(2) условие по типу цен есть
Простой срез цен дает много полных дублей (хотя группировка есть) + одинаковые позиции с разными ценами. Одна цена правильная, а другая вообще с потолка взятая.
И таких несостыковок 30 штук на 40 тысяч.
5. Xershi 1557 26.10.17 22:18 Сейчас в теме
(1) делаешь вложенный запрос. В нем соединяешь с регистром цен по нужному типу и выводишь по максимуму только его период, с условием до даты документа.
Затем в итоговом запрос второй раз делаешь соединение уже по периоду. И все вот тебе и срез последних на каждую дату документа!
3. Den75Ch 26.10.17 16:28 Сейчас в теме
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|	ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
|	ЦеныНоменклатурыСрезПоследних.Цена,
|	ЦеныНоменклатурыСрезПоследних.ТипЦен,
|	ЦеныНоменклатурыСрезПоследних.Период КАК Период,
|	ЦеныНоменклатурыСрезПоследних.Валюта,
|	ЦеныНоменклатурыСрезПоследних.СпособРасчетаЦены,
|	ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
|	ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры
|ПОМЕСТИТЬ ВТ_Цены
|ИЗ
|	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
|ГДЕ
|	ВЫРАЗИТЬ(ЦеныНоменклатурыСрезПоследних.ТипЦен.Код КАК СТРОКА(9)) В (&ТипЦен)
|	И НЕ ЦеныНоменклатурыСрезПоследних.Номенклатура.ПометкаУдаления
|
|СГРУППИРОВАТЬ ПО
|	ЦеныНоменклатурыСрезПоследних.Номенклатура,
|	ЦеныНоменклатурыСрезПоследних.Цена,
|	ЦеныНоменклатурыСрезПоследних.ТипЦен,
|	ЦеныНоменклатурыСрезПоследних.Период,
|	ЦеныНоменклатурыСрезПоследних.Валюта,
|	ЦеныНоменклатурыСрезПоследних.СпособРасчетаЦены,
|	ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
|	ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|ВЫБРАТЬ
|	ВТ_Цены.Номенклатура,
|	МАКСИМУМ(ВТ_Цены.Период) КАК Период,
|	МАКСИМУМ(ВТ_Цены.ТипЦен) КАК ТипЦен,
|	МАКСИМУМ(ВТ_Цены.Валюта) КАК Валюта,
|	МАКСИМУМ(ВТ_Цены.СпособРасчетаЦены) КАК СпособРасчетаЦены,
|	МАКСИМУМ(ВТ_Цены.ЕдиницаИзмерения) КАК ЕдиницаИзмерения,
|	ВТ_Цены.ХарактеристикаНоменклатуры
|ПОМЕСТИТЬ ВТ_ДатыПоследнихЦен
|ИЗ
|	ВТ_Цены КАК ВТ_Цены
|ГДЕ
|	ВТ_Цены.Период <= &Дата
|
|СГРУППИРОВАТЬ ПО
|	ВТ_Цены.Номенклатура,
|	ВТ_Цены.ХарактеристикаНоменклатуры
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|	ВТ_ДатыПоследнихЦен.Номенклатура,
|	МАКСИМУМ(ВТ_Цены.Цена) КАК Цена,
|	МАКСИМУМ(ВТ_ДатыПоследнихЦен.Период) КАК Период,
|	ВТ_ДатыПоследнихЦен.ХарактеристикаНоменклатуры
|ПОМЕСТИТЬ ВТ_ПоследниеЦены
|ИЗ
|	ВТ_ДатыПоследнихЦен КАК ВТ_ДатыПоследнихЦен
|		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Цены КАК ВТ_Цены
|		ПО (ВТ_Цены.Номенклатура = ВТ_ДатыПоследнихЦен.Номенклатура)
|			И (ВТ_Цены.Период = ВТ_ДатыПоследнихЦен.Период)
|			И ВТ_ДатыПоследнихЦен.ХарактеристикаНоменклатуры = ВТ_Цены.ХарактеристикаНоменклатуры
|
|СГРУППИРОВАТЬ ПО
|	ВТ_ДатыПоследнихЦен.ХарактеристикаНоменклатуры,
|	ВТ_ДатыПоследнихЦен.Номенклатура
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|	ВТ_ПоследниеЦены.Номенклатура,
|	МИНИМУМ(ВТ_ПоследниеЦены.Цена) КАК Цена,
|	ВТ_ПоследниеЦены.ХарактеристикаНоменклатуры
|ИЗ
|	ВТ_ПоследниеЦены КАК ВТ_ПоследниеЦены
|
|СГРУППИРОВАТЬ ПО
|	ВТ_ПоследниеЦены.Номенклатура,
|	ВТ_ПоследниеЦены.ХарактеристикаНоменклатуры"
Показать


Если нужен тип цены, то сделай еще 1 пакет с получение его левым соединением по дате из последнего запроса
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот