Вход | Регистрация



Запрос: вывод цены на заданную дату

Запрос: вывод цены на заданную дату
Я
   Олеся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.Период УБЫВ,
    Ссылка
 
 
   Fram
 
1 - 10.10.17 - 08:06
а почему бы не написать 
ПО ВТ.Номенклатура.Ссылка.Ссылка.Ссылка.Ссылка = РегистрСведений1.Номенклатура.Ссылка.Ссылка.Ссылка.Ссылка
   Fram
 
2 - 10.10.17 - 08:07
(0) а по поводу вопроса погугли виртуальные таблицы срезов
   catena
 
3 - 10.10.17 - 08:08
Не, гуглить надо срез последних на каждую дату.
   Fram
 
4 - 10.10.17 - 08:09
(3) зачем на каждую?
   Олеся999
 
5 - 10.10.17 - 08:11
(1) ну да что то лишканула :))
   мистер игрек
 
6 - 10.10.17 - 08:32
(5) EУ меня есть отчет на СКД. Вдруг поможет?
   catena
 
7 - 10.10.17 - 08:35
(4)Потому что, судя по запросу, ей надо на дату каждого документа
   Олеся999
 
8 - 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

Но нет цены, так полагаю что что то с группировками не так
   Олеся999
 
9 - 10.10.17 - 08:36
(7) Да верно цену надо на дату каждого документа
   catena
 
10 - 10.10.17 - 08:38
(9)Срез последних на каждую дату.

1. Делаешь таблицу номенклатур и дат
2. Под эти даты находишь МАКСИМУМ период в регистре
3. к найденому периоду регистра находишь значение в регистре.
 
 Рекламное место пустует
   Mankubus
 
11 - 10.10.17 - 08:41
В СКД можно наборами данных решить 
http://catalog.mista.ru/public/77568/
   Олеся999
 
12 - 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.Цена

УПОРЯДОЧИТЬ ПО
    Ссылка
   Fram
 
13 - 10.10.17 - 08:53
(12) нет, так ты получишь максимальную дату для каждой конкретной цены (не типа цен, а именно цены)
   catena
 
14 - 10.10.17 - 09:02
(12)Сначала нужно найти максимум период в разрезе номенклатура/дата. Я ж не зря этот пункт отдельно написала.
   Олеся999
 
15 - 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.Цена

УПОРЯДОЧИТЬ ПО
    Ссылка
   catena
 
16 - 10.10.17 - 09:11
(15)И снова мимо. Не максимум дат документов, а максимум периодов регистра тебе нужен.
   Олеся999
 
17 - 10.10.17 - 09:14
(16) Так вот же максимум период регистра  МАКСИМУМ(РегистрСведений1.Период) КАК Период
   catena
 
18 - 10.10.17 - 09:14
Выбрать Номенклатура, ДатаДок поместить ВтНоменклатураСДатойДляСреза;
Выбрать Номенклатура, ДатаДок, Максимум(Период) поместить ВтНоменклатураСПЕриодомСреда 
из ВтНоменклатураСДатойДляСреза левое соединение регистр по
номенклатура=номенклатура и ДатаДок>=Период;
Выбрать Номенклатура, Цена 
из ВтНоменклатураСПЕриодомСреда левое соединение регистр по
номенклатура=номенклатура и ПериодМакс=Период
   catena
 
19 - 10.10.17 - 09:14
(17)В РАЗРЕЗЕ НОМЕНКЛАТУРА/ДАТА, а у тебя там еще и цена болтается.
   Олеся999
 
20 - 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.Период
   catena
 
21 - 10.10.17 - 09:42
(20)Плохо. Фу.

Где группировка во втором запросе?
Где соединение с РЕГИСТРОМ в третьем запросе?
Ну и максимум по дате документа хуже не делает, конечно, но и смысловой нагрузки не несет.
   Олеся999
 
22 - 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.Период
   catena
 
23 - 10.10.17 - 09:58
(22)Нету связи.
Связь должна быть с регистром.
Связь должна быть с регистром.
Связь должна быть с регистром.
Связь должна быть с регистром.
Связь должна быть с регистром.


И про второй запрос: подумай, что будет, если номенклатуре не установили цену?
   Олеся999
 
24 - 10.10.17 - 10:03
(23) Связь ВТ2 с регистром ?)
   catena
 
25 - 10.10.17 - 10:06
(24)Малыш, я ж тебе в (18) дословно написала в каком месте и с чем. Перечитай.
   Олеся999
 
26 - 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.Период
   Олеся999
 
27 - 10.10.17 - 10:32
Все по инструкции вроде бы сделала ))
   catena
 
28 - 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.Период
   VS-1976
 
29 - 10.10.17 - 11:01
Олеся999 не сдавайся
   Fram
 
30 - 10.10.17 - 17:05
(27) тут надо не по инструкции. Тут надо своим умом дойти.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует