Имя: Пароль:
1C
1С v8
Цены на дату
0 EverGreenMouse
 
28.02.16
17:07
Товарищи, есть вопрос. В рамках вложенного запроса я получил Номенклатуру, ТипЦены и Дату. Теперь не могу допетрить каким образом получить цену на эту номенклатуру на эту дату и этот типа цены. Вроде данных вложенного запроса должно хватить, чтоб дальше это дело соединить с РС, но как?
1 EverGreenMouse
 
28.02.16
17:20
Книга знаний: Срез последних на каждую дату в запросе
Этим обчитался уже, но что-то ступор у меня какой-то
2 EverGreenMouse
 
28.02.16
17:43
Сложность в том, что в этом запросе у меня несколько дат, на которые нужно получить цены.

P.S.У меня насыщенное воскресенье
3 MishaD
 
28.02.16
17:45
В понедельник народ придет, подскажет
4 EverGreenMouse
 
28.02.16
17:46
(3) так то понедельник) а сроки сроками)
5 MishaD
 
28.02.16
17:52
Ну ты бы запрос свой выложил для начала
6 EverGreenMouse
 
28.02.16
18:19
(5) Выбрать
Документ.Номенклатура КАК Номенклатура,
Документ.ТипЦен КАК ТипЦен,
Документ.Дата КАК ДатаДокумента,
Документ.Товары КАК ДокументТовары
ЛЕВОЕ СОЕДИНЕНИЕ Документ КАК Документ
ПО ДокументТовары.Ссылка = Документ.Ссылка
ГДЕ
Документ.ССылка = &Ссылка
7 MishaD
 
28.02.16
18:33
А что такое Документ.Товары, и что номенклатура делает в шапке ?
8 EverGreenMouse
 
28.02.16
18:38
(7) Это общее понятие моего запроса)  ДокументТовары.Номенклатура - тут правильней
9 EverGreenMouse
 
28.02.16
18:41
(7) А Документ.товары - это табличная часть
10 MishaD
 
28.02.16
18:43
так у тебя дата одна, у документа ? Тогда просто еще одно левое соединение со срезом последних соответствующего "регистра с ценами" по номенклатуре и типу цены
11 EverGreenMouse
 
28.02.16
18:46
(10) Так, вижу непонимание)) Выкладываю рабочий текст вложенного запроса)

ВЫБРАТЬ
    Товары.Номенклатура,
    Товары.ТипЦен,
    Товары.ДатаДокумента
ИЗ
    (ВЫБРАТЬ
        ВозвратТоваровОтПокупателяТовары.Номенклатура КАК Номенклатура,
        ВозвратТоваровОтПокупателя.ТипЦен КАК ТипЦен,
        ЕСТЬNULL(ВозвратТоваровОтПокупателяТовары.ДокументПартии.Ссылка.Дата, ВозвратТоваровОтПокупателя.Дата) КАК ДатаДокумента
    ИЗ
        Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары
            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя
            ПО ВозвратТоваровОтПокупателяТовары.Ссылка = ВозвратТоваровОтПокупателя.Ссылка
    ГДЕ
        ВозвратТоваровОтПокупателя.Ссылка = &Ссылка) КАК Товары
12 EverGreenMouse
 
28.02.16
18:49
судя по всему, нужны соединения с РС по номенклатуре, ТипуЦен и Периоду, но левое соединение ЦеныНоменклатурыСрезПослених.Период <= Товары.ДатаДокумента
не отрабатвает
13 MishaD
 
28.02.16
18:55
Соединение по ЦеныНоменклатуры.Период<=Товары.ДатаДокумента+Номенклатура, и ТипЦен, конечно. И Максимум(ЦеныНоменклатуры.Период)как НужнДата, чтобы получить последнюю дату перед ДатаДокумента. А потом уже соединяешь опять с таблицей регистра сведений по НужнДата=период и.т.д
14 EverGreenMouse
 
28.02.16
19:00
(13) то есть во вложенном запросе соединять по ЦеныНоменклатуры.Период<=Товары.ДатаДокумента+Номенклатура, и ТипЦен, конечно. И Максимум(ЦеныНоменклатуры.Период)как НужнДата, чтобы получить последнюю дату перед ДатаДокумента и потом в общем соединять вложенный запрос и РС по НужнДата=Период?
15 EverGreenMouse
 
28.02.16
19:18
ВЫБРАТЬ
    товары.Номенклатура,
    товары.ТипЦен,
    товары.ДатаДокумента,
    ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
    (ВЫБРАТЬ
        ВозвратТоваровОтПокупателяТовары.Номенклатура КАК Номенклатура,
        ВозвратТоваровОтПокупателя.ТипЦен КАК ТипЦен,
        ЕСТЬNULL(ВозвратТоваровОтПокупателяТовары.ДокументПартии.Ссылка.Дата, ВозвратТоваровОтПокупателя.Дата) КАК ДатаДокумента
    ИЗ
        Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары
            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя
            ПО ВозвратТоваровОтПокупателяТовары.Ссылка = ВозвратТоваровОтПокупателя.Ссылка
    ГДЕ
        ВозвратТоваровОтПокупателя.Ссылка = &Ссылка) КАК товары
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
        ПО товары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
            И товары.ТипЦен = ЦеныНоменклатурыСрезПоследних.ТипЦен
            И товары.ДатаДокумента = ЦеныНоменклатурыСрезПоследних.Период


Так возвращает все, кроме цен :( Где ж я туплю-то?
16 EverGreenMouse
 
28.02.16
20:10
мда, вечер воскресенья воистину нерыбный(
17 EverGreenMouse
 
28.02.16
21:55
В таком виде показывает нужное количество строк: но с пустой ценой. Куда копнуть в этом запросе??? Уже всю голову сломал

ВЫБРАТЬ
    ТОВАРЫ.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ИЗ
    (ВЫБРАТЬ
        ВозвратТоваровОтПокупателя.ТипЦен КАК ТипЦен,
        ЕСТЬNULL(ВозвратТоваровОтПокупателяТовары.ДокументПартии.Ссылка.Дата, ВозвратТоваровОтПокупателя.Дата) КАК ДатаДокумента,
        ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
    ИЗ
        Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары
            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя
            ПО ВозвратТоваровОтПокупателяТовары.Ссылка = ВозвратТоваровОтПокупателя.Ссылка
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
            ПО ВозвратТоваровОтПокупателяТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
    ГДЕ
        ВозвратТоваровОтПокупателя.Ссылка = &Ссылка
    
    СГРУППИРОВАТЬ ПО
        ЕСТЬNULL(ВозвратТоваровОтПокупателяТовары.ДокументПартии.Ссылка.Дата, ВозвратТоваровОтПокупателя.Дата),
        ВозвратТоваровОтПокупателя.ТипЦен,
        ЦеныНоменклатурыСрезПоследних.Номенклатура) КАК ТОВАРЫ
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
        ПО ТОВАРЫ.ТипЦен = ЦеныНоменклатурыСрезПоследних.ТипЦен
            И ТОВАРЫ.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
            И ТОВАРЫ.ДатаДокумента >= ЦеныНоменклатурыСрезПоследних.Период

СГРУППИРОВАТЬ ПО
    ТОВАРЫ.Номенклатура,
    ТОВАРЫ.ДатаДокумента,
    ТОВАРЫ.ТипЦен,
    ЦеныНоменклатурыСрезПоследних.Цена
18 hhhh
 
28.02.16
22:12
(17) ну вот это выкинь нахрен, тебе за символы что ли платят

           ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя
            ПО ВозвратТоваровОтПокупателяТовары.Ссылка = ВозвратТоваровОтПокупателя.Ссылка


вот так

(ВЫБРАТЬ
+ Code

        ВозвратТоваровОтПокупателяТовары.Ссылка.ТипЦен КАК ТипЦен,
        ЕСТЬNULL(ВозвратТоваровОтПокупателяТовары.ДокументПартии.Дата, ВозвратТоваровОтПокупателяТовары.Ссылка.Дата) КАК ДатаДокумента,
        ВозвратТоваровОтПокупателяТовары.Номенклатура КАК Номенклатура
    ИЗ
        Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары

            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
            ПО ВозвратТоваровОтПокупателяТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
    ГДЕ
        ВозвратТоваровОтПокупателяТовары.Ссылка = &Ссылка
19 EverGreenMouse
 
28.02.16
22:56
Разобрался вроде. Утром потестирую поподробней