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


1С:Предприятие ::

Метки: 

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

Я
   Олеся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 человек.
Рекламное место пустует