1c 8.3 език за заявки е подобен. Като в условия на заявка

1c 8.3 език за заявки е подобен.  Като в условия на заявка
1c 8.3 език за заявки е подобен. Като в условия на заявка

Оператор КАТОви позволява да сравните в заявка данните от типа низ отляво на оператора с данните от типа низ отдясно на оператора. Резултатът от сравнението е True или False, така че сравнението може да се приложи като условие.

За оператор КАТОпредоставени са специални служебни знаци, които не се възприемат като низ:

  • Символ за процент "%": показва наличието на произволен брой произволни знаци в низа
  • "[...]" един или повече знаци в квадратни скоби: показва наличието на някой (единичен) от изброените знаци. Също така може да се посочи диапазон от знаци (например )
  • "_" долна черта: показва наличието на произволен знак
  • "[^...]" символ за отрицание: обозначава наличието на всеки отделен знак, различен от тези в квадратни скоби
Ако трябва да посочите един от горните специални знаци за сравнение, трябва да използвате ключовата дума "СПЕЦИАЛЕН ЗНАК"

Характеристики на използване с различни СУБД

IBM DB2" Само параметър може да бъде разположен отдясно на оператора LIKE. Единствените заместващи знаци са "_" (долна черта, означаваща произволен знак) и "%" (процент, означаващ последователност от всякакви знаци).
В случай на използване на СУБД " PostgreSQL" или " База данни на Oracle"специални знаци "квадратни скоби [...]" се приемат само ако са посочени от текста в заявката и НЕ се предават като параметър на заявката.

По този начин, в файлова базаспециалните символи винаги ще се възприемат по един и същи начин и по различни начини, в зависимост от използваната СУБД във версията клиент-сървър.

Пример: изберете продукти, съдържащи символа "%" в името

ИЗБЕРЕТЕ | Реф. връзка | ОТ | Справочник.Номенклатура AS Реф |КЪДЕ | Реф. име КАТО "%\%" СПЕЦИАЛЕН ЗНАК "\"

Пример: изберете продукти, чието име започва с думата "Резервоар"

ИЗБЕРЕТЕ | Реф. връзка | ОТ | Справочник.Номенклатура AS Реф |КЪДЕ | Име на реф. КАТО "Buck%"

Пример: изберете продукти, чието име завършва с цифра

ИЗБЕРЕТЕ | Реф. връзка | ОТ | Справочник.Номенклатура AS Реф |КЪДЕ | Реф. име КАТО "%"

КАТО- Оператор за проверка дали даден низ е подобен на шаблон. Аналог на LIKE в SQL.
Оператор КАТОви позволява да сравните стойността на израза, посочен вляво от него, с шаблонния низ, посочен вдясно. Стойността на израза трябва да е от тип низ. Ако стойността на израза съвпада с шаблона, резултатът от оператора е TRUE, в противен случай е FALSE.
Следните знаци в низа на шаблона са служебни и имат различно значение от символа на низа:
. % (процент): последователност, съдържаща произволен брой произволни знаци
. _ (долна черта): един произволен знак
. […] (един или повече знаци в квадратни скоби): всеки отделен знак, изброен в квадратни скоби
Изброяването може да съдържа диапазони, като a-z, което означава всеки знак в рамките на диапазона, включително краищата на диапазона.
. [^…] (в квадратни скоби знак за отрицание, последван от един или повече знака): всеки отделен знак, различен от изброените след знака за отрицание
Всеки друг символ означава себе си и не носи допълнително натоварване.
Ако е необходимо да се напише един от изброените знаци като себе си, тогава той трябва да бъде предшестван от<Спецсимвол>. себе си<Спецсимвол>(всеки подходящ знак) се дефинира в същия израз след ключова думаСПЕЦИАЛЕН СИМВОЛ.
Например, модел “%ABC[abc]\_abc%” СПЕЦИАЛЕН ЗНАК “\” означава подниз, състоящ се от поредица от знаци:
букви А; букви B; букви B; една цифра; една от буквите a, b, c или d; знак за подчертаване; букви а; букви b; букви в.
Освен това тази последователност може да бъде предшествана от произволен набор от знаци.

Примери за използване:
Код 1C v 8.x Процедура BankTextInputEnd(Element, Text, Value, StandardProcessing)
StandardProcessing = False;
//Направете заявка с търсене на модел като "%" +<Текст введенный пользователм в поле ввода> + "%"
Заявка = Нова заявка;
Query.SetParameter("Име", "%" + Текст + "%");
Query.Text = "ИЗБЕРЕТЕ
| Банки.Връзка
| ОТ
| Справочник Банки AS Банки
|КЪДЕ
| Банки.Името Е КАТО &Име";

Резултат = Request.Run();
Избор = Резултат.Избор();
Ако Result.Empty() Тогава
//Нищо не е намерено. Тук можете да покажете съобщение или да направите нещо друго :)
В противен случай
//Получаване на резултати
tzResults = Резултат.Разтоварване();
//Подгответе списък със стойности, които ще съдържат намерените елементи.
Стойност = Нов списък със стойности();
Value.LoadValues(tzResults.UnloadColumn("Връзка"));
EndIf;
EndProcedure

Необходимо е само имената на Основното споразумение и т.н. да попадат в „Споразуменията по подразбиране“:
Код 1C v 8.x Избор
Когато Името Е КАТО "Споразумение #%", тогава "Споразумение #" //Всеки ред, който започва с "Споразумение #", отговаря на изискванията
Когато Името е КАТО "Основен договор%[^А-яЁё"+Символ(33)+"-"+Символ(126)+"№"""+Символи.PS+Символи.Tab+Символи.PF+Символи. NPP+ Symbols.VTab+"]%" след това "Споразумения по подразбиране" //Всеки низ, който започва с "Основно споразумение", ще свърши работа
Друго "Друго"
Край като вид договор

Информацията е взета от сайта

Помислете за предназначението и употребата на условния оператор КАТОв езика за заявки 1C в примери.

Бързо преминаване

предназначение

Проверете дали стойността на низа в заявката отговаря на указания шаблон - връща стойност от булев тип (ВЯРНО или НЕВЯРНО).

  • Проверката на регистъра е независима.
  • Заявката използва индекси на таблици - не са свързани с индекси за търсене в пълен текст.
  • За големи маси може да отнеме много време.
  • Низове с неограничена дължина трябва да се преобразуват с помощта на функцията SUBSTRING

Места на употреба

  • В операторски условия WHERE
  • По отношение на дизайна ИЗБОР КОГА<>ТОГАВА "" ИНАЧЕ "" КРАЙ
  • В полетата за избор (например: име LIKE & параметър, подобен на подходящ низ)

Описание на синтаксиса на оператора LIKE

Параметърът на оператора трябва да бъде низ: той може да бъде зададен като константа или да бъде предаден като параметър на заявка.

Литералите (маските), посочени по-долу, могат да се използват заедно и поотделно.

Точна спецификация на низа

ИЗБЕРЕТЕ първите 10
Ключове. Име
ОТ
Directory.Keys AS ключове
КЪДЕТО
Keys.Name LIKE "1"//Еквивалентно на Keys.Name ="1"

Резултат:

% е буквален, означаващ произволен брой произволни знаци

ИЗБЕРЕТЕ първите 10
Ключове. Име
ОТ
Directory.Keys AS ключове
КЪДЕТО
Keys.Name КАТО "%"

Резултат: всякакви 10 елемента

_ (долна черта): литерал, който съответства на всеки отделен знак

Пример #1:

ИЗБЕРЕТЕ първите 10
Ключове. Име
ОТ
Directory.Keys AS ключове
КЪДЕТО
Keys.Name КАТО "_"

Пример #2:започвайки с произволен знак, последван от "1", последван от произволни знаци

ИЗБЕРЕТЕ първите 10
Ключове. Име
ОТ
Directory.Keys AS ключове
КЪДЕТО
Keys.Name КАТО "_1%"

Резултат:

(един или повече знака в квадратни скоби)

  • Всеки литерал, който съвпада с всеки един знак, се използва като ИЛИ.
    Позволен е диапазон, например a-z,0-5, което означава произволен знак от посочения диапазон

Пример

ИЗБЕРЕТЕ първите 10
Ключове. Име
ОТ
Directory.Keys AS ключове
КЪДЕТО
Keys.Name КАТО "[ls]%"

Резултат: 10 започващи с "l" или "z"

Пример:започвайки с 5,6,7

ИЗБЕРЕТЕ първите 10
Ключове. Име
ОТ
Directory.Keys AS ключове
КЪДЕТО
Keys.Name КАТО "%"

Резултат:

[^] (в квадратни скоби, иконата за изключение ^, последвана от един или повече знака)

Еквивалентен на всеки знак (_) с изключение на посочения ()

Пример

ИЗБЕРЕТЕ първите 10
Ключове. Име
ОТ
Directory.Keys AS ключове
КЪДЕТО
Keys.Name КАТО "8.[^012]%" // не включва 8.0,8.1,8.2

Резултат: всички започват с "8." с изключение на тези

SPECIAL CHARACTER - команда за указване на символите, регистрирани по-горе в заявката

Като служебен символ е допустимо да се използват поне: #, ~, /, \

Пример:

ИЗБЕРЕТЕ първите 10
Ключове. Име
ОТ
Directory.Keys AS ключове
КЪДЕТО
Keys.Name КАТО "#_" СПЕЦИАЛЕН ЗНАК "#"

Резултат:

Приложимост между платформи

Невалидни параметри като LIKE<>

  • Предава се параметър, който не е тип низ: например числото 1 вместо низа "1"
  • Поле от тип без низ се сравнява с валидна маска (например препратка) или, когато е свързано, стойността не се проверява за NUL

Обърнете внимание на текста на грешката, където се показва въпросът:

Keys.Name LIKE<>&L

Понякога възниква ситуация, когато в 1C 8.3 или 8.2 трябва да направите избор, например, от директория на всички елементи, които имат думата „глазура“ в имената си. Или от указателя изберете всички контрагенти, чиито фамилни имена съдържат думата "Иван". Като цяло проверете някаква стойност на низ.

За това има оператор в заявки 1C 8.3 и 8.2 - „Харесва ми“. Използва се съответно при условия:

Вземете 267 1C видео урока безплатно:

Как да използвате шаблони в 1C заявки?

За да формирате условие за избор, трябва да подадете шаблон като параметър. За да създадете шаблон, има така наречените служебни символи.

Например знакът "%" позволява всяка поредица от произволни знаци:

Има и други Специални символи:

  • % (процент) - позволява всяка последователност от произволни знаци;
  • _ (долна черта) - всеки отделен знак;
  • […] е един произволен знак от изброените в скобите. В допълнение към изброяването на знаци можете да използвате диапазони. Пример: а-о;
  • [^…] – същото като предишното, но обратното. Знакът "^" означава отрицание.