Имя: Пароль:
1C
 
объединение 2 запросов
0 Casper21
 
18.11.15
15:04
как верно  объединить эти 2 запроса? по номенклатуре ??
ЕТОТ

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

СГРУППИРОВАТЬ ПО
    ЗаказПокупателяТовары.Номенклатура


////////////////////////////////

И етот


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

Спасибо.
1 elCust
 
18.11.15
15:07
UNION ALL
2 ibreiter
 
18.11.15
15:08
Объединить все
3 Живой Ископаемый
 
18.11.15
15:08
соединить в смысле? или объединить все-таки?
4 Casper21
 
18.11.15
15:10
(3) то есть добавить поле "ПартииТоваровНаСкладах ОстаткиИОбороты.Склад КАК Состав" с 2 большого запроса до 1 запроса
5 Casper21
 
18.11.15
15:11
левое соединение?
6 VikingKosmo
 
18.11.15
15:12
Пожалуста
7 Casper21
 
18.11.15
15:13
а как их объединить и где?(
8 Casper21
 
18.11.15
20:20
а через вложение запросы будет верно??

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

СГРУППИРОВАТЬ ПО
    ЗаказПокупателяТовары.Номенклатура,
    ВложенныйЗапрос.КоличествоДнейНаСкладе,
    ВложенныйЗапрос.Склад,
    ВложенныйЗапрос.ХарактеристикаНоменклатуры

УПОРЯДОЧИТЬ ПО
    ЗаказПокупателяТовары.Номенклатура.Наименование,
    Количество,
    ДнейПродажи,
    СерПрод,
    КоличествоДнейНаСкладе,
    СерПрод2,
    Склад,
    ХарактеристикаНоменклатуры
ИТОГИ
    СУММА(Количество)
ПО
    ОБЩИЕ