Имя: Пароль:
1C
1С v8
Получение цены в СКД в запросе по другому запросу
0 Coldboy
 
29.05.14
13:41
Здравствуйте. Как получить цену на нужную мне дату по нужной номенклатуре в запросе? Запрос у меня такого типа:
ВЫБРАТЬ
    ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Склад,
    ИнвентаризацияТоваровНаСкладеТовары.Номенклатура,
    ИнвентаризацияТоваровНаСкладеТовары.СчетУчета,
    ИнвентаризацияТоваровНаСкладеТовары.Номенклатура.Код КАК Код,
    ИнвентаризацияТоваровНаСкладеТовары.ЕдиницаИзмерения,
    ВЫБОР
        КОГДА ИнвентаризацияТоваровНаСкладеТовары.Количество - ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет > 0
            ТОГДА ИнвентаризацияТоваровНаСкладеТовары.Количество - ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет
        ИНАЧЕ 0
    КОНЕЦ КАК КоличествоИзлишек,
    ВЫБОР
        КОГДА ИнвентаризацияТоваровНаСкладеТовары.Количество - ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет < 0
            ТОГДА ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет - ИнвентаризацияТоваровНаСкладеТовары.Количество
        ИНАЧЕ 0
    КОНЕЦ КАК КоличествоНедостача,
    МЕСЯЦ(ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Дата) КАК Месяц,
    ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Дата,
    0 КАК СуммаИзлишка,
    0 КАК СуммаНедостачи,
    ИнвентаризацияТоваровНаСкладеТовары.Цена КАК Цена1
ИЗ
    Документ.ИнвентаризацияТоваровНаСкладе.Товары КАК ИнвентаризацияТоваровНаСкладеТовары
ГДЕ
    ИнвентаризацияТоваровНаСкладеТовары.Ссылка.ПометкаУдаления = ЛОЖЬ
    И ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Дата МЕЖДУ &НачДата И &КонДата



Пробывал через второй набор данных и связывал их и не выдает все равно :(
1 Enders
 
29.05.14
13:42
А в этом же запросе не вариант?
Левым соединениям с таблицей цен и всё?
2 Coldboy
 
29.05.14
16:46
(1) пробывал левым соединением этим же запросом. но результат почему то пустой ...
3 vicof
 
29.05.14
16:49
(2) Потому что естьNULL надо ставить, видимо
4 Coldboy
 
29.05.14
16:59
вот сделал получилось:
ВЫБРАТЬ
    ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Склад,
    ИнвентаризацияТоваровНаСкладеТовары.Номенклатура,
    ИнвентаризацияТоваровНаСкладеТовары.СчетУчета,
    ИнвентаризацияТоваровНаСкладеТовары.Номенклатура.Код КАК Код,
    ИнвентаризацияТоваровНаСкладеТовары.ЕдиницаИзмерения,
    ВЫБОР
        КОГДА ИнвентаризацияТоваровНаСкладеТовары.Количество - ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет > 0
            ТОГДА ИнвентаризацияТоваровНаСкладеТовары.Количество - ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет
        ИНАЧЕ 0
    КОНЕЦ КАК КоличествоИзлишек,
    ВЫБОР
        КОГДА ИнвентаризацияТоваровНаСкладеТовары.Количество - ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет < 0
            ТОГДА ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет - ИнвентаризацияТоваровНаСкладеТовары.Количество
        ИНАЧЕ 0
    КОНЕЦ КАК КоличествоНедостача,
    МЕСЯЦ(ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Дата) КАК Месяц,
    ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Дата,
    ВЫБОР
        КОГДА ИнвентаризацияТоваровНаСкладеТовары.Количество - ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет > 0
            ТОГДА ВЫБОР
                    КОГДА ИнвентаризацияТоваровНаСкладеТовары.Цена > 0
                        ТОГДА ИнвентаризацияТоваровНаСкладеТовары.Цена * (ИнвентаризацияТоваровНаСкладеТовары.Количество - ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет)
                    ИНАЧЕ ЦеныНоменклатуры.Цена * (ИнвентаризацияТоваровНаСкладеТовары.Количество - ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет)
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ КАК СуммаИзлишка,
    ВЫБОР
        КОГДА ИнвентаризацияТоваровНаСкладеТовары.Количество - ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет < 0
            ТОГДА ВЫБОР
                    КОГДА ИнвентаризацияТоваровНаСкладеТовары.Цена > 0
                        ТОГДА ИнвентаризацияТоваровНаСкладеТовары.Цена * (ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет - ИнвентаризацияТоваровНаСкладеТовары.Количество)
                    ИНАЧЕ ЦеныНоменклатуры.Цена * (ИнвентаризацияТоваровНаСкладеТовары.КоличествоУчет - ИнвентаризацияТоваровНаСкладеТовары.Количество)
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ КАК СуммаНедостачи
ИЗ
    Документ.ИнвентаризацияТоваровНаСкладе.Товары КАК ИнвентаризацияТоваровНаСкладеТовары
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
        ПО ИнвентаризацияТоваровНаСкладеТовары.Номенклатура = ЦеныНоменклатуры.Номенклатура
            И ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Дата >= ЦеныНоменклатуры.Период
ГДЕ
    ИнвентаризацияТоваровНаСкладеТовары.Ссылка.ПометкаУдаления = ЛОЖЬ
    И ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
    И ЦеныНоменклатуры.ТипЦен = &ТипЦен
5 Coldboy
 
29.05.14
17:00
но считаю криво, ибо не срез последних.
6 Enders
 
29.05.14
17:05
(4) а если после даты инвентаризации несколько цен?
так что к (5)+. Криво

Если вам надо брать последнюю цену, то обращайтесь к срезу последних, в чем проблема?
Если вам надо брать срез на дату инвентаризации, то это немного по другому решается)

Да и кстати, условие   И ЦеныНоменклатуры.ТипЦен = &ТипЦен, я б запихнул в условие соединения, ну или вирт таблицу среза
7 Coldboy
 
29.05.14
17:15
(6) как срез по периоду сделать? тупо в левом соединением не дает ...
8 Coldboy
 
29.05.14
17:16
(6) хочу взять срез на дату инвентаризации, но не знаю как сделать, через скд связи не получилось
9 shuhard
 
29.05.14
17:56
(8) открой Хрусталёву, там это сделано через связь наборов
10 fisher
 
29.05.14
18:22
11 Coldboy
 
29.05.14
19:51
(10) скд бы картинки еще появлялись и цены бы не было статье ...