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