1С запрос выбор когда несколько условий

Условия в запросе могут быть расположены в 4 местах:

  • Основное место: после служебного слова ГДЕ тела запроса.
  • В конструкции ВЫБОР КОГДА
  • В параметрах виртуальных таблиц своство Условие
  • После служебного слова ИМЕЮЩИЕ для условия над уже рассчитанными итогами агрегатных функций.

Особенности использования условных операторов:

  • Операторы сравнения
  • «>»(больше),» »(не равно),
  • «В()» (В каком-то массиве, параметре, в вложенном запросе),
  • «В ИЕРАРХИИ()» (в группе справочника,плана видов характеристик, переданных в скобках),
  • «ПОДОБНО »(оператор сравнения над строковым значением), ССЫЛКА (для проверки на совпадение ссылочным типом)
  • оператор отрицания «НЕ» ставится в начале выражения через пробел, например: НЕ 1 = 2
  • операторы группировки условий: «И», «ИЛИ»,»()» Например: (1 = 2) И (3<>4)
  • булево значения ИСТИНА, ЛОЖЬ, например: (1 = 2) = ЛОЖЬ
  • Эти операторы возможно использовать во всех 4 ситуациях, но контекст (окружаемые переменные у них отличаются).

    В первых двух случаях условия накладываются на поля выборки, например:

    ВЫБРАТЬ Ссылка ИЗ Справочник.Контрагенты КАК СпрКонтрагенты ГДЕ СпрКонтрагенты.ИНН<>""

    Обращение идет через имя таблицы (в простых запросах может опускаться, но в сложных может вызывать неоднозначность поля).

    Данное условие вызывает ограничение выборки (обычно уменьшает ее)

    В конструкторе запроса находятся на вкладке условия:

    В произвольном варианте пишется текстом, в обычном выбирается поле, оператор сравнения и значение:

    ВЫБОР КОГДА

    Этот условный оператор используется для преобразования значения, ограничивает же выборку только когда расположен после служебного слова ГДЕ.
    Допустимо несколько подчиненных условий. Может находится в полях выборки, полях условий ГДЕ, группировок, итогов (универсальный оператор для сложных условий)

    Читайте также:  Чем рисовать на стекле чтобы не смывалось

    Например, так выглядит вариант преобразования:

    ВЫБРАТЬ
    ВЫБОР
    КОГДА 1 = 2
    ТОГДА "Никогда не будет истиной"
    КОГДА 1 = 1
    ТОГДА "Всегда будет истиной"
    ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
    КОНЕЦ КАК ПолеПредставленияЗначения

    Вариант использования в условии ГДЕ, результат выборки должен возвращать булево значение либо сравниваться с чем-то еще

    Пример № 1

    ВЫБРАТЬ Ссылка ИЗ Справочник.Контрагенты КАК К ГДЕ ВЫБОР КОГДА К.ИНН = "" ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ

    Пример № 2:

    ВЫБРАТЬ Ссылка ИЗ Справочник.Контрагенты КАК К ГДЕ ВЫБОР КОГДА К.ИНН = "" ТОГДА "" ИНАЧЕ "Заполнено" КОНЕЦ = "Заполнено"

    Параметры виртуальных таблиц

    В данном случае оперирование идет с полями таблиц, например ресурсами, измерениями, реквизитами. В этих условиях обращение идет без точки (контекст этого не требует).

    ВЫБРАТЬ * ИЗ РегистрСведений.КурсыВалют.СрезПоследних(, Валюта.Код = "RUR")

    В конструкторе запроса они находятся вот здесь:

    Стоит отметить, что обычно используется ограничение над измерениями, так как иначе условие отнесется к выборке для получения, а не на сам результат (на ресурсы ограничения следует наложить в операторе ГДЕ, чтобы получить ожидаемый результат).

    Накладывание условия в запросе на измерения, если нет обращения через точку (как в примере выше), ускоряет выборку: на больших таблицах, это будет визуально заметно; на небольших можно использовать как удобно.

    ИМЕЮЩИЕ

    Для наложения отбора для результата «группировочных» функции

    ВЫБРАТЬ
    Контрагенты.ИНН,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагенты.Ссылка) КАК Ссылка
    ИЗ
    Справочник.Контрагенты КАК Контрагенты

    СГРУППИРОВАТЬ ПО
    Контрагенты.ИНН

    ИМЕЮЩИЕ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагенты.Ссылка) > 1 И
    Контрагенты.ИНН <> ""

    В данную выборку попадут дубли ИНН, когда оно вообще заполнено.

    В конструкторе запроса также находится на вкладке условия

    В этой конструкции также возможно использование «группировочных» операторов И,ИЛИ, но сравнивать можно с константами запроса, с функцией или значением, входящим в группировку (другие реквизиты справочника в данном примере не будут доступны для сравнения -> тогда следует использовать ГДЕ).

    Клиент получает ту рекламу, которую он заслуживает!

    Войдите как ученик, чтобы получить доступ к материалам школы

    Читайте также:  Установка enigma2 на gi 8120 с флешки

    Язык запросов 1С 8.3 для начинающих программистов: условный оператор

    Автор уроков и преподаватель школы: Владимир Милькин

    Условный оператор в запросе

    Давайте напишем запрос, который получает названия и калорийность еды:

    А теперь добавим в результат запроса колонку, в которую будем выводить жирность еды по следующим правилам:

    • если калорийность меньше 100, то жирность низкая;
    • если калорийность от 100 до 200, то жирность нормальная;
    • если калорийность больше 200, то жирность высокая.

    Как этого можно добиться, ведь в таблице Справочник.Еда нет колонки Жирность?

    Оказывается, эту колонку мы можем добавить сами, используя условный оператор внутри запроса:

    Давайте внимательнее присмотримся к тексту запроса:

    В секции ВЫБРАТЬ идёт перечисление полей выборки: Наименование, Калорийность, а затем вместо третьего поля идёт конструкция условного оператора, результат которого и попадает в третью колонку.

    Условия оператора обрабатываются последовательно . Если одно из них оказалось верным, то в качестве результата возвращается соответствующее значение. Если же ни одно из условий не выполнилось, то возвращается значение из секции ИНАЧЕ.

    Поэтому новый запрос вернёт такую таблицу:

    Отступление

    Обратите внимание, что третья колонка в таблице, которую вернул запрос, называется Поле1. Это имя было сгенерировано системой автоматически, потому что третьей колонке не соответствует никакого реального поля в таблице Справочник.Еда, откуда можно было бы это имя получить.

    Но в наших силах дать ей это имя. Для этого сразу после описания поля нужно написать ключевое слово КАК, а после этого через пробел указать само имя. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Такое имя будет называться псевдонимом поля .

    Псевдонимы можно присваивать любым полям, в том числе тем, у которых уже есть имя. Давайте сделаем псевдоним Еда для поля Наименование:

    Но вернёмся к условному оператору в запросах.

    Читайте также:  Стиральная машина siemens advantiq x10 45 инструкция

    Более сложные логические выражения в условиях оператора

    В логических условиях оператора выбора можно использовать и более сложные выражения.

    Пример использования логического оператора ПОДОБНО:

    Пример использования функции ПОДСТРОКА:

    Более сложные результаты условного оператора

    Результатом условного оператора может быть не только строка, но и число, дата, булево или ссылочный тип. Это может быть или константа перечисленных выше типов или поле таблицы. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

    Приведу общий пример, демонстрирующий все указанные варианты:

    Оператор ВЫБОР в запросе 1С.

    Оператор ВЫБОР в запросе 1С.
    При помощи оператора Выбор, можно в запросе получить результат в зависимости от условий.

    Если Выражение1 равно ИСТИНА выполняется Выражение2. В противном случае выполняется Выражение3.

    Оцените статью
    Добавить комментарий

    Adblock detector