И снова разные результаты СКД и Консоли запросов.

1. SvetaH 8 16.01.18 09:46 Сейчас в теме
Доброго времени суток.

Ситуация не нова, но есть нюанс: у меня СКД просто убирает в запросе одну из группировок.

В исходном запросе так: (кусочек кода)
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ВТ_ИтогиПоРаботам_Предв.Номенклатура,
	МАКСИМУМ(ВТ_ИтогиПоРаботам_Предв.Нормочас) КАК Нормочас,
	ВТ_ИтогиПоРаботам_Предв.СоставРабот
ПОМЕСТИТЬ ВТ_ИтогПоРаботам_Предв2
ИЗ
	ВТ_ИтогиПоРаботам_Предв КАК ВТ_ИтогиПоРаботам_Предв

СГРУППИРОВАТЬ ПО
	ВТ_ИтогиПоРаботам_Предв.Номенклатура,
	ВТ_ИтогиПоРаботам_Предв.СоставРабот
;

////////////////////////////////////////////////////////////­////////////////////
Показать



В запросе СКД так:

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ВТ_ИтогиПоРаботам_Предв.Номенклатура,
	МАКСИМУМ(ВТ_ИтогиПоРаботам_Предв.Нормочас) КАК Нормочас
	
ПОМЕСТИТЬ ВТ_ИтогПоРаботам_Предв2
ИЗ
	ВТ_ИтогиПоРаботам_Предв КАК ВТ_ИтогиПоРаботам_Предв

СГРУППИРОВАТЬ ПО
	ВТ_ИтогиПоРаботам_Предв.Номенклатура
	
////////////////////////////////////////////////////////////­////////////////////
Показать


т.е. просто убрана одна из группировок.

Мне нужно, так сказать, глобально понять: можно ли в СКД выполнить запрос "как есть"? Если да, то как это можно сделать? Или, если запрос не идеален, то СКД только добавит проблем.

(как это обсуждалось, например, здесь https://forum.infostart.ru/forum9/topic95749/. В итоге рекомендуется начинать с запроса и прежде всего убирать косяки там)
По теме из базы знаний
Найденные решения
17. SvetaH 8 22.01.18 11:14 Сейчас в теме
Итак, резюме: для СКД должен быть грамотный и красивый запрос.

Попытка "пойти в обход" и избавиться от дублей с помощью функции МАКСИМУМ сработала в консоли, но в СКД начались чудеса.

Поэтому помогла переделка и оптимизация запроса.


Еще раз спасибо всем, кто проявил участие.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. AllexSoft 16.01.18 11:19 Сейчас в теме
(1) Что бы СКД ничего не убирал надо в Ролях вашего поля поставить флаг "Обязательное"
4. SvetaH 8 16.01.18 12:50 Сейчас в теме
Видимо, нужно было специально заострить внимание: этот фокус происходит в одной из промежуточных временных таблиц.

Поэтому, к сожалению, предложение (1) реализовать невозможно;

предложение (2) результата не дало: в самом последнем запросе это поле вообще не участвует
5. AllexSoft 16.01.18 13:07 Сейчас в теме
(4) тогда смотрите что бы в результирующей выборке не было поля которое называется СоставРабот.
А вообще неплохо было бы запрос целиком
ПС: ради эксперимента поставьте на всех полях в ролях "Обязательное"
6. SvetaH 8 16.01.18 13:53 Сейчас в теме
(5) В результирующей выборке нет поля "СоставРабот".

Весь запрос нет смысла смотреть (он огромен и нет смысла отвлекать уважаемую публику :-) )

Вопрос не "как оптимизировать запрос", а "можно ли заставить СКД выполнить исходный запрос без изменений".

Пока получается, что нет :-(
7. AllexSoft 16.01.18 15:24 Сейчас в теме
(6) "можно ли заставить СКД выполнить исходный запрос без изменений"
- можно! нужно поставить на ВСЕ поля в ролях (это все на закладке наборы данных) флаг "Обзязательное". Сделайте скриншот где вы ставите этот флаг "Обязательное", может вы его не там выставляете где то
8. SvetaH 8 16.01.18 16:02 Сейчас в теме
(7) Выставила. Скрин прилагаю.

Но не помогло: режется не конечное поле, а во временной ТЗ.

Была еще идея временные таблицы заменить на вложенные запросы...

Но я уже склоняюсь к мысли, что придется мне отчет просто переписать...

Shit happens, как говорится....
Прикрепленные файлы:
9. ЧерныйКот 16.01.18 16:26 Сейчас в теме
(8) включите это поле в состав выходных полей) либо напрямую либо в ресурсы
10. SvetaH 8 16.01.18 17:01 Сейчас в теме
(9) Не получится: это одна их промежуточных виртуальных таблиц.

Если я потащу это поле до выходной таблицы, смысл этой таблицы пропадет...
12. AllexSoft 17.01.18 10:03 Сейчас в теме
(10)что то странное, поможет только полный текст запроса.
15. starjevschik 17.01.18 12:02 Сейчас в теме
(1) была аналогичная история, переписывал на вложенные запросы таблицу, которая пропадает. Понять логику СКД вряд ли в силах обычного человека, это монстр, а монстров можно только изучать - вечно и безнадежно. Тем более что этот монстр меняется как-то со временем, и результаты прошлых исследований могут вдруг потерять смысл.
2. json 3309 16.01.18 10:00 Сейчас в теме
Видимо, поле СоставРабот является одним из выходных полей. Поэтому оптимизатор себя так ведет.
Можно сделать так в упомянутом запросе задать синоним для этого поля, например СоставРабот КАК СоставРаботГруппировка, а в самом последнем запросе СКД переименовать это поле обратно : СоставРаботГруппировка КАК СоставРабот
11. herfis 499 16.01.18 17:41 Сейчас в теме
СКД не должна влиять на этот участок запроса.
Каким образом вы это определили? Вытаскивался текст результирующего запроса набора данных или как-то косвенно?
Сильно подозреваю, что вы неправильно определили источник ваших проблем.
ЗЫ. Кстати, а зачем там "РАЗЛИЧНЫЕ"? Они и так не могут быть одинаковыми...
13. SvetaH 8 17.01.18 11:55 Сейчас в теме
(11) Вытаскивался текст результирующего запроса из "Консоли компоновки" и сравнивался с исходным.

РАЗЛИЧНЫЕ, чтобы дублей не было...
16. herfis 499 17.01.18 12:31 Сейчас в теме
(13) Очень странно. Но можешь попробовать отключить автонастройки СКД.
В сложных многоэтапных запросах всегда отключаю. Как минимум, позволяет эффективно настроить вручную работу отборов ну и страхует от всяких неожиданностей.
14. SvetaH 8 17.01.18 12:01 Сейчас в теме
Коллеги, всем большое спасибо за советы (и тем, кто уже написал и тем, кто еще, может быть напишет).

Я решила все переделать.

По результатам отпишусь.

P/S Не обижайтесь, если какое-то время не буду отвечать на сообщения (буду занята переделкой отчета :-))
17. SvetaH 8 22.01.18 11:14 Сейчас в теме
Итак, резюме: для СКД должен быть грамотный и красивый запрос.

Попытка "пойти в обход" и избавиться от дублей с помощью функции МАКСИМУМ сработала в консоли, но в СКД начались чудеса.

Поэтому помогла переделка и оптимизация запроса.


Еще раз спасибо всем, кто проявил участие.
21. user1273498 12 09.02.24 10:54 Сейчас в теме
(17) Лично меня этот ответ совершенно не радует. Ответ ни о чем. Для построения запроса есть консоль запроса. Если консоль запроса и СКД при одинаковых вводных возвращают разные результаты - значит эти инструменты сырые, недоработанные, и непригодные к использованию. И разработчики 1С сделали очередную "каку". Л
22. wertep 23 09.02.24 11:38 Сейчас в теме
(21) СКД это мощный инструмент, который много делает "под капотом", все это настраивается очень многими параметрами. Если вы в них не разбирались, а используете "по умолчанию", то это проблема ваша, а не инструмента.
Никто никогда не видит даже двух галочек под запросом и никогда не меняет их.
18. MainUser1C 1 21.08.20 14:36 Сейчас в теме
Я смотрю прошло два года а СКД и ныне там.

Вот такой запрос ведет себя в СКД и консоли абсолютно по разному.
ВЫБРАТЬ
	РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
	РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
	РеализацияТоваровУслугТовары.Цена КАК Цена,
	1 КАК КонтрольноеПоле
ПОМЕСТИТЬ ВыборкаИсходныхДанныхСГруппировкой
ИЗ
	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
	РеализацияТоваровУслугТовары.Ссылка.Проведен

СГРУППИРОВАТЬ ПО
	РеализацияТоваровУслугТовары.Ссылка,
	РеализацияТоваровУслугТовары.Номенклатура,
	РеализацияТоваровУслугТовары.Цена
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВыборкаИсходныхДанныхСГруппировкой.Ссылка КАК Ссылка,
	ВыборкаИсходныхДанныхСГруппировкой.Номенклатура КАК Номенклатура,
	СУММА(ВыборкаИсходныхДанныхСГруппировкой.КонтрольноеПоле) КАК КонтрольноеПоле
ИЗ
	ВыборкаИсходныхДанныхСГруппировкой КАК ВыборкаИсходныхДанныхСГруппировкой

СГРУППИРОВАТЬ ПО
	ВыборкаИсходныхДанныхСГруппировкой.Ссылка,
	ВыборкаИсходныхДанныхСГруппировкой.Номенклатура
Показать

А если бы это был какой либо промежуточный фильтр и сколько таких косяков в СКД можно наловить...
19. KovalOleg 33 25.08.20 16:34 Сейчас в теме
(18) так, а в чем отличие поведения? контрольное поле равно 1, а должно быть больше?
з.ы. для себя взял за правило, в последнем запросе никогда не использовать группировок.
20. MainUser1C 1 25.08.20 17:38 Сейчас в теме
(19) В СКД не складывает во второй выборке, в модуле все нормально.
Оставьте свое сообщение

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