Доброго времени суток.

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

В исходном запросе так: (кусочек кода)

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

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

    ////////////////////////////////////////////////////////////­////////////////////
```

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

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

    ПОМЕСТИТЬ ВТ_ИтогПоРаботам_Предв2
    ИЗ
    ВТ_ИтогиПоРаботам_Предв КАК ВТ_ИтогиПоРаботам_Предв

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

    ////////////////////////////////////////////////////////////­////////////////////
```

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

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

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

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

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

Еще раз спасибо всем, кто проявил участие.
---
Что бы СКД ничего не убирал надо в Ролях вашего поля поставить флаг "Обязательное"
---
Видимо, нужно было специально заострить внимание: этот фокус происходит в одной из промежуточных временных таблиц.

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

 предложение (2) результата не дало: в самом последнем запросе это поле вообще не участвует
---
тогда смотрите что бы в результирующей выборке не было поля которое называется СоставРабот.
А вообще неплохо было бы запрос целиком
ПС: ради эксперимента поставьте на всех полях в ролях "Обязательное"
---
В результирующей выборке нет поля "СоставРабот".

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

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

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

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

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

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

Shit happens, как говорится....
---
включите это поле в состав выходных полей) либо напрямую либо в ресурсы
---
Не получится: это одна их промежуточных виртуальных таблиц.

Если я потащу это поле до выходной таблицы, смысл этой таблицы пропадет...
---
что то странное, поможет только полный текст запроса.
---
была аналогичная история, переписывал на вложенные запросы таблицу, которая пропадает. Понять логику СКД вряд ли в силах обычного человека, это монстр, а монстров можно только изучать - вечно и безнадежно. Тем более что этот монстр меняется как-то со временем, и результаты прошлых исследований могут вдруг потерять смысл.
---
Видимо, поле СоставРабот является одним из выходных полей. Поэтому оптимизатор себя так ведет.
Можно сделать так в упомянутом запросе задать синоним для этого поля, например СоставРабот КАК СоставРаботГруппировка, а в самом последнем запросе СКД переименовать это поле обратно : СоставРаботГруппировка КАК СоставРабот
---
СКД не должна влиять на этот участок запроса.
Каким образом вы это определили? Вытаскивался текст результирующего запроса набора данных или как-то косвенно?
Сильно подозреваю, что вы неправильно определили источник ваших проблем.
ЗЫ. Кстати, а зачем там "РАЗЛИЧНЫЕ"? Они и так не могут быть одинаковыми...
---
Вытаскивался текст результирующего запроса из "Консоли компоновки" и сравнивался с исходным.

РАЗЛИЧНЫЕ, чтобы дублей не было...
---
Очень странно. Но можешь попробовать отключить автонастройки СКД.
В сложных многоэтапных запросах всегда отключаю. Как минимум, позволяет эффективно настроить вручную работу отборов ну и страхует от всяких неожиданностей.
---
Коллеги, всем большое спасибо за советы (и тем, кто уже написал и тем, кто еще, может быть напишет).

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

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

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

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

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

Еще раз спасибо всем, кто проявил участие.
---
Лично меня этот ответ совершенно не радует. Ответ ни о чем. Для построения запроса есть консоль запроса. Если консоль запроса и СКД при одинаковых вводных возвращают разные результаты - значит эти инструменты сырые, недоработанные, и непригодные к использованию. И разработчики 1С сделали очередную "каку". Л
---
СКД это мощный инструмент, который много делает "под капотом", все это настраивается очень многими параметрами. Если вы в них не разбирались, а используете "по умолчанию", то это проблема ваша, а не инструмента.
Никто никогда не видит даже двух галочек под запросом и никогда не меняет их.
---
Я смотрю прошло два года а СКД и ныне там.

Вот такой запрос ведет себя в СКД и консоли абсолютно по разному.

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

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

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

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

А если бы это был какой либо промежуточный фильтр и сколько таких косяков в СКД можно наловить...
---
так, а в чем отличие поведения? контрольное поле равно 1, а должно быть больше?
з.ы. для себя взял за правило, в последнем запросе никогда не использовать группировок.
---
В СКД не складывает во второй выборке, в модуле все нормально.