Značilnosti dela s poljem Pogled in funkcijo Pogled () jezika poizvedb. Značilnosti dela s poljem Pogled in funkcijo Pogled () poizvedbenega jezika Uporaba oblikovalca poizvedbe

Poizvedovalni jezik 1C 8 je nepogrešljivo orodje za programerja 1C; omogoča vam pisanje bolj jedrnate, preproste in razumljive kode ter uporabo manj sistemskih virov pri delu s podatki. Ta članek odpira serijo lekcij, posvečenih poizvedovalnemu jeziku 1C 8. V prvi lekciji si bomo ogledali strukturo glavnega operaterja tega jezika. IZBERI. S tem operatorjem lahko ustvarite izbore iz tabel baze podatkov. Izbrane podatke tabele je mogoče razvrščati, ji postavljati pogoje, povezovati in kombinirati s podatki iz drugih tabel, grupirati po različnih poljih in še mnogo več.

Poizvedovalni jezik 1C podjetje 8 - struktura operaterja SELECT

Oglejmo si strukturo operatorja SELECT (neobvezni deli operatorja so navedeni v oglatih oklepajih). Poizvedovalni jezik 1C ponuja široko paleto orodij za ustvarjanje vzorcev podatkov.

IZBERI [DOVOLJENO] [DRUGAČNO] [PRVI A] [Polje1] [AS Vzdevek1], [Polje2] [AS Vzdevek2], ... [PoljeM] [AS VzdevekB] [PUST TemporaryTableName] [FROM Table1 AS AliasTableTable1 [[INNER JOIN ][LEVO PRIDRUŽIVANJE][POLNO PRIDRUŽIVANJE] Tabela2 KOT Vzdevek Tabela2 [[NOTRANJE ZDRUŽIVANJE][LEVO PRIDRUŽIVANJE][POLNO PRIDRUŽIVANJE] TabelaC KOT Vzdevek TabeleC PO Izrazu1 [In Izrazu2]...[In IzrazD]] .. . Izraz2] ... [IN IzrazH]] [ZDRUŽITI VSE...] [; ...] [KAZALO PO Alias1 ... AliasB] [SKUPAJ [AggregationFunction(Field1)][,] [AggregationFunction(Field2)][,] ... [AggregationFunction(FieldI)] BY [GENERAL][,] [ GroupingField1][,] ... [GroupingFieldj]]

Ključne besede in bloki za delo s polji

  • IZBERI— ključna beseda, ki označuje začetek operatorja;
  • DOVOLJENO označuje, da mora izbor vključevati zapise tabele, ki imajo dostop za branje za danega uporabnika;
  • RAZLIČNO označuje, da mora vzorec vključevati samo različne (po vseh poljih) tokove. Z drugimi besedami, podvojene vrstice bodo izključene iz vzorca;
  • PRVI Ače podate to ključno besedo, bo v izbor vključena samo prva A od vrstic, izbranih s poizvedbo, kjer je A naravno število;
  • Polje blok— ta blok označuje polja, ki jih je treba vključiti v izbor. Ta polja bodo izbrani stolpci. V najpreprostejšem primeru je polje videti takole: vzdevek tabele.imepolja tabele AS vzdevek polja

    Tako navedemo, iz katere tabele vzamemo to polje. Jezik poizvedb 1C vam omogoča, da določite poljubne vzdevke, vendar se ne smejo ponoviti v istem stavku SELECT. Polje je lahko bolj zapleteno, sestavljeno iz različnih kombinacij polj tabele, funkcij poizvedbenega jezika in agregatnih funkcij, vendar teh primerov v tej vadnici ne bomo obravnavali;

Ključne besede in bloki za delo s tabelami

  • PUT TemporaryTableName- ključna beseda KRAJ je namenjen ustvarjanju začasne tabele z določenim imenom, ki bo shranjena v RAM v dani seji 1C 8, dokler se ne konča ali dokler začasna tabela ni uničena. Upoštevati je treba, da se imena začasnih tabel v eni seji 1C 8 ne smejo ponoviti;
  • Blok tabel in odnosov— blok označuje vse tabele, uporabljene v tej poizvedbi, kot tudi razmerja med njimi. Blok se začne s ključno besedo OD, sledita ime in vzdevek prve tabele. Če je ta tabela povezana z drugimi tabelami, so razmerja navedena. Poizvedbeni jezik 1C vsebuje naslednji niz vrst povezav:
    • NOTRANJI SPOJ— zapis iz leve tabele bo vključen v izbor samo, če bo izpolnjen pogoj povezave, zapis iz desne tabele bo vključen v izbor le, če bo izpolnjen pogoj povezave;
    • LEVI PRIKLJUČEK— zapis iz leve tabele bo vključen v izbor v vsakem primeru, zapis iz desne tabele bo vključen v izbor le, če bo izpolnjen pogoj povezave;
    • POPOLNA POVEZAVA— v izbor bo v vsakem primeru najprej vključen zapis iz leve tabele, nato le ob izpolnjenem pogoju povezave, zapis iz desne tabele bo v vsakem primeru prvi v izboru, šele nato le v primeru pogoja povezave je izpolnjeno. V tem primeru so nastale podvojene vrstice izključene iz vzorca.

    Za vrsto povezave sta prikazana ime in vzdevek druge tabele. Sledi ključna beseda BY, ki jim sledijo komunikacijski pogoji, ki so med seboj povezani z logičnimi operatorji IN, ALI. Vsak izraz v pogoju mora vrniti logično vrednost (True, False). Če je prva tabela povezana z nekaterimi tabelami, ki niso druga, je vrsta povezave ponovno navedena in tako naprej. Vsako tabelo, ki sodeluje v povezavi, je mogoče povezati z drugimi tabelami, kar je prikazano v diagramu strukture poizvedbe. Če tabela ni povezana s prvo, je navedena brez vrste povezave, potem lahko sledijo njene povezave in tako naprej;

Ključne besede in bloki za pretvorbo podatkov

  • Blok združevanja— ta blok se uporablja za združevanje vrstic tabele. Vrstice so združene v eno, če so vrednosti polj, podane za ključno besedo ZDRUŽI PO se izkaže za enako. V tem primeru se vsa druga polja seštejejo, povprečijo, maksimizirajo ali minimizirajo z uporabo agregatnih funkcij. Združevalne funkcije se uporabljajo v bloku polja. Primer: Maximum(TableAlias.TableFieldName) AS FieldAlias
  • Pogojni blok- v tem bloku za ključno besedo KJE označeni so pogojni izrazi, ločeni z logičnimi operatorji IN, ALI, da bi bila katera od izbranih vrstic vključena v vzorec, morajo imeti vsi pogoji v agregatu vrednost Prav.
  • ZDRUŽI VSE— ta ključna beseda se uporablja za združevanje poizvedb (operatorjev IZBERI). Jezik poizvedb 1C vam omogoča združevanje več poizvedb v eno. Da se poizvedbe združijo, morajo imeti enak nabor polj;
  • «;» - podpičja se uporabljajo za ločevanje stavkov, ki so neodvisni drug od drugega IZBERI;
  • INDEKS PO— ključna beseda se uporablja za indeksiranje polj, navedenih za njo;
  • Blok povzetka— uporablja se za izdelavo drevesnih vzorcev. Za vsako od polj združevanja, določenih za ključno besedo BY, v izboru bo ustvarjena ločena vrstica. V tej vrstici bodo z uporabo agregatnih funkcij izračunane skupne vrednosti polj, določenih za ključno besedo REZULTATI.

Ali želite nadaljevati z učenjem poizvedovalnega jezika 1C 8? Potem preberite naslednji članek.

V tem članku bomo preučili temo ugnezdenih tabel v poizvedovalnem jeziku 1C.

V poljih za izbiro poizvedbe lahko uporabite ugnezdeno izvorno tabelo poizvedbe. Na primer dokument »Opravljanje storitev« ima tabelarični del Storitve, tako da se ta tabelarični del lahko prikaže tudi v izbirnem polju. Zdaj boste videli, kako je to mogoče izvesti.

V svoji bazi podatkov za usposabljanje bom zagnal konzolo za poizvedbe, odprl oblikovalec poizvedb in izbral tabelo »Zagotavljanje storitev«.

Razširimo to tabelo

In v njem vidimo tabelarični del »Storitve«.

Izberimo ta celoten del tabele.

Kot lahko vidite, je celoten tabelarični del storitve v celoti prešel v polja.

Upoštevajte, da je tabelarni del dejansko ločeno polje z imenom »Storitve« in katerega vrsta bo »Rezultat zahteve«. Naučimo se uporabljati ugnezdeno tabelo v poizvedbi.

Pustimo tri polja ugnezdene tabele in dodamo nekaj polj iz glave dokumenta.

V oblikovalcu kliknimo OK in poglejmo, kako bo izgledala naša zahteva.

Kot lahko vidite, je v zahtevku za poljem »Storitve« pika, izbrana polja pa so navedena v oklepajih za njo.

Izpolnimo zahtevo.

Na sliki vidimo, da so v polju »Storitve« vsa izbrana polja v tabelarnem delu dokumenta navedena ločena z vejicami. Vse poizvedovalne konzole nimajo zaslona, ​​kot je na zgornji sliki; včasih lahko piše le » «.

Še ena zanimiva točka: v ugnezdeni tabeli lahko namesto polj postavite zvezdico, potem se bodo prikazala vsa polja tabelarnega dela. Tega ni mogoče narediti v konstruktorju, ampak samo ročno v zahtevi. Zahteva bo v naslednji obliki:

Poglejmo, kako bo taka zahteva izvedena.

Edina stvar je ta, da se ta zvezdica ne bo shranila, če odpremo konstruktor poizvedbe.

Naučili smo se, kako narediti poizvedbo z ugnezdeno tabelo v konzoli, zdaj se bomo naučili, kako uporabiti ugnezdeno tabelo v izboru

V resnici pri obdelavi poizvedbe ni tako težko dostopati do ugnezdene tabele. Preprosto dostopate do izbire z imenom vaše tabele in dobite spremenljivko z vrsto »Rezultat poizvedbe«. In potem to obdelate kot rezultat običajne zahteve: če želite, pridobite vzorec, če želite, naredite nalaganje.

Spodaj je majhen primer kode, ki deluje z ugnezdeno tabelo:


