Наткнулся на странное поведение выражения ВЫБРАТЬ в запросе отчета.
Если в пакете запросов в каком-то из промежуточных запросов есть ВЫБРАТЬ РАЗЛИЧНЫЕ, то в последнем запросе пакета ВЫБРАТЬ работает как ВЫБРАТЬ РАЗЛИЧНЫЕ.

Версия платформы: учебная версия 8.3.13.1644.

Подробности

Для начала такой запрос. Тут все хорошо.

```1c
    ВЫБРАТЬ
    1 КАК Поле1,
    2 КАК Поле2,
    35 КАК Поле3
    ПОМЕСТИТЬ ВТ1

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

    ВЫБРАТЬ
    1,
    2,
    48
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ.Поле1 КАК Поле1,
    ВТ.Поле2 КАК Поле2
    ИЗ
    ВТ1 КАК ВТ
```

Отчет выводит 2 одинаковые строки, как и ожидалось.

Теперь так:

```1c
    ВЫБРАТЬ
    1 КАК Поле1,
    2 КАК Поле2,
    35 КАК Поле3
    ПОМЕСТИТЬ ВТ1

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

    ВЫБРАТЬ
    1,
    2,
    48
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВТ1.Поле1 КАК Поле1,
    ВТ1.Поле2 КАК Поле2,
    ВТ1.Поле3 КАК Поле3
    ПОМЕСТИТЬ ВТ
    ИЗ
    ВТ1 КАК ВТ1
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ.Поле1 КАК Поле1,
    ВТ.Поле2 КАК Поле2
    ИЗ
    ВТ КАК ВТ
```

Отчет выводит 1 строку.

Исправим конец:

```1c
    ВЫБРАТЬ
    ВТ.Поле1 КАК Поле1,
    ВТ.Поле2 КАК Поле2,
    ВТ.Поле3 КАК Поле3
    ИЗ
    ВТ КАК ВТ
```

Отчет выводит 2 строки, если Поле3 отображается, и 1 строку, если Поле3 не отображается.

А теперь вот так:

```1c
    ВЫБРАТЬ
    ВТ.Поле1 КАК Поле1,
    КОЛИЧЕСТВО(ВТ.Поле2) КАК Поле2
    ИЗ
    ВТ КАК ВТ

    СГРУППИРОВАТЬ ПО
    ВТ.Поле1
```

Отчет выводит строку

1 1

И что мне делать с этой оптимизацией, если мне нужно посчитать сумму или количество, а Поле3 видеть не хочется?
---
в результирующий запрос пробрасываете все нужные поля. Для Поле3 указываете "Обязательное". Агрегацию делаете не в запросе, а на закладе Ресурсы. Группировку в СКД по Поле1.
---
это все решаемо. На скрине же одна строчка :)
---
добавить эти поля в выбранные поля корня. А в группировках выбранные поля убрать Авто и прописать, какие выводить.
---
8.3.13.1644

Выпущенная 4.5 года назад

На 8.3.22.1923 выводит 2 строчки при любом варианте(последний запрос 1 2)
---
Выпущенная 4.5 года назад

А вот это не аргумент.
Если б речь шла о 8.1 или первых релизах 8.3, еще можно было бы понять.
Но 8.3.13!
Тот же самый глюк можно ожидать в любой актуальной версии.
---
Перебрал учебные версии вплоть до 8.3.23.1688 - везде одно и то же.
Что я делаю не так?
---
СКД?
---
Да, в СКД.
---
Ниже уже все объяснили
---
в результирующий запрос пробрасываете все нужные поля. Для Поле3 указываете "Обязательное". Агрегацию делаете не в запросе, а на закладе Ресурсы. Группировку в СКД по Поле1.
---
Да, вот это помогло.
Спасибо.

Кстати, выбор "Обязательно" в Роли помогает при выводе просто полей, но мешает при агрегации.
Тогда в отчете получаются две строки, обе правильные, но одна лишняя ;)
---
это все решаемо. На скрине же одна строчка :)
---
За схему спасибо, посмотрел, как делать.
Но я с ума сойду с этой СКД.

В общем, в реальной задаче примерно таким запросом отбираются элементы справочника.
А потом к ним пристегивается их же табличная часть.
И оттуда некоторые поля выводятся в отчет, а некоторые нужны только для сортировки и условного форматирования.
Но!
Но СКД виднее, что мне нужно.
Раз не вывожу поля в отчет, она их игнорит, а сортировка и условное форматирование не работают.
Волшебное слово "Обязательное" прописал.
Тоже не работает.
А вот если вывести эти поля в отчете, то и сортировка, и форматирование вдруг появляются.
Ну и как тут быть?
Мне поля в отчете не нужны, мне сортировка и форматирование по ним нужны.
---
добавить эти поля в выбранные поля корня. А в группировках выбранные поля убрать Авто и прописать, какие выводить.
---
Спасибо огромное! Заработало!

Но я точно с ума сойду с этой СКД ;)
---
Спасибо.
Могу перейти на учебную версию 8.3.23.1688, точнее, переходил уже, но вернулся из-за вечных глюков конфигуратора.
То у него буфер копирования не копирует, то еще чего-то, уже не помню.
В общем, задолбал он меня своими приколами.
---
В СКД убери фигурные скобки {} в запросе везде и всё что в них внутри тоже.
В консоли запросов работает нормально. И всегда работало нормально. СКД всегда пытается додумать за тебя, где это нужно и где это не нужно. В итоге логика запроса в СКД может сломаться на раз, два, три.
В СКД запросы работают стабильно одинаково, если СКД используют только для вывода значений и формирование печатной формы. В остальных случаях зависит от того, кто с помощью СКД разрабатывает. На сколько он знает как с СКД работать аккуратно. :-)
В вашем случае нет Поля3 в результирующем запросе СКД везде его рубит, как будто его и не было. В итоге получается не то, что вам нужно.
Другими словами, СКД выполняет не изначальный текст запроса, а модифицированный (обрезанный) в зависимости от необходимых полей на выходе.
Консоль запросов всегда выполняет, то что написали.
В СКД если логика такова, что Поле3 должно присутствовать всегда, в не зависимости от, того какая информация используется на выходе СКД, то об этом СКД надо проговаривать. По умолчанию рубит.
---
Да, я уже сталкивался с таким поведением.
К примеру, если нужно сделать сортировку по полям группировки отчета, то нужно прописывать ее в запросе.
Но поля, выбранные для сортировки в запросе, используются с этой целью, только если они востребованы в самом отчете или его настройках (непосредственно выводятся, проверяются при условном форматировании и т.д.).
Утомил уже этот ИИ.