Имя: Пароль:
1C
 
Показывать всегда цены по Остаткам
0 myr4ik07
 
14.08.15
16:07
Делаю запрос и что то не получается, в итоге хочу что бы, всегда выводилось либо 0 либо то что есть по конкретному остатку

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

УПОРЯДОЧИТЬ ПО
    Закупка.Период УБЫВ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Остатки.СтруктурнаяЕдиница КАК Склад,
    Остатки.КоличествоОстаток КАК Остаток,
    ЕСТЬNULL(Закупочная.Цена, 0) КАК Последняя,
    ЕСТЬNULL(Закупочная.Цена, 0) КАК Закупочная,
    ЕСТЬNULL(Прайс.Цена, 0) КАК Прайс,
    ЕСТЬNULL(Интернет.Цена, 0) КАК Интернет
ИЗ
    РегистрНакопления.ЗапасыНаСкладах.Остатки(, Номенклатура = &Номенклатура) КАК Остатки
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                ,
                Номенклатура = &Номенклатура
                    И ВидЦен = &ВидЦен3) КАК Интернет
        ПО Остатки.Номенклатура = Интернет.Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                ,
                Номенклатура = &Номенклатура
                    И ВидЦен = &ВидЦен4) КАК Прайс
        ПО Остатки.Номенклатура = Прайс.Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                ,
                Номенклатура = &Номенклатура
                    И ВидЦен = &ВидЦен1) КАК Закупочная
        ПО Остатки.Номенклатура = Закупочная.Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Закупка КАК Последняя
        ПО Остатки.Номенклатура = Последняя.Номенклатура
1 myr4ik07
 
14.08.15
16:08
играюсь с этими соедининениями и не могу добиться, небось не то что то делаю и не рисуется в голове как верно
2 jsmith82
 
14.08.15
16:09
нафига внутренне?
3 myr4ik07
 
14.08.15
16:09
(2) я уже пробовал и полное и левое сначала к остаткам короче не то что т о
4 разработчик 1с
 
14.08.15
16:10
слева справочник номенклатура например
5 myr4ik07
 
14.08.15
16:10
короче в итоге должно выйти, в выборе справочника номенклатуры должно быть показано закупочная цена, и несколько параметризованных цен и цены должны только тогда показываться когда есть остаток по конкр номенклатуре
6 myr4ik07
 
14.08.15
16:12
(4) не понял, подробнее пожалуйста
7 GreatOne
 
14.08.15
16:13
ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
    ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
        ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
ИТОГИ
    СУММА(КоличествоОстаток),
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТипЦен),
    СУММА(Цена)
ПО
    Номенклатура


И обходишь результат по группировкам.
8 myr4ik07
 
14.08.15
16:18
(7) очень хотелось бы в запросе все это делать, выборку, без последующих условий в обходе
9 myr4ik07
 
14.08.15
16:27
Как бы вроде оно

ВЫБРАТЬ
    ЗапасыНаСкладахОстатки.СтруктурнаяЕдиница КАК Склад,
    ЗапасыНаСкладахОстатки.КоличествоОстаток КАК Остаток,
    ВложенныйЗапрос.Цена КАК Последняя,
    ЕСТЬNULL(Закупочная.Цена, 0) КАК Закупочная,
    ЕСТЬNULL(Прайс.Цена, 0) КАК Прайс,
    ЕСТЬNULL(Интернет.Цена, 0) КАК Интернет
ИЗ
    РегистрНакопления.ЗапасыНаСкладах.Остатки(, Номенклатура = &Номенклатура) КАК ЗапасыНаСкладахОстатки
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                ,
                Номенклатура = &Номенклатура
                    И ВидЦен = &ВидЦен1) КАК Закупочная
        ПО ЗапасыНаСкладахОстатки.Номенклатура = Закупочная.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                ,
                Номенклатура = &Номенклатура
                    И ВидЦен = &ВидЦен3) КАК Прайс
        ПО ЗапасыНаСкладахОстатки.Номенклатура = Прайс.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                ,
                Номенклатура = &Номенклатура
                    И ВидЦен = &ВидЦен4) КАК Интернет
        ПО ЗапасыНаСкладахОстатки.Номенклатура = Интернет.Номенклатура,
    (ВЫБРАТЬ ПЕРВЫЕ 1
        ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК Цена
    ИЗ
        РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(, Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
    
    УПОРЯДОЧИТЬ ПО
        ЦеныНоменклатурыКонтрагентовСрезПоследних.Период УБЫВ) КАК ВложенныйЗапрос
10 GreatOne
 
14.08.15
16:32
ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстатки.КоличествоОстаток,
    ТипыЦенНоменклатуры.Ссылка
ПОМЕСТИТЬ ВТ_Номенклатура
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки,
    Справочник.ТипыЦенНоменклатуры КАК ТипыЦенНоменклатуры
ГДЕ
    ТипыЦенНоменклатуры.Ссылка В(&типыцен)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Номенклатура.Номенклатура,
    ВТ_Номенклатура.КоличествоОстаток,
    ВТ_Номенклатура.Ссылка,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК цена
ИЗ
    ВТ_Номенклатура КАК ВТ_Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
        ПО ВТ_Номенклатура.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
            И ВТ_Номенклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.ТипЦен
11 GreatOne
 
14.08.15
16:34
так лучше. Метод не идеальный,но думаю то, что тебе нужно

ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстатки.КоличествоОстаток,
    ТипыЦенНоменклатуры.Ссылка
ПОМЕСТИТЬ ВТ_Номенклатура
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки,
    Справочник.ТипыЦенНоменклатуры КАК ТипыЦенНоменклатуры
ГДЕ
    ТипыЦенНоменклатуры.Ссылка В(&типыцен)
;

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

УПОРЯДОЧИТЬ ПО
    Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТ_Номенклатура
12 myr4ik07
 
14.08.15
16:47
спасибо, на мой запрос не смотреть даже, он зацикляный какой то )
13 разработчик 1с
 
14.08.15
16:50
(6) в твой изначальный запрос добавь справочник номенклатура. с условием где. и все остальные таблицы к нему левым соединением. и в запрос выбери справочник.ссылка. тогда у тебя по-любому будет запись в результате
14 myr4ik07
 
14.08.15
16:57
(13) понял, спасибо
15 myr4ik07
 
14.08.15
19:07
вот так гуд

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

УПОРЯДОЧИТЬ ПО
    ЦеныНоменклатурыКонтрагентовСрезПоследних.Период УБЫВ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОстатокТоваров.СтруктурнаяЕдиница КАК Склад,
    ОстатокТоваров.КоличествоОстаток КАК Остаток,
    ВременнаяТаблица.Цена,
    Цена1.Цена КАК Цена1,
    Цена3.Цена КАК Цена2,
    Цена4.Цена КАК Цена3
ИЗ
    РегистрНакопления.ЗапасыНаСкладах.Остатки(
            ,
            Номенклатура В
                (ВЫБРАТЬ
                    вт.Номенклатура
                ИЗ
                    вт КАК вт)) КАК ОстатокТоваров
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ вт КАК ВременнаяТаблица
            ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                    ,
                    Номенклатура В
                            (ВЫБРАТЬ
                                вт.Номенклатура
                            ИЗ
                                вт КАК вт)
                        И ВидЦен = &Цена1) КАК Цена1
            ПО ВременнаяТаблица.Номенклатура = Цена1.Номенклатура
            ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                    ,
                    Номенклатура В
                            (ВЫБРАТЬ
                                вт.Номенклатура
                            ИЗ
                                вт КАК вт)
                        И ВидЦен = &Цена3) КАК Цена3
            ПО ВременнаяТаблица.Номенклатура = Цена3.Номенклатура
            ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                    ,
                    Номенклатура В
                            (ВЫБРАТЬ
                                вт.Номенклатура
                            ИЗ
                                вт КАК вт)
                        И ВидЦен = &Цена4) КАК Цена4
            ПО ВременнаяТаблица.Номенклатура = Цена4.Номенклатура
        ПО ОстатокТоваров.Номенклатура = ВременнаяТаблица.Номенклатура
16 myr4ik07
 
14.08.15
21:22
(11) дело в том, что мне еще до продажной еще и закупку нужно втулить и закупку брать единственную последнюю прошедшую по регистру, а не всю закупку контрагентов
17 GreatOne
 
15.08.15
00:43
Мсье знает толк в извращениях.
http://v8.1c.ru/metod/books/book.jsp?id=436
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший