Имя: Пароль:
1C
1С v8
УПП помогите объединить ВСЕ
,
0 1c_nub
 
14.10.13
16:55
Создаю запрос в УПП:
ВЫБРАТЬ РАЗЛИЧНЫЕ
    РасчетыПоРеализацииОрганизации.Организация КАК Организация,
    РасчетыПоРеализацииОрганизации.Контрагент КАК Контрагент,
    РасчетыПоРеализацииОрганизации.КоррСубконто1.Ссылка КАК НоменклатурнаяГруппа,
    РасчетыПоРеализацииОрганизации.Номенклатура КАК Номенклатура,
    СУММА(РасчетыПоРеализацииОрганизации.СуммаСНДС) КАК СуммаСНДС,
    NULL КАК Стоимость
ИЗ
    РегистрСведений.РасчетыПоРеализацииОрганизации КАК РасчетыПоРеализацииОрганизации
ГДЕ
    (ТИПЗНАЧЕНИЯ(РасчетыПоРеализацииОрганизации.Регистратор) = ТИП(Документ.РеализацияТоваровУслуг)
            ИЛИ ТИПЗНАЧЕНИЯ(РасчетыПоРеализацииОрганизации.Регистратор) = ТИП(Документ.АктОбОказанииПроизводственныхУслуг))

СГРУППИРОВАТЬ ПО
    РасчетыПоРеализацииОрганизации.Номенклатура,
    РасчетыПоРеализацииОрганизации.Организация,
    РасчетыПоРеализацииОрганизации.Контрагент,
    РасчетыПоРеализацииОрганизации.КоррСубконто1.Ссылка

ОБЪЕДИНИТЬ ВСЕ

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

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос1.НоменклатурнаяГруппа
ИТОГИ
    СУММА(СуммаСНДС),
    СУММА(Стоимость)
ПО
    Организация,
    Контрагент,
    Номенклатура,
    НоменклатурнаяГруппа

Не объединяет строки с одинаковыми ном.группами, подскажите в чем причина может быть?
1 mikecool
 
14.10.13
16:55
еще один запрос оберни свергу с группировкой и суммированием
2 mikecool
 
14.10.13
16:55
сверху*
3 Kom-off
 
14.10.13
16:57
В первом запросе для значения номенклатурной группы попробуй использовать ВЫРАЗИТЬ(<бла-бла> КАК Справочник.НоменклатурныеГруппы)
4 Kom-off
 
14.10.13
16:58
(3)+ или попробуй поменять запросы местами.
5 Kreont
 
14.10.13
17:00
(1)+100
"объединить" вовсе не значит сгруппировать по одинаковым полям
6 1c_nub
 
14.10.13
17:12
Местами поменял.
ВЫРАЗИТЬ сделал
Обернул
Итог тот же:

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

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.НоменклатурнаяГруппа,
    ВложенныйЗапрос.Поле2,
    ВложенныйЗапрос.Поле3,
    ВложенныйЗапрос.Поле1
7 1c_nub
 
14.10.13
17:18
ап
8 viktor_vv
 
14.10.13
17:19
Интересно, а как ты себе представляешь совмещение строк с

       NULL КАК Поле1,
        NULL КАК Поле2,
        ВЫРАЗИТЬ(ВложенныйЗапрос1.НоменклатурнаяГруппа КАК Справочник.НоменклатурныеГруппы) КАК НоменклатурнаяГруппа,

и

        РасчетыПоРеализацииОрганизации.Организация,
        РасчетыПоРеализацииОрганизации.Контрагент,
        ВЫРАЗИТЬ(РасчетыПоРеализацииОрганизации.КоррСубконто1.Ссылка КАК Справочник.НоменклатурныеГруппы),


NULL он как бы не равен РасчетыПоРеализацииОрганизации.Организация, с чего бы они в одну строку объединились.
И как бы Объединить ВСЕ предполагает вывод всех строк из обеих таблиц. Но это тут не главное.
9 viktor_vv
 
14.10.13
17:21
У меня такое подозрение, что тебе надо в (0) не объединить ве, а левое соединение.
10 Kreont
 
14.10.13
17:21
ВЫБРАТЬ РАЗЛИЧНЫЕ
сработает для всех полей из ниже группировки, так надо?

если только по ном.группам, тогда только одна строка нужна:
СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.НоменклатурнаяГруппа
11 1c_nub
 
14.10.13
17:26
(10) На да, мне из одного запроса нужно:
Организация,
Контрагент,
НоменклатурныеГруппы
Номенклатура,
СуммаСНДС,

а из другого:
НоменклатурныеГруппы
Стоимость
12 1c_nub
 
14.10.13
17:27
т.к. и в одном и в другом НоменклатурныеГруппы совпадают, то должно к первому запросу прибавиться поле Стоимость.
13 1c_nub
 
14.10.13
17:28
вот пример из учебника. Работает, проверено.
ВЫБРАТЬ
    Организации.Ссылка,
    Организации.ОсновнойБанковскийСчет,
    Организации.Код
ИЗ
    Справочник.Организации КАК Организации

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    БанковскиеСчета.Владелец,
    БанковскиеСчета.Ссылка,
    NULL
ИЗ
    Справочник.БанковскиеСчета КАК БанковскиеСчета
14 1c_nub
 
14.10.13
17:29
результатом будет таблица с тремя колонками. (объединенная)
15 viktor_vv
 
14.10.13
17:31
Кстати в (6) во втором запросе последнее поле замени NULL на 0, а то твоя
СУММА(ВложенныйЗапрос.Стоимость) вернет NULL.
16 1c_nub
 
14.10.13
17:32
(10) СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.НоменклатурнаяГруппа

он же сам проставляет другие поля группировки. По одной только ном.группе не выйдет.
17 viktor_vv
 
14.10.13
17:32
И в первом

        NULL КАК Поле4,
замени

0 КАК Поле4,

а то по этой же причине твое

СУММА(ВложенныйЗапрос.Поле4) КАК Поле4

возвращает NULL
18 1c_nub
 
14.10.13
17:35
(15) Да, это первое, что пробовал. не помогает. Результат тот же, двумя строками, в одной результат первого запроса, в другой второго.
19 1c_nub
 
14.10.13
17:39
(17) Заменил.
Не помогло
20 viktor_vv
 
14.10.13
17:40
(18) Ну так правильно выдает тебе.
В примере (13) там вообще-то про колонки, а не про строки.
21 viktor_vv
 
14.10.13
17:42
(20)+ А результат в (13) по строкам будет такой же как у тебя.
В (10) тебе ж сказали как сгруппировать по номенклатурным группам.
22 1c_nub
 
14.10.13
17:48
(20) в примере 13 объединятся строки с одинаковым полем (одним).

Мне же тоже самое нужно.

(21) Если я делаю группировку только по одному полю, то выдает ошибку, что другие поля не входят в группировку. По-любому другие поля нужно или группировать или суммировать.
23 viktor_vv
 
14.10.13
17:58
(22) Правильно, в (13) два поля из трех одинаковые, третье будет заведомо разное.
Выполни такой запрос, как в (13) и посмотри результат.
24 1c_nub
 
14.10.13
17:59
прошу прощение за свою несмышленость, действительно, если убрать лишние поля из группировки (и из запроса, соответственно на выходе), то все правильно группируется, т.е. в одну строку.
Закон Брукера: Даже маленькая практика стоит большой теории.