&Na strežniku
Postopek FillOnServer()
Zahteva = Nova zahteva;
Prošnja. Besedilo = "IZBERI
| Prodaja Povezave,
| Prodaja izdelka.Izdelki.(
| izdelek,
| Količina
|OD
| Dokument prodaja izdelkov KAKO prodajati izdelke.
;
Fetch = poizvedba. Zaženi(). Izberite ();
Adijo Izbor. Zanka Next().
TopLine of the Tree = Prodaja izdelkov. GetItems();
Nova Vrstica = Zgornja Vrstica Drevesa. Dodaj();
Nova linija. Povezava = Izbira. Povezava;
TableProducts = Izbor. blago;
SelectionProducts = TableProducts. Izberite ();
Med izborom izdelkov. Zanka Next().
TreeChildRow = Nova vrstica. GetItems();
ProductRow = ChildTreeRow. Dodaj();
ProductString. Povezava = Izbira izdelkov. izdelek;
ProductString. Količina = vzorčni predmeti. Količina ;
EndCycle;
EndCycle;
Konec postopka

Naj pojasnim zgornjo kodo.

Najprej smo dobili linearni izbor, skozi ta izbor gremo v zanki, v kateri ustvarimo zgornjo vrstico drevesa vrednosti (je na obrazcu), vanjo pa zapišemo povezavo do našega dokumenta.

In potem je najbolj zanimiva stvar, pozneje si jo lahko ogledate tudi sami v razhroščevalniku, obrnemo se na polje za izbiro izdelkov in za udobje zapišemo to polje v ločeno spremenljivko v tabeli Izdelki. Ta spremenljivka je tipa "Rezultat poizvedbe". In zlahka dobite vzorec tega rezultata. To počnemo. Ostaja, da zaobidete to izbiro z uporabo naslednje funkcije in zanke while.

In znotraj te zanke se bomo izbirna polja sklicevali na polja ugnezdene tabele in jih zapisali v podrejene vrstice drevesa iz obrazca.

To je rezultat, ki ga bo vrnila ta koda

Imate še vprašanja?

Nanje boste odgovorili sami, ko boste preučevali moj tečaj "Poizvedbe v 1C za začetnike". Kjer so ta in številna druga vprašanja podrobneje obravnavana. Vse informacije so podane v preprosti in dostopni obliki in so razumljive tudi tistim, ki niso posebej seznanjeni s programiranjem v 1C.

Promo koda za 20% popust: hrW0rl9Nnx

Podprite moj projekt z donacijo poljubnega zneska

Pridružite se mojim skupinam.

Članek ponuja uporabne tehnike pri delu s poizvedbami 1C v.8.2, pa tudi informacije, ki o jeziku poizvedb niso tako dobro znane. Ne prizadevam si podati popolnega opisa jezika poizvedb, ampak se želim osredotočiti le na nekatere točke, ki so lahko koristne za nekoga.

Torej, začnimo. Zahteva je poseben objekt v 1C 8.2, ki se uporablja za generiranje in izvajanje poizvedb proti tabelam baze podatkov v sistemu. Za izvedbo poizvedbe morate sestaviti besedilo poizvedbe, ki opisuje, katere tabele bodo uporabljene kot viri podatkov poizvedbe, katera polja je treba izbrati, katera razvrščanja in združevanja uporabiti itd. Več o poizvedbah si lahko preberete v knjigi "1C 8.2 Developer's Guide". Poizvedbeni jezik 1C 8.2 je v sintaksi zelo podoben drugim poizvedovalnim jezikom baze podatkov SQL, vendar obstajajo tudi razlike. Med glavnimi prednostmi vgrajenega jezika poizvedb je treba omeniti dereferenco polj, prisotnost virtualnih tabel, priročno delo s vsotami in netipkana polja v poizvedbah. Slabosti so, da ne morete uporabiti poizvedbe kot izhodnega polja, ne morete uporabiti shranjenih procedur in ne morete pretvoriti niza v število.

Podal bom informacije in priporočila o poizvedovalnem jeziku po točkah:
1. Če želite povečati berljivost zahteve in zmanjšati število parametrov zahteve, lahko uporabite literal za dostop do vnaprej določenih konfiguracijskih podatkov v zahtevi VREDNOST (VREDNOSTNA REPREZENTACIJA). Kot predstavitev vrednosti so prikazane vrednosti številčenja, vnaprej določeni podatki imenikov, načrti tipov izračuna, načrti tipov karakteristik, kontni načrti, prazne povezave, vrednosti točk poti, vrednosti sistemskih prenosov ( na primer Vrsta gibanja akumulacije, Vrsta računa).
Primeri:

WHERE Mesto = VREDNOST(Imenik.Mesta.Moskva)
WHERE Mesto = VREDNOST(Imenik.Mesta.Prazna povezava)
WHEREProductType = VALUE(Enumeration.ProductTypes.Service)
WHEREMovementType = VALUE(AccumulationMovementType.Incoming)
KJE je točka poti =
VALUE(Poslovni proces.Pogodba.Točka poti.Pogodba)

Izraz v oklepaju se vedno začne z eno besedo (Imenik, Enumeration itd.), ki se ujema z vrsto vnaprej določene vrednosti.

2. Samodejno naročanje v poizvedbi lahko močno upočasni postopek. Če sortiranje ni potrebno, je bolje, da ga sploh ne uporabljate. V mnogih primerih je bolj učinkovito napisati razvrščanje s ključno besedo RAZVRSTI PO.

3. Prepričati se morate, da se pri uporabi vzdevkov ne pojavi dvoumno polje. V nasprotnem primeru sistem ne bo razumel, do katerega predmeta je treba dostopati.
Primer zahteve z dvoumnim poljem:
IZBERI
Nomenklatura.Povezava,
Preostalo blago Preostalo. Preostala količina
OD
Imenik.Nomenklatura AS Nomenklatura
LEVA POVEZAVA Registrirajte preostalo blago KOT Preostalo blago
Programska oprema Remaining ProductsRemainings.Nomenclature = Nomenclature.Link
Potrebno je popraviti vzdevek tabele, na primer takole: "Imenik.Nomenklatura AS Nomenklatura1", "Nomenklatura.Povezava" pa je treba ustrezno popraviti v "Nomenklatura1.Povezava".

4. Včasih je koristno dobiti predstavitev referenčnih polj z uporabo ključne besede IZVEDBA skupaj s povezavo, tako da ni ponovnega dostopa do baze podatkov. To je uporabno pri prikazu rezultata poizvedbe v tabeli.
primer:
IZBERI
ZASTOPANJE(Dokument.Nasprotna stranka) KOT Prejemnik,
PREDSTAVITEV(Dokument.Osnova)
OD
Dokument.Račun KOT Dokument

5. Uporabite v zahtevku EXPRESS(vrsta AS polja) vam omogoča, da odstranite nepotrebne tabele iz povezave s poljem kompleksnega podatkovnega tipa. S tem se pospeši izvedba zahteve.
Primer (registrator je polje sestavljenega tipa za fizično tabelo šifranta akumulacije Preostalo blago, v zahtevku se izbere Datum in Število dokumentov Prejem blaga, pri dostopu do podrobnosti dokumenta Datum in Številka preko registrarja, ni večkratne povezave registrske tabele s tabelami dokumentov, ki so registratorji za register preostanka blaga):
IZBERITE RAZLIČNO[b] EXPRESS(Preostalo blago. Registrator KOT dokument. Potrdilo o prejemu blaga). Številka KOT ŠTEVILKA PREJEMA,
[b] EXPRESS(Preostalo blago. Registrator KOT dokument. Prejem blaga). Datum KOT DATUM PREJEMA
[b]OD Register preostanka blaga KOT preostalo blago KJE (EXPRESS(Preostalo blago. Registrator KOT dokument. Prejem blaga) NI NULL)

6. Če so v konfiguraciji 1C uporabniki, ki imajo omejene pravice do določenih konfiguracijskih objektov, je treba v zahtevi za take objekte uporabiti ključno besedo DOVOLJENO tako da se zahteva izvede brez napak (Izberite Dovoljeno ...)

7. Pri združevanju tabel, ki vsebujejo ugnezdene tabele (na primer dokument s tabelarnim delom), je ključna beseda lahko uporabna PRAZNA MIZA ko na primer eden od dokumentov nima tabelarnega dela.
primer:
IZBERI Povezava. Številka, PRAZNA TABELA. (Št., Artikel, Količina) KOT Sestava

ZDRUŽI VSE
IZBERI Link.Number, Composition.(LineNumber, Nomenclature, Quantity)
IZ Dokument.Račun

8. Pri delu s spoji tabel, ki vsebujejo po eno vrstico, bo morda treba združiti vrstice tabel (v obeh tabelah ni polja, s katerim bi ju lahko združili). To je mogoče doseči z uporabo konstrukcije " Tabela POLNE POVEZAVE Z TRUE" Če imajo tabele več kot eno vrstico, bo rezultat število vrstic, ki je enako zmnožku števila vrstic obeh tabel. Če je v eni tabeli O vrstic, bo število vrstic v dobljeni tabeli enako številu vrstic v drugi tabeli. Tudi za povezavo takšnih tabel lahko uporabite kartezični produkt tabel, pri katerem se bodo vse kombinacije vrstic iz obeh tabel pojavile v nastali tabeli. Ne smemo pozabiti, da če je v eni od tabel 0 vrstic, bo kartezični produkt enak 0, zato bo polno združevanje boljše. Na splošno namesto popolne povezave PO RESNICI Uporabite lahko katero koli drugo vrsto združevanja, vendar je v tem primeru možno tudi, da bo imela nastala tabela 0 vrstic, tudi če ima ena od tabel število vrstic, ki ni nič. V primeru polnega združevanja se bo ta situacija zgodila samo v enem primeru, če je število vrstic v obeh tabelah 0. Če veste, da je v tabeli natanko vsaj ena vrstica, potem lahko uporabite LEVI PRIKLJUČEK z drugo mizo s pogojem PO RESNICI.
Primer (resda izmišljen, za popolno pridružitev):
IZBERI
Prvi 1
Gender.Link,
K. Nasprotna stranka
OD
Naštevanje Spol KOT Spol
POLNA POVEZAVA (Izberite prvo 1 D. Nasprotno stranko IZ dokumenta. Prodaja blaga KAKO D Uredi do D. Časovnega trenutka) KAKO
VKLOPLJENO (TRUE)

9. Da bi dobili edinstvene zapise za določeno polje, je pravilneje uporabiti ključno besedo namesto združevanja RAZLIČNO v zahtevi, ker je ta konstrukcija veliko jasnejša in ključna beseda ZDRUŽI PO ima širšo uporabo in se pogosto uporablja, če je potrebno dodatno izračunati agregatne funkcije po skupinah. V nekaterih primerih je potrebno izpisati omejeno število vrstic. Če želite to narediti, morate v opisu zahteve navesti ključno besedo NAJPREJ in za njim - potrebno število vrstic.
Primer za NAJPREJ:
Izberite prvih 5
Imenik.Nomenklatura.Ime,
Imenik.Nomenklatura.NabavnaCena
Razvrsti po
Imenik.Nomenklatura.NabavnaCena padajoče
Primer za RAZLIČNO:
Izberite Različno
Dokument.Potrošni material.Nasprotna stranka

10. Funkcije združevanja v poizvedbi je mogoče uporabiti brez ključne besede SKUPINA. V tem primeru bodo vsi rezultati združeni v eno vrstico.
primer:
Izberite
Znesek(Račun.Znesek) kot znesek
Od
Dokument. Vsebina računa

11. V poizvedbah v izbirnih poljih lahko prosto dostopate do podrobnosti izbirnih polj. Ta funkcija se imenuje dereferenciranje izbranega polja. Če je vir podatkov ugnezdena tabela (tabelarni del dokumenta), potem lahko v izbirnih poljih dostopate tudi do polj glavne tabele (npr. preko polja Povezava dostopate do polja glavne tabele Račun)
primer:
IZBERI[b] Prejem blaga in storitev Količina KOT Količina, Prejem blaga in storitevBlago.Povezava.Nasprotna stranka OD KJE
Obstaja ena posebnost uporabe dereferenciranja polja, če so v zahtevi skupine. V vseh poizvedbah z združevanjem v skupine na seznamih polj poizvedbe lahko prosto dostopate do podrobnosti polj združevanja.
primer:
IZBERI
Nomenklatura blaga in storitev,
Nomenklatura blaga in storitev.
SUM (Prejem blaga in storitev. Blago. Količina) AS Količina,
Prejem blaga in storitevBlago.Povezava.Nasprotna stranka,
Prejem blaga in storitevGoods.Link.Date
OD
Dokument. Prejem blaga in storitev. KAKO Prejem blaga in storitev
KJE
Prejem blaga in storitevGoods.Link = &Link
ZDRUŽI PO
Nomenklatura blaga in storitev,
Prejem blaga in storitevGoods.Link
Pomoč 1C pravi, da če obstaja združevanje, lahko v izbirnih poljih poizvedbe sodelujejo samo polja za združevanje in agregatne funkcije za izbirna polja. Obstaja en izjemen primer, ko se agregatne funkcije uporabijo za polja ugnezdene tabele. V tem primeru je v seznamu izbirnih polj možen dostop do polj vrhnje tabele, brez združevanja rezultatov po teh poljih.
primer:
IZBERI
Prejem blaga in storitev (SUM (količina), nomenklatura).
Povezava za prevzem blaga in storitev.
Prejem blaga in storitev Nasprotna stranka
OD
Dokument. Prejem blaga in storitev KAKO Prejem blaga in storitev
ZDRUŽI PO
Prejem blaga in storitev (nomenklatura).

12. Včasih je namesto podajanja katerega koli polja v skupini koristno vključiti naslednji parameter v polja za izbiro poizvedbe:
IZBERI DocProducts.Nomenklatura, &Nasprotna stranka, &Pika, SUM(DocProducts.Quantity * DocProducts.Q) AS Količina, SUM(DocProducts.Amount) AS Znesek OD Document.Admission.Products AS DocProducts KJE DocProducts.Link = &Povezava
ZDRUŽI PO DocProducts.Nomenclature
In nato nastavite parameter v telesu zahteve:
Request.SetParameter("&Račun", IzberiteRačun);
Query.SetParameter("&Obdobje", Datum);

13. V univerzalnih poizvedbah se parametri lahko uporabljajo v opisu podatkovnih virov poizvedbe v pogojih KJE, v pogojih povezovanja tabele in parametrih virtualne tabele. Obstajata dve tehniki za ustvarjanje generičnih poizvedb:
A) z uporabo mehanizma veriženja nizov, dodajanje spremenljivk besedilu zahteve;
Primer1:

OrderingType = ?(NEKATERA SPREMENLJIVKA,"","DESC");
Query.Text = "Izberi... Razporedi PO Polju1 " + Vrsta Naloga + "...";
Primer2:
Query.Text = "Izberi polje1 ...";

Če je NEKA SPREMENLJIVKA = 1 Potem
Request.Text = Request.Text + ",Field2 ...";
endIf;
B) uporabite parametre v različnih delih zahteve (na primer v razdelku z viri podatkov zahteve), nato pa vgrajeno metodo jezika - STREPLACE(). Pri oblikovanju univerzalnih poizvedb je koristno dostopati do lastnosti objektov METADODATKI(), s katerim lahko določite ime tabele za neko povezavo (na primer, za dokument bo nekaj takega - Povezava . METADATA().NAME), posredovan skozi parameter nekemu univerzalnemu postopku.
primer:
Izberite
DocTch.Nomenklatura,
...
OD
&Nekaj ​​DocTC KOT DocTC
In nato nastavite parameter v telesu zahteve
Request.Text = StrReplace(Request.Text, "&SomeDocTCH", "Document."+Link.Metadata().Name+".Products");

Parametre lahko uporabite v pogojih poizvedbe, da omogočite izbirni pogoj &Parameter ALI NE SomeProperty:
Request.SetParameter(“&Parameter”, “Counterparty.Name=””Ivanov”””);
Uporaba literala PRAV v zahtevi lahko odstranite določene filtre
Query.SetParameter("&Parameter", True);

14. Zelo uporaben v oblikovalniku poizvedb je ukaz kontekstnega menija tabele - " Preimenuj tabelo ...", s katerim lahko dobite neko posplošeno ime za vir podatkov. Če želite ustvariti poizvedbe za tabele iste vrste, podobne strukture, je lahko koristno, da druga tabela kopira besedilo poizvedbe prve tabele, pojdite v okno oblikovalca poizvedb in izberite element v kontekstnem meniju tabele - Zamenjaj tabelo ... in izberite drugo tabelo.

15. Pri delu z ustvarjanjem ugnezdenih poizvedb v razdelkih pogojev ali parametrov virtualnih tabel oblikovalca poizvedb se uporablja tehnika označevanja presledka v oklepajih, nato pa se v kontekstnem meniju prikaže element »Oblikovalnik poizvedb« in pri urejanju ugnezdene poizvedbe je v pogoju označena celotna poizvedba v oklepajih.
Primer ugnezdene poizvedbe:
Izdelek B (Izberite izdelek ...)

16. Pri načrtovanju poročil ACS v poizvedbah za bilančne registre je bolj priročno in pravilno uporabiti izraz kot parameter Period AddToDate(EndPeriod(Period,DAY),SECOND,1), saj so navidezna stanja pridobljena na začetku obdobja, brez zadnje sekunde. Tehnike +1 sekunde ni mogoče uporabiti z dokumenti: v skladu z novim načinom knjiženja dokumentov je treba stanja v registru prejeti za obdobje, ki ga določa mejni objekt, vključno s trenutkom dokumenta (in ne na datum dokument +1 sekunda!), po starem načinu knjiženja pa - v trenutku dokumenta (in ne na datumu dokumenta!). Pri analizi prometa ali podatkov za obdobje je priročno dodati parameter s tipom Standardno obdobje(v tem primeru ni treba navesti zadnjega datuma intervala ob koncu dneva). Za standardno polje »Začetek obdobja« morate v polje »Izraz« vnesti "&Obdobje. Začetni datum" In za standardno polje "Konec obdobja" v polje "Izraz" napišite " &Obdobje.Končni datum«. Veliko koristnih informacij o poizvedovalnem jeziku je mogoče najti ne v pomočniku za sintakso, temveč v popolni pomoči konfiguratorja 1C 8.2 (gumb F1)

17. Funkcija poizvedbe Je Nič(bolj priročno je napisati angleško različico Je Nič) se običajno uporablja, da se znebite ničelnih vrednosti za številska poizvedbena polja. V nekaterih primerih, na primer popolna združitev dveh tabel, funkcija IsNull (Parameter1,Parameter2) lahko uspešno nadomesti dizajn IZBIRA KDAJ...POTEM...DRUGAČE....KONEC, ko so lahko vrednosti NULL za katero koli polje tako v prvi tabeli kot v drugi (ta konstrukcija vam omogoča, da za polje pridobite vrednost, ki ni ničelna). Vendar se moramo spomniti, da za razliko od pogojnega operaterja IZBIRA funkcijo Je Nič pretvori tip drugega argumenta v tip prvega argumenta, kar je treba upoštevati, če sta tipa argumenta različna!
primer:
IsNull(Reg.Remaining,0)
IsNull(Doc.Product,Doc1.Item)

18. Pri pogojni gradnji IZBIRA Obstaja alternativna sintaksa za preprost primer testiranja enakosti določene vrednosti, vendar je nedokumentirana:
Izbira Izraz Ko 1 Nato »Visoko« Ko 2 Nato »Srednje« Drugo »Nizko« Konec

19. Operator preverjanja vrednosti NULL Da Null(Priporočamo uporabo angleške različice Je Nična). Ta konstrukcija se je pojavila, ker je vsaka operacija, ki primerja dve vrednosti, od katerih je vsaj ena Null, vedno napačna. Pišite Kjer je ime = nič narobe. Zanimiva je tudi oblika zanikanja tega operatorja Brez Null- narobe, a prav Da Ni Null ali obliko Ni (polje1 je ničelno)- to je pomembna razlika od vseh operatorjev, ki se uporabljajo v povezavi z operatorjem He.

20. Včasih je obrazec operaterja koristen IN da preverite ujemanje z eno od navedenih vrednosti.
primer:
...Kje je Product.Name B ("Gospodinjski aparati", "Računalniki")
Za referenčne knjige je lahko uporaben obrazec operaterja IN preverjanje članstva v hierarhiji.
primer:
...Kje je nomenklatura V HIERARHIJI (&Skupina)
Operater IN se pogosto uporablja za preverjanje, ali je vrednost vključena v rezultat podpoizvedbe.
primer:
...Kje Nomenklatura.Povezava B (Izberite Nomenklatura.Povezava...).
V podpoizvedbi lahko dostopate do zunanjih polj poizvedbe v pogoju.
primer:
// Izberite imena izdelkov, ki so bili prisotni
// v računih
IZBERI
Izdelki.Ime
OD
Imenik.Nomenklatura KAKO Izdelki
KJE
Izdelki. Povezava B
(IZBERI
Sestava računa. Nomenklatura
OD
Document.Invoice.Composition AS InvoiceComposition
KJE
InvoiceContent.Nomenclature = Products.Link)
Delovanje IN se lahko uporablja z nizi, seznami vrednosti, tabelami vrednosti, ugnezdenimi poizvedbami. V tem primeru je možno zmanjšati pogoje
Sintaksa za podpoizvedbo
(izraz1, izraz2,...,izrazN) V (Izberi izraz1, izraz2,...,izrazN...)
Sintaksa za tabelo vrednosti
(izraz1, izraz2,...,izrazN) V (&TK), kjer je prvih N stolpcev uporabljenih v tabeli vrednosti TK

20. Na internetu obstaja šala o tem, kako oblikovalec poizvedb vedno počne LEVO združevanje tabel (in njihovo zamenjavo), ne glede na to, kako določimo PRAV:
1C: Podjetje ljubi "na levo".

21. Priročno je razhroščevanje kompleksnih poizvedb v poizvedovalni konzoli. Na internetu jih je veliko. Ko odpravite napake v poizvedbi, jo lahko kopirate in v oblikovalcu poizvedbe je čudovit gumb " Prošnja«, kjer ga lahko prilepite v isto obliko in shranite (prej ga je bilo možno samo kopirati v konfiguratorju in zahtevo oblikovati z znakom za prelom vrstice). V oknu, ki se odpre, ko kliknete gumb »Poizvedba«, lahko uredite poizvedbo in si ogledate rezultat izvedbe, kar je zelo priročno.

22. Pri oblikovanju poročil ACS se morate zavedati, da če želite zagotoviti filtriranje po določenem polju, ni treba dodati parametra besedilu zahteve. Graditelj poizvedb ima zavihek " Sestava podatkov«, kjer lahko pogojem dodate parametre. Poleg tega je na ravni poročila ACS zavihek s pogoji, kjer lahko dodate poljubne pogoje in jih shranite v hitrih nastavitvah. V tem primeru bodo pogoji univerzalni (enakopravnost, neenakost, pripadnost, uvrstitev na listo itd.).

23. Pri delu z dokumenti boste morda morali dodati razvrščanje po polju navidezne tabele TRENUTEK ČASA, vendar smola - v ugnezdenih poizvedbah razvrščanje po tem polju ne deluje pravilno. Pomaga ples s tamburami: razvrščanje po virtualnem polju TRENUTEK ČASA se nadomesti z dvema razvrščanjema: po datumu in po povezavi. Težavo lahko rešite tudi z začasno tabelo, tako da ugnezdeno poizvedbo premaknete v ločeno poizvedbo. Pri številnih izdajah ta funkcija ali napaka ni bila odpravljena.
Primer nedelujoče zahteve, ki prejme zadnji objavljeni dokument za navedeno nasprotno stranko (oz. tabelarični del dokumenta):

IZBERI
ConsumableProducts.Link,
Potrošni material. Številka vrstice,
ConsumableProducts.Product,
Potrošni material. Količina,
Cena potrošnega materiala,.
Potrošni predmeti. Znesek
OD

KJE
Potrošni izdelki Povezava B
(IZBERITE VRHUNSKO 1
D. Povezava
OD
Dokument. Potrošni material AS D
KJE
D.Link.Dirigirano

ORDER BY D. Moment of Time DESCENDING)

Možne rešitve:
A) Zamenjaj z RAZVRSTI PO na
VRSTI PO D.Datumu OPIS.
VRSTNI RED PO D.Linku PADAJOČE

B) Ugnezdeno poizvedbo lahko premaknete v začasno tabelo:
IZBERI VRHUNSKO 1
D. Povezava
POSTAVITE TZLink
OD
Dokument. Potrošni material AS D
KJE
D.Link.Dirigirano
In D.Nasprotna stranka = &Nasprotna stranka

RAZVRSTI PO
D. Povezava Časovni trenutek DESCENDING
;

////////////////////////////////////////////////////////////////////////////////
IZBERI
ConsumableProducts.Link,
Potrošni material. Številka vrstice,
ConsumableProducts.Product,
Potrošni material. Količina,
Cena potrošnega materiala,.
Potrošni predmeti. Znesek
OD
Dokument.Potrošno blago.Blago KOT Potrošno blago
KJE
Potrošni izdelki Povezava B
(IZBERI
T.Link
OD
TZLink AS T)
C) Lahko se sklicujete na glavno tabelo dokumenta in šele nato na tabelarični del
IZBERI VRHUNSKO 1
Potrošni material.Povezava,
Potrošni material. Blago.(
povezava,
Številka vrstice,
izdelek,
količina,
cena,
vsota
)
OD
Dokument. Potrošni material KOT potrošni material
KJE
Expense.Counterparty = &Nasprotna stranka
In potrošni material. Izvedeno

RAZVRSTI PO
Potrošni material. Trenutek časa ZMANJŠANJE

24. Pri dostopu do glavne tabele dokumenta (imenika) lahko dostopate tudi do podatkov podrejene tabele (tabelarni del). Ta priložnost se imenuje dereferenciranje polj tabele. Primer naloge je naloga iskanja dokumentov, ki vsebujejo določen izdelek v tabelarnem delu.
primer:
Izberite Receipt.Link FROM Document.Receipt Kje Receipt.Goods.Nomenclature = &Nomenclature.

Prednost te poizvedbe pred poizvedbo v ugnezdeni tabeli Receipt.Goods je, da bo rezultat poizvedbe, če obstajajo dvojniki v dokumentih, vrnil samo edinstvene dokumente brez uporabe ključne besede RAZLIČNO.
Primerjaj:
Izberite Različni izdelki.Povezava IZ Dokumenta.Potvrda.Izdelki kot Izdelki, kjer Izdelki.Nomenklatura = &Nomenklatura.
To je verjetno vse. Jasno je, da je v poizvedovalnem jeziku še veliko vprašanj, ki jih nisem zajel. Za pisanje tega članka sem uporabil informacije, ki sem jih prejel po opravljenem osnovnem tečaju 1C 8.2 spec8.ru, pa tudi iz knjige »1C 8.2 Developer's Guide« in interneta.
Hvala vsem!

V tem članku želimo z vami razpravljati o vsem Funkcije poizvedovalnega jezika 1C, in konstrukcije poizvedovalnega jezika. Kakšna je razlika med funkcijo in dizajnom? Funkcijo pokličemo z oklepaji in možnimi parametri v njih, konstrukcijo pa zapišemo brez oklepajev. Nedvomno vse strukture in funkcije poizvedovalnega jezika 1C narediti postopek pridobivanja podatkov prilagodljiv in večnamenski. Te funkcije in konstrukcije veljajo za poizvedbena polja, nekatere pa tudi za pogoje.

Funkcije poizvedovalnega jezika 1C

Ker jasen opis Funkcije poizvedovalnega jezika 1c je veliko manj pogost kot opisi struktur, smo se odločili, da začnemo preučevati funkcije. Zdaj pa si oglejmo vsakega posebej, z opisom njegovega namena, sintakse in primera uporabe, torej:

1. funkcija DATUM ČAS- ta funkcija ustvari konstantno polje s tipom "Datum".

Sintaksa: DATUM ČAS(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Primer uporabe:

2. Funkcija DATE DIFFERENCE- vrne razliko med dvema datumoma v eni od dimenzij (leto, mesec, dan, ura, minuta, sekunda). Meritev se posreduje kot parameter.

Sintaksa: DIFFERENCEDATE(<Дата1>, <Дата2>, <Тип>)

Primer uporabe:

Query.Text = "IZBERI | RAZLIČNI DATUM(DATUMČAS(2015, 4, 17), DATUMČAS(2015, 2, 1), DAN) | AS Kol.dni";

3. Funkcija VALUE- nastavi konstantno polje z vnaprej določenim zapisom iz baze lahko dobi tudi prazno povezavo katere koli vrste.

Sintaksa: VALUE(<Имя>)

Primer uporabe:

Request.Text = "IZBERI //predefiniran element | VALUE(Directory.Currencies.Dollar) AS Dollar, //prazna povezava | VALUE(Document.Receipt of Goods and Services.EmptyLink) AS Potrdilo, //transfer value | VALUE(Transfer . Pravna oseba. Posameznik) AS Posameznik, //predefiniran račun VALUE(Kontni načrt. Samoobračunski materiali) AS Account_10" ;

4. SELECT funkcijo- pred nami je analog konstrukcije IF, ki se uporablja v kodi, le ta se uporablja v poizvedbah 1C.

Sintaksa: IZBIRA KDAJ<Выражение>POTEM<Выражение>DRUGAČE<Выражение>KONEC

Primer uporabe:

Request.Text = //če je znesek večji od 7500, bi moral biti popust 300 rubljev, //torej, če se sproži pogoj, potem funkcija //vrne Sum - 300 //v nasprotnem primeru bo zahteva vrnila preprosto Sum "IZBERI | IZBERI | KO TCReceipts.Amount > 7500 | THEN TCReceipts.Amount - 300 | DRUGAČE TCReceipts.Amount | KONEC KOT Znesek s popustom | OD |

5. funkcija EXPRESS- omogoča izražanje konstantnega polja z določeno vrsto.

Sintaksa: EXPRESS(Ime polja AS Ime vrste)

Primer uporabe:

Query.Text = "IZBERI RAZLIČNO | Številka.Registra.Prodaje, | IZBERI | KO POVEZAVA Registra.Prodaje Document.Expense | THEN EXPRESS(Sales.Registrar AS Document.Expense) | ALSE SELECT | KO POVEZAVA Registra.Registrar Document.Implementation | THEN EXPRESS(Sales.Registrar AS Document.Implementation) |. END AS Number |. Register AS Purchases";

Ali obstaja še kakšna možnost za uporabo funkcije EXPRESS v poljih mešanih tipov, kje se pojavljajo? Najenostavnejši primer je "Registrar" za kateri koli register. Zakaj bi torej morda morali kvalificirati vrsto v registrarju? Poglejmo si situacijo, ko v registrarju izberemo polje "Številka", iz katere tabele bo izbrana številka? Pravilen odgovor vseh! Da bi torej naša poizvedba delovala hitro, bi morali podati eksplicitno vrsto s funkcijo EXPRESS

Primer uporabe:

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

6. Funkcija ISNULL(alternativno črkovanje ISNULL) - če je polje tipa NULL, se nadomesti z drugim parametrom funkcije.

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

Primer uporabe:

Upoštevajte tudi, da je priporočljivo VEDNO zamenjati tip NULL z neko vrednostjo, ker primerjava s tipom NULL vedno vrne FALSE, tudi če primerjate NULL z NULL. Najpogosteje se vrednosti NULL oblikujejo kot rezultat združevanja tabel (vse vrste združevanj, razen notranjih).

Query.Text = //Izberi celotno postavko in njena stanja //če v neki postavki ni stanja, potem bo polje //NULL, ki bo nadomeščeno z vrednostjo 0 "IZBERI | Št. Povezava, | ISNULL (ProductsInStockRemaining, 0) AS Directory.Nomenclature AS No. |. RegisterAccumulations.GoodsInWarehousesRemainings | PO (GoodsInWarehousesRemainings = No.Link)";

7. funkcija REPRESENTATION- vam omogoča, da dobite predstavitev polja zahteve.

Sintaksa: IZVEDBA(<НаименованиеПоля>)

Primer uporabe:

Query.Text = "SELECT | REPRESENTATION(FreeRemainingRemains.Nomenclature) AS Nomenclature, | REPRESENTATION(FreeRemainingRemaining.Warehouse) AS Warehouse, | FreeRemainingRemaining.InStockRemaining |FROM |Register kopičenja.FreeRemaining.Remaining AS FreeRemainingRemaining ";

Konstrukcije v poizvedovalnem jeziku 1C

Zgoraj smo razpravljali z vami Funkcije poizvedovalnega jezika 1C, zdaj je čas za razmislek konstrukcije v poizvedovalnem jeziku 1C, niso nič manj pomembni in uporabni, začnimo.

1. Gradnja LINK- je logični operator za preverjanje referenčnega tipa. Najpogosteje se pojavi pri preverjanju polja kompleksne vrste glede na določeno vrsto. Sintaksa: POVEZAVA<Имя таблицы>

Primer uporabe:

Request.Text = //če je vrsta vrednosti zapisovalnika dokument Prejem, //potem bo poizvedba vrnila "Prejem blaga", v nasprotnem primeru "Prodaja blaga" "IZBERI | IZBERI | KO Ostanki.Registrar LINK Dokument.Prejem blaga in Storitve |. "Potrošnja" |. Preostali proizvodi v skladiščih |.

2. Oblikovanje BETWEEN- ta operater preveri, ali je vrednost znotraj podanega območja.

Sintaksa: MED<Выражение>IN<Выражение>

Primer uporabe:

Request.Text = //pridobite celotno nomenklaturo, katere koda je v območju od 1 do 100 "SELECT | Nomenclature.Link |FROM | Imenik.Nomenclature AS Nomenclature |WHERE | Nomenclature.Code BETWEEN 1 AND 100" ;

3. Konstrukcija B in B HIERARHIJA- preverimo, ali je vrednost v prenesenem seznamu (matrike, tabele vrednosti itd. lahko prenesemo kot seznam). Operator V HIERARHIJI omogoča vpogled v hierarhijo (primer uporabe kontnega načrta).

Sintaksa: IN(<СписокЗначений>), V HIERARHIJI(<СписокЗначений>)

Primer uporabe:

Request.Text = //izberite vse podračune računa "IZBERI | Samonosno. Povezava AS Račun | OD | Kontni načrt. Samonosno AS Samonosno | KJE | Samonosno. Povezava V HIERARHIJI VREDNOST (Tabela Računi. Samonosno blago)";

4. Oblikovanje PODOBNO- Ta funkcija nam omogoča primerjavo niza z vzorcem niza.

Sintaksa: VŠEČ "<ТекстШаблона>"

Možnosti vzorca vrstic:

% - zaporedje, ki vsebuje poljubno število poljubnih znakov.

En poljuben znak.

[...] - vsak posamezen znak ali zaporedje znakov, navedenih v oglatih oklepajih. Oštevilčenje lahko določa obsege, na primer a–z, kar pomeni poljuben znak, vključen v obseg, vključno s konci obsega.

[^...] - vsak posamezen znak ali zaporedje znakov, navedenih v oglatih oklepajih, razen tistih, navedenih za znakom za negiranje.

Primer uporabe:

Query.Text = //poiščite celotno nomenklaturo, ki vsebuje koren TABUR in se začne //bodisi z malo ali veliko črko t "SELECT | Nomenklatura. Povezava | FROM | Imenik. Nomenklatura KOT Nomenklatura | WHERE | Izdelki. Ime LIKE "" [Tt ]abur%""" ;

5. Dizajn DOVOLJEN- ta operater omogoča izbiro samo tistih zapisov iz baze podatkov, za katere ima klicatelj dovoljenje za branje. Te pravice so konfigurirane na ravni zapisa (RLS).

Sintaksa: DOVOLJENO je zapisano za ključno besedo IZBERI

Primer uporabe:

Request.Text = "IZBERI DOVOLJENO | Nasprotne stranke. Povezava | IZ | Imenik. Nasprotne stranke KOT Nasprotne stranke";

6. Oblikovanje RAZLIČNO- omogoča izbiro zapisov, v katerih ni podvojenih zapisov.

Sintaksa: VARIOUS je zapisano za ključno besedo SELECT

Primer uporabe:

Request.Text = //izbere zapise, do katerih ima bralec pravice "SELECT VARIOUS | Counterparties.Name |FROM | Imenik. Counterparties AS Counterparties" ;

Tudi konstrukcijo VARIOUS je mogoče uporabiti z operatorjem ALLOWED in drugimi operatorji.

Primer uporabe:

Request.Text = //izbere različne zapise, do katerih ima bralec pravice "IZBERI DOVOLJENO RAZLIČNO | Nasprotne stranke.Ime |FROM | Imenik. Nasprotne stranke KOT Nasprotne stranke";

7. Design FIRST- iz rezultata poizvedbe izbere število zapisov, navedenih v parametru.

Sintaksa: FIRST<число>

Primer uporabe:

Request.Text = //izberi prve 4 številke CCD iz imenika "IZBERI PRVE 4 | Številke CCD. Povezava | FROM | Imenik. Številke CCD KOT številke CCD";

8. Dizajn ZA SPREMEMBE- omogoča zaklepanje tabele, deluje samo v transakcijah (relevantno samo za avtomatske ključavnice).

Sintaksa: ZA SPREMEMBO<НаименованиеТаблицы>

Primer uporabe:

Query.Text = "IZBERI | Brezplačni preostanki Preostanki. Nomenklatura, | Brezplačni preostanki Preostanki. Skladišče, | Brezplačni preostanki Preostanki. Na zalogi Preostali | OD | Register akumulacij. Brezplačni preostanki. Ostanki KOT Prosti preostanki Preostanki | ZA SPREMEMBO | Register akumulacij . Brezplačni preostanki";

9. Dizajn ORDER BY- ureja podatke po določenem polju. Če je polje povezava, potem pri nastavitvi zastavice AVTO NAROČILO Razvrščanje bo potekalo po predstavitvi povezave; če je zastavica izklopljena, bodo povezave razvrščene po starosti naslova povezave v pomnilniku.

Sintaksa: RAZVRSTI PO<НаименованиеПоля>AVTO NAROČILO

Primer uporabe:

Query.Text = "IZBERI | Brezplačni preostali preostanki. Nomenklatura KOT Nomenklatura, | Brezplačni preostanki Preostanki. Skladišče KOT Skladišče, | Brezplačni preostanki Preostanki. Na zalogi Preostali | OD | Registrirajte akumulacije. Brezplačni preostanki. Preostali KOT Brezplačni preostali preostanki | | NAROČI PO |. Nomenklatura |. SAMODEJNO BRANJE NAROČILA";

10. Oblikovanje GROUP BY- uporablja se za združevanje nizov poizvedb po določenih poljih. Številska polja je treba uporabiti s katero koli agregatno funkcijo.

Sintaksa: ZDRUŽI PO<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Primer uporabe:

Query.Text = "SELECT | ProductsInWarehouses.Nomenclature AS Nomenclature, | ProductsInWarehouses.Warehouse, | SUM(GoodsInWarehouses.InStock) AS STOCK |FROM | RegisterAccumulations.ProductsInWarehouses AS ProductsInWarehouses | |GROUP BY | ProductsInWarehouses.Nomenclature, |treasures.Warehouse ";

11. Oblikovanje HAVING- omogoča uporabo agregatne funkcije za pogoj izbire podatkov, podobno konstrukciji WHERE.

Sintaksa: IMATI<агрегатная функция с условием>

Primer uporabe:

Query.Text = //izbere združene zapise, kjer je polje InStock večje od 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS INSTOCK |FROM | RegisterAccumulations.ItemsInStocks AS ItemsInStocks | | GROUP BY |. ProductsInWarehouses.Warehouse |. AMOUNT (ProductsInWarehouses.In Stock) > 3" ;

12. Gradnja INDEX BY- uporablja se za indeksiranje poizvedbenega polja. Poizvedba z indeksiranjem traja dlje, vendar pospeši iskanje po indeksiranih poljih. Lahko se uporablja samo v virtualnih tabelah.

Sintaksa: INDEKS PO<Поле1, ... , ПолеN>

Primer uporabe:

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. Oblikovanje KJE- omogoča, da določite pogoj za poljubna izbirna polja. Rezultat bo vseboval le zapise, ki bodo izpolnjevali pogoj.

Sintaksa: KJE<Условие1 ОператорЛогСоединения УсловиеN>

Primer uporabe:

Query.Text = //izbrani so vsi zapisi s CompensationRemaining<>0 in //AmountForCalcCompRemaining > 100 "SELECT | CompensationRPORemains.Counterparty, |CompensationRPORemains.Child, | CompensationRPORemains.CompensationRemaining, | CompensationRPORemains.AmountForCalcCompRemains |Place DataTz |FROM | Register kopičenja.CompensationRP.Remains AS Compens ationRPORemains |WHERE |CompensationRPORemaining.CompensationRemaining<>0 | In CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

14. REZULTATI oblikovanja... SPLOŠNO- uporablja se za izračun seštevkov; določa polja, po katerih se izračunajo seštevki, in agregatne funkcije, uporabljene za polja s seštevki. Pri uporabi vsot za vsako polje, ki sledi konstrukciji TOTAL, so podatki združeni. Obstaja neobvezen konstrukt GENERAL, njegova uporaba zagotavlja tudi dodatno združevanje. Spodaj boste videli primer rezultata zahteve.

Sintaksa: REZULTATI<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>BY<ОБЩИЕ> <Поле1, ... , ПолеN>

Primer uporabe:

Request.Text = "IZBERI | Izračuni. Pogodba nasprotne stranke. Vrsta pogodbe AS Vrsta pogodbe, | Izračuni. Pogodba nasprotne stranke AS Pogodba, | Izračuni. Nasprotna stranka, | Izračuni. Znesek stanja medsebojne poravnave AS stanja | OD | Register akumulacij. Vzajemna Poravnava Z nasprotnimi strankami. Izračuni SKUPAJ |. SPLOŠNO, |Vrsta pogodbe;

Na sliki so prikazane skupine, ki so se oblikovale med izvajanjem zahteve, zgornja se nanaša na razdelek SPLOŠNO, druga pa na polje Counterparty AgreementAgreement Type.