|
Подскажите с запросом | ☑ | ||
---|---|---|---|---|
0
егаис
17.11.13
✎
14:49
|
Формируется виртуальная таблица
ВЫБРАТЬ РАЗЛИЧНЫЕ ЦеныСрезПоследних.Цена, ЦеныСрезПоследних.Номенклатура.Код, ЦеныСрезПоследних.Период ПОМЕСТИТЬ тз ИЗ РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних ГДЕ ЦеныСрезПоследних.ТипЦен = &ТипЦен И ЦеныСрезПоследних.Номенклатура.ПометкаУдаления = &ПометкаУдаления Есть еще одно измерение "Поставщик", поэтому получаются записи с одинаковым кодом, разными ценами и периодом Типа 001 32,00 01.01.13 001 31,50 05.01.13 001 33,00 13.03.13 002 50,00 15.01.13 002 70,00 16.01.13 и т.д. Подскажите как получить строку с максимальной датой по каждому товару? |
|||
2
Tateossian
17.11.13
✎
15:05
|
Во-первых переделай запрос так
РегистрСведений.Цены.СрезПоследних(, НЕ ЦеныСрезПоследних.Номенклатура.ПометкаУдаления И ЦеныСрезПоследних.ТипЦен = &ТипЦен) |
|||
3
Tateossian
17.11.13
✎
15:06
|
МАКИСИМУМ(ЦеныСрезПоследних.Период) в полях
и в блоке СГРУППИРОВАТЬ ПО ЦеныСрезПоследних.Цена, ЦеныСрезПоследних.Номенклатура.Код |
|||
4
егаис
17.11.13
✎
15:07
|
(3) он всегда будет максимум в разрезе еще одного измерения "Поставщик", записи останутся те же
|
|||
5
Tateossian
17.11.13
✎
15:10
|
(4) Но в запросе у тебя нет этого поля. Как так получится?
|
|||
6
егаис
17.11.13
✎
15:12
|
по измерению
ВЫБРАТЬ РАЗЛИЧНЫЕ ЦеныСрезПоследних.Цена, ЦеныСрезПоследних.Номенклатура.Код, МАКСИМУМ(ЦеныСрезПоследних.Период) КАК Период ИЗ РегистрСведений.Цены.СрезПоследних( , (НЕ Номенклатура.ПометкаУдаления) И ТипЦен = &ТипЦен) КАК ЦеныСрезПоследних СГРУППИРОВАТЬ ПО ЦеныСрезПоследних.Цена, ЦеныСрезПоследних.Номенклатура.Код результат 00000029 36,41 25.04.2013 0:00:00 00000029 36,42 25.04.2013 0:00:00 00000029 36,50 26.04.2013 0:00:00 00000029 37,15 25.04.2013 0:00:00 00000029 38,20 25.04.2013 0:00:00 00000029 38,79 25.04.2013 0:00:00 00000029 39,17 19.09.2013 8:00:00 00000029 44,00 25.04.2013 0:00:00 00000030 24,77 25.04.2013 0:00:00 00000030 25,49 25.04.2013 0:00:00 00000030 26,11 25.04.2013 0:00:00 00000030 27,50 26.04.2013 0:00:00 00000030 29,49 25.04.2013 0:00:00 00000030 30,79 02.10.2013 8:00:00 00000033 58,04 25.04.2013 0:00:00 00000033 61,52 25.04.2013 0:00:00 00000033 64,33 25.04.2013 0:00:00 00000033 66,08 25.04.2013 0:00:00 |
|||
7
егаис
17.11.13
✎
15:13
|
тут надо это все в виртуальный тз запихнуть и потом по максимуму выбрать, не пойму как (
|
|||
8
Tateossian
17.11.13
✎
15:18
|
ВЫБРАТЬ
Цена, Код, МАКСИМУМ(Период) ИЗ ( ВЫБРАТЬ РАЗЛИЧНЫЕ ЦеныСрезПоследних.Цена, ЦеныСрезПоследних.Номенклатура.Код, МАКСИМУМ(ЦеныСрезПоследних.Период) КАК Период ИЗ РегистрСведений.Цены.СрезПоследних( , (НЕ Номенклатура.ПометкаУдаления) И ТипЦен = &ТипЦен) КАК ЦеныСрезПоследних СГРУППИРОВАТЬ ПО ЦеныСрезПоследних.Цена, ЦеныСрезПоследних.Номенклатура.Код) ВЗ СГРУППИРОВАТЬ ПО Цена, Код |
|||
9
Tateossian
17.11.13
✎
15:19
|
А, подожди, цену надо убрать и с ней соединить. Я торможу, сейчас напишу.
|
|||
10
alexiv79
17.11.13
✎
15:20
|
(0) Что за конфа? Не УТ ?
|
|||
11
егаис
17.11.13
✎
15:20
|
(10) типа, отраслевая от раруса
|
|||
12
егаис
17.11.13
✎
15:20
|
цены хранятся в разрезе поставщиков
|
|||
13
Prince-Sentido
17.11.13
✎
15:21
|
<1C>ВЫБРАТЬ
ЦеныСрезПоследних.Цена, ЦеныСрезПоследних.ТипЦен, ЦеныСрезПоследних.Номенклатура ИЗ РегистрСведений.Цены.СрезПоследних( , НЕ Номенклатура.ПометкаУдаления И ТипЦен = &ТипЦен) КАК ЦеныСрезПоследних </1C> |
|||
14
alexiv79
17.11.13
✎
15:21
|
(12) Что-то подобное видел в Альфа-авто
|
|||
15
Wobland
17.11.13
✎
15:21
|
(13) в чего это вдруг не пометка?
|
|||
16
alexiv79
17.11.13
✎
15:22
|
(15) Может так не используемую номенклатуру помечают
|
|||
17
Tateossian
17.11.13
✎
15:23
|
(15) Да, понятно, тут я не прав. Суть в том - чтобы поместить это в параметр виртуальной таблицы.
|
|||
18
егаис
17.11.13
✎
15:24
|
и так не работает
ВЫБРАТЬ РАЗЛИЧНЫЕ ЦеныСрезПоследних.Цена, ЦеныСрезПоследних.Номенклатура.Код, МАКСИМУМ(ЦеныСрезПоследних.Период) КАК Период ПОМЕСТИТЬ тз ИЗ РегистрСведений.Цены.СрезПоследних( , (НЕ Номенклатура.ПометкаУдаления) И ТипЦен = &ТипЦен) КАК ЦеныСрезПоследних СГРУППИРОВАТЬ ПО ЦеныСрезПоследних.Цена, ЦеныСрезПоследних.Номенклатура.Код ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ тз.Цена, тз.НоменклатураКод, МАКСИМУМ(тз.Период) КАК Период ИЗ тз КАК тз СГРУППИРОВАТЬ ПО тз.НоменклатураКод, тз.Цена |
|||
19
alexiv79
17.11.13
✎
15:24
|
(12) Чета мне кажется надо ПЕРВЫЕ использовать
|
|||
20
Prince-Sentido
17.11.13
✎
15:24
|
(15) да, точно. В виде параметра в условии задания. Но можно и не используемую номенклатуру не учитывать, как частный случай
|
|||
21
Wobland
17.11.13
✎
15:25
|
выбрать максимальные даты, соединить со срезом ещё не предлагали?
|
|||
22
Wobland
17.11.13
✎
15:26
|
(21) хотя, чего это я?.. сгруппировать уже пробовали?
|
|||
23
егаис
17.11.13
✎
15:27
|
(19) первые 1 с упорядочиванием - так только один элемент выйдет
(21) да, да, вот думалки не хватает на это |
|||
24
Tateossian
17.11.13
✎
15:28
|
Попробуй так
ВЫБРАТЬ ЦеныСрезПоследних.Номенклатура.Код, МАКСИМУМ(ЦеныСрезПоследних.Период), ЦеныСрезПоследних1.Цена ИЗ РегистрСведений.Цены.СрезПоследних( , Номенклатура.ПометкаУдаления = &ПометкаУдаления И ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныСрезПоследних1 ПО ЦеныСрезПоследних.Номенклатура = ЦеныСрезПоследних1.Номенклатура И ЦеныНоменклатурыСрезПоследних.Период = ЦеныНоменклатурыСрезПоследних1.Период СГРУППИРОВАТЬ ПО ЦеныСрезПоследних.Номенклатура.Код, ЦеныСрезПоследних1.Цена |
|||
25
Wobland
17.11.13
✎
15:29
|
(23) начни с запроса, который даст тебе крайнюю дату для каждой номенклатуры
|
|||
26
егаис
17.11.13
✎
15:33
|
(24) не
|
|||
27
alexiv79
17.11.13
✎
15:34
|
(23) А если Максимум - цена и период? Просто получается так, что у тебя допустим от 2 поставщиков на 1 дату 2 цены - какую из них выбрать?
|
|||
28
Tateossian
17.11.13
✎
15:37
|
(26) А что не? Там ошибка у меня в запросе.
|
|||
29
alexiv79
17.11.13
✎
15:38
|
+(27) Если среднюю по цене бери - но все засит от постановки задачи
|
|||
30
егаис
17.11.13
✎
15:42
|
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура.Код, МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Период) КАК Период, ЦеныНоменклатурыСрезПоследних1.Цена ИЗ РегистрСведений.Цены.СрезПоследних( , Номенклатура.ПометкаУдаления = &ПометкаУдаления И ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних1 ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЦеныНоменклатурыСрезПоследних1.Номенклатура И ЦеныНоменклатурыСрезПоследних.Период = ЦеныНоменклатурыСрезПоследних1.Период СГРУППИРОВАТЬ ПО ЦеныНоменклатурыСрезПоследних.Номенклатура.Код, ЦеныНоменклатурыСрезПоследних1.Цена |
|||
31
егаис
17.11.13
✎
15:42
|
(28) исправил, тоже самое
|
|||
32
егаис
17.11.13
✎
15:43
|
(27) срез последних на что? цена - ресурс
|
|||
33
Tateossian
17.11.13
✎
15:47
|
(32) Так а что тебе надо увидеть? Просто последнюю цену, или конкретного поставщика? Вот так ты получишь правильные последние цены (в прошлый раз я забыл во внутреннем соединении поставит фильтр на тип цен):
ВЫБРАТЬ МАКСИМУМ(ЦеныСрезПоследних.Период) КАК Период, ЦеныСрезПоследних.Номенклатура.Код, ЦеныСрезПоследних1.Цена ИЗ РегистрСведений.Цены.СрезПоследних( , Номенклатура.ПометкаУдаления = &ПометкаУдаления И ТипЦен = &ТипЦен) КАК ЦеныСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныСрезПоследних1 ПО ЦеныСрезПоследних.Период = ЦеныНоменклатурыКонтрагентовСрезПоследних1.Период И ЦеныСрезПоследних.Номенклатура = ЦеныСрезПоследних1.Номенклатура СГРУППИРОВАТЬ ПО ЦеныСрезПоследних.Номенклатура.Код, ЦеныСрезПоследних1.Цена |
|||
34
alexiv79
17.11.13
✎
15:48
|
(32) У номенклатура Шкаф, у поставщика ИП Иванов цена 100, у поставщика ИП Петров 120 на 01.01.2013 - какую тебе цену надо? Максимульную? Среднию?
|
|||
35
alexiv79
17.11.13
✎
15:49
|
+(34) Прежде чем начать писать запрос, надо подумать - что ты хочешь получить в результате
|
|||
36
егаис
17.11.13
✎
15:55
|
максимальную по дате по типу цены, поставщик не важен
|
|||
37
alexiv79
17.11.13
✎
15:56
|
(34) Если тебя периодичность регистра в пределах дня - то последней цены от двух разных поставщиком не будет - у них одинаковые даты могут быть - например 01.11.2013 00:00:00 - какую из них надо выбрать? Скорее всего среднюю-или где поставщик- пустое значение
|
|||
38
alexiv79
17.11.13
✎
15:57
|
(36) Тогда вместо
ЦеныСрезПоследних.Цена попробуй Максимум(ЦеныСрезПоследних.Цена) КАК Цена |
|||
39
егаис
17.11.13
✎
15:58
|
(37), (38) ты о чем вообще, не в теме?
нужно получить значение цены по каждой номенклатуре на последнюю дату. Регистр имеет измерения "Номенклатура" и "Поставщик", ресурс "Цена". Азбука, результат всегда будет по всем измерениям. |
|||
40
alexiv79
17.11.13
✎
15:59
|
(39) Понятно-думать ты не хочешь. Ну давай, дерзай. Потом посмотрю чем это все кончится
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |