|
УТ11 Помогите с запросом, еще раз, пожалуйста | ☑ | ||
---|---|---|---|---|
0
breezee
27.05.15
✎
07:57
|
Извините что создаю 3 тему за 2 дня, просто вообще не могу разобраться. Мне помогли с запросом. В итоге у меня должны получится цены номенклатуры за прошлый период относительно даты конца и за текущий, этот запрос получает будущие данные, не могу понять где ошибка + не могу понять где ставить ограничение на начальный период (пользователь выбирает переоценки с какой-то по какую-то дату)
ВЫБРАТЬ ЦеныНоменклатуры.ВидЦены, ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.Характеристика, МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период, ЦеныНоменклатурыСрезПоследних.Цена ПОМЕСТИТЬ втПредпослПериод ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонец, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних ПО ЦеныНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура И ЦеныНоменклатуры.ВидЦены = ЦеныНоменклатурыСрезПоследних.ВидЦены И ЦеныНоменклатуры.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика И ЦеныНоменклатуры.Период < ЦеныНоменклатурыСрезПоследних.Период ГДЕ ЦеныНоменклатуры.ВидЦены = &ВидЦены СГРУППИРОВАТЬ ПО ЦеныНоменклатуры.ВидЦены, ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.Характеристика, ЦеныНоменклатурыСрезПоследних.Цена ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЦеныНоменклатуры.ВидЦены, ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.Характеристика, ЦеныНоменклатуры.Период, ЦеныНоменклатуры.Цена, ЦеныНоменклатуры.Регистратор, втПредпослПериод.Цена КАК ЦенаСтарая ИЗ втПредпослПериод КАК втПредпослПериод ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО втПредпослПериод.ВидЦены = ЦеныНоменклатуры.ВидЦены И втПредпослПериод.Номенклатура = ЦеныНоменклатуры.Номенклатура И втПредпослПериод.Характеристика = ЦеныНоменклатуры.Характеристика И втПредпослПериод.Период = ЦеныНоменклатуры.Период ГДЕ ЦеныНоменклатуры.ВидЦены = &ВидЦены |
|||
1
DCKiller
27.05.15
✎
08:02
|
Что значит " за прошлый период относительно даты конца "?
|
|||
2
breezee
27.05.15
✎
08:05
|
(1) Простите, криво написал. Предпоследнюю цену товара - относительно последнего документа "Установка цен номенклатуры", в котором для данной номенклатуры устанавливались цены и оттуда брать старую цену
|
|||
3
breezee
27.05.15
✎
08:19
|
Вот чёрт, я только что нашел в гугле то что пытался сделать сам. Думаю вывод этой истории - я идиот.
|
|||
4
marty0701
27.05.15
✎
08:54
|
(3)Аплодирую стоя, самокритика очень хорошее качество.
|
|||
5
breezee
27.05.15
✎
09:02
|
Нет, ни черта не работает. В тестовой базе задаю цену на вентилятор следующие цены
21.05.2015 2115р 23.05.2015 2315р 25.05.2015 2515р. делаю выборку на 21 число выбирается цена 2115 - старая 2515 для всех выбирается текущее значение нормально, а предыдущее 2515. Что за фигня? Все брал из гугла, вот запрос ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Цена, МАКСИМУМ(ЦеныНоменклатуры.Период) КАК ПредыдущаяДата ПОМЕСТИТЬ втЦеныНоменклатуры ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаАктуальнойЦены, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЦеныНоменклатуры.Номенклатура И ЦеныНоменклатурыСрезПоследних.Период <> ЦеныНоменклатуры.Период И (ЦеныНоменклатуры.ВидЦены = &ВидЦены) СГРУППИРОВАТЬ ПО ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Цена ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втЦеныНоменклатуры.Номенклатура, втЦеныНоменклатуры.Цена, ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК ПредыдущаяЦена, ЦеныНоменклатуры.Регистратор ИЗ втЦеныНоменклатуры КАК втЦеныНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО втЦеныНоменклатуры.Номенклатура = ЦеныНоменклатуры.Номенклатура И втЦеныНоменклатуры.ПредыдущаяДата = ЦеныНоменклатуры.Период И (ЦеныНоменклатуры.ВидЦены = &ВидЦены) ГДЕ ЦеныНоменклатуры.Номенклатура = &Номенклатура |
|||
6
breezee
27.05.15
✎
09:07
|
Все, там в запросе было <>,а не < в сусловиях связи, если у кого есть акк на инфорстарте - сообщите пожалуйста автору об описке http://catalog.mista.ru/public/185506/
|
|||
7
Desna
27.05.15
✎
09:21
|
этот запрос из серии множества "срез последних на каждую дату"
|
|||
8
СвинТуз
27.05.15
✎
09:30
|
(6)
Если не через срез последних то решение подобной задачи есть в книге там где общие механизмы платформы описываются (справочники, регистры накопления и т.п.) |
|||
9
breezee
27.05.15
✎
09:32
|
И последний вопрос, я так понял, когда ставлю ЕСТЬNULL, - поле становится функцией и для него формат теряется, можно ли как-то в СКД вывести для него 2 знака после заятой?
|
|||
10
breezee
27.05.15
✎
09:36
|
Нашел формат. Надеюсь больше проблем не будет. Всем спасибо.
|
|||
11
Cyberhawk
27.05.15
✎
09:39
|
(6) у автора все правильно, т.к. у него таблица среза последних не ограничивается параметром-датой, в этом случае всегда берется последняя запись таблицы, и поэтому можно использовать "<>" (т.к. записей с большей датой, чем самая последняя, в регистре нет)
|
|||
12
breezee
27.05.15
✎
09:42
|
(11) Ок, просто было бы логичнее все равно поставить знак меньше, просто следую обычной логике, мне кажется.
Как можно добавить нумератор в выборку? Т.е. у меня для каждой строки стоит цифра |
|||
13
breezee
27.05.15
✎
10:02
|
Т.е. У меня есть несколько документов - регистраторов по которому идет группировка для этих документов есть номенклатура - при построении отчете - выбираю системные поля - нумератор в группировке и все нормально для не группируемых полей, можно как-нибудь нумеровать поля по которым идет группировка?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |