В отчете ВЫБРАТЬ ведет себя как ВЫБРАТЬ РАЗЛИЧНЫЕ

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

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

Подробности

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

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

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

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ.Поле1 КАК Поле1,
	ВТ.Поле2 КАК Поле2
ИЗ
	ВТ1 КАК ВТ
Показать

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

Теперь так:

ВЫБРАТЬ
	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 строку.

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

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

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

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

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

СГРУППИРОВАТЬ ПО
	ВТ.Поле1
Показать

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

1 1

И что мне делать с этой оптимизацией, если мне нужно посчитать сумму или количество, а Поле3 видеть не хочется?
По теме из базы знаний
Найденные решения
7. spacecraft 22.05.23 15:01 Сейчас в теме
(1) в результирующий запрос пробрасываете все нужные поля. Для Поле3 указываете "Обязательное". Агрегацию делаете не в запросе, а на закладе Ресурсы. Группировку в СКД по Поле1.
Прикрепленные файлы:
AnatolPopov; +1 Ответить
13. spacecraft 22.05.23 19:29 Сейчас в теме
(11) это все решаемо. На скрине же одна строчка :)
Прикрепленные файлы:
Схема.xml
AnatolPopov; +1 Ответить
15. spacecraft 24.05.23 12:55 Сейчас в теме
(14) добавить эти поля в выбранные поля корня. А в группировках выбранные поля убрать Авто и прописать, какие выводить.
AnatolPopov; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. laperuz 47 22.05.23 09:34 Сейчас в теме
(1)
8.3.13.1644


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

На 8.3.22.1923 выводит 2 строчки при любом варианте(последний запрос 1 2)
4. AnatolPopov 173 22.05.23 09:42 Сейчас в теме
(2)
Выпущенная 4.5 года назад


А вот это не аргумент.
Если б речь шла о 8.1 или первых релизах 8.3, еще можно было бы понять.
Но 8.3.13!
Тот же самый глюк можно ожидать в любой актуальной версии.
5. AnatolPopov 173 22.05.23 12:34 Сейчас в теме
(2) Перебрал учебные версии вплоть до 8.3.23.1688 - везде одно и то же.
Что я делаю не так?
6. RustamZz 22.05.23 14:23 Сейчас в теме
9. AnatolPopov 173 22.05.23 18:56 Сейчас в теме
10. RustamZz 22.05.23 18:57 Сейчас в теме
(9) Ниже уже все объяснили
7. spacecraft 22.05.23 15:01 Сейчас в теме
(1) в результирующий запрос пробрасываете все нужные поля. Для Поле3 указываете "Обязательное". Агрегацию делаете не в запросе, а на закладе Ресурсы. Группировку в СКД по Поле1.
Прикрепленные файлы:
AnatolPopov; +1 Ответить
11. AnatolPopov 173 22.05.23 19:05 Сейчас в теме
(7) Да, вот это помогло.
Спасибо.

Кстати, выбор "Обязательно" в Роли помогает при выводе просто полей, но мешает при агрегации.
Тогда в отчете получаются две строки, обе правильные, но одна лишняя ;)
13. spacecraft 22.05.23 19:29 Сейчас в теме
(11) это все решаемо. На скрине же одна строчка :)
Прикрепленные файлы:
Схема.xml
AnatolPopov; +1 Ответить
14. AnatolPopov 173 24.05.23 12:44 Сейчас в теме
(13) За схему спасибо, посмотрел, как делать.
Но я с ума сойду с этой СКД.

В общем, в реальной задаче примерно таким запросом отбираются элементы справочника.
А потом к ним пристегивается их же табличная часть.
И оттуда некоторые поля выводятся в отчет, а некоторые нужны только для сортировки и условного форматирования.
Но!
Но СКД виднее, что мне нужно.
Раз не вывожу поля в отчет, она их игнорит, а сортировка и условное форматирование не работают.
Волшебное слово "Обязательное" прописал.
Тоже не работает.
А вот если вывести эти поля в отчете, то и сортировка, и форматирование вдруг появляются.
Ну и как тут быть?
Мне поля в отчете не нужны, мне сортировка и форматирование по ним нужны.
15. spacecraft 24.05.23 12:55 Сейчас в теме
(14) добавить эти поля в выбранные поля корня. А в группировках выбранные поля убрать Авто и прописать, какие выводить.
AnatolPopov; +1 Ответить
16. AnatolPopov 173 24.05.23 13:13 Сейчас в теме
(15) Спасибо огромное! Заработало!

Но я точно с ума сойду с этой СКД ;)
3. AnatolPopov 173 22.05.23 09:38 Сейчас в теме
(2) Спасибо.
Могу перейти на учебную версию 8.3.23.1688, точнее, переходил уже, но вернулся из-за вечных глюков конфигуратора.
То у него буфер копирования не копирует, то еще чего-то, уже не помню.
В общем, задолбал он меня своими приколами.
8. Said-We 22.05.23 15:05 Сейчас в теме
(1) В СКД убери фигурные скобки {} в запросе везде и всё что в них внутри тоже.
В консоли запросов работает нормально. И всегда работало нормально. СКД всегда пытается додумать за тебя, где это нужно и где это не нужно. В итоге логика запроса в СКД может сломаться на раз, два, три.
В СКД запросы работают стабильно одинаково, если СКД используют только для вывода значений и формирование печатной формы. В остальных случаях зависит от того, кто с помощью СКД разрабатывает. На сколько он знает как с СКД работать аккуратно. :-)
В вашем случае нет Поля3 в результирующем запросе СКД везде его рубит, как будто его и не было. В итоге получается не то, что вам нужно.
Другими словами, СКД выполняет не изначальный текст запроса, а модифицированный (обрезанный) в зависимости от необходимых полей на выходе.
Консоль запросов всегда выполняет, то что написали.
В СКД если логика такова, что Поле3 должно присутствовать всегда, в не зависимости от, того какая информация используется на выходе СКД, то об этом СКД надо проговаривать. По умолчанию рубит.
AnatolPopov; +1 Ответить
12. AnatolPopov 173 22.05.23 19:12 Сейчас в теме
(8) Да, я уже сталкивался с таким поведением.
К примеру, если нужно сделать сортировку по полям группировки отчета, то нужно прописывать ее в запросе.
Но поля, выбранные для сортировки в запросе, используются с этой целью, только если они востребованы в самом отчете или его настройках (непосредственно выводятся, проверяются при условном форматировании и т.д.).
Утомил уже этот ИИ.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот