|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
AnisaL
16.04.19
✎
12:27
|
Добрый день! Есть запрос, в нем выбирается цена товара с типом цен "Учетная". Если есть несколько записей с таким типом цен (например, от 01.01.16 цена 10, а потом 01.01.19 стала 5), то запрос выдает 0 цену. А если только один раз цену устанавливали, то он ее выдает. Как поправить запрос, чтобы выводил последнюю цену?
|
|||
1
AnisaL
16.04.19
✎
12:27
|
(0) ВЫБРАТЬ
ВложенныйЗапрос.Номенклатура КАК Номенклатура, ВложенныйЗапрос.Ответственный КАК Ответственный, ВложенныйЗапрос.Организация КАК Организация, ВложенныйЗапрос.ДатаДок КАК ДатаДок, ВложенныйЗапрос.СуммаОборот КАК СуммаОборот, ВложенныйЗапрос.СебестоимостьОборот КАК СебестоимостьОборот, ВложенныйЗапрос.Количество КАК Количество, ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Цена, ВложенныйЗапрос.Количество * ЦеныНоменклатуры.Цена КАК Сумма ИЗ (ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.Характеристика КАК Характеристика, ПродажиОбороты.Ответственный КАК Ответственный, МАКСИМУМ(ПродажиОбороты.Регистратор.Дата) КАК ДатаДок, МАКСИМУМ(ПродажиОбороты.Организация) КАК Организация, СУММА(ПродажиОбороты.СуммаОборот) КАК СуммаОборот, СУММА(ПродажиОбороты.СебестоимостьОборот) КАК СебестоимостьОборот, СУММА(ПродажиОбороты.КоличествоОборот) КАК Количество, МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Период) КАК Период ИЗ РегистрНакопления.Продажи.Обороты( &НачПериода, &КонПериода, Регистратор, Ответственный <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) И Ответственный <> &Ответственный И ВЫБОР КОГДА &Сотрудник <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) ТОГДА Ответственный В ИЕРАРХИИ (&Сотрудник) ИНАЧЕ ИСТИНА КОНЕЦ) КАК ПродажиОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних ПО ПродажиОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура И ПродажиОбороты.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика И (ЦеныНоменклатурыСрезПоследних.ВидЦен = &ТипЦен) И ПродажиОбороты.Период >= ЦеныНоменклатурыСрезПоследних.Период СГРУППИРОВАТЬ ПО ПродажиОбороты.Номенклатура, ПродажиОбороты.Характеристика, ПродажиОбороты.Ответственный) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ВложенныйЗапрос.Период = ЦеныНоменклатуры.Период И ВложенныйЗапрос.Номенклатура = ЦеныНоменклатуры.Номенклатура И ВложенныйЗапрос.Характеристика = ЦеныНоменклатуры.Характеристика И (ЦеныНоменклатуры.ВидЦен = &ТипЦен) |
|||
2
mikecool
16.04.19
✎
12:28
|
а ценыноменклатуры отсутствуют?
|
|||
3
1Сергей
16.04.19
✎
12:29
|
(1) запихнуть отбор по типу цены в параметры виртуальной таблицы
|
|||
4
AnisaL
16.04.19
✎
12:30
|
(2) есть ценыноменклатуры, причем два раза менялась цена, а выдает 0
|
|||
5
1Сергей
16.04.19
✎
12:36
|
(4) вот этот момент тоже не понятен. Всё можно достать простым запросом с одним левым соединением. У цен номенклатуры какие измерения?
|
|||
6
AnisaL
16.04.19
✎
12:38
|
(5) вид цен, характеристика, цена
|
|||
7
xXeNoNx
16.04.19
✎
12:42
|
Следующий вопрос от ТС будет: Как оптимизировать запрос?
Через 2 недели буду в Магнитке, могу проконсультировать |
|||
8
Ник080808
16.04.19
✎
12:43
|
(0) последнюю цену на конечную дату отчета или дату продажи?
|
|||
9
xXeNoNx
16.04.19
✎
12:44
|
(6) а можно вопрос: Кто написал этот запрос?
|
|||
10
AnisaL
16.04.19
✎
12:45
|
(5) вот упростила запрос, чтобы увидеть период, какой выбирается, получается так: ставлю дату начала 01.01.18 по 31.01.18, и если учетная цена установлена 01.01.18, то он выводит этот период, а когда устанавливаю цену с 01.01.19, то период выводит NULL
ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.Характеристика КАК Характеристика, ПродажиОбороты.Ответственный КАК Ответственный, МАКСИМУМ(ПродажиОбороты.Регистратор.Дата) КАК ДатаДок, МАКСИМУМ(ПродажиОбороты.Организация) КАК Организация, СУММА(ПродажиОбороты.СуммаОборот) КАК СуммаОборот, СУММА(ПродажиОбороты.СебестоимостьОборот) КАК СебестоимостьОборот, СУММА(ПродажиОбороты.КоличествоОборот) КАК Количество, МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Период) КАК Период ИЗ РегистрНакопления.Продажи.Обороты( &НачПериода, &КонПериода, Регистратор, Ответственный <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) И Ответственный <> &Ответственный И ВЫБОР КОГДА &Сотрудник <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) ТОГДА Ответственный В ИЕРАРХИИ (&Сотрудник) ИНАЧЕ ИСТИНА КОНЕЦ) КАК ПродажиОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних ПО ПродажиОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура И ПродажиОбороты.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика И (ЦеныНоменклатурыСрезПоследних.ВидЦен = &ТипЦен) И ПродажиОбороты.Период >= ЦеныНоменклатурыСрезПоследних.Период СГРУППИРОВАТЬ ПО ПродажиОбороты.Номенклатура, ПродажиОбороты.Характеристика, ПродажиОбороты.Ответственный |
|||
11
AnisaL
16.04.19
✎
12:46
|
(8) последнюю цену на дату продажи
|
|||
12
AnisaL
16.04.19
✎
12:47
|
(9) в интернете нашла и подкорректировала
|
|||
13
catena
16.04.19
✎
12:47
|
(5)Ну, за основу явно брался запрос по срезу на каждый день.
Вот это условие в связке со срезом последних может сильно подставить: И ПродажиОбороты.Период >= ЦеныНоменклатурыСрезПоследних.Период |
|||
14
catena
16.04.19
✎
12:48
|
(12)Еще раз пересмотрите исходный запрос. Во вложенном запросе срез последних там сто процентов не используется.
|
|||
15
dezss
16.04.19
✎
12:48
|
(10) Ну так правильно выдает.
И еще читать (3) |
|||
16
1Сергей
16.04.19
✎
12:49
|
(13) Ты права.
Тут срезпоследних вообще не подходит |
|||
17
1Сергей
16.04.19
✎
12:49
|
(5) Сторно
|
|||
18
Ник080808
16.04.19
✎
12:49
|
(10) берем
ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.Характеристика КАК Характеристика, ПродажиОбороты.Ответственный КАК Ответственный, ПродажиОбороты.Период КАК ДатаДок, МАКСИМУМ(ПродажиОбороты.Организация) КАК Организация, СУММА(ПродажиОбороты.СуммаОборот) КАК СуммаОборот, СУММА(ПродажиОбороты.СебестоимостьОборот) КАК СебестоимостьОборот, СУММА(ПродажиОбороты.КоличествоОборот) КАК Количество ИЗ РегистрНакопления.Продажи.Обороты( &НачПериода, &КонПериода, ДЕнь, Ответственный <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) И Ответственный <> &Ответственный И ВЫБОР КОГДА &Сотрудник <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) ТОГДА Ответственный В ИЕРАРХИИ (&Сотрудник) ИНАЧЕ ИСТИНА КОНЕЦ) КАК ПродажиОбороты пихаем в вт |
|||
19
Ник080808
16.04.19
✎
12:51
|
(18) + далее выбираем из временной таблицы Номенклатура,Характеристика период и соединяем с таблицей цены номенклатуры по условию на период . получаем максимальную дату цены и пихаем во вторую вт.
Далее соединяем первую вт с второй вт и с регистром цены и получаем профит |
|||
20
Ник080808
16.04.19
✎
12:52
|
(16) она всегда права)
|
|||
21
1Сергей
16.04.19
✎
12:53
|
(20) Нет. Бывали случаи. Правда, давно очень :)
|
|||
22
Ник080808
16.04.19
✎
12:54
|
(21) лет 15 назад, когда она не знала 1с?)
|
|||
23
AnisaL
16.04.19
✎
12:55
|
Нашла) нужно было в срез последних добавить параметр КонПериода
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонПериода, ) |
|||
24
catena
16.04.19
✎
12:55
|
(22)Ну уж зачем уж так... Раскрывать-то))))
|
|||
25
Ник080808
16.04.19
✎
12:56
|
(23) это не цена на дату продажи, а цена на конец отчета
|
|||
26
Ник080808
16.04.19
✎
12:57
|
(24) простите, моя Госпожа. Ушел делать сеппуку (
|
|||
27
AnisaL
16.04.19
✎
12:59
|
(25) тогда как напишите?
|
|||
28
Ник080808
16.04.19
✎
13:04
|
(27) написал в (18)-(19)
|
|||
29
Ник080808
16.04.19
✎
14:59
|
(27) получилось?
|
|||
30
D_E_S_131
16.04.19
✎
15:37
|
Вообще в (0) не написано, что нужны цены на дату продажи. Нужны или нет в итоге?
|
|||
31
Ник080808
16.04.19
✎
15:39
|
(30) нужны (11)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |