В отчете ВЫБРАТЬ ведет себя как ВЫБРАТЬ РАЗЛИЧНЫЕ
Наткнулся на странное поведение выражения ВЫБРАТЬ в запросе отчета.
Если в пакете запросов в каком-то из промежуточных запросов есть ВЫБРАТЬ РАЗЛИЧНЫЕ, то в последнем запросе пакета ВЫБРАТЬ работает как ВЫБРАТЬ РАЗЛИЧНЫЕ.
Версия платформы: учебная версия 8.3.13.1644.
Подробности
Для начала такой запрос. Тут все хорошо.
Отчет выводит 2 одинаковые строки, как и ожидалось.
Теперь так:
Отчет выводит 1 строку.
Исправим конец:
Отчет выводит 2 строки, если Поле3 отображается, и 1 строку, если Поле3 не отображается.
А теперь вот так:
Отчет выводит строку
1 1
И что мне делать с этой оптимизацией, если мне нужно посчитать сумму или количество, а Поле3 видеть не хочется?
Если в пакете запросов в каком-то из промежуточных запросов есть ВЫБРАТЬ РАЗЛИЧНЫЕ, то в последнем запросе пакета ВЫБРАТЬ работает как ВЫБРАТЬ РАЗЛИЧНЫЕ.
Версия платформы: учебная версия 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 видеть не хочется?
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(13) За схему спасибо, посмотрел, как делать.
Но я с ума сойду с этой СКД.
В общем, в реальной задаче примерно таким запросом отбираются элементы справочника.
А потом к ним пристегивается их же табличная часть.
И оттуда некоторые поля выводятся в отчет, а некоторые нужны только для сортировки и условного форматирования.
Но!
Но СКД виднее, что мне нужно.
Раз не вывожу поля в отчет, она их игнорит, а сортировка и условное форматирование не работают.
Волшебное слово "Обязательное" прописал.
Тоже не работает.
А вот если вывести эти поля в отчете, то и сортировка, и форматирование вдруг появляются.
Ну и как тут быть?
Мне поля в отчете не нужны, мне сортировка и форматирование по ним нужны.
Но я с ума сойду с этой СКД.
В общем, в реальной задаче примерно таким запросом отбираются элементы справочника.
А потом к ним пристегивается их же табличная часть.
И оттуда некоторые поля выводятся в отчет, а некоторые нужны только для сортировки и условного форматирования.
Но!
Но СКД виднее, что мне нужно.
Раз не вывожу поля в отчет, она их игнорит, а сортировка и условное форматирование не работают.
Волшебное слово "Обязательное" прописал.
Тоже не работает.
А вот если вывести эти поля в отчете, то и сортировка, и форматирование вдруг появляются.
Ну и как тут быть?
Мне поля в отчете не нужны, мне сортировка и форматирование по ним нужны.
(1) В СКД убери фигурные скобки {} в запросе везде и всё что в них внутри тоже.
В консоли запросов работает нормально. И всегда работало нормально. СКД всегда пытается додумать за тебя, где это нужно и где это не нужно. В итоге логика запроса в СКД может сломаться на раз, два, три.
В СКД запросы работают стабильно одинаково, если СКД используют только для вывода значений и формирование печатной формы. В остальных случаях зависит от того, кто с помощью СКД разрабатывает. На сколько он знает как с СКД работать аккуратно. :-)
В вашем случае нет Поля3 в результирующем запросе СКД везде его рубит, как будто его и не было. В итоге получается не то, что вам нужно.
Другими словами, СКД выполняет не изначальный текст запроса, а модифицированный (обрезанный) в зависимости от необходимых полей на выходе.
Консоль запросов всегда выполняет, то что написали.
В СКД если логика такова, что Поле3 должно присутствовать всегда, в не зависимости от, того какая информация используется на выходе СКД, то об этом СКД надо проговаривать. По умолчанию рубит.
В консоли запросов работает нормально. И всегда работало нормально. СКД всегда пытается додумать за тебя, где это нужно и где это не нужно. В итоге логика запроса в СКД может сломаться на раз, два, три.
В СКД запросы работают стабильно одинаково, если СКД используют только для вывода значений и формирование печатной формы. В остальных случаях зависит от того, кто с помощью СКД разрабатывает. На сколько он знает как с СКД работать аккуратно. :-)
В вашем случае нет Поля3 в результирующем запросе СКД везде его рубит, как будто его и не было. В итоге получается не то, что вам нужно.
Другими словами, СКД выполняет не изначальный текст запроса, а модифицированный (обрезанный) в зависимости от необходимых полей на выходе.
Консоль запросов всегда выполняет, то что написали.
В СКД если логика такова, что Поле3 должно присутствовать всегда, в не зависимости от, того какая информация используется на выходе СКД, то об этом СКД надо проговаривать. По умолчанию рубит.
(8) Да, я уже сталкивался с таким поведением.
К примеру, если нужно сделать сортировку по полям группировки отчета, то нужно прописывать ее в запросе.
Но поля, выбранные для сортировки в запросе, используются с этой целью, только если они востребованы в самом отчете или его настройках (непосредственно выводятся, проверяются при условном форматировании и т.д.).
Утомил уже этот ИИ.
К примеру, если нужно сделать сортировку по полям группировки отчета, то нужно прописывать ее в запросе.
Но поля, выбранные для сортировки в запросе, используются с этой целью, только если они востребованы в самом отчете или его настройках (непосредственно выводятся, проверяются при условном форматировании и т.д.).
Утомил уже этот ИИ.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот