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ä:
- "%" on merkkijono, jonka pituus on mielivaltainen. Käytetään yksittäisten sanojen tai numeroiden etsimiseen merkkijonosta;
- "_" - mikä tahansa yksittäinen merkki. Tarkoitettu osoittamaan yhden merkin läsnäoloa;
- "[...]" 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], );
- "[^...]" 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.