Acest articol ia în considerare propunerea SELECT, locul și rolul său în limba de interogare 1C: Enterprise 8.
Clauza SELECT este singurul element obligatoriu al oricărei interogări, astfel încât începe studiul limbajului de interogare. Scopul principal al instrucțiunii SELECT este de a specifica câmpurile din eșantion care ar trebui să fie incluse în rezultatul interogării.
Următoarele subiecte sunt discutate mai jos:
Locul SELECT în structura interogării
Structura cererii de la 1C: Enterprise 8 poate fi reprezentată ca următoarea schemă:
Din diagrama de mai sus putem trage următoarele concluzii:
- În orice solicitare, trebuie să existe cel puțin un SELECT.
- Lista câmpurilor de selecție trebuie să conțină o descriere a cel puțin unui câmp de selecție, care în general este o expresie.
Exemplu de solicitări cu o clauză SELECT
1. Selectarea tuturor câmpurilor (cu excepția celor virtuale) din tabele
În loc de a enumera lista de câmpuri, puteți specifica un asterisc ("*") și apoi rezultatul interogării va include toate câmpurile tabelului sursă, cu excepția celor virtuale. De exemplu:
// trimitere la tabelul directorului
SELECT * din Nomenclatura de referință
// acces la tabela de documente
SELECTARE * DE LA DOCUMENT.CONCLUSIVE CassetteOrder
// accesul la tabelul principal al registrului de acumulare
CHOOSE * din Registrul de acumulare. Vânzarea companiei
// acces la tabela virtuală a registrului de acumulare
SELECT * din registrul de acumulare. Vânzarea companiei.
Notă: În limbajul de interogare, este posibil să se facă fără IZspecification, dacă descrierea câmpului conține calea completă la ea cu tabela sursă, de exemplu,
// selectați toate câmpurile non-virtuale din tabelul de agende
Alegeți Nomenclatorul de referință.
// selectați anumite câmpuri din tabelul directorului
ALEGE
Spravochnik.Nomenklatura.Kod,
Spravochnik.Nomenklatura.Naimenovanie,
Directory.Nomenclature.Prepresentation // camp virtual
2. Selectați numai anumite câmpuri din tabele
Cea mai obișnuită modalitate este de a enumera mai multe câmpuri din tabela sursă, apoi numai aceste câmpuri vor cădea în rezultatul interogării.
// trimitere la tabelul directorului
Alegeți codul, numele, articolul, țara de origine
Din directorul.Nomenclatură
// acces la tabela de documente
ALEGE NUMĂRUL, DATA, Divizia companiei, Suma documentului
DOCUMENT.CountryCountryOrder
3. Câmpuri virtuale
Unele dintre câmpurile din tabelele sursei virtuale, de exemplu, „Prezentarea“ caseta pentru directorul și masa de documente sau „MomentVremeni“ pentru document. Aceasta înseamnă că acestea nu sunt stocate în baza de date, dar sunt generate "în zbor". câmpuri virtuale nu sunt incluse în rezultatele interogării când, în loc de o listă de câmpuri un asterisc ( „*“), ele trebuie să fie explicite, cum ar fi „SELECT * FROM Spravochnik.Tovary Prezentare“. Această decizie a fost luată pentru a accelera implementarea interogării clasice "SELECT * FROM. “. În acest caz, nu este necesar să generați vizualizări pentru elementele de directoare și documente, de aici interogările vor fi executate mai repede.
// trimitere la tabela directorului (alegeți două câmpuri obișnuite și un câmp virtual)
SELECTARE cod, nume, prezentare
Din directorul.Nomenclatură
// accesul la tabela de documente (selectați toate câmpurile non-virtuale și două câmpuri virtuale)
SELECT *, View, Moment of Time
DOCUMENT.CountryCountryOrder
4. Denumiți câmpurile de referință
În 1C: Enterprise 8, puteți accesa proprietățile obiectelor printr-unul sau mai multe puncte, de exemplu, "Nomenclature.Supplier Country." Acest lucru face mult mai ușor să scrieți interogări. Se recomandă întotdeauna să utilizați dereferența câmpurilor acolo unde este posibil, pentru a nu complica cererile cu construcții redundante.
5. Alias de câmp (cuvântul cheie AS / AS)
Un alias poate fi atribuit unui câmp utilizând cuvântul cheie HOW. Aceasta vă permite să accesați câmpul printr-un alias atunci când specificați totalurile și ordinea de sortare, precum și atunci când traversați o selecție din rezultatul interogării, de exemplu:
Cuvântul cheie AS este opțional, adică interogarea de mai sus poate fi scrisă după cum urmează:
6. Accesul la o parte din tabel ca tabel imbricat
În acest caz, câmpul rezultat al interogării va avea tipul rezultatului interogării, adică conține rezultatul interogării imbricate generat pe baza părții din tabel.
// obțineți partea tabelului ca tabel de rezultate interogare imbricate
ALEGE NUMĂR, DATE, MĂRFURI
Din raportul Document.Avansovy
// obținerea mai multor coloane din partea tabelului ca tabel imbricat
ALEGE NUMĂR, DATE, MĂRFURI. (Nomenclatură, Cantitate)
Din raportul Document.Avansovy
Rețineți că dacă executați următoarea interogare, interogarea are două tabele imbricate: prima conține coloana Nomenclatură, iar a doua coloană conține coloana Cantitate:
ALEGE NUMĂRUL, DATA, MĂRFURILE, Nomenclatorul, Bunurile, Cantitățile
Din raportul Document.Avansovy
7. Accesul la partea tabelului ca tabelă sursă
În acest mod de adresare, numele tabelului imbricat apare în numele tabelului sursă (numele câmpurilor FROM sau Full) și nu există tabele imbricate ca urmare a interogării.
// selectați toate câmpurile din partea tabelului
ALEGEȚI * DIN DOCUMENT.Avansovy Otozchet.Tovary
// selectați anumite câmpuri din partea tabelului
ALEGE Nomenclatorul, cantitatea, prețul, suma
Din DOCUMENT.Avansovy Otozchet.Tovary
// setați pseudonimele pentru câmpurile câmpului de masă
CHOOSE Document.Avansovy report.Goods. (Nomenclatură, Suma AS AmountBuilt-in)
8. Cuvântul VARIOUS / DISTINCT
Cuvântul cheie VARIOUS vă permite să lăsați în urma interogării numai liniile diferite.
ALEGE VARIOARE Responsabil
Din raportul Document.Avansovy
9. Cuvânt cheie FIRST / TOP
Acest cuvânt cheie vă permite să limitați selecția la mai multe intrări. Adesea, acest cuvânt cheie este utilizat în combinație cu sortarea (ORDER LA COMANDĂ).
ALEGETI PRIMUL 10 Numar, Data, suma documentului
Din raportul Document.Avansovy
ORDINEA DE MEMBRU A DOCUMENTULUI FORCED
10. Expresii în lista câmpurilor de selecție
O descriere a câmpului de selecție poate fi o expresie care folosește următoarele elemente:
- Introduceți literali: număr, șir (în ghilimele), boolean (valori Adevăr și fals), Nul, nedefinit. [Notă. Pentru a specifica un literal al tipului "data", puteți utiliza cuvântul cheie al limbii de interogare DATE sau puteți transmite data prin intermediul parametrului de interogare].
- Parametrii de interogare (cu un semn )
- Nume câmp
- Numele tabelului
- Pentru a numi câmpul de referință (prin unul sau mai multe puncte)
- Operații aritmetice (+, -, /, *) [Notă. funcționarea obținerii restului de% din limba de interogare nu este acceptată]
- Funcționarea concatenării șirului (+) [Nota. operația de concatenare nu poate fi utilizată pentru câmpurile virtuale]
- Funcțiile încorporate ale limbajului de interogare (ZI, LUNĂ, ANI, etc.)
- Funcții agregate (SUM, MINIM, MAXIM, MEDIUM, QUANTITY)
- Operația SELECT / CASE selectare vă permite să obțineți una dintre valorile posibile în funcție de condițiile specificate.
- Operațiune de conversie tip EXPRESS / CAST
Mai jos sunt câteva exemple cu expresii în lista câmpurilor de selecție:
// operațiuni aritmetice
ALEGE
Nomenclatorul,
Cantitate * Preț CUM SUMĂ 1,
Cantitate / Cantitate HOWFITS2
Din DOCUMENT.Avansovy Otozchet.Tovary
// concatenarea șirului
ALEGE "Angajat" + Responsible.Name
Din raportul Document.Avansovy
// funcții agregate
ALEGE
Divizia Companiei,
AMOUNT (Suma documentului),
MAXIMUM (Suma documentului),
MINIMUM (Suma documentului),
MEDIU (Suma documentului),
CANTITATE (*)
Din raportul Document.Avansovy
GRUP DE COMPANIE
// selectați operația
CHOOSE Nume,
SELECȚIE
CÂND Țara de origine.Name = "CHINA" THEN "Asia"
Când țara de origine.Name = "TAIWAN", apoi "Asia"
CÂND țara de origine.Name = "SUA", apoi "America"
Când țara de origine.Name = "CANADA", apoi "America"
AKA "Altele"
END AS O țară
Din directorul.Nomenclatură
Astfel, clauza SELECT este cel mai important element al limbajului de interogare, deoarece vă permite să specificați câmpurile de rezultate dorite. Caracteristicile flexibile ale ofertei SELECT fac posibilă utilizarea limbajului de interogare pentru a rezolva o mare varietate de sarcini.