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 заявки?
За да формирате условие за избор, трябва да подадете шаблон като параметър. За да създадете шаблон, има така наречените служебни символи.
Например знакът "%" позволява всяка поредица от произволни знаци:
Има и други Специални символи:
- % (процент) - позволява всяка последователност от произволни знаци;
- _ (долна черта) - всеки отделен знак;
- […] е един произволен знак от изброените в скобите. В допълнение към изброяването на знаци можете да използвате диапазони. Пример: а-о;
- [^…] – същото като предишното, но обратното. Знакът "^" означава отрицание.