|
Запрос: вывод цены на заданную дату | ☑ | ||
---|---|---|---|---|
0
Олеся999
10.10.17
✎
08:02
|
Подскажите пожалуйста какое условие нужно задать в запросе, что бы не выводились обведенные на скрине записи?
Скрин : http://img.donnet.ru/i/2017/10/10/5a492d.png Запрос: ВЫБPATЬ Дoкумeнт1TaбличнaяЧасть1.Сcылка КАК Ccылка, Дoкумeнт1TaбличнaяЧасть1.Номенклатура КАК Номенклатура, СУММА(Дoкумeнт1TaбличнaяЧасть1.количество) КАК количество ПOМЕСТИТЬ ВТ ИЗ Дoкумент.Документ1.TaбличнаяЧaсть1 КАК Дoкумeнт1TaбличнaяЧасть1 СГРУППИРОВАТЬ ПО Дoкумeнт1TaбличнaяЧасть1.Номенклатура, Дoкумeнт1TaбличнaяЧасть1.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Ссылка КАК Ссылка, ВТ.Номенклатура КАК Номeнклатура, ВТ.количество КАК кoличество, РегистрСведений1.Цена КАК Цена ИЗ ВТ КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ PегистрСведений.РегистрСведений1 КАК PeгистрСвeдений1 ПО ВТ.Номенклатура.Ссылка = РегистрСведений1.Номенклатура.Ссылка ГДЕ PeгистрСвeдений1.Период <= ВТ.Ссылка.Дата УПOРЯДОЧИТЬ ПО PeгистрСвeдений1.Период УБЫВ, Ссылка |
|||
1
Fram
10.10.17
✎
08:06
|
а почему бы не написать
ПО ВТ.Номенклатура.Ссылка.Ссылка.Ссылка.Ссылка = РегистрСведений1.Номенклатура.Ссылка.Ссылка.Ссылка.Ссылка |
|||
2
Fram
10.10.17
✎
08:07
|
(0) а по поводу вопроса погугли виртуальные таблицы срезов
|
|||
3
catena
10.10.17
✎
08:08
|
Не, гуглить надо срез последних на каждую дату.
|
|||
4
Fram
10.10.17
✎
08:09
|
(3) зачем на каждую?
|
|||
5
Олеся999
10.10.17
✎
08:11
|
(1) ну да что то лишканула :))
|
|||
6
мистер игрек
10.10.17
✎
08:32
|
(5) EУ меня есть отчет на СКД. Вдруг поможет?
|
|||
7
catena
10.10.17
✎
08:35
|
(4)Потому что, судя по запросу, ей надо на дату каждого документа
|
|||
8
Олеся999
10.10.17
✎
08:35
|
Попробовала так :
ВЫБРАТЬ Дoкумeнт1TaбличнaяЧасть1.Ссылка КАК Ссылка, Дoкумeнт1TaбличнaяЧасть1.Номенклатура КАК Номенклатура, СУММА(Дoкумeнт1TaбличнaяЧасть1.количество) КАК количество ПOМЕСТИТЬ ВТ ИЗ Документ.Документ1.ТабличнаяЧасть1 КАК Документ1ТабличнаяЧасть1 СГРУППИРОВАТЬ ПО Дoкумeнт1TaбличнaяЧасть1.Номенклатура, Дoкумeнт1TaбличнaяЧасть1.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Ссылка КАК Ссылка, ВТ.Номенклатура КАК Номенклатура, ВТ.количество КАК количество, РегистрСведений1.Цена КАК Цена ИЗ ВТ КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ PeгистрСведений.PeгистрСведений1 КАК PeгистрСведений1 ПО ВТ.Номенклатура.Ссылка = PeгистрСведений1.Номенклатура.Ссылка И ВТ.Ссылка.Дата <= PeгистрСведений1.Период УПОРЯДОЧИТЬ ПО РегистрСведений1.Период УБЫВ, Ссылка Скрин: http://img.donnet.ru/i/2017/10/10/31a5486.png Но нет цены, так полагаю что что то с группировками не так |
|||
9
Олеся999
10.10.17
✎
08:36
|
(7) Да верно цену надо на дату каждого документа
|
|||
10
catena
10.10.17
✎
08:38
|
(9)Срез последних на каждую дату.
1. Делаешь таблицу номенклатур и дат 2. Под эти даты находишь МАКСИМУМ период в регистре 3. к найденому периоду регистра находишь значение в регистре. |
|||
11
Mankubus
10.10.17
✎
08:41
|
В СКД можно наборами данных решить
http://catalog.mista.ru/public/77568/ |
|||
12
Олеся999
10.10.17
✎
08:51
|
(10) Так вот ?))
ВЫБРАТЬ Дoкумeнт1TaбличнaяЧасть1.Ссылка КАК Ссылка, Дoкумeнт1TaбличнaяЧасть1.Номенклатура КАК Номенклатура, СУММА(Дoкумeнт1TaбличнaяЧасть1.количество) КАК количество ПОМЕСТИТЬ ВТ ИЗ Документ.Документ1.ТабличнаяЧасть1 КАК Дoкумeнт1TaбличнaяЧасть1 СГРУППИРОВАТЬ ПО Документ1ТабличнаяЧасть1.Номенклатура, Документ1ТабличнаяЧасть1.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Ссылка КАК Ссылка, ВТ.Номенклатура КАК Номенклатура, ВТ.количество КАК количество, РегистрСведений1.Цена КАК Цена, МАКСИМУМ(РегистрСведений1.Период) КАК Период ИЗ ВТ КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСведений1 КАК РегистрСведений1 ПО ВТ.Номенклатура.Ссылка = РегистрСведений1.Номенклатура.Ссылка И ВТ.Ссылка.Дата <= РегистрСведений1.Период СГРУППИРОВАТЬ ПО ВТ.Ссылка, ВТ.Номенклатура, ВТ.количество, РегистрСведений1.Цена УПОРЯДОЧИТЬ ПО Ссылка |
|||
13
Fram
10.10.17
✎
08:53
|
(12) нет, так ты получишь максимальную дату для каждой конкретной цены (не типа цен, а именно цены)
|
|||
14
catena
10.10.17
✎
09:02
|
(12)Сначала нужно найти максимум период в разрезе номенклатура/дата. Я ж не зря этот пункт отдельно написала.
|
|||
15
Олеся999
10.10.17
✎
09:07
|
(14) Добавила вот
ВЫБРАТЬ Документ1ТабличнаяЧасть1.Ссылка КАК Ссылка, Документ1ТабличнаяЧасть1.Номенклатура КАК Номенклатура, СУММА(Документ1ТабличнаяЧасть1.количество) КАК количество, МАКСИМУМ(Документ1ТабличнаяЧасть1.Ссылка.Дата) КАК Дата ПОМЕСТИТЬ ВТ ИЗ Документ.Документ1.ТабличнаяЧасть1 КАК Документ1ТабличнаяЧасть1 СГРУППИРОВАТЬ ПО Документ1ТабличнаяЧасть1.Ссылка, Документ1ТабличнаяЧасть1.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Ссылка КАК Ссылка, ВТ.Номенклатура КАК Номенклатура, ВТ.количество КАК количество, РегистрСведений1.Цена КАК Цена, МАКСИМУМ(РегистрСведений1.Период) КАК Период ИЗ ВТ КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСведений1 КАК РегистрСведений1 ПО ВТ.Номенклатура.Ссылка = РегистрСведений1.Номенклатура.Ссылка И ВТ.Ссылка.Дата <= РегистрСведений1.Период СГРУППИРОВАТЬ ПО ВТ.Ссылка, ВТ.Номенклатура, ВТ.количество, РегистрСведений1.Цена УПОРЯДОЧИТЬ ПО Ссылка |
|||
16
catena
10.10.17
✎
09:11
|
(15)И снова мимо. Не максимум дат документов, а максимум периодов регистра тебе нужен.
|
|||
17
Олеся999
10.10.17
✎
09:14
|
(16) Так вот же максимум период регистра МАКСИМУМ(РегистрСведений1.Период) КАК Период
|
|||
18
catena
10.10.17
✎
09:14
|
Выбрать Номенклатура, ДатаДок поместить ВтНоменклатураСДатойДляСреза;
Выбрать Номенклатура, ДатаДок, Максимум(Период) поместить ВтНоменклатураСПЕриодомСреда из ВтНоменклатураСДатойДляСреза левое соединение регистр по номенклатура=номенклатура и ДатаДок>=Период; Выбрать Номенклатура, Цена из ВтНоменклатураСПЕриодомСреда левое соединение регистр по номенклатура=номенклатура и ПериодМакс=Период |
|||
19
catena
10.10.17
✎
09:14
|
(17)В РАЗРЕЗЕ НОМЕНКЛАТУРА/ДАТА, а у тебя там еще и цена болтается.
|
|||
20
Олеся999
10.10.17
✎
09:28
|
(18)
ВЫБРАТЬ Документ1ТабличнаяЧасть1.Ссылка КАК Ссылка, Документ1ТабличнаяЧасть1.Номенклатура КАК Номенклатура, СУММА(Документ1ТабличнаяЧасть1.количество) КАК количество, МАКСИМУМ(Документ1ТабличнаяЧасть1.Ссылка.Дата) КАК Дата ПОМЕСТИТЬ ВТ ИЗ Документ.Документ1.ТабличнаяЧасть1 КАК Документ1ТабличнаяЧасть1 СГРУППИРОВАТЬ ПО Документ1ТабличнаяЧасть1.Ссылка, Документ1ТабличнаяЧасть1.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РегистрСведений1.Цена КАК Цена, РегистрСведений1.Номенклатура КАК Номенклатура, РегистрСведений1.Период КАК Период ПОМЕСТИТЬ ВТ2 ИЗ ВТ КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСведений1 КАК РегистрСведений1 ПО ВТ.Номенклатура = РегистрСведений1.Номенклатура И ВТ.Ссылка.Дата >= РегистрСведений1.Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Номенклатура КАК Номенклатура, ВТ.количество КАК количество, ВТ2.Цена КАК Цена ИЗ ВТ КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ2 ПО ВТ.Номенклатура = ВТ2.Номенклатура И ВТ.Дата = ВТ2.Период |
|||
21
catena
10.10.17
✎
09:42
|
(20)Плохо. Фу.
Где группировка во втором запросе? Где соединение с РЕГИСТРОМ в третьем запросе? Ну и максимум по дате документа хуже не делает, конечно, но и смысловой нагрузки не несет. |
|||
22
Олеся999
10.10.17
✎
09:51
|
ДА точно, сейчас добавила группировку, а связи то есть вот :
ВТ КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ2 ПО ВТ.Номенклатура = ВТ2.Номенклатура И ВТ.Дата = ВТ2.Период Мы же делаем ВТ левое соединение ВТ2 или я ошибаюсь ? Запрос: (21) ВЫБРАТЬ Документ1ТабличнаяЧасть1.Ссылка КАК Ссылка, Документ1ТабличнаяЧасть1.Номенклатура КАК Номенклатура, СУММА(Документ1ТабличнаяЧасть1.количество) КАК количество, МАКСИМУМ(Документ1ТабличнаяЧасть1.Ссылка.Дата) КАК Дата ПОМЕСТИТЬ ВТ ИЗ Документ.Документ1.ТабличнаяЧасть1 КАК Документ1ТабличнаяЧасть1 СГРУППИРОВАТЬ ПО Документ1ТабличнаяЧасть1.Ссылка, Документ1ТабличнаяЧасть1.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РегистрСведений1.Цена КАК Цена, РегистрСведений1.Номенклатура КАК Номенклатура, МАКСИМУМ(РегистрСведений1.Период) КАК Период ПОМЕСТИТЬ ВТ2 ИЗ ВТ КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСведений1 КАК РегистрСведений1 ПО ВТ.Номенклатура = РегистрСведений1.Номенклатура И ВТ.Ссылка.Дата >= РегистрСведений1.Период СГРУППИРОВАТЬ ПО РегистрСведений1.Цена, РегистрСведений1.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Номенклатура КАК Номенклатура, ВТ.количество КАК количество, ВТ2.Цена КАК Цена ИЗ ВТ КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ2 ПО ВТ.Номенклатура = ВТ2.Номенклатура И ВТ.Дата = ВТ2.Период |
|||
23
catena
10.10.17
✎
09:58
|
(22)Нету связи.
Связь должна быть с регистром. Связь должна быть с регистром. Связь должна быть с регистром. Связь должна быть с регистром. Связь должна быть с регистром. И про второй запрос: подумай, что будет, если номенклатуре не установили цену? |
|||
24
Олеся999
10.10.17
✎
10:03
|
(23) Связь ВТ2 с регистром ?)
|
|||
25
catena
10.10.17
✎
10:06
|
(24)Малыш, я ж тебе в (18) дословно написала в каком месте и с чем. Перечитай.
|
|||
26
Олеся999
10.10.17
✎
10:30
|
(25)
ВЫБРАТЬ Документ1ТабличнаяЧасть1.Ссылка.Дата КАК Дата, Документ1ТабличнаяЧасть1.Номенклатура КАК Номенклатура, Документ1ТабличнаяЧасть1.количество КАК количество, Документ1ТабличнаяЧасть1.Ссылка КАК Ссылка ПОМЕСТИТЬ ВТ ИЗ Документ.Документ1.ТабличнаяЧасть1 КАК Документ1ТабличнаяЧасть1 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МАКСИМУМ(РегистрСведений1.Период) КАК Период, РегистрСведений1.Номенклатура КАК Номенклатура ПОМЕСТИТЬ ВТ2 ИЗ ВТ КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСведений1 КАК РегистрСведений1 ПО ВТ.Номенклатура = РегистрСведений1.Номенклатура И ВТ.Дата >= РегистрСведений1.Период СГРУППИРОВАТЬ ПО РегистрСведений1.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РегистрСведений1.Номенклатура КАК Номенклатура, РегистрСведений1.Цена КАК Цена ИЗ ВТ2 КАК ВТ2 ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСведений1 КАК РегистрСведений1 ПО ВТ2.Номенклатура = РегистрСведений1.Номенклатура И ВТ2.Период = РегистрСведений1.Период |
|||
27
Олеся999
10.10.17
✎
10:32
|
Все по инструкции вроде бы сделала ))
|
|||
28
catena
10.10.17
✎
10:52
|
ВЫБРАТЬ
Документ1ТабличнаяЧасть1.Ссылка.Дата КАК Дата, Документ1ТабличнаяЧасть1.Номенклатура КАК Номенклатура, Документ1ТабличнаяЧасть1.количество КАК количество, Документ1ТабличнаяЧасть1.Ссылка КАК Ссылка ПОМЕСТИТЬ ВТ ИЗ Документ.Документ1.ТабличнаяЧасть1 КАК Документ1ТабличнаяЧасть1 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МАКСИМУМ(РегистрСведений1.Период) КАК Период, ВТ.Номенклатура КАК Номенклатура ПОМЕСТИТЬ ВТ2 ИЗ ВТ КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСведений1 КАК РегистрСведений1 ПО ВТ.Номенклатура = РегистрСведений1.Номенклатура И ВТ.Дата >= РегистрСведений1.Период СГРУППИРОВАТЬ ПО ВТ.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ2.Номенклатура КАК Номенклатура, РегистрСведений1.Цена КАК Цена ИЗ ВТ2 КАК ВТ2 ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСведений1 КАК РегистрСведений1 ПО ВТ2.Номенклатура = РегистрСведений1.Номенклатура И ВТ2.Период = РегистрСведений1.Период |
|||
29
VS-1976
10.10.17
✎
11:01
|
Олеся999 не сдавайся
|
|||
30
Fram
10.10.17
✎
17:05
|
(27) тут надо не по инструкции. Тут надо своим умом дойти.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |