1С запрос выбор когда тогда

1С запрос выбор когда тогда

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

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

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

Ниже приведен пример использования конструкций ВЫБОР КОГДА. ТИПЗНАЧЕНИЯ() и ТИП() в предикате "ВЫБРАТЬ" в запросе 1С.

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

Редактируем ВЫБОР. КОГДА.

Попытка напрямую использовать Функцию ТИПЗНАЧЕНИЯ() и ТИП() в предикате "ВЫБРАТЬ" вызывает фатальную ошибку в 1С.

Предлагаем решение Ваших задач 1С.

Внедрение 1С:

  • Организуем вам индивидуальное экспресс обучение программам 1С.
  • Мы поможем Вам начать работать с программами 1С.
  • Мы поможем Вам настроить ваши отчеты в 1С.
  • Установим и настроим 1С под ваши задачи.
  • Поможем сделать ввод начальных остатков по складам и контрагентам
  • Перенесем данные из старых систем.
  • Подскажем как избежать ошибок.

Доработка и сопровождение 1С:

  • Доработаем существующие или создадим новые печатных формы и документы.
  • Разработаем внешние отчеты по Вашим требованиям.
  • Напишем внешние обработоки по загрузке документов из учетных (торговых) систем в бухгалтерию.
  • Разработаем приложения для выгрузки данных на сайты.

Ориентировочная стоимость работ программиста 1С : 1 500 р. за 1 час работы.

Звоните: 8 916 710 83 51 Ольга

© j008.ru 2014 Обратная связь: j008@j008.ru

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

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

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

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

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

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

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

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

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

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

    ВЫБОР КОГДА

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

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

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

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

    Пример № 1

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

    Пример № 2:

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

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

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

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

    Читайте также:  Как пополнить киви кошелек наличными

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

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

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

    ИМЕЮЩИЕ

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

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

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

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

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

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

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

    Реклама побуждает людей жить не по средствам? То же самое можно сказать о браке.

    — Брюс Бартон, рекламный агент.

    Ссылка на основную публикацию
    Adblock detector