СКД. Выбор поля в зависимости от использования НЕобязательного параметра
Доброго времени суток, всем!
Имеем вот такой простой запрос в СКД:
Он будет работать, если парамет "Флаг" - обязательный (Использование = Всегда).
А как переделать данный зпрос, чтобы он работал с НЕобязательным параметром "Флаг" (Использование = Авто)?
Скажем, условия те же, но если параметр Флаг не используется (галка не установлена), чтобы в "ПолеИтоговое" попадало значение из поля "Поле1".
Имеем вот такой простой запрос в СКД:
ВЫБРАТЬ
1 КАК Поле1,
20 КАК Поле2
ПОМЕСТИТЬ вт
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВЫБОР
КОГДА &Флаг
ТОГДА вт.Поле1
ИНАЧЕ вт.Поле2
КОНЕЦ КАК ПолеИтоговое
ИЗ
вт КАК вт
ПоказатьОн будет работать, если парамет "Флаг" - обязательный (Использование = Всегда).
А как переделать данный зпрос, чтобы он работал с НЕобязательным параметром "Флаг" (Использование = Авто)?
Скажем, условия те же, но если параметр Флаг не используется (галка не установлена), чтобы в "ПолеИтоговое" попадало значение из поля "Поле1".
По теме из базы знаний
Найденные решения
(1)
ВЫБРАТЬ
1 КАК Поле1,
20 КАК Поле2
ПОМЕСТИТЬ вт
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
Вложенный.Поле1или2
ИЗ
(ВЫБРАТЬ
вт.Поле1 КАК Поле1или2
ИЗ
вт КАК вт
{ГДЕ
(&Флаг = ИСТИНА)}
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
вт.Поле2
ИЗ
вт КАК вт
{ГДЕ
(&Флаг = ЛОЖЬ)}) КАК Вложенный
Показать
(7) Правильный ответ был дан в (2). Можно, конечно, лепить запросы-уродцы:
ВЫБРАТЬ
1 КАК Число
ПОМЕСТИТЬ Отбор
{ГДЕ &Флаг = ИСТИНА}
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
0
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
1 КАК Поле1,
20 КАК Поле2
ПОМЕСТИТЬ ВТ
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ.Поле1 КАК ПолеИтоговое
ИЗ
ВТ КАК ВТ ГДЕ 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 Число ИЗ Отбор)
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ.Поле2
ИЗ
ВТ КАК ВТ ГДЕ 0 В (ВЫБРАТЬ ПЕРВЫЕ 1 Число ИЗ Отбор)
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
ВЫБРАТЬ
1 КАК Поле1,
20 КАК Поле2
ПОМЕСТИТЬ вт
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
Вложенный.Поле1или2
ИЗ
(ВЫБРАТЬ
вт.Поле1 КАК Поле1или2
ИЗ
вт КАК вт
{ГДЕ
(&Флаг = ИСТИНА)}
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
вт.Поле2
ИЗ
вт КАК вт
{ГДЕ
(&Флаг = ЛОЖЬ)}) КАК Вложенный
Показать
(7) Правильный ответ был дан в (2). Можно, конечно, лепить запросы-уродцы:
ВЫБРАТЬ
1 КАК Число
ПОМЕСТИТЬ Отбор
{ГДЕ &Флаг = ИСТИНА}
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
0
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
1 КАК Поле1,
20 КАК Поле2
ПОМЕСТИТЬ ВТ
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ.Поле1 КАК ПолеИтоговое
ИЗ
ВТ КАК ВТ ГДЕ 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 Число ИЗ Отбор)
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ.Поле2
ИЗ
ВТ КАК ВТ ГДЕ 0 В (ВЫБРАТЬ ПЕРВЫЕ 1 Число ИЗ Отбор)
Показать
(11) Действительно, можно через дополнительный параметр. Только у меня не срабатывает условие "КОГДА &Флаг=НЕОПРЕДЕЛЕНО ТОГДА ЛОЖЬ". Если галки использования не установлено, то &Флаг1 не равен ЛОЖЬ, а равен НЕОПРЕДЕЛЕНО. То есть, получается, можно просто установить выражение параметра Флаг1: &Флаг. А в запросе использовать уже &Флаг1 и иметь ввиду, что он может принимать три значения: Да, Нет и НЕОПРЕДЕЛЕНО.
И в самом запросе выражения типа "Выбор Когда &Флаг1 Тогда" или "Выбор Когда НЕ &Флаг1 Тогда" не прокатят, нужно писать "Выбор Когда &Флаг1 = ИСТИНА Тогда" или "Выбор Когда &Флаг1 = ЛОЖЬ Тогда", соответственно.
Спасибо!
И в самом запросе выражения типа "Выбор Когда &Флаг1 Тогда" или "Выбор Когда НЕ &Флаг1 Тогда" не прокатят, нужно писать "Выбор Когда &Флаг1 = ИСТИНА Тогда" или "Выбор Когда &Флаг1 = ЛОЖЬ Тогда", соответственно.
Спасибо!
(11) А если добавить ещё второй дополнительный параметр &Флаг2, то ему можно прописать выражение ВЫБОР КОГДА &Флаг1=НЕОПРЕДЕЛЕНО ТОГДА ЛОЖЬ ИНАЧЕ &Флаг1 КОНЕЦ . И он уже будет принимать значения Истина или Ложь. Вернее, добавить &Флаг и &Флаг1, в запросе использовать &Флаг2, а на форме - &Флаг.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот