Имя: Пароль:
1C
1С v8
Помогите разобраться с Запросом
0 Xamio
 
05.04.14
10:44
Следующий запрос выдаёт мне две строки:

№  Документ       Получатель            Адрес    Сумма    Вес    Обработан
0  Заказ покупателя  ИП Иванов И.И.    г.Омск,    5000    84    NULL
1  NULL            NULL        NULL    NULL    NULL    РеализацияТоваровИУслуг
А мне нужно эти две строки объединить в одну, вида:
№  Документ       Получатель            Адрес    Сумма    Вес    Обработан
0  Заказ покупателя  ИП Иванов И.И.    г.Омск,    5000    84    РеализацияТоваровИУслуг

ВЫБРАТЬ
    ТЧ.Ссылка КАК Ссылка,
    ТЧ.Ссылка.Контрагент КАК Контрагент,
    ТЧ.Ссылка.ПС_АдресДоставкиКонтрагента КАК Адрес,
    ТЧ.Ссылка.СуммаДокумента КАК Сумма,
    СУММА(ВЫБОР
            КОГДА ТЧ.ЕдиницаИзмерения.Вес = 0
                ТОГДА ТЧ.Номенклатура.ЕдиницаХраненияОстатков.Вес * ТЧ.Коэффициент
            ИНАЧЕ ТЧ.ЕдиницаИзмерения.Вес
        КОНЕЦ * ТЧ.Количество) КАК Вес,
    NULL КАК Обработка
ИЗ
    Документ.ЗаказПокупателя.Товары КАК ТЧ
ГДЕ
    ТЧ.Ссылка В(&МассивДок)

СГРУППИРОВАТЬ ПО
    ТЧ.Ссылка,
    ТЧ.Ссылка.Контрагент,
    ТЧ.Ссылка.ПС_АдресДоставкиКонтрагента,
    ТЧ.Ссылка.СуммаДокумента

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

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

СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслуг.Ссылка


МассивДок - массив в котором находится один элемент - ссылка на документ ЗаказПокупателя
1 йети
 
05.04.14
10:48
сделай как в книжках - сначала запрос с объединить во временную таблицу, потом временную таблицу сгруппировать
2 Xamio
 
05.04.14
11:04
(1) т.е. объединяемые запросы по отдельности не группировать, а сгруппировать только полученную временную таблицу?
3 Xamio
 
05.04.14
12:14
Упростил отчёт для наглядности:

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

после выполенения строки:
    Результат = Запрос.Выполнить().Выгрузить( ОбходРезультатаЗапроса.Прямой );
в Результате получаю следующую ТЧ:
Индекс    Ссылка1                                   Ссылка2
0    Заказ покупателя №1 от 17.04.2013    
1                                      Реализация товаров и услуг №5 от 18.04.2013

Почему эти записи не объединились? Как сделать чтобы обе ссылки были в одной строке?
4 Tateossian
 
05.04.14
12:22
Не слушай этого (1). Ты не сможешь их объединить, у тебя группировок нет. Либо юзай агрегатную функцию МАКСИМУМ.
5 Tateossian
 
05.04.14
12:23
(3) У тебя не подходит структура данных для твоей бизнес-логики.
6 Xamio
 
05.04.14
12:26
(5) извиняюсь, а если простыми словами?)
7 Xamio
 
05.04.14
12:28
(4) сделал так. объединилось.

    Запрос.Текст = "ВЫБРАТЬ
                   |    МАКСИМУМ(ВложенныйЗапрос.Ссылка1) КАК Ссылка1,
                   |    МАКСИМУМ(ВложенныйЗапрос.Ссылка2) КАК Ссылка2
                   |ИЗ
                   |    (ВЫБРАТЬ
                   |        ТЧТовары.Ссылка КАК Ссылка1,
                   |        NULL КАК Ссылка2
                   |    ИЗ
                   |        Документ.ЗаказПокупателя.Товары КАК ТЧТовары
                   |    ГДЕ
                   |        ТЧТовары.Ссылка В(&МассивДок)
                   |    
                   |    ОБЪЕДИНИТЬ ВСЕ
                   |    
                   |    ВЫБРАТЬ
                   |        NULL,
                   |        РеализацияТоваровУслуг.Ссылка
                   |    ИЗ
                   |        Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
                   |    ГДЕ
                   |        РеализацияТоваровУслуг.Сделка В(&МассивДок)
                   |        И НЕ РеализацияТоваровУслуг.ПометкаУдаления) КАК ВложенныйЗапрос";
8 Tateossian
 
05.04.14
12:48
(6) Тебе надо добавить в оба запроса поле "Сделка" и по нему группировать. И вот это >>НЕ РеализацияТоваровУслуг.ПометкаУдаления не кошерно, правильнее будет условие РеализацияТоваровУслуг.Проведен.
9 Tateossian
 
05.04.14
12:50
И для таких задач юзай регистры.
10 Xamio
 
05.04.14
13:05
(9) Спасибо!