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

Имеем вот такой простой запрос в СКД:

```1c
    ВЫБРАТЬ
    1 КАК Поле1,
    20 КАК Поле2
    ПОМЕСТИТЬ вт
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВЫБОР
    КОГДА &Флаг
    ТОГДА вт.Поле1
    ИНАЧЕ вт.Поле2
    КОНЕЦ КАК ПолеИтоговое
    ИЗ
    вт КАК вт
```

Он будет работать, если парамет "Флаг" - обязательный (Использование = Всегда).
А как переделать данный зпрос, чтобы он работал с НЕобязательным параметром "Флаг" (Использование = Авто)?
Скажем, условия те же, но если параметр Флаг не используется (галка не установлена), чтобы в "ПолеИтоговое" попадало значение из поля "Поле1".
---
```1c
    ВЫБРАТЬ
    1 КАК Поле1,
    20 КАК Поле2
    ПОМЕСТИТЬ вт
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ ПЕРВЫЕ 1
    Вложенный.Поле1или2
    ИЗ
    (ВЫБРАТЬ
    вт.Поле1 КАК Поле1или2
    ИЗ
    вт КАК вт
    {ГДЕ
    (&Флаг = ИСТИНА)}

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    вт.Поле2
    ИЗ
    вт КАК вт
    {ГДЕ
    (&Флаг = ЛОЖЬ)}) КАК Вложенный
```
---
Правильный ответ был дан в (2). Можно, конечно, лепить запросы-уродцы:
```1c
    ВЫБРАТЬ
    1 КАК Число
    ПОМЕСТИТЬ Отбор
    {ГДЕ &Флаг = ИСТИНА}

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    0
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    1 КАК Поле1,
    20 КАК Поле2
    ПОМЕСТИТЬ ВТ
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ.Поле1 КАК ПолеИтоговое
    ИЗ
    ВТ КАК ВТ ГДЕ 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 Число ИЗ Отбор)

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ.Поле2
    ИЗ
    ВТ КАК ВТ ГДЕ 0 В (ВЫБРАТЬ ПЕРВЫЕ 1 Число ИЗ Отбор)
```
---
Необязательный параметр Флаг.
В запросе используем другой параметр Флаг1, для которого задано выражение

```1c
    ВЫБОР КОГДА &Флаг=НЕОПРЕДЕЛЕНО ТОГДА ЛОЖЬ ИНАЧЕ &Флаг КОНЕЦ
```
---
Обрабатывать ситуацию в "Прикомпоновкерезультата"
---
В прикомпановкерезультата - это да, там и чёрта лысова нарисовать можно. Хотелось бы знать (в целях саморазвития), можно ли без кодирования обойтись в данной ситуации? Может, как-то на закладке КомпоновкаДанных поиграться можно?
---
```1c
    ВЫБРАТЬ
    1 КАК Поле1,
    20 КАК Поле2
    ПОМЕСТИТЬ вт
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ ПЕРВЫЕ 1
    Вложенный.Поле1или2
    ИЗ
    (ВЫБРАТЬ
    вт.Поле1 КАК Поле1или2
    ИЗ
    вт КАК вт
    {ГДЕ
    (&Флаг = ИСТИНА)}

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    вт.Поле2
    ИЗ
    вт КАК вт
    {ГДЕ
    (&Флаг = ЛОЖЬ)}) КАК Вложенный
```
---
Ну раз так, то {ГДЕ &Флаг = ЛОЖЬ} – лишнее.
---
Не понял. Почему? Да точно.
---
Спасибо за подсказку. Но хотелось бы универсальности в плане того, что в первой временной таблице может быть не одна строка, а несколько (изначально не известно, сколько). Как обойтись без команды ВЫБРАТЬ ПЕРВЫЕ ... ?
---
Правильный ответ был дан в (2). Можно, конечно, лепить запросы-уродцы:
```1c
    ВЫБРАТЬ
    1 КАК Число
    ПОМЕСТИТЬ Отбор
    {ГДЕ &Флаг = ИСТИНА}

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    0
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    1 КАК Поле1,
    20 КАК Поле2
    ПОМЕСТИТЬ ВТ
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ.Поле1 КАК ПолеИтоговое
    ИЗ
    ВТ КАК ВТ ГДЕ 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 Число ИЗ Отбор)

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ.Поле2
    ИЗ
    ВТ КАК ВТ ГДЕ 0 В (ВЫБРАТЬ ПЕРВЫЕ 1 Число ИЗ Отбор)
```
---
Идея таже. Немного похоже на то, что Слава предложил, но только на соединениях. Попробуйте додумать сами.
---
Всем спасибо!
---
Необязательный параметр Флаг.
В запросе используем другой параметр Флаг1, для которого задано выражение

```1c
    ВЫБОР КОГДА &Флаг=НЕОПРЕДЕЛЕНО ТОГДА ЛОЖЬ ИНАЧЕ &Флаг КОНЕЦ
```
---
...
---
Действительно, можно через дополнительный параметр. Только у меня не срабатывает условие "КОГДА &Флаг=НЕОПРЕДЕЛЕНО ТОГДА ЛОЖЬ". Если галки использования не установлено, то &Флаг1 не равен ЛОЖЬ, а равен НЕОПРЕДЕЛЕНО. То есть, получается, можно просто установить выражение параметра Флаг1: &Флаг. А в запросе использовать уже &Флаг1 и иметь ввиду, что он может принимать три значения: Да, Нет и НЕОПРЕДЕЛЕНО.

И в самом запросе выражения типа "Выбор Когда &Флаг1 Тогда" или "Выбор Когда НЕ &Флаг1 Тогда" не прокатят, нужно писать "Выбор Когда &Флаг1 = ИСТИНА Тогда" или "Выбор Когда &Флаг1 = ЛОЖЬ Тогда", соответственно.
Спасибо!
---
А если добавить ещё второй дополнительный параметр &Флаг2, то ему можно прописать выражение ВЫБОР КОГДА &Флаг1=НЕОПРЕДЕЛЕНО ТОГДА ЛОЖЬ ИНАЧЕ &Флаг1 КОНЕЦ . И он уже будет принимать значения Истина или Ложь. Вернее, добавить &Флаг и &Флаг1, в запросе использовать &Флаг2, а на форме - &Флаг.