Имя: Пароль:
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,
    Склад,
    ХарактеристикаНоменклатуры
ИТОГИ
    СУММА(Количество)
ПО
    ОБЩИЕ
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой