|
ФИФО и ЛИФО в одном запросе | ☑ | ||
---|---|---|---|---|
0
selestos
03.10.13
✎
12:05
|
ВЫБРАТЬ
РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура, РасходнаяНакладнаяСписокНоменклатуры.Ссылка.Склад КАК Склад, СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество ПОМЕСТИТЬ ТабДок ИЗ Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры ГДЕ РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка И РасходнаяНакладнаяСписокНоменклатуры.Номенклатура.ВидНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга) СГРУППИРОВАТЬ ПО РасходнаяНакладнаяСписокНоменклатуры.Номенклатура, РасходнаяНакладнаяСписокНоменклатуры.Ссылка.Склад ИНДЕКСИРОВАТЬ ПО Номенклатура, Склад ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТабДок.Номенклатура КАК Номенклатура, ТабДок.Количество КАК Количество, ОстаткиНоменклатурыОстатки.Партия, ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) КАК СуммаОстаток, ЕСТЬNULL(БронированиеТоваровОстатки.КоличествоОстаток, 0) КАК КоличествоЗабронированного, ТабДок.Склад КАК Склад, ОстаткиНоменклатурыОстатки.Партия.Дата КАК ПартияДата ИЗ ТабДок КАК ТабДок ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки( &Момент, (Номенклатура, Склад) В (ВЫБРАТЬ ТабДок.Номенклатура, ТабДок.Склад ИЗ ТабДок КАК ТабДок)) КАК ОстаткиНоменклатурыОстатки ПО ТабДок.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.БронированиеТоваров.Остатки( , (Номенклатура, Склад) В (ВЫБРАТЬ ТабДок.Номенклатура, ТабДок.Склад ИЗ ТабДок КАК ТабДок)) КАК БронированиеТоваровОстатки ПО ТабДок.Номенклатура = БронированиеТоваровОстатки.Номенклатура УПОРЯДОЧИТЬ ПО ПартияДата УБЫВ ИТОГИ МАКСИМУМ(Количество), СУММА(КоличествоОстаток), СУММА(СуммаОстаток), СУММА(КоличествоЗабронированного) ПО Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТабДок.Номенклатура КАК Номенклатура, ТабДок.Количество КАК Количество, ОстаткиНоменклатурыОстатки.Партия, ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) КАК СуммаОстаток, ЕСТЬNULL(БронированиеТоваровОстатки.КоличествоОстаток, 0) КАК КоличествоЗабронированного, ТабДок.Склад КАК Склад, ОстаткиНоменклатурыОстатки.Партия.Дата КАК ПартияДата ИЗ ТабДок КАК ТабДок ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки( &Момент, (Номенклатура, Склад) В (ВЫБРАТЬ ТабДок.Номенклатура, ТабДок.Склад ИЗ ТабДок КАК ТабДок)) КАК ОстаткиНоменклатурыОстатки ПО ТабДок.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.БронированиеТоваров.Остатки( , (Номенклатура, Склад) В (ВЫБРАТЬ ТабДок.Номенклатура, ТабДок.Склад ИЗ ТабДок КАК ТабДок)) КАК БронированиеТоваровОстатки ПО ТабДок.Номенклатура = БронированиеТоваровОстатки.Номенклатура УПОРЯДОЧИТЬ ПО ПартияДата ИТОГИ МАКСИМУМ(Количество), СУММА(КоличествоОстаток), СУММА(СуммаОстаток), СУММА(КоличествоЗабронированного) ПО Номенклатура тут два пакета запроса один сортирует номенклатуру по убыванию а другой по возрастанию. Как организовать выполнения одного из этих двоих запросов в зависимости от значения В регистреСведениях ФИФО/ЛИФО?? Помогите кто знает, очень надо.... |
|||
1
goleaff2006
03.10.13
✎
12:06
|
а че итоги в пакетном запросе использовать можно?
|
|||
2
zippygrill
03.10.13
✎
12:07
|
через МВТ.
|
|||
3
selestos
03.10.13
✎
12:09
|
Опиши пожалуйста, я новичок... (2)
|
|||
4
Simod
03.10.13
✎
12:15
|
(0) Т.е. ты хочешь, чтобы запрос был один, но сортировка в зависимости от значения в рег.сведений была разная?
|
|||
5
Sabbath
03.10.13
✎
12:16
|
(0) ФИФО или ЛИФО в какой момент? (я просто с подобным не работаю, не в теме)
Если еще до выполнения запроса ясно, то делаешь один запрос, и собираешь его конкатенацией с переменной, в которой определяется убвание или возрастание, т.е. текст = "ВЫбрать ... ... УПОРЯДОЧИТЬ ПО ПартияДата " + ПорядокСортировки + " |.. " ПорядокСортировки - это переменная, которую определяешь до текста запроса, содержит "УБЫВ" или "" |
|||
6
mikecool
03.10.13
✎
12:17
|
а в этой части выбор не прокатит?
типа упорядочить по Наименование выбор когда и т.д. |
|||
7
selestos
03.10.13
✎
12:29
|
нет, пробывал (6)
|
|||
8
selestos
03.10.13
✎
12:33
|
думаю это задача по силам немноги
|
|||
9
Sabbath
03.10.13
✎
12:35
|
(8) только просветленным)
Так подскажи, когда понятно, нужно тебе ФИФО или ЛИФО? До исполнения запроса это ясно или зависит от результата? |
|||
10
Wobland
03.10.13
✎
12:35
|
(8) истинно так. даже 1Сники не все смогут
|
|||
11
Filippov
03.10.13
✎
12:41
|
(8)Способ (5) широко используется в типовых. Как вариант можно (но осторожно!) использовать замену в тексте запроса строки с УБЫВ на строку без него
|
|||
12
selestos
03.10.13
✎
12:43
|
я так делал, задача состоит том чтоб в сам запрос передавать только параметр(Дату) и больше ничего
|
|||
13
Wobland
03.10.13
✎
12:44
|
(12) кто тебе её так поставил?
|
|||
14
alexiv79
03.10.13
✎
12:44
|
(11) в задачах из 1 раздела на спеца по платформе 8.2 так делают
|
|||
15
alexiv79
03.10.13
✎
12:45
|
(12) Ну хз-это потаенное знание, утраченное уже
|
|||
16
Wobland
03.10.13
✎
12:46
|
(15) как бы для сортировки в нужном направлении даже дата не нужна..
|
|||
17
alexiv79
03.10.13
✎
12:47
|
(16) Я не вижу других путей, кроме как в (5) или (11). ЧТо за задача такая, какой практический смысл так ее ставить я даже представить не могу
|
|||
18
Wobland
03.10.13
✎
12:54
|
(17) можно спрашивать ту или иную таблицу у МВТ (вроде), но это изврат. а для экзамена так ваще лишнее
|
|||
19
azernot
03.10.13
✎
13:13
|
В случае ФИФО в поле ПартияДата - дата партии, в случае ЛИФО - Разность дат 31.12.3999 и даты партии.
В запросах, в виртуальных таблицах указывается условие типа "МетодСписания = ЛИФО" или "МетодСписания = ЛИФО" (т.е. результатом одного из запросов всегда будет пусто) Результирующий запрос содержит объединение данных первого и второго с сортировкой по ПартияДата по возрастанию. |
|||
20
Fragster
модератор
03.10.13
✎
13:15
|
е-мое... это не в первобите собеседование? очень уж похоже на то, что я им когда-то предоставил (именно в одном запросе и именно фифо через итоги).
|
|||
21
fisher
03.10.13
✎
13:21
|
Ну, в качестве изврата можно что-то такое попробовать
УПОРЯДОЧИТЬ ПО ВЫБОР КОГДА ФИФО ТОГДА ПартияДата ИНАЧЕ РАЗНИЦАДАТ(ПартияДата, ТекущаяДата, СЕКУНДА) КОНЕЦ |
|||
22
fisher
03.10.13
✎
13:22
|
Лучше, конечно, не текущую дату.
Это чтобы идею показать. |
|||
23
fisher
03.10.13
✎
13:24
|
Тьфу, РАЗНОСТЬДАТ
|
|||
24
fisher
03.10.13
✎
13:27
|
Но в "боевых" задачах я бы так не делал. Зачем делать запрос более ресурсоемким, если этого можно избежать?
|
|||
25
fisher
03.10.13
✎
13:33
|
Это что! Намедни мне такой клевый тестовый вопрос принесли! Мммм!
Какой будет результат выражения "010"++"010"+1? а "010"-+"010"+1? |
|||
26
Wobland
03.10.13
✎
13:35
|
(25) это по-каковски?
|
|||
27
fisher
03.10.13
✎
13:35
|
По-одинэсовски :)
|
|||
28
el7cartel
03.10.13
✎
13:36
|
(25) ориджинал ба...
|
|||
29
Wobland
03.10.13
✎
13:37
|
(27) плюс-плюс? впервые вижу.
дай-ка подумаю... "010" плюс 10 = "01010" и ещё единичку в конце = "010101". угадал? |
|||
30
Wobland
03.10.13
✎
13:37
|
(29) "плюс 10" читать как "плюс +10"
|
|||
31
Wobland
03.10.13
✎
13:38
|
(29) ну и "01" соответственно
|
|||
32
Wobland
03.10.13
✎
13:40
|
(31) авотфих. "010" плюс +10 даст строку, а "010" минус +10 уже число.
изврат какой эта мягкая типизация. то к первому операнду, то ко второму... уже проверил в табле |
|||
33
fisher
03.10.13
✎
13:40
|
Практически угадал. 1 - во втором случае.
Респект. Ну а я сообразил в чем дело, только почесав репу на результаты. Нетипичное выражение сбило с толку :) |
|||
34
fisher
03.10.13
✎
13:42
|
То, что первый операнд тоже может быть тоже неявно типизирован - я вообще как-то упустил. Ибо никогда в реальной практике такое не юзал.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |