![]() |
![]() |
![]() |
|
Получить последние цены номенклатуры без учета других измерений | ☑ | ||
---|---|---|---|---|
0
Slon747
31.05.12
✎
10:54
|
Требуется получить последние цены номенклатуры без учета характеристик и др. измерений.
Понятно, что цен может быть несколько на каждую позицию, поэтому буду брать МИНИМУМ(Цена). Можно было бы решить это через Итоги, а потом из каждой группировки взять по первой строке: ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, ЦеныНоменклатурыСрезПоследних.Период КАК Период, ЦеныНоменклатурыСрезПоследних.Цена КАК Цена, ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент КАК Коэффициент ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(ТипЦен) КАК ТипЦен}) КАК ЦеныНоменклатурыСрезПоследних УПОРЯДОЧИТЬ ПО Период УБЫВ ИТОГИ ПО Номенклатура Но проблема в том, что эти цены мне нужны для использования в построителе отчета. А он не принимает ТЗ, которую можно было бы заполнить этими данными. Как можно получить нужные данные для дальнейшего использования в пакетном запросе? |
|||
1
Cube
31.05.12
✎
10:56
|
(0) Если я правильно понял, ты хочешь получить минимальную цену номенклатуры и характеристику для этой цены, так?
|
|||
2
Slon747
31.05.12
✎
10:58
|
(1) Нет. Мне нужна одна цена(пусть минимальная), но без учета характеристики. Т.е. с любой характеристикой
|
|||
3
Cube
31.05.12
✎
10:59
|
(2) Ну на:
ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, МИНИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних СГРУППИРОВАТЬ ПО ЦеныНоменклатурыСрезПоследних.Номенклатура |
|||
4
Slon747
31.05.12
✎
11:02
|
(3) Ни фига. Так мы получаем последние цены на все характеристики.
Т.е. если есть цена 11.00 на характерисику с периодом 01.01.2006 и есть цена 23.00 на характеристику с периодом 01.01.2012, то вернет цену 11.00 |
|||
5
Cube
31.05.12
✎
11:05
|
(4) Какое условие - такое решение. Ты сам определись, чего хочешь, потом спрашивай.
|
|||
6
Slon747
31.05.12
✎
11:06
|
(5) По-моему я понятно объяснил
|
|||
7
kotletka
31.05.12
✎
11:07
|
ну так из 3 срез последних просто убери и все
|
|||
8
echo77
31.05.12
✎
11:07
|
Получайте срез последних без использования виртуальных таблиц, например так:
- Вложенный запрос по реальной таблице цен, где группируете по номенклатуре, получаете максимальный период - Соединяете таблицу цен со вложенным запросом по номенклатуре, периоду, берете цену из реальной таблицы, группируете по номенклатуре, периоду, цену минимальную/максимальную берете |
|||
9
Cube
31.05.12
✎
11:10
|
(6) Не знаю, лично я ничего не понял...
|
|||
10
Slon747
31.05.12
✎
11:10
|
(7)(8) Спасибо. Раз нет других вариантов, то попробую. так.
Просто думаю, что без вирт. таблицы будет работать заметно медленнее. |
|||
11
DEVIce
31.05.12
✎
11:12
|
(10). Виртуальная таблица как раз и реализует то, что написано в (8)
|
|||
12
shuhard
31.05.12
✎
11:15
|
(10) используй срез для получения даты
ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, МИНИМУМ(ЦеныНоменклатурыСрезПоследних.Период) КАК Период ПОМЕСТИТЬ ДатаСреза ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних СГРУППИРОВАТЬ ПО ЦеныНоменклатурыСрезПоследних.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.ТипЦен, ЦеныНоменклатуры.Цена ИЗ ДатаСреза КАК ДатаСреза ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ДатаСреза.Период = ЦеныНоменклатуры.Период И ДатаСреза.Номенклатура = ЦеныНоменклатуры.Номенклатура |
|||
13
Slon747
31.05.12
✎
11:33
|
(12) Похоже, что правильно.
Только МИНИМУМ заменил на МАКСИМУМ и в основном запросе сгруппировал по номенклатуре с МИНИМУМ(ЦеныНоменклатуры.Цена). Спасибо. Буду пробовать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |