Умови у запиті

Контрагенти

Умови можуть бути розміщені в 4 місцях:

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

Особливості використання умовних операторів:

  • Оператори порівняння
  • ">"(більше)," "(не рівно),
  • «В()» (У якомусь масиві, параметрі, у вкладеному запиті),
  • «В ІЄРАРХІЇ()» (у групі довідника, плану видів характеристик, переданих у дужках),
  • «ПОДІБНО» (оператор порівняння над рядковим значенням), ПОСИЛАННЯ (для перевірки на збіг посилальним типом)
  • оператор заперечення «НЕ» ставиться на початку виразу через пропуск, наприклад: НЕ 1 = 2
  • оператори угруповання умов: «І», «АБО»,»()» Наприклад: (1 = 2) І (3<>4)
  • Булеве значення ІСТИНА, брехня, наприклад: (1 = 2) = Брехня
  • Ці оператори можна використовувати у всіх 4 ситуаціях, але контекст (навколишні змінні у них відрізняються).

    У перших двох випадках умови накладаються на поля вибірки, наприклад:

    ВИБРАТИ Посилання З Довідник.Контрагенти ЯК СпрКонтрагенти ДЕ СпрКонтрагенти.ІНН<>""

    Звернення йде через ім'я таблиці (у простих запитах може опускатися, але у складних може викликати неоднозначність поля).

    Ця умова викликає обмеження вибірки (зазвичай зменшує її)

    У конструкторі запиту знаходяться на вкладці умови:

    Контрагенти

    У довільному варіанті пишеться текстом, у звичайному вибирається поле, оператор порівняння та значення:

    ВИБІР КОЛИ

    Цей умовний оператор використовується для перетворення значення, обмежує жвибірку коли розташований після службового слова ДЕ. Припустимо кілька підлеглих умов. Може перебувати у полях вибірки, полях умов ДЕ, угруповань, підсумків (універсальний оператор для складних умов)

    Наприклад, так виглядає варіант перетворення:

    ВИБРАТИ ВИБІР КОЛИ 1 = 2 ТОДІ "Ніколи не буде істиною" КОЛИ 1 = 1 ТОДІ "Завжди буде істиною" ІНАЧЕ ДАТАВРЕМЯ(1, 1, 1) КІНЕЦЬ ЯК ПолеУявленняЗначення

    Варіант використання за умови ДЕ, результат вибірки повинен повертати булеве значення або порівнюватися з чимось ще

    Приклад № 1

    ВИБРАТИ Посилання З Довідник.Контрагенти ЯК ДО ДЕ ВИБІР КОЛИ К.ІНН = ""

    Приклад № 2:

    ВИБРАТИ Посилання З Довідник.Контрагенти ЯК ДО ДЕ ВИБІР КОЛИ К.ІНН = "" ТОДИ" "ІНАЧЕ "Заповнено"

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

    У разі оперування йде з полями таблиць, наприклад ресурсами, вимірами, реквізитами. У умовах звернення йде без точки (контекст цього вимагає).

    ВИБРАТИ * З РеєстрВідомостей.КурсиВалют.ЗрізОстанніх(, Валюта.Код = "RUR")

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

    ВИБІР КОЛИ

    Варто зазначити, що зазвичай використовується обмеження над вимірами, тому що інакше умова віднесеться до вибірки для отримання, а не на результат (на ресурси обмеження слід накласти в операторі ДЕ, щоб отримати очікуваний результат).

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

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

    ВИБРАТИ Контрагенти.ІНН, КІЛЬКІСТЬ(РІЗНІ Контрагенти.Посилання) ЯК Посилання З Довідник.Контрагенти ЯК Контрагенти

    ЗГРУПУВАТИ ПО Контрагенти.ІНН

    МАЮЧІ КІЛЬКІСТЬ(РІЗНІ Контрагенти.Посилання) > 1 І Контрагенти. ІПН <> ""

    У цю вибірку потраплять дублі ІПН, коли вона взагалі заповнена.

    У конструкторі запиту також знаходиться на вкладці умови

    запиті

    У цій конструкції також можливе використання «групувальних» операторів І,АБО, але порівнювати можна з константами запиту, з функцією або значенням, що входить до угруповання (інші реквізити довідника в даному прикладі не будуть доступні для порівняння - тоді слід використовувати ДЕ).