Имя: Пароль:
1C
1С v8
помогите с условием. в запросе
0 zladenuw
 
01.11.13
12:24
такой запрос
Если вернуть условие на типы цен. некоторые позиции не отображаются так как у них нет такого типа цен. как обойти этот момент ?

ВЫБРАТЬ
    ОстаткиЗЧ.Товар,
    МАКСИМУМ(ОстаткиЗЧ.Период) КАК Период
ПОМЕСТИТЬ ВТ
ИЗ
    РегистрНакопления.ОстаткиЗЧ КАК ОстаткиЗЧ
ГДЕ
    ОстаткиЗЧ.ВнД = ЗНАЧЕНИЕ(Перечисление.ВидыДвижЗЧ.Продажа)
    И ВЫБОР
            КОГДА &Поставщик = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
                ТОГДА ИСТИНА
            ИНАЧЕ ОстаткиЗЧ.Партия.Поставщик = &Поставщик
        КОНЕЦ
    И ВЫБОР
            КОГДА &ФильтрТовар = ЗНАЧЕНИЕ(Справочник.Запчасти.ПустаяСсылка)
                ТОГДА ВЫБОР
                        КОГДА &НаименованиеЗЧ = ""
                            ТОГДА ИСТИНА
                        ИНАЧЕ ОстаткиЗЧ.Товар.Наименование ПОДОБНО &НаименованиеЗЧ
                    КОНЕЦ
            ИНАЧЕ ОстаткиЗЧ.Товар В ИЕРАРХИИ (&ФильтрТовар)
        КОНЕЦ

СГРУППИРОВАТЬ ПО
    ОстаткиЗЧ.Товар
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ.Товар
ПОМЕСТИТЬ ПродажиЗЧ
ИЗ
    ВТ КАК ВТ
ГДЕ
    РАЗНОСТЬДАТ(ВТ.Период, &ТекДата, ДЕНЬ) / 365 <= &ЛетНелеквидаОт

СГРУППИРОВАТЬ ПО
    ВТ.Товар
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОстаткиЗЧОстаткиИОбороты.Товар.Код КАК Артикул,
    ОстаткиЗЧОстаткиИОбороты.Товар.Артикул КАК КодБух,
    ОстаткиЗЧОстаткиИОбороты.Товар,
    МАКСИМУМ(РАЗНОСТЬДАТ(ОстаткиЗЧОстаткиИОбороты.Партия.Дата, &ТекДата, ГОД)) КАК КоличествоЛет,
    МАКСИМУМ(РАЗНОСТЬДАТ(ОстаткиЗЧОстаткиИОбороты.Партия.Дата, &ТекДата, МЕСЯЦ) - РАЗНОСТЬДАТ(ОстаткиЗЧОстаткиИОбороты.Партия.Дата, &ТекДата, ГОД) * 12) КАК КоличествоМесяцев,
    МАКСИМУМ(РАЗНОСТЬДАТ(ОстаткиЗЧОстаткиИОбороты.Партия.Дата, &ТекДата, ДЕНЬ) - РАЗНОСТЬДАТ(ОстаткиЗЧОстаткиИОбороты.Партия.Дата, &ТекДата, ГОД) * 365) КАК КоличествоДней,
    СУММА(ОстаткиЗЧОстаткиИОбороты.КвоКонечныйОстаток) КАК Остаток,
    СРЕДНЕЕ(ЦеныЗЧ.Цена) КАК Цена,
    СУММА(ОстаткиЗЧОстаткиИОбороты.КвоКонечныйОстаток * ЦеныЗЧ.Цена) КАК Сумма,
    СРЕДНЕЕ(ЦеныЗЧ1.Цена) КАК ЦенаРозницы,
    СУММА(ОстаткиЗЧОстаткиИОбороты.КвоКонечныйОстаток * ЦеныЗЧ1.Цена) КАК СуммаРозницы
ИЗ
    РегистрНакопления.ОстаткиЗЧ.ОстаткиИОбороты(
            ,
            &ТекДата,
            ,
            ,
            ВЫБОР
                    КОГДА &Поставщик = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
                        ТОГДА ИСТИНА
                    ИНАЧЕ Партия.Поставщик = &Поставщик
                КОНЕЦ
                И (ВЫРАЗИТЬ(РАЗНОСТЬДАТ(Партия.Дата, &ТекДата, МЕСЯЦ) / 12 КАК ЧИСЛО(10, 2))) >= &ЛетНелеквидаОт
                И (ВЫРАЗИТЬ(РАЗНОСТЬДАТ(Партия.Дата, &ТекДата, МЕСЯЦ) / 12 КАК ЧИСЛО(10, 2))) <= &ЛетНелеквидаДо
                И ВЫБОР
                    КОГДА &ФильтрТовар = ЗНАЧЕНИЕ(Справочник.Запчасти.ПустаяСсылка)
                        ТОГДА ВЫБОР
                                КОГДА &НаименованиеЗЧ = ""
                                    ТОГДА ИСТИНА
                                ИНАЧЕ Товар.Наименование ПОДОБНО &НаименованиеЗЧ
                            КОНЕЦ
                    ИНАЧЕ Товар В ИЕРАРХИИ (&ФильтрТовар)
                КОНЕЦ
                И НЕ Товар В
                        (ВЫБРАТЬ
                            Т.Товар
                        ИЗ
                            ПродажиЗЧ КАК Т)) КАК ОстаткиЗЧОстаткиИОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЦеныЗЧ КАК ЦеныЗЧ
        ПО ОстаткиЗЧОстаткиИОбороты.Товар = ЦеныЗЧ.Владелец
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЦеныЗЧ КАК ЦеныЗЧ1
        ПО ОстаткиЗЧОстаткиИОбороты.Товар = ЦеныЗЧ1.Владелец
//ГДЕ
//    ЦеныЗЧ.ТипЦены = &ТипЦены
//    И ЦеныЗЧ1.ТипЦены = &ТипЦеныРозн

СГРУППИРОВАТЬ ПО
    ОстаткиЗЧОстаткиИОбороты.Товар.Код,
    ОстаткиЗЧОстаткиИОбороты.Товар.Артикул,
    ОстаткиЗЧОстаткиИОбороты.Товар

УПОРЯДОЧИТЬ ПО
    КоличествоЛет,
    Артикул
1 Любопытная
 
01.11.13
12:26
А что надо?
2 zladenuw
 
01.11.13
12:29
(1) да уже разобрался. нужно было условие на тип цен перенести в соединение таблиц.

    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЦеныЗЧ КАК ЦеныЗЧ
        ПО (ОстаткиЗЧОстаткиИОбороты.Товар = ЦеныЗЧ.Владелец
                И ЦеныЗЧ.ТипЦены = &ТипЦены)
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЦеныЗЧ КАК ЦеныЗЧ1
        ПО (ОстаткиЗЧОстаткиИОбороты.Товар = ЦеныЗЧ1.Владелец
                И ЦеныЗЧ1.ТипЦены = &ТипЦеныРозн)
3 Kerk
 
01.11.13
12:41
МАКСИМУМ(РАЗНОСТЬДАТ(ОстаткиЗЧОстаткиИОбороты.Партия.Дата, &ТекДата, ДЕНЬ) - РАЗНОСТЬДАТ(ОстаткиЗЧОстаткиИОбороты.Партия.Дата, &ТекДата, ГОД) * 365) КАК КоличествоДней,

КоличествоДней у тебя включает и КоличествоМесяцев в днях.
и вообще "365.25" ней, если уж на то пошло.
4 zladenuw
 
01.11.13
12:44
(3) спасиб. учту
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс