Väljendage päringus arvuna 1s 8.3. Dokument.Kulutused AS D

Ühildumatud "EXPRESS" tüübid- selline teade ilmub, kui 1C 8.2 või 8.3 programmeerija proovib võrrelda kahte erinevat tüüpi.

Funktsioon Express() võimaldab teil teisendada 1C päringuvälja väärtuse teatud tüüpi. Seda võib vaja minna kahel juhul:

1. Hankige numbri vajalik bitisügavus või stringiväärtuse vajalik arv märke. Piiramatut tüüpi väljade märkide arv peab teatud funktsioonide tõttu olema piiratud.

Hankige tasuta 267 1C videotundi:

Näiteks:

EXPRESS(nomenklatuur.kommentaar AS STRING(300))
EXPRESS(Kaua.Hind AS NUMBER(15, 2)) AS Sum

2. Teisendage liittüüpi väli ühte tüüpi väljaks. Seda võib vaja minna eesmärkidel. Kui trükitud väljale satub teist tüüpi väärtus, tagastab süsteem NULL-i, seega on alati vaja jaotises “WHERE” lisaks määrata tingimus, piirates seda operaatoriga REFERENCE.

Näiteks:

VALI

EXPRESS(Müük.Registrar AS-i dokument.Müük)

FROM

KUS Müük. Registripidaja LINK Dokument. Rakendamine

Kuidas vigu vältida

Kui süntaksit kasutatakse valesti, võivad ilmneda sellised vead nagu "VÄLJENDADA INCOMPATIBLE TÜÜPID...".

Näiteks konstruktsiooni “EXPRESS(“123″ AS A NUMBER(5, 2)) AS A Sum” peetakse ekslikuks, kuna päringus on tavameetodite abil võimatu ühest tüübist teise teisendada.

Kui hakkate õppima 1C programmeerimist, soovitame meie tasuta kursust (ärge unustage

Selles artiklis analüüsime 1C päringukeeles tüüpide valamise võimalusi, mida pakub funktsioon "Express".
Vaatame mõningaid selle funktsiooni kasutamise võimalusi.
Ja esimene võimalus on numbrite ümardamine.

Selleks kasutage kiirfunktsiooni järgmises vormingus:

Express(<Число>kui number(<ДлинаЧисла>,<Точность>))

Kus:
Number— väli, ümardatav parameeter
PikkusNumbrid- maksimaalne numbri pikkus
Täpsus- numbrite ümardamise täpsus

Parameetrid ning pikkus ja täpsus peavad olema positiivsed täisarvud.
Vaadake allolevalt jooniselt, kuidas see funktsioon töötab.

Teine kasutusjuht on nöörivalu. Väga sageli kasutatakse konfiguratsioonides piiramatu pikkusega stringe, mis seab teatud piirangud. Näiteks ei saa me võrrelda piiramatu pikkusega stringe.
Allolevas päringus on väli FullName tüüpi piiramatu pikkusega string ja see päring ei tööta.

Selle toimimiseks peate teisendama piiramatu pikkusega välja teatud pikkusega stringiks, seda tehakse järgmise vormingu funktsiooniga Expressi abil:

Express(<Строка>stringina(<ДлинаСтроки>)

Kus
Stringi pikkus- maksimaalne pikkus, milleni stringi vähendatakse.
Teeme päringu ümber: tingimusel toome piiramatu stringi teatud pikkusega stringi. Siis vigu ei teki.

Vaatleme selle rakenduse viimast ja, ma ütleksin, kõige olulisemat varianti: liittüüpi väljadega töötamisel.
Allpool on kaks päringut, mis kasutavad liittüüpi välju. Esimene on vale ja teine ​​on õige.

Need. kui teil on vaja saada mõnda liittüüpi välja, hankige selle välja väärtus alati alles pärast tüübi ülekandmist funktsiooniga Express. Sel juhul on dokumentide ja kataloogide vorming järgmine:

Express(<Документ>nagu dokument.<ИмяТаблицы>)
Express(<Справочник>nagu kataloog.< ИмяТаблицы >)
.

Kus
Tabelinimi— objekti nimi keeles .

Komposiittüüpidega töötades kasutage alati kiirfunktsiooni, see optimeerib päringut oluliselt.

Kui olete endiselt päringukeele konstruktsioonides "hõljumas" ja isegi kõige lihtsamad päringud valmistavad teile raskusi, siis soovitan teile oma kursust "Päringud 1C-s algajast proffini". Kus neist ja paljudest muudest küsimustest lähemalt juttu tuleb.

Mis on selle kursuse eripära:
Kursus on mõeldud neile, kes ei tunne 1C päringukeelt;
Õppematerjal hästi kujundatud ja kergesti õpitav;
Mitukümmend õppetundi;
Kasulik praktilisi näiteid;
Kõik õppetunnid esitatakse selges ja lihtsas keeles.

Minu lugejatele 25% sooduskupong: hrW0rl9Nnx

Püüan võimalikult sageli avaldada erinevaid huvitavaid tasuta artikleid ja videoõpetusi. Seetõttu olen väga õnnelik, kui toetate minu projekti mis tahes summa ülekandmisega:

Saate mis tahes summa otse üle kanda:
Yandex.Money — 410012882996301
Veebiraha - R955262494655

Liituge minu rühmadega.

Päringukeel on üks 1C 8.3 põhimehhanisme arendajatele. Päringute abil saate kiiresti kätte kõik andmebaasi 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 muutmine objekti atribuutideks);
  • 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 teil andmeid muuta;
  • salvestatud protseduuride puudumine;
  • stringi arvuks teisendamise võimatus.

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

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

Allolevas näites on kogu nomenklatuuri nimetused valitud "Nomenklatuuri" teatmeteosest. Pärast sõna “KUIDAS” näidatakse tabelite ja väljade varjunimed (nimed).

VALI
Nomenklatuur.Nimi AS NimiNomenklatuur
FROM
Kataloog Nomenklatuur 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 valitava tulemuse algusest. Kõige sagedamini kasutatakse seda konstruktsiooni koos sorteerimisega (ORDER BY). Näiteks kui peate kuupäeva järgi valima teatud arvu uusimaid dokumente.
  • LUBATUD. See disain võimaldab valida andmebaasist ainult need kirjed, mis on praegusele kasutajale kättesaadavad. Selle põhikasutus märksõna kasutaja saab veateate, kui ta proovib teha päringuid kirjetest, millele tal pole juurdepääsu.

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

VAHETUSEKS

See klausel lukustab andmed konfliktide vältimiseks. Lukustatud andmeid ei loeta teisest ühendusest enne tehingu lõppu. Selles klauslis saate määrata konkreetsed tabelid, mida soovite lukustada. Vastasel juhul blokeeritakse kõik. Disain on asjakohane ainult automaatse blokeerimisrežiimi jaoks.

Kõige sagedamini kasutatakse saldode laekumisel klauslit "MUUDATUSEKS". Tõepoolest, kui programmis töötab korraga mitu kasutajat, samal ajal kui üks saab saldod, saab teine ​​neid muuta. Sel juhul ei ole saadud saldo enam õige. Kui blokeerite andmed selle ettepanekuga, siis seni, kuni esimene töötaja saab õige saldo ja teeb sellega kõik vajalikud manipulatsioonid, peab teine ​​töötaja ootama.

VALI
Vastastikused arveldused. Töötaja,
Vastastikused arveldused Summa Vastastikused arveldused Saldo
FROM
Kogumisregister. Vastastikused arveldused töötajatega Saldod AS Vastastikused arveldused
VAHETUSEKS

KUS

Konstruktsioon on vajalik mahalaaditavate andmete valiku tegemiseks. Teatud juhtudel on registritest andmete hankimisel mõistlikum virtuaalsete tabelite parameetrites ette näha valikutingimused. "KUS" kasutamisel hangitakse esmalt kõik kirjed ja alles seejärel rakendatakse valikut, mis pärsimist oluliselt aeglustab.

Järgnevalt on toodud näide konkreetse ametikohaga kontaktisikute hankimise taotlusest. Valikuparameetril on järgmine vorming: &ParameterName (parameetri nimi on suvaline).

VALIK (CASE)

Konstruktsioon võimaldab määrata tingimusi otse päringu kehas.

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

VALI
Sissepääs T&U.Link,
VALIK
MILLAL
SIIS "Dokument postitatud!"
MUU "Dokumenti pole postitatud..."
LÕPETA AS Täiendav väli
FROM
Dokument.Kauba kättesaamineTeenused AS KviitungT&C

LIITU

Ühendab kaks tabelit teatud lingitingimuse alusel.

VASAKU/PAREMA LIITUMINE

LEFT liitumise olemus seisneb selles, et esimene määratud tabel võetakse täielikult ja teine ​​kinnitatakse selle külge ühenduse seisukorra järgi. 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 neid on) on selle andmetega juba asendatud.

Näiteks tuleb kaubaartiklid hankida dokumentidelt “Kauba ja teenuste vastuvõtmine” ning 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
T&U nomenklatuuri kviitung,
Hinnad. Hind
FROM
Dokument.Kauba kättesaamineTeenused.Kauba AS KviitungT&C
SISEMINE LIITUMINE
ON K&A kviitung.Nomenklatuur = Hinnad.Nomenklatuur

PAREMAL on kõik täpselt vastupidine.

TÄIELIK ÜHENDUS

Seda tüüpi liitumine erineb eelmistest selle poolest, et selle tulemusena tagastatakse nii esimese kui ka teise tabeli kõik kirjed. Kui määratud lingitingimuse jaoks ei leitud esimesest või teisest tabelist kirjeid, tagastatakse selle asemel NULL.

Kui kasutate eelmises näites täielikku liitumist, siis valitakse välja kõik kaubaartiklid Kauba ja Teenuse Kviitungi dokumendist ja kõik viimased hinnad Artiklihindade registrist. Ei leitud kirjete väärtused nii esimeses kui ka teises tabelis on NULL.

SISEMINE LIITUMINE

SISEMINE ja TÄISühenduse erinevus seisneb selles, et kui kirjet vähemalt ühest tabelist ei leita, siis päring seda üldse ei kuva. Sellest tulenevalt valitakse Kauba ja Teenuse Kviitungi dokumendist ainult need kaubaartiklid, mille kohta on kirjed Artiklihindade inforegistris, kui eelmises näites asendame TÄIS SISEMISEga.

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 kaubatüüpide loend koos nende maksimaalsete hindadega.

VALI
,
MAX(Hind.Hind) AS Hind
FROM

GROUP BY
Hinnad.Nomenklatuur.TüüpNomenklatuur

TULEMUSED

Erinevalt rühmitamisest kuvatakse kogusummade kasutamisel kõik kirjed ja neile on juba lisatud summade read. 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"). Summeerimisel ei ole vaja kasutada koondfunktsioone.

Vaatleme ülaltoodud näitega 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
RegistreeriTeave.HinnadNomenklatuur.SliceLast AS Hinnad
TULEMUSED
MAKSIMUM (hind)
KÕRVAL
Tüüpnomenklatuur

OMAMINE

See operaator on sarnane WHERE-operaatoriga, kuid seda kasutatakse ainult koondfunktsioonide jaoks. Muud väljad peale selle operaatori kasutatavate väljade tuleb rühmitada. Tehtaja "WHERE" ei ole koondfunktsioonide jaoks rakendatav.

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

VALI

MAX(Hind.Hind) AS Hind
FROM
RegistreeriTeave.HinnadNomenklatuur.SliceLast AS Hinnad
GROUP BY
Hinnad.Nomenklatuur.TüüpNomenklatuur
OMAMINE
MAX(hinnad.hind) > 1000

SORTEERIMA

Operaator "ORDER BY" sorteerib päringu tulemuse. Tagamaks, et kirjed väljastatakse ühtses järjekorras, kasutatakse AUTO-ORDERIT. Primitiivsed tüübid on sorteeritud tavalised reeglid. 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 AS Töötajad
SORTEERIMA
Nimi
AUTOMATELLIMUS

1C päringukeele muud konstruktsioonid

  • ÜHENDADA- kahe päringu tulemused ühes.
  • ÜHENDAGE KÕIK– sarnane JOIN-ga, kuid ilma identseid ridu rühmitamata.
  • TÜHJA LAUD- kasutatakse mõnikord päringute ühendamisel tühja pesastatud tabeli määramiseks.
  • PANGE- 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 märkide arvu võrra.
  • AASTA…TEINE võimaldab teil saada numbritüübi valitud väärtuse. Sisendparameeter on kuupäev.
  • PERIOODI ALGUS JA PERIOODI LÕPP kasutatakse kuupäevadega töötamisel. Täiendava parameetrina on määratud perioodi tüüp (PÄEV, KUU, AASTA jne).
  • LISADA võimaldab lisada või lahutada kuupäevast teatud tüüpi määratud kellaaja (TEINE, MINUT, PÄEV jne).
  • KUUPÄEVADE ERINEVUS määrab kahe kuupäeva erinevuse, täpsustades väljundväärtuse tüübi (PÄEV, AASTA, KUU jne).
  • ISNULL asendab puuduva väärtuse määratud avaldisega.
  • ESITLUS ja ESITLUSLINGID saada määratud välja stringi esitus. Neid kasutatakse vastavalt mis tahes väärtuste ja ainult võrdlusväärtuste jaoks.
  • TYPE, VALUE TYPE 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 eelnevalt määratletud väärtuste määramiseks - kataloogid, loendid, omaduste tüüpide plaanid. Kasutusnäide: " Kus LegalIndividual = väärtus (loend.Juriidiline isik.Individuaal)«.

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.
  • "Lingid" – kirjeldab konstruktsiooni CONNECTION tingimusi.
  • "Rühmitamine" - sisaldab rühmituste konstruktsioonide kirjeldust ja nende järgi kokku võetud välju.
  • "Tingimused" – vastutab päringus olevate andmete valiku eest.
  • "Advanced" - täiendavad päringu parameetrid, näiteks käsu "SELECT" märksõnad jne.
  • “Joins / Aliases” - näidatakse tabelite ühendamise võimalused ja määratakse varjunimed (konstruktsioon “KUIDAS”).
  • "Telli" - vastutab päringute tulemuste sortimise eest.
  • "Kokkusummad" – sarnane vahekaardile "Rühmitamine", kuid seda kasutatakse konstruktsiooni "TOTALS" jaoks.

Päringu enda teksti saab vaadata, klõpsates vasakus alanurgas nuppu "Taotlus". Sellel kujul saab seda käsitsi parandada või kopeerida.


Päringukonsool

Päringu tulemuste kiireks vaatamiseks režiimis "Ettevõte" või keerukate päringute silumiseks kasutage . Sellesse kirjutatakse päringu tekst, määratakse parameetrid ja näidatakse selle tulemust.

Saate päringukonsooli alla laadida ITS-kettale või .

NULL pole midagi muud kui väärtuse puudumine. Paljud ajavad selle segamini numbritüübi väärtusega "0", tühja viitega mõnele objektile või tühja stringiga. See eksiarvamus põhjustab palju vigu.

Väärtus NULL kuvatakse, kui päring viitab olematule väljale, atribuudile või katkisele lingile.

Põhineb SQL-il, mis ei võimalda NULL-i testimist tavalise võrdsusega. Allpool on kaks võimalust NULL-i kontrollimiseks versioonis 1C 8.3.

1C 8.3 päringukeele funktsioonil IS NULL() on kaks sisendparameetrit:

  • kontrollitav väljend;
  • asendusväljend.

Kui testitav väärtus on NULL, tagastab see funktsioon asendusavaldise väärtuse. Kui väärtus ei ole NULL, tagastatakse kontrollitav avaldis.

Allpool on näide. See valib dokumendist "Kauba ja teenuste kättesaamine" kõik kauba tabeliosa laoartiklid. Vasakühenduse abil kinnitatakse igale kaubale viimane hind inforegistrist "Kaubahinnad".

Sel juhul võib tekkida olukord, et mõnel ametikohal ei pruugi registris lihtsalt hinda olla. Sel juhul tagastab funktsioon ISNULL meile tavapärase nulli. Kui te seda ei kasuta, siis kui proovite teha aritmeetilisi tehteid väljal "Hind" väärtusega NULL, saame veateate.

VALI

ISNULL(Hinnad.Hind, 0) AS TegelikHind
FROM



KUS

SELECT-lauses ON NULL

Funktsiooni ISNULL() analoog on "IS NULL", mida kasutatakse SELECT-lauses ja kontrollib, kas väärtus on NULL. "IS" tähendab antud juhul võrdsust ja eelmise näite päring näeb välja selline:

VALI
Tooted.Nomenklatuur AS Toode,
VALIK
KUI Prices.Price ON NULL
SIIS 0
MUU Hinnad.Hind
LÕPP AS Tegelik Hind
FROM
Dokument.Sissetulevad kaubadTeenused.Kaubad AS kaubad
VASAKUID LIITUMINE
PO Kaubad.Nomenklatuur = Hinnad.Nomenklatuur
KUS
Goods.Link = &LinkToDocument

Funktsioonide ISNULL() ja IS NULL erinevused

Nagu eelmistest näidetest näha, tagastab päring mõlemal juhul samad andmed. Funktsioon ISNULL() on lühend SELECT WHEN...IS NULL...END jaoks, kuid seda eelistatakse siiski järgmistel põhjustel:

  1. Funktsioon ESTNULL() optimeerib päringu. Seda loetakse üks kord, nii et keeruka avaldise kontrollimisel jookseb päring kiiremini.
  2. Funktsioon ESTNULL() lühendab konstruktsiooni, muutes päringu loetavamaks.
  3. Funktsiooni ESTNULL() käivitamisel teisendatakse asendusavaldis kontrollitava avaldise tüübiks stringitüüpide (stringi pikkuse) ja numbritüüpide (bitisisalduse) suhtes.

Selles artiklis tahame teie kõigiga arutada päringu keele funktsioonid 1s ja päringukeele konstruktsioonid. Mis vahe on funktsioonil ja struktuuril? Funktsiooni kutsutakse välja koos sulgude ja nendes olevate võimalike parameetritega ning konstruktsioon kirjutatakse ilma sulgudeta. Kahtlemata kõik 1s päringukeele konstruktsioonid 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.

Päringu keele funktsioonid 1s

Alates selgest kirjeldusest päringu keele funktsioonid 1s on palju vähem levinud kui struktuuride kirjeldus, otsustasime hakata vaatama funktsioone. Nüüd analüüsime igaüht eraldi, kirjeldame 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 | DATE DIFFERENCE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | AS Päevade arv";

3. Funktsioon VALUE- määrab konstantse välja andmebaasi etteantud kirjega, saad ka mis tahes tüüpi nullviite.

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

Kasutusnäide:

Query.Text = "SELECT //eelmääratletud element | VÄÄRTUS(Valuuta.Dollar.Katalog.Dollar) AS Dollar, //tühi viide | VÄÄRTUS(Document.IncomingGoodsServices.EmptyReference) AS Kviitung, //ülekande väärtus | VÄÄRTUS(Ülekande.Juriidiline . Individual) AS Eraisik, //eelmääratletud konto | VÄÄRTUS(kontoplaan.Isekandvad.Materjalid) AS Konto_10" ;

4. SELECT funktsioon- meil on koodis kasutatud IF-konstruktsiooni analoog, ainult seda kasutatakse 1C päringutes.

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

Kasutusnäide:

Request.Text = //kui summa on suurem kui 7500, siis peaks olema allahindlus 300 rubla, //seetõttu tingimuse käivitamisel funktsioon //tagastab Summa - 300 //muidu päring tagastab lihtsalt summa "SELECT | SELECT | WHEN PMIncome.Summa > 7500 | SIIS PTR-laekumised.Summa - 300 | MUUD PTR-laekumised.Summa | LÕPP AS SummaAllahindlus |Alates | Dokument.Kaubade laekumineTeenused;Kaubad

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 viitedokument.Kulu | THEN EXPRESS(Müük.Registri AS dokument.Kulu) | ELSE SELECT | WHEN Müük.Registri viitedokument.Rakendamine | THEN EXPRESS(Müük.Registrar AS Dokument.Väljaanne) | LÕPP | ... | END AS Number | FROM | Kogumisregister.Ostud AS Ostud";

Siiski on olemas variant EXPRESS-funktsiooni kasutamiseks segatüüpi väljadel, kus need kohtuvad? Lihtsaim näide on mis tahes registri "Registrer". Miks peaksime siis seda tüüpi registripidajas kvalifitseerima? Vaatleme olukorda, kui valime registripidajast välja "Arv", millisest tabelist number valitakse? Kõigist õige vastus! Seetõttu peame meie päringu kiireks toimimiseks määrama selgesõnalise tüübi funktsiooni EXPRESS abil

Kasutusnäide:

Query.Text = "VALI | EXPRESS(Nomenklatuur.Comment AS String(300)) AS Comment, | EXPRESS(Nomenklatuur.Summa AS Number(15,2)) AS Sum |FROM | Viide.Nomenklatuur AS Nomenklatuur";

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

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

Kasutusnäide:

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

Query.Text = //Valige kogu üksus ja sellel olevad saldod //kui mõnel kaubal saldot pole, siis kuvatakse väli //NULL, mis asendatakse väärtusega 0 "SELECT | No.Reference, | ISNULL(GoodsInWarehouseRemains.InStockRemaining, 0) KUIDAS Ülejäänud | FROM | Kataloog. Nomenklatuur AS Nom | LEFT JOIN Kogumisregister.

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

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

Kasutusnäide:

Query.Text = "SELECT | ESINDUS(Free RemainsRemains.Nomenclature) AS Nomenklatuur, | ESINDUS(FreeRemainsRemains.Warehouse) AS Ladu, | FreeRemainsRemains.AvailableRemains |FROM | Accumulation Register.FreeRemainsARemains"FreeRemainsRemains"

Konstruktsioonid päringukeeles 1s

Eespool arutasime teiega päringu keele funktsioonid 1s, nüüd on aeg mõelda konstruktsioonid päringukeeles 1s, need pole vähem olulised ja kasulikud, alustame.

1. Ehitus LINK- on loogilise viitetüübi kontrollimise operaator. Kõige sagedamini ilmneb liittüüpi välja testimisel kindla tüübi jaoks. Süntaks: LINK<Имя таблицы>

Kasutusnäide:

Query.Text = //kui registripidaja väärtuse tüübiks on dokument Kviitung, //siis tagastab päring "Sissetulevad kaubad", vastasel juhul "Kauba müük" "SELECT | SELECT | WHEN Remains.Registrar LINK Document.Incoming GoodsServices | SIIS ""Sissetulek" | MUU "Kulu" | LÕPP AS Liikumise liik | ALT | Kogunemisregister. Kaubajäägid ladudes AS Jääb ";

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

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

Kasutusnäide:

Query.Text = //saab kogu nomenklatuuri, mille kood on vahemikus 1 kuni 100 "SELECT | Nomenklatuur.Viide |FROM | Kataloog.Nomenklatuur AS Nomenklatuur |KUS | Nomenklatuur.Kood 1–100" ;

3. HIERARHIA konstruktsioon B ja B- kontrollige, kas väärtus on läbitud loendis (loendina saab edastada massiive, väärtuste tabeleid jne). Operaator IN HIERARCHY võimaldab teil vaadata hierarhiat (näide PlanAccountsi kasutamisest).

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

Kasutusnäide:

Query.Text = // vali kõik konto alamkontod "SELECT | Isemajandav. Link AS-i konto | FROM | Kontode plaan. Isemajandav AS Isemajandav | WHERE | Isemajandav. Viide HIERARHIA VÄÄRTUSES( Kontode ajakava. Isemajandav. Kaup)";

4. Ehitus LIKE- see funktsioon võimaldab meil võrrelda stringi stringimustriga.

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

Reamalli valikud:

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

Üks suvaline tegelane.

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

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

Kasutusnäide:

Päring.Tekst = //otsige kogu nomenklatuur, mis sisaldab juurt TABUR ja algab //kas väikese või suure tähega t "SELECT | Nomenklatuur.Viide |FROM | Kataloog.Nomenklatuur AS Nomenklatuur |KUS | Kaubad.Nimi LIKE ""[Тт ]abur%""" ;

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

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

Kasutusnäide:

Query.Text = "VALI LUBATUD | Counterparties.Reference |FROM | Directory.Counterparties AS Counterparties";

6. Ehitus ERINEVAD- võimaldab valida kirjeid, milles pole korduvaid kirjeid.

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

Kasutusnäide:

Request.Text = //valib kirjed, millele lugejal on õigused "SELECT DIFFERENT | Counterparties.Name |FROM | Directory.Counterparties AS Counterparties" ;

DIFFERENT konstruktsiooni saab kasutada ka ALOWED operaatoriga ja teiste operaatoritega.

Kasutusnäide:

Query.Text = //valib erinevaid kirjeid, millele lugejal on õigused "SELECT ALOWED DIFFERENT | Contractors.Name |FROM | Directory.Contractors AS Contractors";

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

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

Kasutusnäide:

Query.Text = //vali kataloogist 4 esimest GTD numbrit "SELECT THE FIRST 4 | GTD Numbers.Reference |FROM | Catalog.GTE Numbers AS GTD Numbers";

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

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

Kasutusnäide:

Query.Text = "SELECT | FreeRemainsRemains.Nomenclature, | FreeRemainsRemains.Warehouse, | FreeRemainsRemains.AvailableRemains |FROM | Akumulatsiooniregister.FreeRemains.Remains AS FreeRemainsRemains |MUUTUSEKS |

9. Struktuur TELLI- sorteerib andmed kindla välja järgi. Kui väli on link, siis lipu seadmisel AUTOMATELLIMUS sorteeritakse lingi esituse järgi, kui lipp on välja lülitatud, siis sorteeritakse lingid mälus oleva lingi aadressi vanuse järgi.

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

Kasutusnäide:

Query.Text = "SELECT | FreeRemainsRemains.Nomenclature AS Nomenclature, | FreeRemainsRemains.Warehouse AS Warehouse, | FreeRemainsRemains.In StockRemains |FROM | Akumulatsiooniregister.FreeRemains.Remains AS FreeRemainsRemains | | | KORDAJANDUS | | Nomenklatuuri |

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

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

Kasutusnäide:

Query.Text = "SELECT | ItemsInWarehouse.Nomenclature AS Nomenclature, | ItemsInWarehouse.Warehouse, | SUM(ItemsInWarehouse.Stock) AS Laos |FROM |

11. Disain HAVING- võimaldab 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 | GoodsInStock.Nomenclature AS Nomenclature, | GoodsInWarehouse.Warehouse, | SUM(ItemsInWarehouse.InStock) AS InStock |FROM | AccumulationInWarehouse |AccumulationInWarehouse. |GROUP BY | Kaubad ladudes. Nomenklatuur, | kaubad ladudes. ladu | | OMA | KOGU(Kaubad laos. Laos) > 3" ;

12. INDEX konstruktsiooni JÄRGI- kasutatakse päringuvälja indekseerimiseks. Indekseeritud päringu täitmine võtab kauem aega, kuid kiirendab otsinguid indekseeritud väljadel. Saab kasutada ainult virtuaalsetes tabelites.

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

Kasutusnäide:

Päring.Tekst = "VALI | Tz.OS-i nimi, | Tz.Kausta number, | Tz.koodOS, | Tz.Term, | Tz.tüüp |PUT-andmedTz |FROM | &Tz KUIDAS Tz | | INDEX BY | Tz.OS nimi , | Tz .CodeOS";

13. Ehitus KUS- võimaldab seada valiku mis tahes väljale tingimuse. Tulemusse kaasatakse ainult tingimusele vastavad kirjed.

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

Kasutusnäide:

Query.Text = //valige kõik kirjed CompensationRemainderiga<>0 ja // Summa arvutusliku kompensatsiooni saldo jaoks > 100 "SELECT | Hüvitise RPO saldod. Vastaspool, | Hüvitise RPO saldod. Laps, | Hüvitise RPO saldod. Hüvitise saldo, | Hüvitise RPO saldod. Summa arvutamise kompensatsiooni saldo | F PLACE | DataTz | Kogumisregister Hüvitis RP. Saldo AS Hüvitis R saldod | KUS | Hüvitis RPO saldod Hüvitissaldo<>0 | Ja kompensatsiooni RPO saldod. Summa CalcComp jääk > 100" ;

14. Disaini TULEMUSED ... ÜLDIST- kasutatakse kogusummade arvutamiseks, kujundus määrab väljad, mille järgi summad arvutatakse, ja koondfunktsioonid, mida koguväljadele rakendatakse. Kui kasutate kogusummasid iga välja kohta, järgides konstruktsiooni TOTALS, andmed rühmitatakse. Valikuline on konstruktsioon ÜLDINE, selle kasutamine annab ka täiendava rühmituse. Allpool näete päringutulemuse näidet.

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

Kasutusnäide:

Query.Text = "VALI | Arveldused. Vastaspoole leping. Lepingu tüüp AS Lepingu liik, | Arveldused. Riigileping AS Leping, | Arveldused. Vastaspool, | Arveldused. Vastastikuste arvelduste summa Saldo AS Saldo | ALT | | Tarkvara | ÜLDINE, | Lepingu tüüp";

Päringu täitmisel tekkinud rühmitused on joonisel ringiga ümbritsetud, ülemine viitab jaotisele ÜLDINE ja teine ​​väljale ContractContractorTypeContract.