Използването е подобно на заявка 1s 8.2. Подобно на условията на заявката

Въпреки всички недостатъци, търсенето в текстово поле все още е едно от най-популярните. Можем да намерим низови типове данни навсякъде – имена, номера на сметки, адреси, както и друга информация може да се съхранява в този формат. В заявки на вградения език 1C, за удобство на разработчиците, се използва специален оператор „КАТО“. Това е една от най-използваните команди, така че без задълбочено познаване на нейния синтаксис и възможности ще бъде трудно за програмиста да работи.

Използване на оператора LIKE

Преди да използвате всеки оператор на практика, трябва ясно да разберете неговата цел, места на приложение и синтаксис. Целта на използването на „ХАРЕСВАМ“ в заявка за 1C е да се провери дали условието, представено като шаблон, е изпълнено. Върнатата стойност е булев тип - вярно или невярно - показва дали определеното условие е вярно. Операторът LIKE може да се използва на няколко места в заявка:

  • В блока условия, обозначен с ключовата дума „WHERE”;
  • В дизайна на Choice When Then Otherwise End;
  • Директно в полетата за избор, в резултат на сравнение на полета.

Синтаксисът за проверка е винаги един и същ и се състои от 3 връзки. Отляво е текстовата стойност, която се проверява, след това самият оператор „LIKE“, а отдясно е шаблонът, който се проверява. За бързо и лесно създаване на шаблони има специални символи, които улесняват разработката:

  1. “%” е поредица от всякакви знаци с произволна дължина. Използва се за търсене на отделни думи или числа в низ;
  2. “_” – произволен единичен знак. Предназначен да посочи наличието на един знак;
  3. “[...]” е поредица от знаци за сравнение със знак в низ. С помощта на такъв образец се проверява съвпадението с някой от символите, изброени в скоби. Можете също да посочите диапазон от цифри или букви ([a-g], );
  4. „[^...]“ е обратният модел на предишния. Проверява се разликата между символите, посочени в реда, и тези, посочени в скоби.

За да разберем по-добре и разберем принципите за създаване на правилни шаблони, нека да разгледаме някои примери, които често се срещат в живота на разработчиците. Първият е, когато трябва да изберем от номенклатурния указател всички артикули, в имената на които фигурира думата „ФРЕЗАЧ“. В този случай трябва да използваме LIKE в условията на заявката:

SELECT Nomenclature.Name AS Name FROM Directory.Nomenclature AS Nomenclature WHERE Nomenclature.Name SIMILAR to "% CUTTER%"

Ако премахнем и двата символа „%“, заявката ще покаже продукт, чието име напълно съвпада с указаното в кавички. Ако оставим шаблона “CUTTER%” или “% CUTTER”, тогава резултатът ще бъде списък от елементи, завършващи или започващи съответно с дадена комбинация от знаци.


Нека да разгледаме един проблем, който може да обърка начинаещите програмисти, които не познават синтаксиса на заявката. Да приемем, че трябва да намерите всички елементи, които имат символа „%“ в имената си. Специално за случаите, когато трябва да търсите запазени символи, има оператор „специален символ“. #,\,/,~ и други знаци могат да се използват като специален знак, след което всички запазени знаци просто ще означават знак.

SELECT Nomenclature.Name AS Name FROM Directory.Nomenclature AS Nomenclature WHERE Nomenclature.Name SIMILAR to "%#%" СПЕЦИАЛЕН ЗНАК "#"

Ако трябва да използвате параметър при търсене, тогава променливата в заявката с параметъра SIMILAR се използва чрез добавяне. Не забравяйте, че параметърът трябва да е тип низ или ще трябва да го конвертирате в низ в заявката. Това е доста сложна операция и е по-добре да я изключите предварително.

SELECT Nomenclature.Name AS Name FROM Directory.Nomenclature AS Nomenclature WHERE Nomenclature.Name SIMILAR to "%" + &name + "%"

Функцията SIMILAR е приложима във всички версии на платформата, започвайки от 8, и поради нейната приложимост разработчиците на 1C няма да искат да я променят. Разбира се, текстовото търсене винаги зависи от точността на въведеното име, но все още остава едно от най-често срещаните. В тази връзка професионалните разработчици на 1C трябва да проучат използването на SIMILAR с всичките му нюанси.

Операторът SIMILAR в заявка проверява стойностите на низове от таблиците за сходство с шаблон.
Използва се по следния начин: низът, който ще се проверява, се поставя отляво на този оператор, а шаблонът се поставя отдясно.

След проверка връща True или False, съответно се използва активно в условия.
За създаване на шаблон се използват следните служебни знаци:

  • % (процент) - поредица, съдържаща произволен брой произволни знаци
  • _ (долна черта) - един произволен знак
  • […] (един или повече знаци в квадратни скоби) - всеки отделен знак, посочен в квадратните скоби
    Също така, в допълнение към различни символи, можете да използвате диапазони, например a-z(A-z), което означава наличието на произволен символ, включен в диапазона, включително краищата на диапазона.
  • [^...] (в квадратни скоби знак за отрицание, последван от един или повече знака) - всеки отделен знак, различен от изброените след знака за отрицание

Останалите символи се използват по предназначение.
Ако е необходимо да се предаде един от горните служебни знаци като символ, тогава той трябва да бъде предшестван от<Спецсимвол>. себе си<Спецсимвол>(всеки подходящ знак) се дефинира в същия израз след ключовата дума SPECIAL CHARACTER.
Например моделът “%ABV[abvg]\_abv%” СПЕЦИАЛЕН ЗНАК “\” означава подниз, състоящ се от поредица от знаци:
букви А; букви B; букви B; една цифра; една от буквите a, b, c или d; Долна черта; букви а; букви b; букви v.
Освен това тази последователност може да бъде предшествана от произволен набор от знаци.

Процедура Изберете AgreementContainingInNameText(mText)
//В заявката ще използваме шаблон като "%" + mText + "%" Заявка = Нова заявка; Query.SetParameter("Име", "%" + Текст + "%"); Request.Text = "ИЗБЕРЕТЕ | Споразумения. Връзка, | Споразумения. Собственик | ОТ | Директория. Договори на контрагенти AS Споразумения | | КЪДЕ | Споразумения. Име ПОДОБНИ & Име"; Резултат = Query.Run(); Избор = Резултат.Избор(); Доклад("Споразуменията, съдържащи в името: " + mText + " имат следните контрагенти"); Докато Selection.Next() Cycle Report("Counterparty: " + Selection.Owner + "; Agreement: " + Selection. Link EndIf; EndProcedure

Нека да разгледаме предназначението и употребата на условния оператор ЛАЙК (англ. LIKE)в езика за заявки 1C в примери.

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

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

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

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

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

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

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

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

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

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

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

Резултат:

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

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

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

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

Пример #1:

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

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

ИЗБЕРЕТЕ първите 10
Ключове. Име
ОТ
Directory.Keys AS ключове
КЪДЕТО
Ключове. Име, ПОДОБНО на „_1%“

Резултат:

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

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

Пример

ИЗБЕРЕТЕ първите 10
Ключове. Име
ОТ
Directory.Keys AS ключове
КЪДЕТО
Ключове. Име, ПОДОБНО на "[l]%"

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

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

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

Резултат:

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

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

Пример

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

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

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

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

Пример:

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

Резултат:

Приложимост в платформи

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

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

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

Ключове. Име ПОДОБНО<>&L

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Има и други специални знаци:

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