![]() |
|
Помогите разобраться с Запросом | ☑ | ||
---|---|---|---|---|
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) Спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |