1c-pyyntö on samanlainen kuin maski. Samanlainen kuin kyselyn ehdot. Esimerkki: valitse tuotteet, joiden nimet alkavat sanalla "säiliö"

Katsotaanpa ehdollisen operaattorin tarkoitusta ja käyttöä TYKKÄÄ (eng. LIKE) esimerkeissä 1C-kyselykielellä.

Nopea kulku

Tarkoitus

Tarkista, vastaako pyynnön merkkijonoarvo määritettyä mallia - palauttaa Boolen arvon (TRUE tai FALSE).

  • Sekki on tapausriippumaton.
  • Kysely käyttää taulukkoindeksejä – ei liity kokotekstihakuindekseihin.
  • Suurien pöytien täyttäminen voi kestää kauan.
  • Rajattoman pituiset merkkijonot tulee muuntaa SUBSTRING-funktiolla

Käyttöpaikat

  • Operaattorin WHERE ehdoilla
  • Suunnitteluolosuhteissa VALITSE MILLOIN<>SITTEN "" MUU "" LOPETA
  • Valintakentissä (esimerkiksi: Name LIKE &ParameterSimilar StringSuitable)

LIKE-operaattorin syntaksin kuvaus

Operaattoriparametrin on oltava merkkijono: se voidaan määrittää vakiona tai välittää pyyntöparametrina.

Alla lueteltuja literaaleja (naamioita) voidaan käyttää yhdessä tai erikseen.

Tarkka merkkijonomääritys

VALITSE ensimmäiset 10
Avaimet.Nimi
FROM
Directory.Keys AS Avaimet
MISSÄ
Keys.Name SAMANLAISET kuin "1" // Vastaa Keys.Name ="1"

Tulos:

% on kirjaimellinen, mikä tarkoittaa mielivaltaista määrää mitä tahansa merkkejä

VALITSE ensimmäiset 10
Avaimet.Nimi
FROM
Directory.Keys AS Avaimet
MISSÄ
Keys.Name LIKE "%"

Tulos: mitkä tahansa 10 tuotetta

_ (alaviiva): kirjaimellinen, joka vastaa mitä tahansa merkkiä

Esimerkki 1:

VALITSE ensimmäiset 10
Avaimet.Nimi
FROM
Directory.Keys AS Avaimet
MISSÄ
Keys.Name LIKE "_"

Esimerkki 2: alkaen millä tahansa merkillä, jota seuraa "1" ja sitten mitkä tahansa merkit

VALITSE ensimmäiset 10
Avaimet.Nimi
FROM
Directory.Keys AS Avaimet
MISSÄ
Keys.Name SAMANLAISET kuin "_1%"

Tulos:

(yksi tai useampi merkki hakasulkeissa)

  • Jokaista kirjainta, joka vastaa mitä tahansa merkkiä, käytetään TAI-merkkinä.
    On hyväksyttävää määrittää alue, esimerkiksi a-z,0-5, mikä tarkoittaa mielivaltaista merkkiä määritetyltä alueelta

Esimerkki

VALITSE ensimmäiset 10
Avaimet.Nimi
FROM
Directory.Keys AS Avaimet
MISSÄ
Keys.Name SAMANLAISET kuin "[l]%"

Tulos: 10 alkaa kirjaimella "l" tai "z"

Esimerkki: alkaen 5,6,7

VALITSE ensimmäiset 10
Avaimet.Nimi
FROM
Directory.Keys AS Avaimet
MISSÄ
Keys.Name LIKE "%"

Tulos:

[^] (hakasulkeissa on pakomerkki ^, jota seuraa yksi tai useampi merkki)

Vastaa mitä tahansa merkkiä (_) paitsi ne, jotka on määritetty ()

Esimerkki

VALITSE ensimmäiset 10
Avaimet.Nimi
FROM
Directory.Keys AS Avaimet
MISSÄ
Keys.Name SAMANLAISET kuin "8.[^012]%"//älä sisällä 8.0,8.1,8.2

Tulos: kaikki alkavat kirjaimella "8." lukuun ottamatta mainittuja

SPECIAL CHARACTER - komento, joka määrittää yllä pyynnössä rekisteröidyt merkit

Palvelusymbolina on hyväksyttävää käyttää vähintään: #,~,/,\

Esimerkki:

VALITSE ensimmäiset 10
Avaimet.Nimi
FROM
Directory.Keys AS Avaimet
MISSÄ
Näppäimet.Nimi LIKE "#_" ERIKOISMERKKI "#"

Tulos:

Soveltuvuus alustoihin

Väärät parametrit LIKE<>

  • Ei-merkkijonotyyppinen parametri välitetään: esimerkiksi numero 1 merkkijonon "1" sijaan.
  • Ei-merkkijonotyyppistä kenttää verrataan kelvolliseen maskiin (esimerkiksi linkkiin) tai yhteyttä muodostettaessa arvoa ei tarkisteta IsNUL:lle

Kiinnitä huomiota virhetekstiin, jossa kysymys näytetään:

Avaimet.Nimi SAMANLAISET<>&L

Kyselyssä SAMANLAISET-operaattori tarkistaa merkkijonoarvot taulukoista samankaltaisuuden varalta kuvion kanssa.
Sitä käytetään seuraavasti: tarkistettava merkkijono sijoitetaan tämän operaattorin vasemmalle puolelle ja kuvio sijoitetaan oikealle.

Tarkistuksen jälkeen se palauttaa oikean tai epätosi vastaavasti, sitä käytetään aktiivisesti olosuhteissa.
Seuraavia palvelumerkkejä käytetään mallin luomiseen:

  • % (prosentti) - sarja, joka sisältää minkä tahansa määrän mielivaltaisia ​​merkkejä
  • _ (alaviiva) - yksi mielivaltainen merkki
  • […] (yksi tai useampi merkki hakasulkeissa) - mikä tahansa yksittäinen merkki hakasulkeissa
    Erilaisten symbolien lisäksi voit myös käyttää alueita, esimerkiksi a-z(A-z), mikä tarkoittaa mielivaltaisen symbolin läsnäoloa alueella, mukaan lukien alueen päät.
  • [^...] (hakasulkeissa negatiivinen merkki, jota seuraa yksi tai useampi merkki) - mikä tahansa yksittäinen merkki, paitsi ne, jotka on lueteltu kieltomerkin jälkeen

Loput symbolit käytetään niiden aiottuun tarkoitukseen.
Jos jokin yllä olevista palvelumerkeistä on lähetettävä symbolina, sitä edeltää<Спецсимвол>. Itse<Спецсимвол>(mikä tahansa sopiva merkki) määritellään samassa käskyssä avainsanan SPECIAL CHARACTER jälkeen.
Esimerkiksi malli "%ABV[abvg]\_abv%" ERIKOISMERKKI "\" tarkoittaa alimerkkijonoa, joka koostuu merkkijonosta:
kirjaimet A; kirjaimet B; kirjaimet B; yksi numero; yksi kirjaimista a, b, c tai d; alaviiva; kirjaimet a; kirjaimet b; kirjaimet v.
Lisäksi tätä sarjaa voi edeltää mielivaltainen merkkijoukko.

Menettelytapa Valitse sopimusContainingInNameText(mText)
//Pyynnössä käytämme mallia kuten "%" + mText + "%" Request = Uusi pyyntö; Query.SetParameter("Nimi", "%" + Teksti + "%"); Request.Text = "SELECT | Sopimukset. Linkki, | Sopimukset. Omistaja | FROM | Hakemisto. Vastapuolten sopimukset AS Sopimukset | | WHERE | Sopimukset. Nimi SAMANLAISET & nimi"; Tulos = Query.Run(); Valinta = Result.Select(); Report("Sopimuksissa, joiden nimi on: " + mText + ", on seuraavat vastapuolet"); While Selection.Next() Cycle Report ("Vastapuoli: " + Valinta.Omistaja + "; Sopimus: " + Valinta. Linkki EndIf; EndProcedure

KUTEN- Operaattori, jolla tarkistetaan merkkijonon samankaltaisuus kuvion kanssa. LIKE:n analogi SQL:ssä.
Operaattori KUTEN voit verrata sen vasemmalla puolella määritetyn lausekkeen arvoa oikealla määritettyyn kuviomerkkijonoon. Lausekkeen arvon on oltava merkkijono. Jos lausekkeen arvo vastaa kuviota, operaattorin tulos on TRUE, muuten se on EPÄTOSI.
Seuraavat merkit kuviomerkkijonossa ovat palvelumerkkejä ja niillä on eri merkitys kuin merkkijonomerkillä:
. % (prosentti): sarja, joka sisältää minkä tahansa määrän mielivaltaisia ​​merkkejä
. _ (alaviiva): yksi mielivaltainen merkki
. […] (yksi tai useampi merkki hakasulkeissa): mikä tahansa yksittäinen hakasulkeissa oleva merkki
Luettelo voi sisältää alueita, esimerkiksi a-z, mikä tarkoittaa mielivaltaista merkkiä, joka sisältyy alueeseen, mukaan lukien alueen päät.
. [^...] (hakasulkeissa negatiivinen merkki, jota seuraa yksi tai useampi merkki): mikä tahansa yksittäinen merkki, lukuun ottamatta niitä, jotka on lueteltu kieltomerkin jälkeen
Mikä tahansa muu symboli tarkoittaa itseään, eikä sillä ole lisäkuormaa.
Jos jokin luetelluista merkeistä on kirjoitettava itsestään, sitä edeltää<Спецсимвол>. Itse<Спецсимвол>(mikä tahansa sopiva merkki) määritellään samassa käskyssä avainsanan SPECIAL CHARACTER jälkeen.
Esimerkiksi, malli "%ABV[abvg]\_abv%" ERIKOISMERKKI "\" tarkoittaa alimerkkijonoa, joka koostuu merkkijonosta:
kirjaimet A; kirjaimet B; kirjaimet B; yksi numero; yksi kirjaimista a, b, c tai d; alaviiva; kirjaimet a; kirjaimet b; kirjaimet v.
Lisäksi tätä sarjaa voi edeltää mielivaltainen merkkijoukko.

Esimerkkejä käytöstä:
Koodi 1C v 8.x Proseduuri BankEndTextInput (elementti, teksti, arvo, vakiokäsittely)
StandardProcessing = False;
//Tee kysely haulla käyttämällä kaavaa, kuten "%" +<Текст введенный пользователм в поле ввода> + "%"
Pyyntö = Uusi pyyntö;
Query.SetParameter("Nimi", "%" + Teksti + "%");
Query.Text = "VALITSE
| Pankit.Linkki
|FROM
| Hakemisto.Pankit MITEN Pankit
| MISSÄ
| Banks.Name SAMANLAISET &Nimi";

Tulos = Query.Run();
Valinta = Result.Select();
Jos Tulos.Tyhjä() Sitten
//Mitään ei löytynyt. Täällä voit näyttää viestin tai tehdä jotain muuta :)
Muuten
//Hae tulokset
tzResults = Tulos.Poista();
//Tee luettelo arvoista, jotka sisältävät löydetyt elementit.
Arvo = Uusi arvolista();
Value.LoadValues(tzResults.UnloadColumn("Linkki"));
loppu Jos;
Menettelyn loppu

On välttämätöntä, että "oletussopimukset" sisältävät vain pääsopimuksen nimet jne.:
Koodi 1C v 8.x valinta
Kun nimi on SAMANLAISET kuin "Sopimusnro %", "Sopimus numerolla" // Mikä tahansa "Sopimusnumerolla" alkava rivi on sopiva
Kun nimi on SAMANLAINEN kuin "Pääsopimus%[^А-яЁе"+Symbol(33)+"-"+Symbol(126)+"№"""+Symbols.PS+Symbols.Tab+Symbols.PF+Symbols .NPP+ Symbols.VTab+"]%" sitten "Default Contracts" // Mikä tahansa "Pääsopimuksella" alkava rivi sopii
Muuten "muu"
Lopeta kuin eräänlainen sopimus

Tiedot otettu sivustolta

Kaikista puutteista huolimatta tekstikenttähaku on edelleen yksi suosituimmista. Löydämme merkkijonotietotyyppejä kaikkialta - nimet, tilinumerot, osoitteet sekä muut tiedot voidaan tallentaa tähän muotoon. Sisäänrakennetun 1C-kielen kyselyissä käytetään kehittäjien mukavuuden vuoksi erityistä operaattoria "LIKE". Tämä on yksi eniten käytetyistä komennoista, joten ilman perusteellista tietoa sen syntaksista ja ominaisuuksista ohjelmoijan on vaikea työskennellä.

Käytä LIKE-operaattoria

Ennen kuin käytät operaattoria käytännössä, sinun on ymmärrettävä selvästi sen tarkoitus, sovelluspaikat ja syntaksi. "TYYTÄ"-toiminnon käytön tarkoitus 1C-pyynnössä on tarkistaa mallina esitetyn ehdon täyttyminen. Palautusarvo on Boolen tyyppi - tosi tai epätosi - joka osoittaa, onko määritetty ehto tosi. LIKE-operaattoria voidaan käyttää useissa paikoissa kyselyssä:

  • Ehtojen lohkossa, joka on merkitty avainsanalla “WHERE”;
  • Suunnittelussa Choice When Then Other End;
  • Suoraan valintakentissä kenttävertailun tuloksena.

Vahvistussyntaksi on aina sama ja koostuu 3 linkistä. Vasemmalla on tarkistettava tekstiarvo, sitten itse "LIKE"-operaattori ja oikealla on tarkistettava malli. Mallien nopeaa ja helppoa luomista varten on olemassa erityisiä symboleja, jotka helpottavat kehitystä:

  1. "%" on merkkijono, jonka pituus on mielivaltainen. Käytetään yksittäisten sanojen tai numeroiden etsimiseen merkkijonosta;
  2. "_" - mikä tahansa yksittäinen merkki. Tarkoitettu osoittamaan yhden merkin läsnäoloa;
  3. "[...]" on merkkijono, jota voidaan verrata merkkijonon merkkiin. Tällaisen kuvion avulla tarkistetaan vastaavuus mihin tahansa suluissa luetelluista merkeistä. Voit myös määrittää joukon numeroita tai kirjaimia ([a-g], );
  4. "[^...]" on päinvastainen malli kuin edellinen. Rivillä määritellyn ja suluissa olevien merkkien välinen ero tarkistetaan.

Ymmärtääksemme ja ymmärtääksemme oikeiden mallien luomisen periaatteet, katsotaanpa joitain esimerkkejä, joita kohdataan usein kehittäjien elämässä. Ensimmäinen on, kun meidän on valittava nimikkeistön hakemistosta kaikki kohteet, joiden nimissä esiintyy sana "LEIKKUJA". Tässä tapauksessa meidän on käytettävä LIKE-komentoa kyselyehdoissa:

SELECT Nomenclature.Name AS Nimi FROM Hakemisto. Nimikkeistö AS Nimikkeistö WHERE Nomenclature.Name SAMANLAISET KUIN "% CUTTER%"

Jos poistamme molemmat "%" -symbolit, kysely näyttää tuotteen, jonka nimi vastaa täysin lainausmerkeissä määritettyä nimeä. Jos jätämme mallin "CUTTER%" tai "% CUTTER", tuloksena on luettelo kohteista, jotka päättyvät tai alkavat vastaavasti tietyllä merkkiyhdistelmällä.


Tarkastellaanpa ongelmaa, joka voi hämmentää aloittelevia ohjelmoijia, jotka eivät tiedä kyselyn syntaksia. Oletetaan, että sinun on löydettävä kaikki kohteet, joiden nimissä on "%" -symboli. Erityisesti tapauksissa, joissa sinun on etsittävä varattuja merkkejä, on "erikoismerkki"-operaattori. #,\,/,~ ja muita merkkejä voidaan käyttää erikoismerkkinä, jonka jälkeen kaikki varatut merkit merkitsevät vain merkkiä.

SELECT Nimikkeistö.Nimi AS Nimi FROM Hakemisto. Nimikkeistö AS Nimikkeistö WHERE Nimikkeistö.Nimi SAMANLAINEN kuin "%#%" SPECIAL CHARACTER "#"

Jos joudut käyttämään haussa parametria, kyselyn muuttujaa SAMANLAISEN parametrin kanssa käytetään summauksen avulla. Muista, että parametrin on oltava merkkijonotyyppi tai se on muunnettava pyynnössä merkkijonoksi. Tämä on melko monimutkainen toimenpide, ja on parempi sulkea se pois etukäteen.

SELECT Nomenclature.Name AS Nimi FROM Hakemisto.Nimikki AS Nimikkeistö WHERE Nimikkeistö.Nimi SAMANLAINEN kuin "%" + &nimi + "%"

SAMANLAINEN-toiminto on käytettävissä kaikissa alustan versioissa 8:sta alkaen, ja sen soveltuvuuden vuoksi 1C-kehittäjät eivät halua muuttaa sitä. Tekstihaku riippuu tietysti aina syötetyn nimen tarkkuudesta, mutta se on silti yksi yleisimmistä. Tältä osin ammattimaisten 1C-kehittäjien on tutkittava SAMANLAISEN käyttöä kaikilla sen vivahteilla.