|
Цена в трех последних поступлениях | ☑ | ||
---|---|---|---|---|
0
alex-pro
30.08.12
✎
19:19
|
Народ, подкиньте идею, плиз.
Нужно получить цену номенклатуры из трех последних поступлений. Как покрасивее связать это в запросе? |
|||
1
Wobland
30.08.12
✎
19:20
|
выбрать первые 3 упорядочить по период убыв
|
|||
2
Nirvana
30.08.12
✎
19:23
|
(0) А цены у тебя где? В регистре сведений?
|
|||
3
y22-k
30.08.12
✎
19:24
|
(0) тебе просто три последние цены из поступлений , или цены на дату трех поступлений?
|
|||
4
y22-k
30.08.12
✎
19:25
|
(1) а если несколько позиций одновременно?
|
|||
5
alex-pro
30.08.12
✎
19:27
|
Да, есть массив товаров, нужны три последних цены (чтобы узнать среднюю).
Ну, например, есть РН Закупки. |
|||
6
ILM
гуру
30.08.12
✎
19:28
|
+(4) и по разной цене?
|
|||
7
alex-pro
30.08.12
✎
19:29
|
(4),
Конечно, так и будет. (6) ну, тут не принципиально) |
|||
8
Nirvana
30.08.12
✎
19:33
|
(5) Тогда напрашивается отбор по виду регистратора и как в (1).
|
|||
9
alex-pro
30.08.12
✎
19:33
|
Пока сделал только дерево с номенклатурой и всеми приходами.... надо оставить только три прихода..
|
|||
10
alex-pro
30.08.12
✎
19:33
|
(8)Это понятно. А дальше?
|
|||
11
alex-pro
30.08.12
✎
19:36
|
Конечно, можно обойти Дерево, но это как-то убого. Неужели через запрос никак...
|
|||
12
Nirvana
30.08.12
✎
19:36
|
Точнее, надо выбрать три последних прихода (в список), а потом вибирать из регистра по вхождению регистратора в этот список. Как-то так.
|
|||
13
alex-pro
30.08.12
✎
19:38
|
(12)
"Точнее, надо выбрать три последних прихода (в список)," и как их выбрать? Конечно, связать потом по ссылке проблем нет.... |
|||
14
Nirvana
30.08.12
✎
19:44
|
(13) Ну, я так понимаю, что как в (1), только запрос по документам.
|
|||
15
alex-pro
30.08.12
✎
19:48
|
(14)Ну он и выведет мне три строчки. А у меня массив из ста позиций номенклатур.
|
|||
16
alex-pro
30.08.12
✎
19:50
|
Вот у меня и дилема теперь - то ли получить полную таблицу со всем приходами, то ли делать 100 запросов по каждой номенклатуре как в (1)
|
|||
17
Nirvana
30.08.12
✎
19:51
|
(15) Тогда я не понимаю, чего ты хочешь. В (0) ты сказал "получить цену номенклатуры", теперь говоришь про массив из ста позиций.
|
|||
18
Nirvana
30.08.12
✎
19:52
|
(16) А, вон ты о чём, ну так и фильтруй запрос по регистру накоплений по вхождению номенклатуры в этот массив.
|
|||
19
PR
30.08.12
✎
19:53
|
(0) Думаю, никак, кроме может изощренных соединений по максимуму.
Лучше всего сделать иерархическую выборку и потом для каждой номенклатуры выбирать первые три документа. |
|||
20
Nirvana
30.08.12
✎
19:54
|
+(18) И да, надо получать все приходы кучей.
|
|||
21
Nirvana
30.08.12
✎
19:56
|
+(20) Точнее даже - для каждой номенклатуры из массива получать три приходные документа и добавлять их в общий список.
|
|||
22
Lama12
30.08.12
✎
19:58
|
Классная задачка.
Первая покупка 3 года назад. Вторая - 2 года назад. Третья сегодня. Цена то классная будет. |
|||
23
xenos
30.08.12
✎
19:59
|
Запрос с тремя уровнями вложенностями
С начала получаешь партию с максимальной датой Дата1 На втором уровне с максимаьлной датой но меньше дата1 - дата2 На тертьем уровне максимльной датой но меньше дата 3 |
|||
24
alex-pro
30.08.12
✎
20:19
|
(23) вот, наконец-то первая здравая идея)
Но если вложенность захотят задавать руками.. например, 5 последних партий.. |
|||
25
alex-pro
30.08.12
✎
20:20
|
(22)Да не - там все четко, приходы каждую неделю, хотим узнать среднюю "нормативную" стоимость
|
|||
26
PR
30.08.12
✎
20:22
|
(25) Ну так и выбирай все данные, просто за последнюю неделю.
|
|||
27
alex-pro
30.08.12
✎
20:25
|
(25) на некоторые позиции по две недели)))
|
|||
28
PR
30.08.12
✎
20:31
|
(27) Значит за две недели.
|
|||
29
Jstunner
30.08.12
✎
20:31
|
ну очевидно же, ищи максимумы дат поступлений, затем максимумы дат которые меньше первых, и т.д.
|
|||
30
МишКа
30.08.12
✎
20:34
|
Если нужна средняя, почему не получить среднюю? Зачем эти 3-5 цифирек? Пользователю - полюбоваться? Программисту - побаловаться?
|
|||
31
alex-pro
30.08.12
✎
20:37
|
(30) потому что неизвестно, сколько было приходов и когда они были.
|
|||
32
alex-pro
30.08.12
✎
20:41
|
(30)дык, мне и не нужны эти циферки - нужна одна - средее арифметическое. Но как я его получу без этих циферок??
|
|||
33
МишКа
30.08.12
✎
20:41
|
(32) Одна цифра сильно упрощает дело.
|
|||
34
alex-pro
30.08.12
✎
20:45
|
(33) Ок, подкинь идею, пока пытаюсь сделать как в (23)
|
|||
35
xenos
30.08.12
✎
20:49
|
(24) тогда только использовать способ номер по порядку
Например как в v8: Номер по порядку в консоли запросов |
|||
36
МишКа
30.08.12
✎
20:50
|
(34) Номер по порядку
|
|||
37
m-serg74
30.08.12
✎
20:53
|
|
|||
38
Мигрень
30.08.12
✎
20:57
|
(0) Ищи мою ветку "Срез предпоследних" месяц назад была. Идея решения - там.
|
|||
39
mih_io
30.08.12
✎
20:59
|
+(37) только сперва упорядочить по дате документа и добавить такую штуку в таблицу Вложение
ИМЕЮЩИЕ СУММА(1) < 4 должно взлететь. |
|||
40
m-serg74
30.08.12
✎
21:01
|
зачем???
|
|||
41
m-serg74
30.08.12
✎
21:01
|
(37) было к (34) с учетом (32)
|
|||
42
МишКа
30.08.12
✎
21:02
|
(39) не... неправильно
|
|||
43
m-serg74
30.08.12
✎
21:03
|
да ваще чушь, а если было 4,5,6 ... приходов - среднего не будет? )))
|
|||
44
МишКа
30.08.12
✎
21:03
|
(37) ему среднее n последних надо
|
|||
45
m-serg74
30.08.12
✎
21:04
|
(44) внимательно (41) или сразу (32)
|
|||
46
МишКа
30.08.12
✎
21:04
|
тут только номером по порядку. в FAQ-ах по SQL расписано.
|
|||
47
alex-pro
30.08.12
✎
21:04
|
(44) да, так и надо.
|
|||
48
m-serg74
30.08.12
✎
21:05
|
(47) n чему равно?
|
|||
49
МишКа
30.08.12
✎
21:06
|
n - параметр
|
|||
50
m-serg74
30.08.12
✎
21:06
|
47 был вопрос
|
|||
51
alex-pro
30.08.12
✎
21:07
|
(48) В ТЗ - или 3 или 5. В идеале - чтобы можно было задавать. Заказчик сам не знает, какая глубина n ему нужна.
|
|||
52
m-serg74
30.08.12
✎
21:07
|
тогда посложнее
|
|||
53
m-serg74
30.08.12
✎
21:07
|
чуть чуть)
|
|||
54
alex-pro
30.08.12
✎
21:07
|
(37) крутяк. Не понял, правда, пока как работает, но попробую прикрутить.
|
|||
55
alex-pro
30.08.12
✎
21:08
|
(54), блин, здесь я про (35) номер по порядку писал
|
|||
56
m-serg74
30.08.12
✎
21:10
|
и что ты в результате наваял, хвались
|
|||
57
alex-pro
30.08.12
✎
21:12
|
(37)сюда кол-во поступлений не привязать....
|
|||
58
alex-pro
30.08.12
✎
21:12
|
(56) разбираюсь еще
|
|||
59
МишКа
30.08.12
✎
21:29
|
ВЫБРАТЬ Количество(Т2.Номенклатура) как НомерПП,Т1.Номенклатура,Т1.Ссылка
ИЗ Документ.ПриходнаяНакладная.Товары КАК Т1 СОЕДИНЕНИЕ Документ.ПриходнаяНакладная.Товары КАК Т2 ПО Т2.Ссылка.Дата<=Т1.Ссылка.Дата И Т1.Номенклатура=Т2.Номенклатура СГРУППИРОВАТЬ ПО Т1.Номенклатура,Т1.Ссылка УПОРЯДОЧИТЬ ПО Т1.Номенклатура,Количество(Т2.Номенклатура) |
|||
60
m-serg74
30.08.12
✎
21:33
|
(59) а как 5 например отрезать?
|
|||
61
m-serg74
30.08.12
✎
21:33
|
еще и через параметр
|
|||
62
МишКа
30.08.12
✎
21:34
|
(60) Этот запрос во временную таблицу или во вложенный запрос. Кому как нравится
|
|||
63
m-serg74
30.08.12
✎
21:34
|
и что дальше то делать
|
|||
64
m-serg74
30.08.12
✎
21:36
|
если ТС не потренироваться в хитрых запросах а реальная задача то на мой взгляд самое оптимальное динамически сделать текст запроса и не ипать моск
|
|||
65
alex-pro
30.08.12
✎
21:36
|
Все супер, получилось через (35!!!)
(62)Проанализировал. Идея та же, что и в 35, но там просто не получается, т.к. нужна сортировка убыванию поступлений и (60) |
|||
66
МишКа
30.08.12
✎
21:36
|
Дальше там все очевидно. Главное - номер по порядку получить, чтобы потом на него условие накладывать.
|
|||
67
m-serg74
30.08.12
✎
21:36
|
сюда кинь, интересно
|
|||
68
m-serg74
30.08.12
✎
21:37
|
это (65)
|
|||
69
alex-pro
30.08.12
✎
21:37
|
(68)
Вот для Трех последних поступлений: ВЫБРАТЬ ТабЗакупки.Номенклатура.Артикул КАК Артикул, ТабЗакупки.Номенклатура КАК Номенклатура, СУММА(ТабЗакупки.СтоимостьОборот) КАК СтоимостьОборот, СУММА(ТабЗакупки.КоличествоОборот) КАК КоличествоОборот, ТабЗакупки.Период ПОМЕСТИТЬ Таб1 ИЗ (ВЫБРАТЬ ЗакупкиОбороты.Период КАК Период, СУММА(ЗакупкиОбороты.СтоимостьОборот) КАК СтоимостьОборот, СУММА(ЗакупкиОбороты.КоличествоОборот) КАК КоличествоОборот, ЗакупкиОбороты.Номенклатура КАК Номенклатура ИЗ РегистрНакопления.Закупки.Обороты(, , Регистратор, Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ЗакупкиОбороты ГДЕ ЗакупкиОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг СГРУППИРОВАТЬ ПО ЗакупкиОбороты.Номенклатура, ЗакупкиОбороты.Период) КАК ТабЗакупки СГРУППИРОВАТЬ ПО ТабЗакупки.Номенклатура, ТабЗакупки.Номенклатура.Артикул, ТабЗакупки.Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Таб1.Артикул, Таб1.Номенклатура, Таб1.СтоимостьОборот, Таб1.КоличествоОборот, Таб1.Период, КОЛИЧЕСТВО(Таб11.Период) КАК Счетчик ПОМЕСТИТЬ Итоговая ИЗ Таб1 КАК Таб1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таб1 КАК Таб11 ПО Таб1.Период >= Таб11.Период И Таб1.Номенклатура = Таб11.Номенклатура СГРУППИРОВАТЬ ПО Таб1.Артикул, Таб1.Период, Таб1.Номенклатура, Таб1.СтоимостьОборот, Таб1.КоличествоОборот ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Итоговая.Артикул, Итоговая.Номенклатура, Итоговая.СтоимостьОборот, Итоговая.КоличествоОборот, Итоговая.Период, Итоговая.Счетчик ИЗ Итоговая КАК Итоговая ГДЕ Итоговая.Счетчик <= 3 |
|||
70
alex-pro
30.08.12
✎
21:38
|
работает там, где есть регистр Закупки
|
|||
71
m-serg74
30.08.12
✎
21:40
|
прикольно
|
|||
72
alex-pro
30.08.12
✎
21:42
|
Вроде, все зашибись получилось))))
А идея в (35) вообще для меня прорыв, после "Остатки по регистру на каждый день" |
|||
73
alex-pro
30.08.12
✎
21:44
|
Интересно, почему я ее раньше за столько лет не нашел на мисте... наверное, искал "счетчик в запросе" - в итоге, ниче не нашел, кроме СКД
|
|||
74
alex-pro
30.08.12
✎
21:46
|
Щас доделаю еще одну временную табличку с средним арифметическим и вообще все будет зашибись)))
|
|||
75
alex-pro
30.08.12
✎
21:54
|
Вообще, конечно, работает не очень быстро
45 тысяч строк - 8 секунд |
|||
76
m-serg74
30.08.12
✎
22:01
|
Номенклатура В ИЕРАРХИИ
вот это наверное просто В без "ИЕРАРХИИ" и кстати выбирает первые n поступлений а не последние |
|||
77
m-serg74
30.08.12
✎
22:03
|
ПО Таб1.Период >= Таб11.Период
на ПО Таб1.Период <= Таб11.Период поменять вроде, проверь |
|||
78
alex-pro
30.08.12
✎
22:10
|
(77) да, точняк) как раз только что нашел и поправил. Херово соображаю уже, не сразу понял как сортировку поменять
|
|||
79
alex-pro
30.08.12
✎
22:10
|
(76) не, они любят выбирать каталоги....
|
|||
80
m-serg74
30.08.12
✎
22:11
|
ну тогда да
|
|||
81
m-serg74
30.08.12
✎
22:13
|
45 тысяч строк - 8 секунд
еще в первом пакете период ограничь от текущей даты на месяц или пару назад чтоб не весь регистр лопатил |
|||
82
alex-pro
30.08.12
✎
22:14
|
(81) не прокатит - некоторые позиции в 10 году последний раз закупались. Пусть лопатит.
|
|||
83
ProProg
30.08.12
✎
22:14
|
Могу дать ссылку у меня есть платная ращработка готовая) как говорится лесапед уже давно изобретен
|
|||
84
m-serg74
30.08.12
✎
22:14
|
а говорил раз в неделю приход бывает) тогда конечно все придется брать
|
|||
85
m-serg74
30.08.12
✎
22:15
|
(84) к (82)
|
|||
86
alex-pro
30.08.12
✎
22:15
|
(84) как правило, да, даже чаще. Но состав прихода всегда разный.
|
|||
87
ProProg
30.08.12
✎
22:16
|
(82) А ты своих юзеров спросил прокатит или не прокатит? или сам за них доразмысливаешь. Я тебе сто процентво могу сказать когда они увидят цифры и поймут что придумали хрень - сами скажут что епт надо все по другому. и будешь ты раз пять придумывать разные алгоритмы, когда на самом деле нало все сделать просто - отбор по периоду закупок.
|
|||
88
milan
30.08.12
✎
22:16
|
я бы замутил на скд, глядишь - оно к нормальному sql запросу преобразует
|
|||
89
alex-pro
30.08.12
✎
22:17
|
(86) поэтому гарантий никто не даст, а отчет всегда должен правильно работать. Вне зависимости, когда закупили
|
|||
90
ProProg
30.08.12
✎
22:17
|
Просто ситуация до боли знакома) когла нафинают с ценообразованием что то хитрить и придумывать - это надолго и всеръез. У меня контора все три года пыталась что то придумать новое.
|
|||
91
alex-pro
30.08.12
✎
22:18
|
(88) Вообще это обработка. Чтобы получить "нормативную" цену и по ней выбрать "примерно верную (+-15%)" из прайсов поставщиков. Дальше делается заказ.
|
|||
92
alex-pro
30.08.12
✎
22:19
|
(88) Да ладно, не умрут. Скорость выполнения приемлемая.
|
|||
93
ProProg
30.08.12
✎
22:19
|
ПОтом езе вылезет хрень что окажется у тебя туда попали цены оприходования, возвратов от покупателей (и нормальные и те которые какого то хрена сделали от поставщика), еще какая нить хрень - типа попали поступления всяких разовых клиентов. и тд и тп
И затянется это все на долгие месяцы) |
|||
94
alex-pro
30.08.12
✎
22:20
|
(93) Беру только ПТиУ. Разовые поставки - потом фильтр сделаю. А по уму тут надо СКО мутить.
|
|||
95
alex-pro
30.08.12
✎
22:20
|
Чтобы отбросить "нелепые" цены
|
|||
96
ProProg
30.08.12
✎
22:22
|
ничего лучше чем ограничение по периоду и получение связки - минимум, средняя, максимум не будет.
|
|||
97
ProProg
30.08.12
✎
22:22
|
например - последний месяц, последние три месяца, с начала года и тп
|
|||
98
alex-pro
30.08.12
✎
22:27
|
(97)
Согласен. В доп ТЗ допрут))) |
|||
99
alex-pro
30.08.12
✎
22:28
|
(98) С другой стороны - там такой оборот, что все равно не будут ничего анализировать в момент заказа
|
|||
100
alex-pro
30.08.12
✎
22:58
|
Круто получилось. Прицепил это все дело к другому запросу, связал по номенклатуре. Правда, в запросе 825 строчек получилось, но бывают и побольше))))
|
|||
101
КошерныйТролль
30.08.12
✎
22:59
|
(0) сортировать по дате последнего поступления и применить в запросе Первые 3
|
|||
102
КошерныйТролль
30.08.12
✎
23:01
|
+(101) если я не прав, закритикуйте
|
|||
103
alex-pro
30.08.12
✎
23:04
|
(101) для списка позиций не прокатит. Только для одной
|
|||
104
alex-pro
30.08.12
✎
23:05
|
Решение в (69). Только знак на <= поменять надо
|
|||
105
Птица
30.08.12
✎
23:26
|
825! не, что-то не попадались побольше. Думаю, даже в ЗУПе меньше строчек в запросах
|
|||
106
m-serg74
30.08.12
✎
23:44
|
(105) ??? промахнулись?
|
|||
107
m-serg74
30.08.12
✎
23:44
|
сорри(((
|
|||
108
alex-pro
31.08.12
✎
14:14
|
(105) Ну, это вряд ли. Просто я предпочитаю все нужные данные по максимуму вытягивать запросом. Ненавижу циклы и "шерстить", как это это называют некоторые гомнокодеры))))))
|
|||
109
Светлый Гений
31.08.12
✎
14:44
|
Отмечусь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |