Ситуация не нова, но есть нюанс: у меня СКД просто убирает в запросе одну из группировок.
В исходном запросе так: (кусочек кода)
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВТ_ИтогиПоРаботам_Предв.Номенклатура,
МАКСИМУМ(ВТ_ИтогиПоРаботам_Предв.Нормочас) КАК Нормочас,
<b>ВТ_ИтогиПоРаботам_Предв.СоставРабот</b>
ПОМЕСТИТЬ ВТ_ИтогПоРаботам_Предв2
ИЗ
ВТ_ИтогиПоРаботам_Предв КАК ВТ_ИтогиПоРаботам_Предв
СГРУППИРОВАТЬ ПО
ВТ_ИтогиПоРаботам_Предв.Номенклатура,
<b>ВТ_ИтогиПоРаботам_Предв.СоставРабот</b>
;
////////////////////////////////////////////////////////////////////////////////
Показать
В запросе СКД так:
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВТ_ИтогиПоРаботам_Предв.Номенклатура,
МАКСИМУМ(ВТ_ИтогиПоРаботам_Предв.Нормочас) КАК Нормочас
ПОМЕСТИТЬ ВТ_ИтогПоРаботам_Предв2
ИЗ
ВТ_ИтогиПоРаботам_Предв КАК ВТ_ИтогиПоРаботам_Предв
СГРУППИРОВАТЬ ПО
ВТ_ИтогиПоРаботам_Предв.Номенклатура
////////////////////////////////////////////////////////////////////////////////
Показать
т.е. просто убрана одна из группировок.
Мне нужно, так сказать, глобально понять: можно ли в СКД выполнить запрос "как есть"? Если да, то как это можно сделать? Или, если запрос не идеален, то СКД только добавит проблем.
(4) тогда смотрите что бы в результирующей выборке не было поля которое называется СоставРабот.
А вообще неплохо было бы запрос целиком
ПС: ради эксперимента поставьте на всех полях в ролях "Обязательное"
(6) "можно ли заставить СКД выполнить исходный запрос без изменений"
- можно! нужно поставить на ВСЕ поля в ролях (это все на закладке наборы данных) флаг "Обзязательное". Сделайте скриншот где вы ставите этот флаг "Обязательное", может вы его не там выставляете где то
(1) была аналогичная история, переписывал на вложенные запросы таблицу, которая пропадает. Понять логику СКД вряд ли в силах обычного человека, это монстр, а монстров можно только изучать - вечно и безнадежно. Тем более что этот монстр меняется как-то со временем, и результаты прошлых исследований могут вдруг потерять смысл.
Видимо, поле СоставРабот является одним из выходных полей. Поэтому оптимизатор себя так ведет.
Можно сделать так в упомянутом запросе задать синоним для этого поля, например СоставРабот КАК СоставРаботГруппировка, а в самом последнем запросе СКД переименовать это поле обратно : СоставРаботГруппировка КАК СоставРабот
СКД не должна влиять на этот участок запроса.
Каким образом вы это определили? Вытаскивался текст результирующего запроса набора данных или как-то косвенно?
Сильно подозреваю, что вы неправильно определили источник ваших проблем.
ЗЫ. Кстати, а зачем там "РАЗЛИЧНЫЕ"? Они и так не могут быть одинаковыми...
(13) Очень странно. Но можешь попробовать отключить автонастройки СКД.
В сложных многоэтапных запросах всегда отключаю. Как минимум, позволяет эффективно настроить вручную работу отборов ну и страхует от всяких неожиданностей.
(17) Лично меня этот ответ совершенно не радует. Ответ ни о чем. Для построения запроса есть консоль запроса. Если консоль запроса и СКД при одинаковых вводных возвращают разные результаты - значит эти инструменты сырые, недоработанные, и непригодные к использованию. И разработчики 1С сделали очередную "каку". Л
(21) СКД это мощный инструмент, который много делает "под капотом", все это настраивается очень многими параметрами. Если вы в них не разбирались, а используете "по умолчанию", то это проблема ваша, а не инструмента.
Никто никогда не видит даже двух галочек под запросом и никогда не меняет их.
Вот такой запрос ведет себя в СКД и консоли абсолютно по разному.
ВЫБРАТЬ
РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
РеализацияТоваровУслугТовары.Цена КАК Цена,
1 КАК КонтрольноеПоле
ПОМЕСТИТЬ ВыборкаИсходныхДанныхСГруппировкой
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
РеализацияТоваровУслугТовары.Ссылка.Проведен
СГРУППИРОВАТЬ ПО
РеализацияТоваровУслугТовары.Ссылка,
РеализацияТоваровУслугТовары.Номенклатура,
РеализацияТоваровУслугТовары.Цена
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВыборкаИсходныхДанныхСГруппировкой.Ссылка КАК Ссылка,
ВыборкаИсходныхДанныхСГруппировкой.Номенклатура КАК Номенклатура,
СУММА(ВыборкаИсходныхДанныхСГруппировкой.КонтрольноеПоле) КАК КонтрольноеПоле
ИЗ
ВыборкаИсходныхДанныхСГруппировкой КАК ВыборкаИсходныхДанныхСГруппировкой
СГРУППИРОВАТЬ ПО
ВыборкаИсходныхДанныхСГруппировкой.Ссылка,
ВыборкаИсходныхДанныхСГруппировкой.Номенклатура
Показать
А если бы это был какой либо промежуточный фильтр и сколько таких косяков в СКД можно наловить...
(18) так, а в чем отличие поведения? контрольное поле равно 1, а должно быть больше?
з.ы. для себя взял за правило, в последнем запросе никогда не использовать группировок.