Funktsiooni esitus päringus 1 8.2. Välja Vaade ja päringukeele funktsiooni Vaade() töötamise omadused

Otsustasin anda oma panuse ja kirjeldada neid keele omadusi, mida ülaltoodud artiklites ei käsitletud. Artikkel on suunatud algajatele arendajatele.

1. “IZ” kujundus.

Andmebaasist andmete saamiseks ei ole üldse vaja kasutada konstruktsiooni “FROM”.
Näide: peame valima pankade kataloogist kogu teabe pankade kohta.
Taotlus:

VALI kataloog.Pangad.*

Valib kõik väljad kataloogist Pangad. Ja sarnaneb taotlusega:

VALI pangad.* kataloogist.Banks AS Pangad

2. Andmete järjestamine viitevälja järgi

Kui peame korraldama päringuandmeid primitiivsete tüüpide järgi: "String", "Arv", "Kuupäev" jne, siis kõik lahendatakse konstruktsiooni "ORDER BY" abil, kui on vaja andmeid järjestada viitevälja järgi? Viiteväljaks on link, unikaalne identifikaator, st. Jämedalt öeldes võib mingi suvaline märkide komplekt ja tavaline järjestus anda tulemuse, mida ei ole päris oodatud. Viiteväljade tellimiseks kasutatakse konstruktsiooni "AUTO TELLIMUS". Selleks tuleb esmalt järjestada andmed otse viitetüübi järgi, kasutades konstruktsiooni "ORDER BY" ja seejärel konstruktsiooni "AUTO ORDER".

Sel juhul toimub dokumentide tellimine järjekorras "Kuupäev->Number", teatmeteoste puhul "Põhivaates". Kui järjestamine ei toimu viiteväljade kaupa, ei ole konstruktsiooni "AUTO TELLIMUS" kasutamine soovitatav.

Mõnel juhul võib konstruktsioon "AUTO TELLIMUS" valikuprotsessi aeglustada. Samamoodi saate dokumente ümber kirjutada ilma automaatse järjestamiseta:

3.Viitetüübi tekstiesitluse saamine. "ESITLUS" kujundus.

Kui teil on vaja kuvada viitetüüpi välja, näiteks välja "Pank", mis on link kataloogi "Pangad" elemendile, peate mõistma, et selle välja kuvamisel esitatakse alampäring " Pangad" käivitatakse kataloogivaate saamiseks automaatselt. See aeglustab andmete väljastamist. Selle vältimiseks tuleb päringus kasutada konstruktsiooni ESITUS, et saada koheselt objekti kujutis ja see siis vaatamiseks kuvada.

Andmete koostamise süsteemis on see mehhanism vaikimisi kasutusel, kuid lahtrites küljendusi luues tuleks määrata viitevälja esitus ja panna näiteks link ise transkripti.

4. Tingimus andmete valimi võtmiseks vastavalt mallile.

Näiteks peate hankima vormi (8 -123- 456-78-912) töötajate mobiiltelefonid. Selleks peate päringus määrama järgmise tingimuse:

SELECT Töötaja.Nimi, Töötaja.Telefon AS-i telefon kataloogist.Töötajad AS-i töötajad KUS Tel LIKE "_-___-___-__-__"

Märk "_" on teenindusmärk ja asendab mis tahes märki.

5. Kogusummade ja rühmituste samaaegne kasutamine.


Kogusummasid kasutatakse sageli koos rühmitustega; sel juhul ei pruugi kogusummades koondfunktsioone täpsustada.

SELECT Teenuste osutamine.Organisatsioon AS Organisatsioon, Teenuste osutamine.Nomenklatuur AS Nomenklatuur, SUM(Teenuste osutamine.Dokumendi summa) AS Dokumendi summa FROM Dokumendist.Teenuste osutamine AS Teenuste osutamine RÜHM teenuste osutamise järgi.Korraldamine, pakkumine. teenustest. Nomenklatuur TULEMUSED ÜLDIST, Organisatsioon, Nomenklatuur

Sel juhul tagastab päring peaaegu sama, mis järgmine päring:

SELECT Teenuste osutamine.Organisatsioon AS Organisatsioon, Teenuste osutamine.Nomenklatuur AS Nomenklatuur, Teenuste osutamine.Dokumendi kogus AS Dokumendi kogus Dokumendist.Teenuste osutamine AS Teenuste osutamine TULEMUSED SUMMA (Dokumendi kogus) ÜLDIST, Organisatsioon, Nomenklatuur

Ainult esimene päring ahendab sama nomenklatuuriga kirjeid.

6. Väljade viitamise tühistamine.

Väljadele punkti kaudu viitamist nimetatakse võrdlusvälja viitamise tühistamise operatsiooniks. Näiteks Makse. Organisatsioon. Haldusüksus. Sellisel juhul viitab see dokumendi "Makse" viiteväljal "Organisatsioon" teisele tabelile "Organisatsioonid", millest saadakse atribuudi "Haldusüksus" väärtus. Oluline on mõista, et kui pääsete väljadele punkti kaudu, loob platvorm kaudselt alampäringu ja ühendab need tabelid.

Taotlus:

Võib esitada järgmiselt:

VALI makse.Link, Makse.Organisatsioon, Makse.Organisatsioon, Organisatsioonid. Haldusüksus FROM Document.Payment AS Makse LÄHUS LIITUMINE Kataloog.Organizations AS Organisatsioonid Tarkvara Payment.Organization = Organisations.Link

Komposiittüüpi viiteväljade viitamise tühistamisel püüab raamistik luua kaudseid liite kõikidele tabelitele, mis kuuluvad selle välja tüüpi. Sel juhul ei ole päring optimaalne, kui on selgelt teada, mis tüüpi väljaga on tegemist, on vaja selliseid välju tüübi järgi piirata konstruktsiooniga EXPRESS().

Näiteks on olemas akumulatsiooniregister “Jaotamata maksed”, kus mitmed dokumendid võivad toimida registripidajana. Sel juhul on vale saada registripidaja andmete väärtusi järgmiselt:

SELECT UnallocatedPayments.Register.Date, ..... FROM RegisterAccumulation.UnallocatedPayments AS UnallocatedPayments

peaksite piirama liitvälja tüüpi logijaga:

SELECT EXPRESS(UnallocatedPayments.Register AS Document.Payment).Kuupäev, ..... FROM RegisterKogumine.UnallocatedPayments AS Jaotamata maksed

7. Ehitus "KUS"

Kahe tabeli vasakpoolse ühenduse korral, kui panete parempoolsele tabelisse tingimuse “KUS”, saame tulemuse, mis sarnaneb tabelite sisemise ühenduse tulemusega.

Näide. Klientide kataloogist on vaja valida kõik Kliendid ja nendel klientidel, kellel on maksedokument atribuudi väärtusega "Organisatsioon" = &Organisatsioon, kuvada dokument "Makse", kellel ei ole, siis mitte kuvada.

Päringu tulemus tagastab kirjed ainult nende klientide kohta, kelle parameetris oli organisatsioonipõhine makse, ja filtreerib välja teised kliendid. Seetõttu peate esmalt saama kõik "sellise ja sellise" organisatsiooni maksed ajutises tabelis ja seejärel ühendama selle vasakpoolse ühenduse abil kataloogiga "Kliendid".

SELECT Payment.Link AS Payment, Payment.Shareholder AS Klient PLACE to Payments FROM Document.Payment AS Payment WHERE Payment.Branch = &Branch; /////////////////////////////////////////////////// //////////////////////////// SELECT Clients.Link AS klient, ISNULL(tMakse.Makse, "") AS Makse kataloogist .Clients AS Kliendid VASAKULINE ÜHENDUS tomaksed AS topayments TARKVARA Kliendid.Link = topayments.Client

Sellest seisundist saate mööda minna muul viisil. Otse kahe tabeli vahelisele suhtele on vaja kehtestada tingimus "WHERE". Näide:

SELECT Clients.Link, Payment.Link FROM Directory.US_Subscribers AS US_Subscribers VASAKULINE ÜHENDUS Document.Payment AS Maksetarkvara (Clients.Link = Payment.Client AND Payment.Client.Name LIKE "Suhkrupakett") GROUP BY Clients.Link, Payment. Link

8. Liitub pesastatud ja virtuaaltabelitega

Pesastatud päringud sageli on vaja mõnel tingimusel põhinevaid andmeid hankida. Kui kasutate neid seejärel koos teiste tabelitega, võib see päringu täitmist kriitiliselt aeglustada.

Näiteks peame mõne kliendi jaoks saama saldosumma jooksva kuupäeva seisuga.

SELECT UnallocatedPaymentsBalces.Customer, UnallocatedPaymentsBalces.AmountBalance FROM (SELECT Clients.Link AS Link FROM Directory.Clients AS Clients WHERE Clients.Link B(&Clients)) AS NestedQuery BLEFT JOIN RegisterAccumulations.ASallocatedPayments.UnallocatedPayments.AllocatedPayments. tint = UnallocatedPaymentsBalances. Klient

Sellise päringu täitmisel võib DBMS-i optimeerija teha plaani valimisel vigu, mis toob kaasa päringu ebaoptimaalse täitmise. Kahe tabeli ühendamisel valib DBMS-i optimeerija tabelite ühendamise algoritmi, lähtudes mõlemas tabelis olevate kirjete arvust. Kui on olemas pesastatud päring, on äärmiselt keeruline määrata kirjete arvu, mille pesastatud päring tagastab. Seetõttu peaksite pesastatud päringute asemel alati kasutama ajutisi tabeleid. Nii et kirjutame taotluse ümber.

SELECT Clients.Link AS Link PLACE tClients FROM Directory.Clients AS Clients WHERE
Kliendid.Link B (&Kliendid) ; /////////////////////////////////////////////////// /////////////////////////// SELECT tClients.Link, UnallocatedPaymentsRemains.AmountRemaining, FROM tClients AS tClients LEFT JOIN RegisterAccumulations.UnallokatedPayments.Balances (, Client) IN (VALI tClients.Link FROM tClients)) AS UnallocatedPaymentsBalces tClients.Link = UnallocatedPaymentsBalces.Clients

Sel juhul saab optimeerija määrata, mitut kirjet ajutine tabel tClients kasutab, ja saab valida tabelite ühendamiseks optimaalse algoritmi.

Virtuaalsed tabelid , võimaldavad hankida praktiliselt valmisandmeid enamiku rakendusülesannete jaoks.(Esimese viil, Viimase viil, Jäägid, Käibed, Jäägid ja Käiged) Siin on märksõnaks virtuaalne. Need tabelid ei ole füüsilised, vaid need koostab süsteem käigu pealt, st. Virtuaalsetest tabelitest andmete vastuvõtmisel kogub süsteem andmed lõppregistri tabelitest, komplekteerib, rühmitab ja väljastab need kasutajale.

Need. Virtuaalse tabeliga ühenduse loomisel luuakse ühendus alampäringuga. Sel juhul võib DBMS-i optimeerija valida ka mitteoptimaalse ühendusplaani. Kui päringut ei genereerita piisavalt kiiresti ja päring kasutab liitumisi virtuaalsetes tabelites, siis on soovitatav teisaldada ligipääs virtuaalsetele tabelitele ajutisesse tabelisse ning seejärel teha kahe ajutise tabeli vahel liitmine. Kirjutame eelmise taotluse ümber.

SELECT Clients.Link AS Link KOHT tKliendid kataloogist.Kliendid AS Kliendid INDEX BY LING KUS
Kliendid.Link B (&Kliendid) ; /////////////////////////////////////////////////// /////////////////////////// SELECT UnallocatedPayments.AmountBalance, UnallocatedPayments.Client AS Client PLACE saldod FROM RegisterAccumulations.UnallocatedPayments.Balces(, Client B () SELECT tClients. Link FROM tClients)) AS UnallocatedPaymentsBalances; /////////////////////////////////////////////////// //////////////////////////// SELECT tClients.Link, to Remainders.AmountRemaining AS SummaJälejäänud tClients AS tKliendid JÄKSASID LIITUMINE Remainnders AS-i Ülejäänud POOLT tClients.Link = tRemainings.Client

9. Päringu tulemuse kontrollimine.

Päringu tulemus võib olla tühi; tühjade väärtuste kontrollimiseks kasutage järgmist konstruktsiooni:

ResRequest = Request.Execute(); Kui resQuery.Empty() then Return; endIf;

meetod Tühi() tuleks kasutada enne meetodeid Vali () või Laadi maha (), kuna kogu allalaadimine võtab aega.

Kellelegi ei tule ilmsiks, et päringute tsüklina kasutamine on äärmiselt ebasoovitav. See võib kriitiliselt mõjutada konkreetse funktsiooni tööaega. Väga soovitav on saada kõik päringus olevad andmed ja seejärel neid tsüklina töödelda. Kuid mõnikord on juhtumeid, kui päringu teisaldamine tsüklist välja on võimatu. Sel juhul saab optimeerimiseks viia päringu loomise tsüklist välja ning tsüklis asendada vajalikud parameetrid ja täita päringu.

Taotlus = uus taotlus; Query.Text = "VALI | Kliendid.Link, | Kliendid.Sünnikuupäev |KÄTTES | Kataloog.Kliendid AS Kliendid |KUS | Kliendid.Link = &klient"; Iga rea ​​jaoks FROM TableClients Loop Query.SetParameter("klient", klient); QueryResult = Query.Execute().Select(); EndCycle;

See säästab süsteemi päringu süntaksi kontrollimisest tsüklis.

11. Ehitus "HAVING".

Disain, mis on päringutes üsna haruldane. Võimaldab kehtestada tingimusi koondfunktsioonide väärtustele (SUM, MINIMUM, AVERAGE jne). Näiteks tuleb valida ainult need kliendid, kelle maksesumma septembris oli üle 13 000 rubla. Kui kasutate tingimust “KUS”, peate esmalt looma ajutise tabeli või pesastatud päringu, rühmitama seal kirjed maksesumma järgi ja seejärel tingimuse rakendama. Konstruktsioon “HAVING” aitab seda vältida.

VALI makse.Klient, SUMMA(Makse.Summa) SUMMANA Dokumendist.Maksena maksena WHERE KUUN(Makse.Kuupäev) = 9 GROUP BY Makse.Klient, kellel on SUMMA(Maksesumma) > 13000

Selleks minge konstruktoris vahekaardile "Tingimused", lisage uus tingimus ja märkige ruut "Kohandatud". Siis lihtsalt kirjuta Summa(Makse.Summa) > 13000


12. NULL väärtus

Ma ei hakka siin kirjeldama kolme väärtusega loogika põhimõtteid andmebaasis, sellel teemal on palju artikleid. Lühidalt sellest, kuidas NULL võib päringu tulemust mõjutada. Väärtus NULL ei ole tegelikult väärtus ja see, et väärtus on määratlemata, pole teada. Seetõttu tagastab iga tehing NULL-iga NULL-i, olgu selleks siis liitmine, lahutamine, jagamine või võrdlus. NULL-väärtust ei saa võrrelda NULL-väärtusega, kuna me ei tea, mida võrrelda. Need. mõlemad võrdlused on järgmised: NULL = NULL, NULL<>NULL ei ole tõene ega vale, see on teadmata.

Vaatame näidet.

Nende klientide jaoks, kellel ei ole makseid, peame kuvama välja "Allkirjasta" väärtusega "Maksed puuduvad". Pealegi teame kindlalt, et meil on selliseid kliente. Ja selleks, et kajastada ülalkirjutatu olemust, teeme seda nii.

VALI "Makseta" AS Atribuut, NULL AS Dokumenteerige maksed KOHT; /////////////////////////////////////////////////// ////////////////////////// SELECT Clients.Link AS Client, Payment.Link KUIDAS Makse PANE tClientPayment FROM Kataloogist.Kliendid AS Kliendid VASAKULT ÜHENDUS dokument. Payment AS Payment Software Clients.Link = Payment.Shareholder; /////////////////////////////////////////////////// //////////////////////////// tClientPayment.Client FROM tClientPayment AS tClientPayment INTERNAL JOIN tPayment AS tMaksa tClientPayment.Payment = Document t

Pöörake tähelepanu teisele ajutisele tabelile tClientPayment. Vasakpoolse liitumisega valin välja kõik kliendid ja kõik nende klientide maksed. Nende klientide jaoks, kellel ei ole makseid, on väli “Makse” NULL. Loogikat järgides määrasin esimesse ajutisesse tabelisse “tMaksed” 2 välja, neist üks NULL, teine ​​rida “Ei ole makseid”. Kolmandas tabelis ühendan tabelid “tClientPayment” ja “tPayment” väljade “Makse” ja “Dokument” abil sisemise liitumisega. Teame, et esimeses tabelis on väli “Dokument” NULL ja teises tabelis on NULL ka need, kellel väljal “Makse” makseid pole. Mida selline side meile tagasi toob? Aga see ei anna midagi tagasi. Kuna võrdlus NULL = NULL ei anna väärtust Tõene.

Selleks, et taotlus annaks oodatud tulemuse, kirjutame selle ümber:

VALI "Makseta" AS atribuut, VALUE(Dokument.Makse.Tühilink) AS Dokumendi KOHT maksetele; /////////////////////////////////////////////////// /////////////////////////// SELECT Clients.Link AS Client, ISNULL(Makse.Link, VALUE(Dokument.Makse.TühiLink )) KUIDAS Makse PUT tClientPayment FROM Kataloog.Kliendid AS Kliendid VASAKULE ÜHENDUS Dokumendi.Makse AS Makse KLIENDI POOLT.Link = makse.Aktsionär; /////////////////////////////////////////////////// //////////////////////////// tClientPayment.Client FROM tClientPayment AS tClientPayment INTERNAL JOIN tPayment AS tMaksa tClientPayment.Payment = Document t

Nüüd oleme teises ajutises tabelis märkinud, et kui väli “Makse” on NULL, siis see väli = tühi link maksedokumendile. Esimeses tabelis asendasime ka NULL-i tühja viitega. Nüüd hõlmab ühendus mitte-NULL välju ja päring tagastab oodatud tulemuse.

Kõik artiklis sisalduvad taotlused kajastavad olukordi, mida tahaksin kaaluda, ja mitte midagi muud. KOHTA Need ei pruugi olla meelepetted ega ebaoptimaalsed, peaasi, et need peegeldaksid näite olemust.

13. Disaini "VALIK, MILLAL...SIIS...LÕPP" dokumenteerimata tunnus.

Kui päringus on vaja kirjeldada konstruktsiooni "Tingimused", kasutame standardset süntaksit:

SELECT SELECTION WHEN Users.Name = "Vasya Pupkin" SIIS "Meie lemmiktöötaja" MUU "Me ei tea seda" LÕPP AS Välja1 kataloogist.Kasutajad AS kasutajad

Aga mis siis, kui meil on vaja näiteks päringusse saada kuu nimi? Päringusse tohutu konstruktsiooni kirjutamine on inetu ja aeganõudev, nii et ülaltoodud kirjutamisviis võib meid aidata:

SELECT MONTH(US_CalculationConsumption_ScheduleTurnover.CalculationPeriod) WHEN 1 THEN "jaanuar" WHEN 2 THEN "veebruar" WHEN 3 THEN "märts" WHEN 4 THEN "aprill" WHEN 5 THEN "mai" WHEN "Juuni" THEN "7. MILLAL 8 SIIS "august" KUI 9 SIIS "september" KUI 10 SIIS "oktoober" KUI 11 SIIS "november" KUI 12 SIIS "detsember" LÕPPAB KUI kuu

Nüüd näeb disain välja vähem tülikas ja seda on lihtne mõista.

14. Pakettpäringu täitmine.


Selleks, et taotlusi mitte korrutada, saate luua ühe suure päringu, jagada selle pakettideks ja sellega töötada.
Näiteks pean kataloogist "Kasutajad" hankima järgmised väljad: "Sünnikuupäev" ja iga kasutaja saadaolevad rollid. laadige see üles vormi erinevatesse tabeliosadesse. Muidugi saate seda teha ühe päringuga, seejärel peate kirjeid kordama või neid ahendama või võite teha järgmist:

SELECT Kasutajad.Link AS täisnimi, Kasutajad.Sünnikuupäev, Kasutajad.Roll PUT vtKasutajad kataloogist.Kasutajad AS Kasutajad; /////////////////////////////////////////////////// /////////////////////////// SELECT tueKasutajad.Täisnimi, teisikasutajad.Sünnikuupäev FROM tueUsers AS tueUsers GROUP BY tueUsers.täisnimi, tueUsers . Sünnikuupäev; /////////////////////////////////////////////////// =/ sünnist

tPackage = Request.ExecutePackage();

TP_Sünnikuupäev = tPakk.Üleslaadimine();
TP_Rollid = tPackage.Unload();

Nagu näeme, saab päringu sooritada partiidena ja tulemust töödelda massiivina. Mõnel juhul on see väga mugav.

15. Tingimused partiitaotluses

Näiteks on meil pakktaotlus, kus kõigepealt saame kataloogist "Kasutajad" väljad: "Nimi, sünnikuupäev, kood" ja soovime saada nende väljade tingimustega kirjeid kataloogist "Isikud".

SELECT Kasutajad.Individuaal.Nimi AS Nimi, Kasutajad.Isik.Sünnikuupäev AS Sünnikuupäev, Kasutajad.Individuaal.Kood AS Kood KOHT vtKasutajad kataloogist.Kasutajad AS Kasutajad; /////////////////////////////////////////////////// /////////////////////////// VALI üksikisikud. Link AS-i üksikisik kataloogist. Eraisikud AS-i üksikisikud

Saate kehtestada sellised tingimused:

WHERE Individuals.Code IN (SELECT vtUsers.Code FROM vtUsers) AND Individuals.Name IN (SELECT vtUsers.Code FROM vtUsers) AND Individuals.BirthDate IN (SELECT vtUsers.DateBirth FROM tvUsers)

Ja saate seda teha järgmiselt:

WHERE (Isikud.Kood, Isikud.Nimi, Isikud.Sünnikuupäev) IN (SELECT teisikasutajad.kood, teisikasutajad.nimi, teisikasutajad.sünniaeg teisikasutajatelt)

Pealegi on vaja korda hoida.

16. Päringu koostaja kutsumine partiipäringu seisukorra saamiseks

Kui on vaja kehtestada tingimus, nagu ülaltoodud näites, võite unustada, kuidas seda või teist välja virtuaalses tabelis kutsutakse.
Näiteks peate väljale "Sünnikuupäev" määrama tingimuse ja virtuaalses tabelis on selle välja nimi "Võlgniku sünniaeg" ja kui unustate nime, peate tingimuse redigeerimisest väljuma ilma salvestage ja vaadake välja nime. Selle vältimiseks võite kasutada järgmist tehnikat.

Konstruktsiooni “B” järele on vaja panna sulud ja jätta sulgude vahele tühik (tühik), valida see tühik ja kutsuda päringu konstruktor. Kujundajal on juurdepääs kõikidele partiipäringu tabelitele. Tehnika töötab nii virtuaalse registri tabelitel kui ka vahekaardil "Tingimused". Viimasel juhul peate märkima ruudu "P (suvaline tingimus)" ja sisestama redigeerimisrežiimi "F4".

Päringud koostati sageli käigupealt ja need lihtsalt illustreerivad neid „võtteid”, mida ma kaalusin.

Tahtsin vaadata indeksite kasutamist päringutes, kuid see on väga lai teema. Panen selle eraldi artiklisse või lisan selle hiljem siia.

upd1. Punktid 11,12
upd2. Punktid 13,14,15,16

Kasutatud raamatud:
Päringu keel "1C:Enterprise 8" – E.Yu. Khrustaleva
Professionaalne areng süsteemis 1C:Enterprise 8."

Vaatame nüüd ülejäänuid.

Funktsioonid stringidega töötamiseks 1C päringutes

1C päringutes stringiandmetega töötamiseks on vähe funktsioone ja operaatoreid.

Esiteks saab päringutesse lisada stringe. Selleks kasutage operaatorit "+":

Taotlus. Tekst = "VALI
"" Rida: " " + Allikas.Nimi
;

Teiseks saate valida osa reast. Selleks kasutage funktsiooni ASENDAMINE. Funktsioon sarnaneb sisseehitatud 1C keelega. Sellel on kolm parameetrit:

  1. Allika string.
  2. Märgi number, millega valitud rida peaks algama.
  3. Tegelased.

Taotlus. Tekst= "VALI
SUBSTRING("
"Rida:" ", 4, 3) Tulemusena"; // Tulemus: okei

Funktsioon ISNULL

NULL on spetsiaalne andmetüüp platvormil 1C:Enterprise. See on ka seda tüüpi ainus võimalik väärtus. NULL võib päringutes esineda mitmel juhul: päringuallikate ühendamisel, kui ühest tabelist vastavat väärtust ei leitud; olematu objekti andmetele ligi pääsemisel; kui päringuväljade loendis oli määratud NULL (näiteks mitme tabeli valikutulemuste kombineerimisel) jne.

Sest NULL ei ole null, tühi string ega isegi väärtus määratlemata, sageli on kasulik see asendada mõne kasulikuma andmetüübiga. See funktsioon on mõeldud selleks. ISNULL.

Sellel on kaks parameetrit:

  1. Kontrollitav väärtus.
  2. Väärtus, millega esimene parameeter asendada, kui see osutub NULL-iks.

Taotlus. Tekst= "VALI
ISNULL(Source.Remainder, 0) AS Remainder"
; // Kui päringu tulemuseks on väljajääk = NULL,
// siis asendatakse see 0-ga ja sellega saab sooritada matemaatilisi tehteid

Funktsioonid ESITUS Ja TUTVUSTUSLINGID

Need funktsioonid on loodud erinevate väärtuste stringi esituste saamiseks. See tähendab, et nad teisendavad viiteid, numbreid, tõeväärtusi jne. lihtteksti sisse. Nende erinevus seisneb selles, et funktsioon ESITUS teisendab mis tahes andmetüübid tekstiks (stringiks) ja funktsiooniks TUTVUSTUSLINGID- ainult lingib ja tagastab ülejäänud väärtused sellisel kujul, nagu need on, mitte teisendamata.

Taotlus. Tekst= "VALI
ESINDUS(TRUE) Booleanina,
ESITUS (4) numbrina,
ESINDUS (Allikas.Link) AS Link,
ESINDUS(DATETIME(2016,10,07)) AS Kuupäev"
;
// Boolean = "Jah", Number = "4", Link = "Dokumendi Kassa laekumise order nr.... alates..."
// Kuupäev = "07.10.2016 0:00:00"

Taotlus. Tekst= "VALI
RERESENTATION REFERENCE (TRUE) kui Boole'i ​​väärtus,
ESINDUSVIIDE(4) NUMBRINA
PRESENTINGLINK(Source.Link) AS Link,
ESINDUSVIIDE(DATETIME(2016,10,07)) AS kuupäev"
;
// Boolean = TRUE, Number = 4, Link = "Dokumenteerige kassa laekumise order nr.... alates..."
// Kuupäev=07.10.2016 0:00:00

Funktsioonid TÜÜP Ja TÜÜBI VÄÄRTUSED

Funktsioon TÜÜP tagastab platvormi 1C:Enterprise andmetüübi.

Taotlus. Tekst= "VALI
TYPE (number)
TYPE (string),
TÜÜP (dokument. Kulude kassakorraldus)"
;

Funktsioon TÜÜBI VÄÄRTUSED tagastab talle edastatud väärtuse tüübi.

Taotlus. Tekst= "VALI
VÄÄRTUSTE TÜÜP (5) AS Arv,
TYPE ("
"joon" ") AS String,
TÜÜP (Allikas.Link) AS Viide
Kataloogist Directory.Source AS Allikas"
;
//Number=Arv, String=String, Kataloog = DirectoryLink.Source

Neid funktsioone on mugav kasutada näiteks siis, kui on vaja välja selgitada, kas päringus saadud väli on mingit tüüpi väärtus. Võtame näiteks kontaktandmete registrist osapoolte kontaktandmed (seal hoitakse mitte ainult vastaspoolte, vaid ka organisatsioonide, eraisikute jms kontakte):

Taotlus. Tekst= "VALI

FROM

KUS
VÄÄRTUSTE TÜÜP (Kontaktteave.Objekt) = TÜÜP (Kataloog. Vastaspooled)"
;

Funktsioon TÄHENDUS

Funktsioon Tähendus võimaldab kasutada 1C konfiguratsiooniobjekte otse päringus, kasutamata .

Lisame eelmisele näitele veel ühe tingimuse. Peate hankima ainult oma vastaspoolte telefoninumbrid.

Taotlus. Tekst= "VALI
Kontaktteave.Sissejuhatus
FROM
Teabe register Kontaktandmed KUIDAS Kontaktandmed
KUS
VÄÄRTUSTE TÜÜP (Kontaktteave.Objekt) = TÜÜP (Kataloog. Vastaspooled)
JA ContactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

Tuleb märkida, et seda funktsiooni saab kasutada ainult etteantud väärtustega, st. väärtustega, millele pääseb juurde otse konfiguraatorist. See tähendab, funktsioon TÄHENDUS ei saa kasutada koos kasutajate loodud kataloogielementidega, kuid võib töötada loenditega, eelmääratletud kataloogielementidega, väärtustega EmptyLink.

Operaator LINK

Operaator LINK on loodud päringuga tagastatud väärtuste kontrollimiseks, et näha, kas need kuuluvad konkreetsesse võrdlustüüpi. Sama ülesannet saab täita funktsioonide abil TÜÜP Ja TÜÜBI VÄÄRTUSED(millel on laiem ulatus ja mida arutati eespool).

Näiteks vastaspoolte kontaktandmete valimise ülesande saab lahendada järgmiselt:

Taotlus. Tekst= "VALI
Kontaktteave.Sissejuhatus
FROM
Teabe register Kontaktandmed KUIDAS Kontaktandmed
KUS
ContactInformation.Object LINK Directory.Counterparties"
;

Operaator EXPRESS

Operaator EXPRESS kasutatakse 1C päringutes kahel juhul:

  • kui peate muutma primitiivse tüübi omadusi;
  • kui peate liitandmetüübiga välja muutma ühe tüübiga väljaks.

Primitiivsed andmetüübid hõlmavad järgmist: number, string, kuupäev, tõeväärtus. Mõnel neist andmetüüpidest on lisaomadused. Tüüp Number on pikkus ja täpsus, tüüp rida - pikkus või piiramatu.

Operaator EXPRESS võimaldab muuta mitte andmetüüpi, vaid lisaomadusi. Näiteks võib ta muuta piiramatu pikkusega stringi piiratud pikkusega nööriks. See võib olla kasulik, kui teil on vaja päringutulemusi sellise välja järgi rühmitada. Piiramatu pikkusega väljade kaupa rühmitada ei saa, seega teisendame selle 200 tähemärgi pikkuseks stringiks.

Taotlus. Tekst= "VALI
KOGUS (ERINEV Kaupade ja teenuste saabumine. Link) AS Link
FROM
Dokument.Kaubade ja teenuste vastuvõtt KUIDAS Kaupade ja teenuste vastuvõtt
GROUP BY
EXPRESS(kaupade ja teenuste vastuvõtt. Kommenteeri RIDANA (200)"
;

Mõnel juhul ei pruugi platvorm 1C optimaalselt töödelda liitandmetüübiga väljade päringuid. See toob kaasa pikemad päringuajad, mistõttu võib olla kasulik liittüüp eelnevalt üheks tüübiks teisendada.

Taotlus. Tekst= "VALI
EXPRESS (Kauba liikumine Käive. Tellimuse AS dokument. Kliendi tellimus). Kuupäev AS Tellimuse kuupäev,
Kaupade liikumine Käive. Nomenklatuur
FROM
RegistreeriAkumulatsioonid.Kaubade liikumine.Käive AS Kauba liikumine Käive
KUS
Kauba liikumine Käive.Tellimus LINK Dokument.Kliendi tellimus"
;

Operaatorid VALIK Ja ON NULL

Operaator VALIK sarnane operaatoriga KUI sisseehitatud 1C keeles, kuid selle funktsionaalsus on mõnevõrra vähenenud.

Oletame, et soovime saada kontaktandmeid Kontaktinfo teaberegistrist ja samal ajal eraldi päringu väljale märkida, kas see kuulub vastaspoolele või eraisikule.

Taotlus. Tekst= "VALI
Kontaktteave.Sissejuhatus,
VALIK
WHEN VALUES TÜÜP(Kontaktteave.Objekt) = TÜÜP(Kataloog. Vastaspooled)
SIIS"
Vastaspool "
MUU VALIK
WHEN VALUES TÜÜP(Kontaktteave.Objekt) = TÜÜP(Kataloog.Isikud)
SIIS"
individuaalne"
MUU "Keegi teine" "
LÕPP
LÕPP OMANIKUNA
FROM
Teabe register. Kontaktandmed AS Kontaktandmed"
;

Nagu näitest näha, kujunduses VALIK sõna järel on alati tingimus MILLAL; väärtus rakendatakse, kui tingimus on tõene pärast sõna SIIS ja väärtus, mida rakendatakse, kui tingimus ei ole täidetud, pärast sõna MUUDULISELT. Kõik kolm disainielementi VALIK on kohustuslikud. Jäta element välja MUUDULISELT, samamoodi nagu operaatori kasutamisel KUI sisseehitatud 1C keeles on see võimatu. Ka operaatorilt VALIK disainil pole analoogi ELSEIF, kuid võite investeerida ühe VALIK teises, nagu tehti meie näites.

Operaator ON NULL kasutatakse disainis VALIK päringuvälja võrdlemiseks tüübiga NULL.

Taotlus. Tekst= "VALI
VALIK
KUI VÄÄRTUS ON NULL, SIIS 0
MUU Tähendus
LÕPP"
;

Lisaks operaator ON NULL saab kasutada päringutingimustes, näiteks lauses KUS.

Päringukeel on üks 1C 8.3 põhimehhanisme arendajatele. Päringute abil saate kiiresti hankida kõik andmebaasis salvestatud andmed. Selle süntaks on väga sarnane SQL-iga, kuid sellel on mõned erinevused.

1C 8.3 (8.2) päringukeele peamised eelised SQL-i ees:

  • viiteväljade viitamise tühistamine (ühe või mitme punkti viitamine objekti detailidele);
  • tulemustega töötamine on väga mugav;
  • oskus luua virtuaalseid tabeleid;
  • päringu saab kirjutada nii inglise kui ka vene keeles;
  • võimalus blokeerida andmeid, et vältida ummikseisu.

1C päringukeele puudused:

  • erinevalt SQL-ist ei võimalda 1C päringud andmeid muuta;
  • salvestatud protseduuride puudumine;
  • stringi arvuks teisendamise võimatus.

Vaatame meie miniõpetust 1C päringukeele põhikonstruktsioonide kohta.

Kuna 1C päringud võimaldavad teil ainult andmeid vastu võtta, peavad kõik päringud algama sõnaga "SELECT". Pärast seda käsku näidatakse väljad, kust andmeid tuleb hankida. Kui määrate “*”, valitakse kõik saadaolevad väljad. Koht, kust andmeid (dokumendid, registrid, kataloogid jne) valitakse, märgitakse sõna “KÄTTE” järele.

Allpool käsitletud näites valitakse kogu nomenklatuuri nimed kataloogist “Nomenklatuur”. Pärast sõna “KUIDAS” näidatakse tabelite ja väljade varjunimed (nimed).

VALI
Nomenklatuur Nimi AS Nomenklatuuri nimi
FROM
Directory.Nomenclature AS Nomenklatuur

Käsu "SELECT" kõrval saate määrata märksõnu:

  • ERINEVAD. Päring valib ainult read, mis erinevad vähemalt ühe välja poolest (ilma duplikaatideta).
  • ESIMESE n, Kus n– ridade arv tulemuse algusest, mis tuleb valida. Kõige sagedamini kasutatakse seda konstruktsiooni koos sorteerimisega (ORDER BY). Näiteks kui teil on vaja valida teatud arv dokumente, mis on kuupäeva järgi värsked.
  • LUBATUD. See disain võimaldab valida andmebaasist ainult need kirjed, mis on praegusele kasutajale kättesaadavad. Selle märksõna kasutamise põhjal saab kasutaja veateate, kui proovib teha päringuid kirjete kohta, millele tal pole juurdepääsu.

Neid märksõnu saab kasutada koos või eraldi.

VAHETUSEKS

See ettepanek blokeerib andmed vastastikuste konfliktide vältimiseks. Lukustatud andmeid ei loeta teisest ühendusest enne tehingu lõppemist. Selles klauslis saate määrata konkreetsed tabelid, mis tuleb lukustada. Vastasel juhul blokeeritakse kõik. Disain on asjakohane ainult automaatse lukustusrežiimi jaoks.

Kõige sagedamini kasutatakse saldode laekumisel klauslit "MUUTUSEKS". Lõppude lõpuks, kui programmis töötab korraga mitu kasutajat, samal ajal kui üks saab saldosid, saab teine ​​neid muuta. Sel juhul ei ole saadud jääk enam õige. Kui blokeerite andmed selle ettepanekuga, siis seni, kuni esimene töötaja saab õige saldo ja teeb sellega kõik vajalikud manipulatsioonid, on teine ​​töötaja sunnitud ootama.

VALI
Vastastikused arveldused. Töötaja,
Vastastikused arveldused Vastastikuste arvelduste summa Saldo
FROM
Kogunemiste register Vastastikused arveldused töötajatega Saldod AS Vastastikused arveldused
VAHETUSEKS

KUS

Kujundus on vajalik selleks, et üleslaaditavatele andmetele mingisugune valik peale suruda. Teatud juhtudel on registritest andmete hankimisel mõistlikum määrata virtuaalsete tabelite parameetrites valikutingimused. "WHERE" kasutamisel otsitakse esmalt kõik kirjed ja alles seejärel rakendatakse valikut, mis pärsimist oluliselt aeglustab.

Allpool on näide konkreetsele ametikohale kontaktisikute hankimise taotlusest. Valikuparameetri vorming on &ParameterName (parameetri nimi on suvaline).

VALIK (CASE)

Disain võimaldab teil täpsustada tingimusi otse päringu sisus.

Allolevas näites sisaldab väli "Lisaväli" teksti sõltuvalt sellest, kas dokument on postitatud või mitte.

VALI
Sissepääs T&U.Link,
VALIK
MILLAL SissepääsT&U.Teostatakse
SIIS "Dokument on vastu võetud!"
MUU “Dokumenti ei postitatud...”
LÕPETA AS Täiendav väli
FROM
Dokument. Kaupade ja teenuste kättesaamine KUIDAS Kviitungi T&C

LIITU

Ühendab kahte tabelit konkreetse seose tingimuse alusel.

VASAKU/PAREMA ÜHENDUS

LEFT liitumise olemus seisneb selles, et esimene määratud tabel võetakse tervikuna ja teine ​​lingitakse sellega vastavalt ühenduse tingimusele. Kui teises ei ole esimesele tabelile vastavaid kirjeid, siis asendatakse nende väärtustena NULL. Lihtsamalt öeldes on põhitabel esimene määratud tabel ja teise tabeli andmed (kui need on olemas) on selle andmetega juba asendatud.

Näiteks on vaja hankida kaubaartiklid “Kauba ja teenuste vastuvõtmine” dokumentidest ja hinnad inforegistrist “Kaubahinnad”. Sel juhul, kui mõne positsiooni hinda ei leita, asendage selle asemel NULL. Kõik dokumendis olevad kaubad valitakse välja olenemata sellest, kas neil on hind või mitte.

VALI
Kviitung ja U. Nomenklatuur,
Hinnad. Hind
FROM
Dokument. Kaupade ja teenuste vastuvõtmine Kaubad KUIDAS Kviitung T&C
INTERNAL JOIN RegisterInformation.HinnadNomenklatuur.SliceLast AS Hinnad
Tarkvara kviitung&U.Nomenklatuur = Hinnad.Nomenklatuur

ÕIGES on kõik täpselt vastupidi.

TÄIELIK ÜHENDUS

Seda tüüpi ühendus erineb eelmistest selle poolest, et selle tulemusena tagastatakse kõik nii esimese kui ka teise tabeli kirjed. Kui määratud lingitingimuse põhjal esimeses või teises tabelis kirjeid ei leitud, tagastatakse selle asemel NULL.

Eelmises näites täisühenduse kasutamisel valitakse välja kõik kaubaartiklid dokumendist “Kauba ja Teenuse vastuvõtmine” ning kõik viimased hinnad registrist “Kaubahinnad”. Ei leitud kirjete väärtused nii esimeses kui ka teises tabelis on võrdsed väärtusega NULL.

SISEMINE LIITUMINE

INNER JOIN ja FULL JOIN erinevus seisneb selles, et kui kirjet vähemalt ühest tabelist ei leita, ei kuvata päring seda üldse. Selle tulemusena valitakse dokumendist “Kauba ja teenuste vastuvõtt” ainult need kaubaartiklid, mille kohta on kirjed inforegistris “Kaubahinnad”, kui eelmises näites asendame “TÄIS” sõnaga “SISEMINE”.

GROUP BY

1C päringutes rühmitamine võimaldab ahendada tabeli ridu (väljade rühmitamine) vastavalt teatud ühisele tunnusele (väljade rühmitamine). Rühmitamisvälju saab kuvada ainult koondfunktsioonide abil.

Järgmise päringu tulemuseks on tootetüüpide loend koos nende maksimaalsete hindadega.

VALI
,
MAX(Hind.Hind) AS Hind
FROM

GROUP BY
Hinnad.Nomenklatuur.Nomenklatuuri tüüp

TULEMUSED

Erinevalt rühmitamisest kuvatakse kogusummade kasutamisel kõik kirjed ja neile lisatakse kogusummaread. Rühmitamine kuvab ainult üldistatud kirjed.

Tulemusi saab kokku võtta kogu tabeli kohta (kasutades märksõna “GENERAL”), mitme välja kohta, hierarhilise struktuuriga väljade kohta (märksõnad “HIERARHIA”, “AINULT HIERARHIA”). Tulemuste summeerimisel ei ole vaja kasutada koondfunktsioone.

Vaatame ülaltoodud näitele sarnast näidet, kasutades rühmitamist. Sel juhul tagastab päringutulemus mitte ainult rühmitatud väljad, vaid ka üksikasjalikud kirjed.

VALI
Hinnad.Nomenklatuur.Nomenklatuuri tüüp AS Nomenklatuuri tüüp,
Hinnad.Hind AS Hind
FROM
Inforegister Nomenklatuuri hinnad AS viimaste hindade hetktõmmis
TULEMUSED
MAKSIMUM (hind)
KÕRVAL
TüüpNomenklatuur

OMAMINE

See operaator on sarnane WHERE-operaatoriga, kuid seda kasutatakse ainult koondfunktsioonide jaoks. Ülejäänud väljad, välja arvatud need, mida see operaator kasutab, tuleb rühmitada. WHERE-operaator ei ole koondfunktsioonide puhul rakendatav.

Allolevas näites valitakse kauba maksimumhinnad, kui need ületavad 1000, grupeerituna kaubatüübi järgi.

VALI

MAX(Hind.Hind) AS Hind
FROM
Inforegister Nomenklatuuri hinnad AS viimaste hindade hetktõmmis
GROUP BY
Hinnad.Nomenklatuur.Nomenklatuuri tüüp
OMAMINE
MAKSIMUM(Hinnad.Hind) > 1000

SORTEERIMA

Operaator ORDER BY sorteerib päringu tulemuse. Kirjete ühtses järjekorras kuvamise tagamiseks kasutatakse AUTO ORDER. Primitiivsed tüübid sorteeritakse tavapäraste reeglite järgi. Viitetüübid on sorteeritud GUID-i järgi.

Näide töötajate nimede järgi sorteeritud loendi hankimisest:

VALI
Töötajad.Nimi AS Nimi
FROM
Kataloog.Töötajad KUIDAS Töötajad
SORTEERIMA
Nimi
AUTOMATELLIMUS

Muud 1C päringukeele konstruktsioonid

  • KOMBINEERIDA– kahe päringu tulemused üheks.
  • KOMBINEERI KÕIK– sarnane funktsiooniga COMBINE, kuid ilma identseid ridu rühmitamata.
  • TÜHJA LAUD– kasutatakse mõnikord päringute ühendamisel tühja pesastatud tabeli määramiseks.
  • KOHT– loob ajutise tabeli keerukate 1C päringute optimeerimiseks. Selliseid päringuid nimetatakse paketttaotlusteks.

Päringu keele funktsioonid

  • SUBSTRING kärbib stringi määratud positsioonist määratud arvu märkideni.
  • AASTA...TEINE võimaldab teil saada valitud numbrilise tüübi väärtuse. Sisendparameetriks on kuupäev.
  • PERIOODI ALGUS ja PERIOODI LÕPP kasutatakse kuupäevadega töötamisel. Täiendava parameetrina on märgitud perioodi tüüp (PÄEV, KUU, AASTA jne).
  • LISAKUUPÄEV võimaldab lisada või lahutada kuupäevast kindlat tüüpi kindlat kellaaega (TEINE, MINUT, PÄEV jne).
  • ERINEVUS määrab kahe kuupäeva erinevuse, näidates välja väljundväärtuse tüübi (PÄEV, AASTA, KUU jne).
  • ISNULL asendab puuduva väärtuse määratud avaldisega.
  • ESINDUS ja ESINDUSLINGID saada määratud välja stringi esitus. Rakendage vastavalt mis tahes väärtustele ja ainult võrdlusväärtustele.
  • TÜÜP, TÜÜBI VÄÄRTUSED kasutatakse sisendparameetri tüübi määramiseks.
  • LINK on atribuudi väärtuse tüübi loogiline võrdlusoperaator.
  • EXPRESS kasutatakse väärtuse teisendamiseks soovitud tüüpi.
  • KUUPÄEV KELLAAEG saab arvväärtustest (aasta, kuu, päev, tund, minut, sekund) väärtuse tüüp "Kuupäev".
  • TÄHENDUS 1C päringus kasutatakse seda ettemääratud väärtuste tähistamiseks - kataloogid, loendid, omaduste tüüpide plaanid. Kasutusnäide: " Kus juriidiline isik = väärtus (loend. juriidiline isik. isik)«.

Päringu koostaja

1C-ga päringute loomiseks on väga mugav sisseehitatud mehhanism - päringu kujundaja. See sisaldab järgmisi peamisi vahekaarte:

  • "Tabelid ja väljad" - sisaldab valitavaid välju ja nende allikaid.
  • "Ühendused" - kirjeldab CONNECTION-struktuuri tingimusi.
  • “Rühmitamine” – sisaldab rühmitusstruktuuride kirjeldust ja nende alusel summeeritud välju.
  • "Tingimused" - vastutab päringus andmete valimise eest.
  • „Täpsem” – täiendavad päringuparameetrid, nagu märksõnad käsu „SELECT” jaoks jne.
  • “Joins/Aliases” - näidatakse tabelite ühendamise võimalused ja täpsustatakse aliased (konstruktsioon “KUIDAS”).
  • Päringute tulemuste sortimise eest vastutab “Tellimine”.
  • „Kokkusummad” – sarnane vahekaardile „Rühmitamine”, kuid kasutatakse konstruktsiooni „TOTALS” jaoks.

Päringu enda teksti saab vaadata vajutades vasakus alanurgas nupule “Taotlus”. Sellel kujul saab seda käsitsi parandada või kopeerida.


Taotluse konsool

Päringu tulemuste kiireks vaatamiseks ettevõtte režiimis või keeruliste päringute silumiseks kasutage . See sisaldab päringu teksti, määrab parameetrid ja kuvab tulemuse.

Päringukonsooli saate alla laadida ITS-kettale või .

Selles artiklis tahame teiega kõike arutada 1C päringu keele funktsioonid ja päringukeele konstruktsioonid. Mis vahe on funktsioonil ja disainil? Funktsiooni kutsutakse välja sulgude ja neis olevate võimalike parameetritega ning konstruktsioon kirjutatakse ilma sulgudeta. Kahtlemata kõik 1C päringukeele struktuurid ja funktsioonid muuta andmete hankimise protsess paindlikuks ja multifunktsionaalseks. Need funktsioonid ja konstruktsioonid kehtivad päringuväljade puhul ja mõned kehtivad ka tingimuste kohta.

1C päringukeele funktsioonid

Sest selge kirjeldus 1C päringu keele funktsioonid on palju vähem levinud kui struktuuride kirjeldused, otsustasime hakata vaatama funktsioone. Nüüd vaatame igaüks neist eraldi, kirjeldades selle eesmärki, süntaksit ja kasutusnäidet, nii et:

1. Funktsioon KUUPÄEV KELLAAEG- see funktsioon loob konstantse välja tüübiga "Kuupäev".

Süntaks: KUUPÄEV KELLAAEG(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Kasutusnäide:

2. DATE DIFFERENCE funktsioon- tagastab kahe kuupäeva erinevuse ühes dimensioonis (aasta, kuu, päev, tund, minut, sekund). Mõõtmine edastatakse parameetrina.

Süntaks: DIFERENCEDATE(<Дата1>, <Дата2>, <Тип>)

Kasutusnäide:

Query.Text = "SELECT | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | AS Päevade arv";

3. Funktsioon VALUE- määrab konstantse välja andmebaasist etteantud kirjega, samuti saate hankida mis tahes tüüpi tühja lingi.

Süntaks: VALUE(<Имя>)

Kasutusnäide:

Request.Text = "SELECT //eelmääratletud element | VÄÄRTUS(Kataloog.Valuuta.Dollar) AS Dollar, //tühi link | VÄÄRTUS(Dokument.Kaubade ja teenuste kättesaamine.EmptyLink) AS Kviitung, //ülekande väärtus | VÄÄRTUS(Ülekandmine . Juriidiline isik. Eraisik) AS Eraisik, //eelmääratletud konto | VÄÄRTUS(kontoplaan. Isemajandav. Materjalid) AS Konto_10" ;

4. SELECT funktsioon- meie ees on IF-i konstruktsiooni analoog, mida kasutatakse koodis, ainult seda kasutatakse 1C päringutes.

Süntaks: VALIK MILLAL<Выражение>SIIS<Выражение>MUUDULISELT<Выражение>LÕPP

Kasutusnäide:

Request.Text = //kui summa on üle 7500, siis peaks olema allahindlus 300 rubla, //nii et tingimuse käivitamisel funktsioon //tagastab Summa - 300 //muidu tagastab päring lihtsalt Summa "VALI | SELECT | WHEN TCR-kviitungid.Summa > 7500 | SIIS TKR-kviitungid.Summa - 300 | MUU TKR-laekumised.Summa | LÕPP AS SummaAllahindlusega |Alates | Dokument.Kauba kättesaamineTeenused.Kaubad TKR-na";

5. EXPRESS funktsioon- võimaldab väljendada konstantset välja kindla tüübiga.

Süntaks: EXPRESS(väljanimi AS tüübinimi)

Kasutusnäide:

Query.Text = "VALI ERINEVAD | Müük.Registrinumber, | SELECT | WHEN Müük.Registri LINK dokument.Kulu | THEN EXPRESS(Müük.Registri AS dokument.Kulu) | ELSE SELECT | WHEN Müük.Registri LINK dokument.Rakendamine | THEN EXPRESS(Müük.Registrar AS Dokument.Teostus) | LÕPP | ... | END AS Number | FROM | RegistreeriKogumised.Ostud AS Ostud";

Kas on veel üks võimalus funktsiooni EXPRESS kasutamiseks segatüüpi väljadel, kus need esinevad? Lihtsaim näide on mis tahes registri "registripidaja". Miks peaksime siis registripidajas tüübi kvalifitseerima? Vaatleme olukorda, kui valime registripidajast välja "Arv", millisest tabelist number valitakse? Kõigi õige vastus! Seetõttu peaksime päringu kiireks toimimiseks määrama selgesõnalise tüübi funktsiooni EXPRESS abil

Kasutusnäide:

Query.Text = "SELECT | EXPRESS(Nomenklatuur.Comment AS Line(300)) AS Comment, | EXPRESS(Nomenclature.Sum AS Number(15,2)) AS Sum |FROM | Kataloog.Nomenklatuur AS Nomenklatuur";

6. ISNULL funktsioon(alternatiivne kirjapilt ISNULL) - kui välja tüüp on NULL, siis asendatakse see funktsiooni teise parameetriga.

Süntaks: ISNULL(<Поле>, <ПодставляемоеЗначение>)

Kasutusnäide:

Pange tähele ka seda, et tüüp NULL on soovitatav ALATI asendada mõne väärtusega, sest võrdlus tüübiga NULL tagastab alati FALSE, isegi kui võrdlete NULL-iga NULL-iga. Enamasti moodustuvad NULL-väärtused tabelite ühendamise tulemusena (igat tüüpi ühendused, välja arvatud sisemised).

Query.Text = //Valige kogu kaup ja selle saldod //kui mõnel kaubal saldot pole, siis on väli //NULL, mis asendatakse väärtusega 0 "SELECT | No. Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) AS Ülejääk | FROM | Kataloog.Nomenklatuur AS nr | VASAKULINE ÜHENDUS Registreeri akumulatsioonid. KaubadLadudes. Ülejäägid AS KaubadLadudes Jäägid | ON (GoodsInWarehouses)Lingid"=Lingid";

7. RERESENTATION funktsioon- võimaldab teil saada päringuvälja esituse.

Süntaks: PERFORMANCE(<НаименованиеПоля>)

Kasutusnäide:

Query.Text = "SELECT | ESINDUS(FreeRemainingRemains.Nomenclature) AS Nomenklatuur, | ESINDUS(FreeRemaining.Warehouse) AS Ladu, | FreeRemainingRemaining.InStockRemaining |FROM |Accumulation Register.FreemainingAS FreeRemaining

Konstrueerib 1C päringukeeles

Arutasime teiega eespool 1C päringu keele funktsioonid, nüüd on aeg mõelda konstruktsioone 1C päringukeeles, need pole vähem olulised ja kasulikud, alustame.

1. Ehitus LINK- on loogiline operaator viitetüübi kontrollimiseks. Kõige sagedamini ilmneb komplekstüüpi välja kontrollimisel konkreetse tüübiga. Süntaks: LINK<Имя таблицы>

Kasutusnäide:

Request.Text = //kui salvestaja väärtuse tüüp on dokument Kviitung, //siis päring tagastab "Kauba vastuvõtmine", vastasel juhul "Kauba müük" "SELECT | SELECT | WHEN Remaining.Registro LINK Dokument.Kauba kättesaamineTeenused | SIIS ""Kviitung"" | MUU ""Tarbimine"" | LÕPP AS Liikumise liik | ALT | Kogunemisregister. Ülejäänud tooted ladudes AS Jääb" ;

2. Disain VAHEL- see operaator kontrollib, kas väärtus on määratud vahemikus.

Süntaks: VAHEL<Выражение>JA<Выражение>

Kasutusnäide:

Request.Text = //saate kogu nomenklatuuri, mille kood on vahemikus 1 kuni 100 "SELECT | Nomenklatuur.Link |FROM | Kataloog. Nomenklatuur AS Nomenklatuur |KUS | Nomenklatuur.Kood 1 JA 100 VAHEL" ;

3. Ehitus B ja B HIERARHIA- kontrollige, kas väärtus on ülekantud loendis (loendina saab üle kanda massiive, väärtuste tabeleid jne). Operaator IN HIERARCHY võimaldab vaadata hierarhiat (näide kontoplaani kasutamisest).

Süntaks: IN(<СписокЗначений>), HIERARHIAS(<СписокЗначений>)

Kasutusnäide:

Request.Text = //valige konto kõik alamkontod "SELECT | Isemajandav. Link AS-i konto | FROM | Kontoplaan. Isemajandav AS Isemajandav | KUS | Isemajandav. Link HIERARHIA VÄÄRTUSES (Chart of Kontod. Isemajandav. Kaubad)";

4. Disain SARNANE- See funktsioon võimaldab meil võrrelda stringi stringimustriga.

Süntaks: LIKE"<ТекстШаблона>"

Rea mustri valikud:

% - jada, mis sisaldab suvalist arvu suvalisi märke.

Üks suvaline tegelane.

[...] – mis tahes üksik märk või tähemärkide jada, mis on loetletud nurksulgudes. Loend võib määrata vahemikke, näiteks a-z, mis tähendab vahemikku lisatud suvalist märki, sealhulgas vahemiku lõppu.

[^...] – mis tahes üksik märk või märgijada, mis on loetletud nurksulgudes, välja arvatud need, mis on loetletud pärast eitusmärki.

Kasutusnäide:

Query.Text = //otsige kogu nomenklatuur, mis sisaldab juurt TABUR ja algab //kas väikese või suure tähega t "SELECT | Nomenklatuur. Link | FROM | Kataloog. Nomenklatuur AS Nomenklatuur | KUS | Tooted. Nimi LIKE "" [Tt ]abur%""" ;

5. Disain LUBATUD- see operaator võimaldab valida andmebaasist ainult need kirjed, mille jaoks helistajal on lugemisõigus. Need õigused on konfigureeritud kirje tasemel (RLS).

Süntaks: ALOWED kirjutatakse pärast märksõna SELECT

Kasutusnäide:

Request.Text = "VALI LUBATUD | Osapooled. Link | FROM | Kataloog. Vastaspooled kui vastaspooled";

6. Disain ERINEVAD- võimaldab valida kirjeid, milles pole dubleerivaid kirjeid.

Süntaks: VARIOUS on kirjutatud märksõna SELECT järele

Kasutusnäide:

Request.Text = //valib kirjed, millele lugejal on õigused "VALI ERINEVAD | Counterparties.Name |FROM | Kataloog. Counterparties AS Counterparties" ;

Samuti saab ERINEVAD konstruktsiooni kasutada LUBATUD operaatori ja teiste operaatoritega.

Kasutusnäide:

Request.Text = //valib erinevaid kirjeid, millele lugejal on õigused "VALI LUBATUD ERINEVAD | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties";

7. Disain ESIMENE- valib päringu tulemusest parameetris määratud kirjete arvu.

Süntaks: FIRST<число>

Kasutusnäide:

Request.Text = //vali esimesed 4 CCD numbrit kataloogist "SELECT FIRST 4 | CCD Numbers. Link | FROM | Directory. CCD Numbers AS CCD Numbers";

8. Disain MUUDATUSEKS- võimaldab lukustada lauda, ​​töötab ainult tehingutes (ainult automaatlukkude puhul).

Süntaks: VAHETUSEKS<НаименованиеТаблицы>

Kasutusnäide:

Query.Text = "SELECT | Vabad jäägid. Nomenklatuur, | vabad jäägid. ladu, | vaba jäänused. laos järelejäänud | FROM | akumulatsiooniregister. Tasuta jäägid. Ülejäänud vabad jäägid Ülejäänud | MUUDATUSTE register | FOR CHANGE | . Vabad jäägid. Ülejäänud";

9. Disain TELLI- korraldab andmeid kindla valdkonna järgi. Kui väli on link, siis lipu seadmisel AUTOMATELLIMUS Sorteerimine toimub lingi esituse järgi; kui lipp on välja lülitatud, sorteeritakse lingid mälus oleva lingi aadressi vanuse järgi.

Süntaks: SORTEERIMA<НаименованиеПоля>AUTOMATELLIMUS

Kasutusnäide:

Query.Text = "SELECT | Ülejäänud vabad jäägid. Nomenklatuur AS Nomenklatuur, | Ülejäänud vabad jäägid. Warehouse AS Ladu, | Ülejäänud vabad jäägid. Laos Ülejäänud | FROM | Registreeri akumulatsioonid. Vabad ülejäägid. Ülejäänud AS Vaba Ülejäänud LOEND BY | | Nomenklatuur | TELLIMUSTE AUTOMAATNE TAASTAMINE";

10. Disain GROUP BY- kasutatakse päringustringide rühmitamiseks kindlate väljade järgi. Numbrivälju tuleb kasutada mis tahes koondfunktsiooniga.

Süntaks: GROUP BY<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Kasutusnäide:

Query.Text = "SELECT | ProductsInWarehouses.Nomenclature AS Nomenclature, | ProductsInWarehouses.Warehouse, | SUM(GoodsInWarehouses.Stock) AS LAOS |ALT | RegistreeriKood.TootedLadudes AS TootedRÜHM |Laodes |TootedRÜHM |Laos |Laos | Laod. Ladu" ;

11. Disain HAVING- võimaldab teil rakendada andmete valiku tingimusele koondfunktsiooni, sarnaselt WHERE-konstruktsiooniga.

Süntaks: OMAMINE<агрегатная функция с условием>

Kasutusnäide:

Query.Text = //valib rühmitatud kirjed, mille väli InStock on suurem kui 3 "SELECT | ItemsInStocks.Nomenclature AS nomenklatuur, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS LAOS |FROM | RegistreeriAccumussstock | GROUP BY | TootedLaod.Nomenklatuur, | TootedLadudes.Ladu | |SAADAVAL | KOGU(TootedLaos.Laos) > 3" ;

12. Ehitus INDEX BY- kasutatakse päringuvälja indekseerimiseks. Indekseerimisega päringu täitmine võtab kauem aega, kuid kiirendab indekseeritud väljadelt otsimist. Saab kasutada ainult virtuaalsetes tabelites.

Süntaks: INDEX BY<Поле1, ... , ПолеN>

Kasutusnäide:

Query.Text = "SELECT | Ts.NameOS, | Ts.FolderNumber, | Ts.CodeOS, | Ts.Term, | Ts.Type | PLACE DataTs | FROM | &Ts AS Ts | | INDEX BY | Ts.NameOS, | Ts .CodeOS";

13. Disain KUS- võimaldab seada mis tahes valikuväljale tingimuse. Tulemus sisaldab ainult neid kirjeid, mis vastavad tingimusele.

Süntaks: KUS<Условие1 ОператорЛогСоединения УсловиеN>

Kasutusnäide:

Query.Text = //valitud on kõik kompensatsioonijäänud kirjed<>0 ja //AmountForCalcCompRemaining > 100 "SELECT | HüvitisRPORjääb.Vastaspool, |HüvitisRPORjääb.Laps, | HüvitisRPORjääb.Hüvi jääb, | Hüvitis ARPORjääb.SummaCalcCompRemains.CalcCompRemains |CalcCompRemains |CalcCompRemains | AS HüvitisRPOstat ki |KUS |Tasu RPORülejäänud. Hüvitis järelejäänud<>0 | Ja CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

14. Disaini TULEMUSED... ÜLDINE- kasutatakse kogusummade arvutamiseks; kujundus määrab väljad, mille järgi summaarseid summasid arvutatakse, ja koguväljadele rakendatakse koondfunktsioone. Kui kasutate kogusummasid iga välja jaoks pärast konstruktsiooni TOTAL, rühmitatakse andmed. Valikuline on konstruktsioon GENERAL, selle kasutamine pakub ka täiendavat rühmitamist. Allpool näete päringu tulemuse näidet.

Süntaks: TULEMUSED<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>KÕRVAL<ОБЩИЕ> <Поле1, ... , ПолеN>

Kasutusnäide:

Request.Text = "SELECT | Arvutused. Vastaspoole leping. Lepingu liik AS Lepingu liik, | Arvutused. Vastaspoole leping AS Leping, | Arvutused. Vastaspool, | Arvutused. Vastastikuse arveldussaldo summa AS saldo | ALAST | Kogumiste register. Vastastikune Arveldamine vastaspooltega. Saldo AS Arvutused | KOKKU | SUMMA (saldo) | Tarkvara | ÜLDOSA, | Lepingu liik";

Joonisel on välja toodud päringu täitmisel tekkinud rühmitused, ülemine viitab jaotisele ÜLDINE ja teine ​​väljale Vastaspoole lepingu lepingu tüüp.

1C päringukeel on üks peamisi erinevusi versioonide 7.7 ja 8 vahel. Üks olulisemaid punkte 1C programmeerimise õppimisel on päringukeel. 1C 8.3 puhul on päringud kõige võimsam ja tõhusam tööriist andmete hankimiseks. Päringukeel võimaldab hankida andmebaasist infot mugavalt.

Süntaks ise meenutab väga klassikalist T-SQL-i, välja arvatud see, et 1C-s saate päringukeelt kasutades andmeid vastu võtta ainult konstruktsiooni Select abil. Keel toetab ka näiteks keerukamaid konstruktsioone (päring päringu sees). 1C 8 päringuid saab kirjutada nii kirillitsas kui ka ladina keeles.

Selles artiklis proovin rääkida 1C päringukeele peamistest märksõnadest:

  • vali
  • lubatud
  • mitmesugused
  • väljendada
  • esiteks
  • vahelduseks
  • tähenduses
  • väärtuse tüüp (ja REFERENCE operaator)
  • valik
  • rühma järgi
  • millel
  • ISNULL
  • Jah NULL
  • ühendused - parem, vasak, sisemine, täis.

Nagu ka mõned väikesed 1C keele nipid, mille abil saate optimaalselt konstrueerida päringu teksti.

Päringute silumiseks süsteemis 1C 8.2 on spetsiaalne tööriist - päringukonsool. Kirjeldust näete ja saate selle alla laadida, kasutades linki -.

Vaatame 1C päringukeele kõige olulisemaid ja huvitavamaid operaatoreid.

VALI

1C Enterprise 8 päringukeeles algab iga päring märksõnaga VALI. 1C keeles pole UPDATE, DELETE, CREATE TABLE, INSERT konstruktsioone, need manipulatsioonid tehakse objektitehnoloogias. Selle eesmärk on lugeda ainult andmeid.

Näiteks:

VALI
Praegune kataloog.Nimi
FROM
Directory.Nomenclature AS Praegune kataloog

Päring tagastab tabeli üksuste nimedega.

Konstruktsiooni lähedal VALI leiad märksõnu VAHETUSEKS, LUBATUD, ERINEVAD, ESIMESE

LUBATUD— valib tabelist ainult need kirjed, millele praegusel kasutajal on õigused.

ERINEVAD— tähendab, et tulemus ei sisalda topeltridu.

VALIK (CASE)

Väga sageli alahindavad programmeerijad seda disaini. Selle kasutamise näide:

Praegune kataloog.Nimi,

MILLAL Praegune kataloog.Teenus SIIS

"Teenus"

LÕPETA KUIDAS VAADATA Nomenklatuur

Directory.Nomenclature AS Praegune kataloog

Näide tagastab tekstiväärtuse väljal „Kauba tüüp” – „Toode” või „Teenus”.

KUS

1C päringukeele kujundus, mis võimaldab vastuvõetud andmetele valiku teha. Pange tähele, et süsteem saab kõik andmed serverist ja alles siis valitakse need selle parameetri alusel.

VALI
Kataloog.Nimi
FROM
Current Directory.Nomenclature AS Current Directory
WHERE CurrentDirectory.Service = TRUE

Näites valime kirjed, mille atribuudi “Teenus” väärtuseks on seatud “True”. Selles näites saame hakkama järgmise tingimusega:

"KUS TEENUS ON"

Põhimõtteliselt valime read, kus märksõna järel olev avaldis on võrdne "True".

Avaldistes saate kasutada otseseid tingimusi:

WHERE Kood = "005215"

Kasutades tingimustes operaatorit „VALUE()”, kasutage juurdepääsu eelmääratletud elementidele ja loenditele 1C päringus:

WHERE kauba tüüp = väärtus (loend. Kaubatüübid. Toode)

Ajaväärtusi saab määrata järgmiselt:

KUS Kviitungi kuupäev > DATETIME(2012,01,01):

Kõige sagedamini määratakse tingimused päringule edastatavate parameetritena:

Hankige 267 videotundi 1C-s tasuta:

WHERE NomenclatureGroup= &NomenclatureGroup

Atribuuditüübile saab kehtestada tingimuse, kui see on liittüüpi:

Kui teil on vaja piirata valikut väärtuste loendist või massiivist, saate teha järgmist.

KUS on kogumisregister. Registripidaja B (&valimiseks vajalike dokumentide loend)

Tingimus võib olla ka keeruline, koosnedes mitmest tingimusest:

WHERE Kviitungi kuupäev > DATETIME(2012,01,01) AND NomenclatureGroup= &NomenclatureGroup AND NOT Service

GROUP BY

Tulemuse rühmitamiseks kasutatava 1C 8.2 päringukeele disain.

Näiteks:

VALI
Kaupade ja teenuste kaupade vastuvõtmine. Kaubad,
SUM (kauba kättesaamine, teenused, kaubad. kogus) AS kogus,
SUM(Kauba kättesaamineTeenusedKaubad.Summa) AS Summa
FROM
Dokument. Kaupade ja teenuste vastuvõtmine. Kaubad KUIDAS Kaupade ja teenuste vastuvõtmine Kaup

GROUP BY
Kauba kättesaamineTeenusedKaubad.Kaubad

See päring võtab kokku kõik laekumised summade ja koguste kaupa.

Peale märksõna SUMMA Saate kasutada muid koondamisfunktsioone: KOGUS, ERINEVATE ARV, MAKSIMUM, MINIMAALNE, KESKMINE.

OMAMINE

Disain, mis sageli unustatakse, kuid see on väga oluline ja kasulik. See võimaldab määrata valikut koondfunktsiooni kujul, seda ei saa kujunduses teha KUS.

Näide HAVING-i kasutamisest 1C päringus:

VALI
Kaupade ja teenuste kaupade vastuvõtmine. Kaubad,
SUM (kauba kättesaamine, teenused, kaubad. kogus) AS kogus,
SUM(Kauba kättesaamineTeenusedKaubad.Summa) AS Summa
FROM
Dokument. Kaupade ja teenuste vastuvõtmine. Kaubad KUIDAS Kaupade ja teenuste vastuvõtmine Kaup

GROUP BY
Kaupade ja teenuste vastuvõtt Kaubad.kaubad

SUM(Kauba vastuvõttTeenusedKaubad.Kogus) > 5

Seega valime välja toodete arvu, mida saabus rohkem kui 5 tükki.

TÄHENDUS()

Näiteks:

WHERE Pank = väärtus (kataloog.Pangad.TühiLink)

WHERE nomenklatuuri tüüp = väärtus (kataloog. Nomenklatuuri tüübid. Toode)

WHERE üksuse tüüp = väärtus (loend. üksuse tüübid. teenus)

TYPE taotluses

Andmetüüpi saab kontrollida funktsioonide TYPE() ja VALUETYPE() või loogilise REFERENCE-operaatori abil.

EXPRESS()

1C päringutes kasutatakse kiiroperaatorit andmetüüpide teisendamiseks.

Süntaks: EXPRESS(<Выражение>KUIDAS<Тип значения>)

Selle abil saate teisendada stringiväärtused kuupäevaks või viiteväärtused stringiandmeteks jne.

Praktilistes rakendustes kasutatakse väga sageli piiramatu pikkusega väljade teisendamiseks operaatorit Express(), kuna piiramatu pikkusega välju ei saa valida, rühmitada jne. Kui selliseid välju ei teisendata, kuvatakse tõrketeade Te ei saa võrrelda piiramatu pikkusega välju ja ühildumatut tüüpi välju.

VALI
ContactInformation.Object,
EXPRESS(ContactInfo.View AS ROW(150)) AS View
FROM
Teabe register Kontaktandmed KUIDAS Kontaktandmed

GROUP BY
EXPRESS(Kontaktteave.Esitus AS ROW(150)),
Kontaktinfo.Objekt

ISNULL (ISNULL)

Päris 1C päringukeele üsna kasulik funktsioon, mis kontrollib kirje väärtust ja kui see on võrdne NULL, See võimaldab teil selle oma väärtusega asendada. Enamasti kasutatakse virtuaalsete saldo- ja käibetabelite hankimisel varjamiseks NULL ja pane selgeks 0 (null).

ISNULL(Kuueelsed maksud.AppliedFSS Benefit, 0)

Selline 1C päringukeele ISNULL funktsioon tagastab väärtuse puudumisel nulli, mis väldib viga.

LIITU

Ühendusi on 4 tüüpi: VASAKULE, ÕIGE, TÄIELIK, SISEMINE.

VASAKU JA PAREMA ÜHENDUS

Ühendusi kasutatakse kahe tabeli linkimiseks konkreetse tingimuse alusel. Funktsioon millal VASAKUID LIITUMINE on see, et me võtame esimese määratud tabeli tervikuna ja seome tinglikult teise tabeli. Teise tabeli väljad, mida ei saanud tingimusega siduda, täidetakse väärtusega NULL.

Näide vasakpoolsest liitumisest 1C taotluses:

Ta tagastab kogu tabeli ja täidab välja “Pank” ainult nendes kohtades, kus on täidetud tingimus “Counterparties.Name = Banks.Name”. Kui tingimus ei ole täidetud, seatakse välja Pank väärtusele NULL.

RIGHT JOIN 1C 8.3 keeles absoluutselt sarnased VASAKULINE ühendus, välja arvatud üks erinevus: sisse ÜHENDUSÕIGUS"Peamine" tabel on teine, mitte esimene.

TÄIELIK ÜHENDUS

TÄIELIK ÜHENDUS erineb vasakust ja paremast selle poolest, et see kuvab kõik kirjed kahest tabelist ja ühendab ainult need, mida saab tingimuse alusel ühendada.

Näiteks:

TÄIELIK ÜHENDUS
Kataloog.Pangad KUIDAS Pangad

KÕRVAL

Päringukeel tagastab mõlemad tabelid täielikult ainult siis, kui kirjete ühendamise tingimus on täidetud. Erinevalt vasak-/paremühendusest on NULL võimalik kahel väljal.

SISEMINE LIITUMINE

SISEMINE LIITUMINE erineb täisväärtuslikust selle poolest, et kuvab ainult neid kirjeid, mida saab antud tingimuse järgi ühendada.

Näiteks:

FROM
Kataloog Vastaspooled AS Kliendid

SISEMINE LIITUMINE
Kataloog.Pangad KUIDAS Pangad

KÕRVAL
Kliendid.Nimi = Pangad.Nimi

See päring tagastab ainult need read, milles pangal ja vastaspoolel on sama nimi.

Järeldus

See on vaid väike osa 1C 8 päringukeele süntaksist; edaspidi proovin mõnda punkti üksikasjalikumalt kaaluda, näidata ja palju muud!