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

1. AnatolPopov 166 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 46 22.05.23 09:34 Сейчас в теме
(1)
8.3.13.1644


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

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


А вот это не аргумент.
Если б речь шла о 8.1 или первых релизах 8.3, еще можно было бы понять.
Но 8.3.13!
Тот же самый глюк можно ожидать в любой актуальной версии.
5. AnatolPopov 166 22.05.23 12:34 Сейчас в теме
(2) Перебрал учебные версии вплоть до 8.3.23.1688 - везде одно и то же.
Что я делаю не так?
6. RustamZz 22.05.23 14:23 Сейчас в теме
9. AnatolPopov 166 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 166 22.05.23 19:05 Сейчас в теме
(7) Да, вот это помогло.
Спасибо.

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

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

Но я точно с ума сойду с этой СКД ;)
3. AnatolPopov 166 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 166 22.05.23 19:12 Сейчас в теме
(8) Да, я уже сталкивался с таким поведением.
К примеру, если нужно сделать сортировку по полям группировки отчета, то нужно прописывать ее в запросе.
Но поля, выбранные для сортировки в запросе, используются с этой целью, только если они востребованы в самом отчете или его настройках (непосредственно выводятся, проверяются при условном форматировании и т.д.).
Утомил уже этот ИИ.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)