Condiții în 1 secunde. Similar cu condițiile de interogare. Exemplu: selectați produse al căror nume începe cu cuvântul „Tank”

În ciuda tuturor deficiențelor, căutarea în câmpuri de text este încă una dintre cele mai populare. Putem întâlni tipuri de date șir peste tot - nume, numere de cont, adrese și alte informații pot fi stocate în acest format. În interogările în limbajul 1C încorporat, pentru comoditatea dezvoltatorilor, este utilizat un operator special „LIKE”. Aceasta este una dintre cele mai utilizate comenzi, așa că fără o cunoaștere aprofundată a sintaxei și a capabilităților sale, va fi dificil pentru un programator să lucreze.

Folosind operatorul „LIKE”.

Înainte de a pune în practică orice operator, trebuie să înțelegeți clar scopul, locurile de aplicare și sintaxa acestuia. Scopul utilizării „LIKE” în ​​interogarea 1C este de a verifica satisfacția condiției prezentate ca șablon. Valoarea returnată este booleană, adevărată sau falsă, indicând dacă condiția specificată este îndeplinită. Operatorul LIKE poate fi utilizat în mai multe locuri într-o interogare:

  • În blocul de condiții indicat de cuvântul cheie „UNDE”;
  • În construcția Choice When Then Else End;
  • Direct în câmpurile de selecție, ca rezultat al comparației câmpurilor.

Sintaxa verificării este întotdeauna aceeași și constă din 3 legături. În stânga este valoarea textului care este verificată, apoi operatorul „LIKE” în ​​sine, iar în dreapta este șablonul care este verificat. Pentru crearea rapidă și ușoară de șabloane, există Simboluri speciale facilitarea dezvoltării:

  1. „%” este o secvență de orice caractere de lungime arbitrară. Folosit pentru a căuta cuvinte sau numere individuale dintr-un șir;
  2. „_” este orice caracter unic. Proiectat pentru a indica prezența unui personaj;
  3. „[...]” este o secvență de caractere de comparat cu un semn din șir. Cu ajutorul unui astfel de model, se verifică o potrivire pentru oricare dintre caracterele enumerate între paranteze. De asemenea, puteți specifica un interval de numere sau litere ([a-g], );
  4. „[^…]” este opusul modelului anterior. Se verifică diferența dintre caracterul specificat în șir și cele enumerate între paranteze.

Pentru a asimila și înțelege mai bine principiile creării de șabloane corecte, să ne uităm la câteva exemple care sunt adesea întâlnite în viața dezvoltatorilor. Prima este atunci când trebuie să selectăm din cartea de referință a nomenclatorului toate pozițiile în numele cărora apare cuvântul „CUTTER”. În acest caz, trebuie să folosim LIKE în condițiile de interogare:

SELECT Nomenclature.Name AS Nume FROM Directory.Nomenclature AS Nomenclature WHERE Nomenclature.Name LIKE "%CUTTER%"

Dacă eliminăm ambele caractere „%”, atunci interogarea va afișa nomenclatura, în care numele se potrivește complet cu cel indicat între ghilimele. Dacă părăsim șablonul „CUTTER%” sau „%CUTTER”, atunci rezultatul va fi o listă de nomenclatură care se termină sau încep, respectiv, cu o anumită combinație de caractere.


Să analizăm o problemă care poate deruta programatorii începători care nu cunosc sintaxa interogării. Să presupunem că trebuie să găsiți toată nomenclatura, în numele căreia există un simbol „%”. Mai ales pentru cazurile în care trebuie să căutați caractere rezervate, există un operator „caracter special”. Ca caracter special, puteți folosi #, \, /, ~ și alte caractere, după care orice caractere rezervate vor denota pur și simplu un caracter.

SELECTAȚI Nomenclatură.Nume AS Nume FROM Director.Nomenclatură AS Nomenclatură WHERE Nomenclatură.Nume LIKE „%#%” CARACTER SPECIAL „#”

Dacă trebuie să utilizați un parametru în căutare, atunci variabila din interogare cu parametrul LIKE este folosită prin adăugare. Rețineți că parametrul trebuie să fie de tip șir sau va trebui să îl convertiți într-un șir în cerere. Aceasta este o operație destul de complicată și este mai bine să o excludeți în avans.

SELECT Nomenclatura.Nume AS Nume FROM Director.Nomenclatura AS Nomenclatură WHERE Nomenclatură.Nume LIKE „%” + &nume + „%”

Funcția LIKE este aplicabilă în toate versiunile platformei, începând de la 8, iar datorită aplicabilității sale, dezvoltatorii 1C nu vor dori să o schimbe. Desigur, căutarea textului depinde întotdeauna de acuratețea introducerii numelui, dar rămâne totuși una dintre cele mai comune. În acest sens, dezvoltatorii profesioniști 1C trebuie să studieze utilizarea LIKE cu toate nuanțele sale.

Operator CA vă permite să comparați într-o interogare datele tipului șir din stânga operatorului cu datele tipului șirului din dreapta operatorului. Rezultatul comparației este adevărat sau fals, deci comparația poate fi aplicată ca o condiție.

Pentru operator CA sunt furnizate caractere de serviciu speciale care nu sunt percepute ca șir:

  • Simbolul procentual „%”: indică prezența oricărui număr de caractere arbitrare în șir
  • „[...]” unul sau mai multe caractere în paranteza patrata: indică prezența oricărui (unică) dintre caracterele enumerate. De asemenea, poate fi specificată o serie de caractere (de exemplu )
  • „_” caracter de subliniere: indică prezența oricărui caracter arbitrar
  • Caracter de negație „[^...]”: indică prezența oricărui caracter unic, altul decât cele din paranteze drepte
Dacă trebuie să specificați unul dintre caracterele speciale de mai sus pentru comparație, trebuie să utilizați cuvântul cheie „CARACTER SPECIAL”

Caracteristici de utilizare cu diferite SGBD

IBM DB2„În dreapta operatorului LIKE, poate fi localizat doar un parametru. Caracterele șablonului sunt doar „_” (subliniere care înseamnă orice caracter) și „%” (procent care înseamnă o secvență de orice caractere).
În cazul utilizării unui SGBD " PostgreSQL" sau " Baza de date Oracle„caracterele speciale „paranteze pătrate [...]” sunt acceptate numai dacă sunt specificate de textul din cerere și NU sunt trecute ca parametru în cerere.

Astfel, în baza de fișiere, caracterele speciale vor fi întotdeauna percepute în același mod, și în moduri diferite, în funcție de SGBD utilizat în versiunea client-server.

Exemplu: selectați produse care conțin simbolul „%” în nume

ALEGE | Ref. Link | DE LA | Spravochnik.Nomenclatură CUM ref | UNDE | Nume referință LIKE „%\%” CARACTER SPECIAL „\”

Exemplu: selectați produse al căror nume începe cu cuvântul „Tank”

ALEGE | Ref. Link | DE LA | Spravochnik.Nomenclatură CUM ref | UNDE | Nume referință LIKE „Buck%”

Exemplu: selectați produse al căror nume se termină cu un număr

ALEGE | Ref. Link | DE LA | Spravochnik.Nomenclatură CUM ref | UNDE | Nume referință LIKE „%”

Operatorul LIKE dintr-o interogare verifică valorile șirurilor din tabele pentru similaritate cu un model.
Se folosește după cum urmează în stânga acestui operator este șirul care trebuie verificat, iar în dreapta este șablonul.

După verificare, returnează True sau False, respectiv este folosit activ în condiții.
Următoarele simboluri de serviciu sunt utilizate pentru a crea un șablon:

  • % (procent) - o secvență care conține orice număr de caractere arbitrare
  • _ (subliniere) - un caracter arbitrar
  • […] (unul sau mai multe caractere între paranteze drepte) - orice caracter unic enumerat între paranteze drepte
    De asemenea, pe lângă diverse caractere, pot fi folosite intervale, de exemplu a-z(A-z), ceea ce înseamnă că există un caracter arbitrar inclus în interval, inclusiv capetele intervalului.
  • [^…] (în paranteze pătrate un semn de negație urmat de unul sau mai multe caractere) - orice caracter, cu excepția celor enumerate după semnul de negație

Caracterele rămase sunt folosite în scopul propus.
Dacă unul dintre caracterele de serviciu de mai sus trebuie transmis ca caracter, atunci acesta trebuie să fie precedat de<Спецсимвол>. Eu insumi<Спецсимвол>(orice caracter adecvat) este definit în aceeași declarație după cuvânt cheie SIMBOL SPECIAL.
De exemplu, modelul „%ABC[abc]\_abc%” CARACTER SPECIAL „\” înseamnă un subșir format dintr-o succesiune de caractere:
literele A; literele B; literele B; o cifră; una dintre literele a, b, c sau d; caracter de subliniere; literele a; literele b; scrisori în.
Mai mult, această secvență poate fi precedată de un set arbitrar de caractere.

Procedură SelectContractContainingInNameText(mText)
//În cerere, vom folosi un șablon precum „%” + mText + „%” Request = New Request; Query.SetParameter("Nume", "%" + Text + "%"); Query.Text = "SELECT | Agreements.Reference, | Agreements.Owner |FROM | Directory.AgreementsofCounterparties AS Agreements | |WHERE | Agreements.Name LIKE &Name"; Rezultat = Request.Run(); Selectie = Result.Select(); Raport ("Acordurile care conțin în nume: " + mText + " au următoarele contrapărți"); While Selection.Next() Loop Report("Cont: " + Selection.Owner + "; Contract: " + Selection.Reference EndIf; EndProcedure

Uneori apare o situație când în 1C 8.3 sau 8.2 trebuie să faceți o selecție, de exemplu, dintr-un director cu toate elementele care au cuvântul „glaze” în numele lor. Sau, din director, selectați toate contrapărțile ale căror nume de familie conțin cuvântul „Ivan”. În general, verificați o anumită valoare a șirului.

Pentru aceasta, există un operator în cererile 1C 8.3 și 8.2 - „Like”. Se foloseste, respectiv, in conditiile:

Obțineți 267 de lecții video 1C gratuit:

Cum să folosiți șabloanele în solicitările 1C?

Pentru a forma o condiție de selecție, trebuie să treceți un șablon ca parametru. Pentru a crea un șablon, există așa-numitele simboluri de serviciu.

De exemplu, caracterul „%” permite orice succesiune de caractere arbitrare:

Există și alte personaje speciale:

  • % (procent) - permite orice succesiune de caractere arbitrare;
  • _ (subliniere) - orice caracter unic;
  • […] este un caracter arbitrar dintre cele enumerate între paranteze. Pe lângă enumerarea caracterelor, puteți utiliza intervale. Exemplu: a-o;
  • [^…] – la fel ca precedentul, dar invers. Semnul „^” înseamnă negație.

43
NULL - valori lipsă. A nu se confunda cu nul! NULL nu este un număr, nu este egal cu un spațiu, referință nulă, nedefinit. NULL este o valoare de formare a tipului, adică există un tip NULL și o singură valoare de acest tip. NUL... 26
Pentru a forma și executa interogări către tabelele bazei de date în platforma 1C, este utilizat un obiect special al limbajului de programare Request. Acest obiect este creat prin apelarea constructului New Request. Cerere convenabilă... 18
Articolul contine trucuri utile atunci când lucrați cu interogări 1C v.8.2, precum și cu informații care nu sunt atât de bine cunoscute despre limbajul de interogare. Nu încerc să ofer o descriere completă a limbajului de interogare, dar vreau să mă concentrez doar pe... 12
În fața sarcinii, a fost necesar să selectăm toate documentele pentru plată și să le grupăm după tipul de document! Privind prin toate locuințele și serviciile comunale și pe internet, mi-am dat seama că calea ușoară obțineți tipul de document în cererea nr:(a trebuit să...