Izteikt kā veidu 1C pieprasījumā. S: Uzņēmums mīl “pa kreisi”

Šajā rakstā mēs analizēsim veidu konvertēšanas iespējas 1C vaicājumu valodā, ko nodrošina funkcija “Express”.
Apskatīsim vairākas šīs funkcijas izmantošanas iespējas.
Un pirmā iespēja ir skaitļu noapaļošana.

Lai to izdarītu, ir jāizmanto funkcija Express šādā formātā:

Express(<Число>kā numurs (<ДлинаЧисла>,<Точность>))

Kur:
Numurs— lauks, kas jānoapaļo
LengthNumbersmaksimālais garums cipariem
Precizitāte— skaitļu noapaļošanas precizitāte

Gan garuma, gan precizitātes parametriem jābūt pozitīviem veseliem skaitļiem.
Skatiet, kā šī funkcija darbojas zemāk esošajā attēlā.

Otrs lietošanas gadījums ir stīgu liešana. Ļoti bieži konfigurācijās tiek izmantotas neierobežota garuma virknes, kas uzliek dažus ierobežojumus. Piemēram, mēs nevaram salīdzināt neierobežota garuma virknes.
Tālāk esošajā vaicājumā laukam FullName ir neierobežota garuma tipa virkne, un šis vaicājums nedarbosies.

Lai tas darbotos, neierobežota garuma lauks ir jāpārvērš virknē ar noteiktu garumu, izmantojot funkciju Express šādā formātā:

Express(<Строка>kā virkne (<ДлинаСтроки>)

Kur
Līnijas garums– maksimālais garums, līdz kuram virkne tiks samazināta.
Pārstrādāsim vaicājumu: nosacījumā neierobežotu virkni pārveidosim par virkni ar noteiktu garumu. Tad kļūdu nebūs.

Apsvērsim pēdējo un, es teiktu, vissvarīgāko tā pielietojuma iespēju: strādājot ar laukiem salikts tips.
Tālāk ir norādīti divi vaicājumi, kas izmanto saliktos laukus. Pirmais ir nepareizs, bet otrais ir pareizs.

Tie. Ja jums ir nepieciešams iegūt kāda sarežģīta veida lauku, vienmēr iegūstiet šī lauka vērtību tikai pēc veida atrašanas, izmantojot funkciju Express. Šajā gadījumā dokumentiem un uzziņu grāmatām būs šāds formāts:

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

Kur
Tabulas nosaukums— objekta nosaukums .

Strādājot ar saliktajiem tipiem, vienmēr izmantojiet ekspresfunkciju, tā ievērojami optimizē vaicājumu.

Ja jūs joprojām “peldat” vaicājumu valodas konstrukcijās un pat visvienkāršākie vaicājumi jums sagādā grūtības, iesaku jums savu kursu “Vaicājumi 1C no iesācēja līdz profesionāļiem”. Kur šie un daudzi citi jautājumi tiek apspriesti sīkāk.

Kas ir īpašs šajā kursā:
Kurss ir paredzēts tiem, kuri nepārzina vaicājumu valodu 1C;
Mācību materiāls labi strukturēts un viegli apgūstams;
Vairāki desmiti nodarbību;
Noderīgi praktiski piemēri;
Visas nodarbības tiek pasniegtas skaidrā un vienkāršā valodā

Maniem lasītājiem 25% atlaižu kupons: hrW0rl9Nnx

Cenšos pēc iespējas biežāk izdot dažādus interesantus bezmaksas rakstus un video pamācības. Tāpēc es ļoti priecāšos, ja atbalstīsiet manu projektu, pārskaitot jebkuru summu:

Jūs varat pārskaitīt jebkuru summu tieši:
Yandex.Money - 410012882996301
Tīmekļa nauda — R955262494655

Pievienojieties manām grupām.

Tagad apskatīsim pārējo.

Funkcijas darbam ar virknēm 1C vaicājumos

Ir maz funkciju un operatoru darbam ar virkņu datiem 1C vaicājumos.

Pirmkārt, vaicājumos var pievienot virknes. Lai to izdarītu, izmantojiet operatoru “+”:

Pieprasīt. Teksts = "ATLASĪT
" "Rinda: " " + Source.Name
;

Otrkārt, jūs varat izvēlēties daļu no līnijas. Lai to izdarītu, izmantojiet funkciju SUBSTRUKCIJA. Funkcija ir līdzīga iebūvētajai 1C valodai. Tam ir trīs parametri:

  1. Avota virkne.
  2. Rakstzīmes numurs, ar kuru jāsākas atlasītajai rindai.
  3. Rakstzīmju skaits.

Pieprasīt. Teksts= "IZVĒLIES
SUBSTRING("
"Rinda:" ", 4, 3) Rezultātā";

// Rezultāts: labi Funkcija

ISNULL NULL ir īpašs datu tips platformā 1C:Enterprise. Viņš ir vienīgais iespējamā nozīme

šis tips. NULL vaicājumos var parādīties vairākos gadījumos: pieslēdzot vaicājuma avotus, ja nevienā no tabulām netika atrasta atbilstoša vērtība; piekļūstot neesoša objekta detaļām; ja vaicājuma lauku sarakstā tika norādīts NULL (piemēram, apvienojot atlases rezultātus no vairākām tabulām) utt. Tā kā NULL nav ne nulle, ne tukša virkne, ne pat vērtība nenoteikts, bieži vien ir lietderīgi to aizstāt ar kādu noderīgāku datu tipu. Šim nolūkam funkcija ir paredzēta.

ISNULL.

  1. Tam ir divi parametri:
  2. Vērtība tiek pārbaudīta.

Pieprasīt. Teksts= "IZVĒLIES
Vērtība, ar ko aizstāt pirmo parametru, ja izrādās, ka tā ir NULL.
; ISNULL(avots.atlikušais, 0) AS atlikums"
// Ja pieprasījuma rezultāts ir lauka atlikums = NULL,

// tad tas tiks aizstāts ar 0, un ar to var veikt matemātiskas darbības Funkcijas IZPILDE Un

IEVADSSAITES Šīs funkcijas ir paredzētas, lai iegūtu virknes attēlojumus dažādas nozīmes Funkcijas. Tas ir, tie pārvērš atsauces, skaitļus, Būla vērtības utt. vienkāršā tekstā. Atšķirība starp tām ir funkcija Un pārvērš visus datu tipus tekstā (virknē) un funkciju

Pieprasīt. Teksts= "IZVĒLIES
- tikai saites un atgriež atlikušās vērtības tādas, kādas tās ir, nevis konvertētas.
REPRENTĀCIJA (TRUE) KĀ Būla,
REPREZENTĀCIJA (Source.Link) AS saite,
REPREZENTĀCIJA(DATETIME(2016,10,07)) KĀ Datums"
;
// Būla = "Jā", Skaitlis = "4", Saite = "Patērējams dokuments kases pasūtījums Nē... no..."
// Datums = "07.10.2016 0:00:00"

Pieprasīt. Teksts= "IZVĒLIES
REPRENTATION REFERENCE (TRUE) KĀ Būla,
ATTIECĪBAS ATSAUCE(4) KĀ SKAITS
PRESENTINGLINK(Source.Link) AS saite,
REPREZENTĀCIJAS ATSAUCES(DATETIME(2016,10,07)) KĀ Datums"
;
// Būla = TRUE, Number = 4, Link = "Dokumentēt Kases ieņēmumu orderi Nr.... no..."
// Datums=07.10.2016 0:00:00

// tad tas tiks aizstāts ar 0, un ar to var veikt matemātiskas darbības VEIDS IZPILDE TIPA VĒRTĪBAS

// Rezultāts: labi VEIDS atgriež platformas datu tipu 1C: Enterprise.

Pieprasīt. Teksts= "IZVĒLIES
TYPE (numurs)
TYPE (virkne),
VEIDS (dokuments. Izdevumu skaidras naudas pārvedums)"
;

// Rezultāts: labi TIPA VĒRTĪBAS atgriež tam nodotās vērtības veidu.

Pieprasīt. Teksts= "IZVĒLIES
VĒRTĪBU VEIDS (5) AS Skaitlis,
TYPE ("
"Līnija" ") AS virkne,
TIPS (Source.Link) AS Atsauce
No Directory.Source AS Source"
;
//Number=Number, String=String, Directory = DirectoryLink.Source

Šīs funkcijas ir ērti lietojamas, piemēram, ja nepieciešams noskaidrot, vai pieprasījumā saņemtais lauks ir kāda veida vērtība. Piemēram, darījuma partneru kontaktinformāciju saņemsim no ContactInformation informācijas reģistra (ne tikai darījuma partneru, bet arī organizāciju kontaktus, privātpersonām utt.):

Pieprasīt. Teksts= "IZVĒLIES

NO

KUR
VĒRTĪBU VEIDS(Kontaktinformācija.Objekts) = VEIDS(Katalogs.Darījuma partneri)"
;

// Rezultāts: labi NOZĪME

// Rezultāts: labi Nozīmeļauj izmantot 1C konfigurācijas objektus tieši pieprasījumā, neizmantojot .

Iepriekšējam piemēram pievienosim vēl vienu nosacījumu. Jums jāiegūst tikai darījumu partneru tālruņu numuri.

Pieprasīt. Teksts= "IZVĒLIES
Kontaktinformācija.Ievads
NO
Informācijas reģistrs Kontaktinformācija KĀ Kontaktinformācija
KUR
VĒRTĪBU VEIDS(Kontaktinformācija.Objekts) = VEIDS(Katalogs.Darījuma partneri)
UN ContactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

Jāņem vērā, ka šo funkciju var izmantot tikai ar iepriekš definētām vērtībām, t.i. ar vērtībām, kurām var piekļūt tieši no konfiguratora. Tas ir, funkcija NOZĪME nevar izmantot ar lietotāju izveidotiem direktoriju elementiem, bet var darboties ar uzskaitījumiem, ar iepriekš definētiem direktorija elementiem, ar vērtībām EmptyLink.

Operators SAITE

Operators SAITE ir paredzēts, lai pārbaudītu ar pieprasījumu atgrieztās vērtības, lai noskaidrotu, vai tās pieder noteiktam atsauces veidam. To pašu uzdevumu var veikt, izmantojot funkcijas VEIDS IZPILDE TIPA VĒRTĪBAS(kuriem ir plašāka darbības joma un kas tika apspriesti iepriekš).

Piemēram, izvēles uzdevums kontaktinformāciju darījumu partnerus varētu atrisināt šādi:

Pieprasīt. Teksts= "IZVĒLIES
Kontaktinformācija.Ievads
NO
Informācijas reģistrs Kontaktinformācija KĀ Kontaktinformācija
KUR
ContactInformation.Object LINK Directory.Counterparties"
;

Operators EXPRESS

Operators EXPRESS izmanto 1C vaicājumos divos gadījumos:

  • kad jāmaina primitīvā tipa īpašības;
  • kad jums ir jāpārvērš lauks ar saliktu datu tipu par lauku ar vienu tipu.

Primitīvie datu veidi ietver: numurs, virkne, datums, Būla vērtība. Dažiem no šiem datu veidiem ir papildu īpašības. Tips Numurs ir garums un precizitāte, veids Līnija - garums vai neierobežots.

Operators EXPRESSļauj mainīt nevis datu tipu, bet gan papildu raksturlielumus. Piemēram, viņš var pārvērst neierobežota garuma virkni par virkni ar ierobežotu garumu. Tas var būt noderīgi, ja nepieciešams grupēt vaicājuma rezultātus pēc šāda lauka. Jūs nevarat grupēt pēc laukiem ar neierobežotu garumu, tāpēc mēs to pārvēršam par virkni, kuras garums ir 200 rakstzīmes.

Pieprasīt. Teksts= "IZVĒLIES
DAUDZUMS (ATŠĶIRĪGA Preču un pakalpojumu saņemšana. Saite) AS Saite
NO
Preču un pakalpojumu saņemšanas dokuments KĀ Preču un pakalpojumu saņemšana
GROUP BY
EXPRESS(Preču un pakalpojumu saņemšana. Komentēt KĀ RINDA (200)"
;

Dažos gadījumos vaicājumus laukiem ar saliktu datu tipu platforma 1C var neapstrādāt optimāli. Tā rezultātā vaicājuma izpildes laiks ir ilgāks, tāpēc var būt noderīgi iepriekš pārveidot salikto tipu par vienu veidu.

Pieprasīt. Teksts= "IZVĒLIES
EXPRESS (Preču kustība, apgrozījums. Pasūtījums kā dokuments. Klienta pasūtījums). Datums AS Pasūtījuma datums,
Preču kustībaApgrozījums. Nomenklatūra
NO
ReģistrētiesUzrājumi.Preču kustība.Apgrozījums AS Preču kustībaApgrozījums
KUR
Preču kustībaApgrozījums.Pasūtījums LINK Dokuments.Klienta pasūtījums"
;

Operatori IZVĒLE IZPILDE IR NULL

Operators IZVĒLE līdzīgi operatoram JA iebūvētajā 1C valodā, taču tam ir nedaudz samazināta funkcionalitāte.

Pieņemsim, ka vēlamies saņemt kontaktinformāciju no ContactInformation informācijas reģistra un vienlaikus atsevišķā pieprasījuma laukā norādīt, vai tā pieder darījuma partnerim vai fiziskai personai.

Pieprasīt. Teksts= "IZVĒLIES
Kontaktinformācija. Ievads,
IZVĒLE
KAD VĒRTĪBAS VEIDS(Kontaktinformācija.Objekts) = VEIDS(Katalogs.Darījuma partneri)
TAD "
Darījuma partneris "
CITA IZVĒLE
KAD VĒRTĪBAS VEIDS(Kontaktinformācija.Objekts) = VEIDS(Katalogs.Privātpersonas)
TAD "
Individuāls"
Cits "Kāds cits" "
BEIGAS
BEIGAS KĀ ĪPAŠNIEKS
NO
Informācijas reģistrs Kontaktinformācija AS Kontaktinformācija"
;

Kā redzams no piemēra, dizainā IZVĒLE aiz vārda vienmēr ir nosacījums KAD; vērtība tiek lietota, ja nosacījums ir patiess aiz vārda TAD un vērtība, kas tiek lietota, ja nosacījums nav izpildīts, aiz vārda CITĀDI. Visi trīs dizaina elementi IZVĒLE ir obligātas. Izlaist elementu CITĀDI, tāpat kā izmantojot operatoru JA iebūvētajā 1C valodā tas nav iespējams. Arī no operatora IZVĒLE dizainam nav analoga ELSEIF, bet jūs varat ieguldīt vienu IZVĒLE citā, kā tas tika darīts mūsu piemērā.

Operators IR NULL izmanto dizainā IZVĒLE lai salīdzinātu vaicājuma lauku ar tipu NULL.

Pieprasīt. Teksts= "IZVĒLIES
IZVĒLE
KAD VĒRTĪBA IR NULL, TAD 0
CITA Nozīme
BEIGAS"
;

Turklāt operators IR NULL var izmantot vaicājuma nosacījumos, piemēram, teikumā KUR.

Vaicājumu valoda ir viens no 1C 8.3 pamatmehānismiem izstrādātājiem. Izmantojot vaicājumus, varat ātri izgūt visus datubāzē saglabātos datus. Tās sintakse ir ļoti līdzīga SQL, taču ir dažas atšķirības.

Galvenās 1C 8.3 (8.2) vaicājumu valodas priekšrocības salīdzinājumā ar SQL:

  • atsauces lauku atcelšana (viena vai vairāku punktu atsauce uz objekta detaļām);
  • strādāt ar rezultātiem ir ļoti ērti;
  • spēja izveidot virtuālās tabulas;
  • pieprasījumu var rakstīt gan angļu, gan krievu valodā;
  • iespēja bloķēt datus, lai izvairītos no strupceļa.

Vaicājumu valodas trūkumi 1C:

  • atšķirībā no SQL, 1C vaicājumi neļauj mainīt datus;
  • uzglabāto procedūru trūkums;
  • neiespējamība pārvērst virkni par skaitli.

Apskatīsim mūsu mini pamācību par 1C vaicājumu valodas pamata konstrukcijām.

Sakarā ar to, ka 1C vaicājumi ļauj saņemt tikai datus, jebkuram vaicājumam jāsākas ar vārdu “SELECT”. Pēc šīs komandas tiek norādīti lauki, no kuriem jāiegūst dati. Ja norādīsiet “*”, tiks atlasīti visi pieejamie lauki. Vieta, no kuras tiks atlasīti dati (dokumenti, reģistri, direktorijas utt.), ir norādīta aiz vārda “NO”.

Tālāk aplūkotajā piemērā visas nomenklatūras nosaukumi ir atlasīti no direktorija “Nomenklatūra”. Pēc vārda “HOW” ir norādīti tabulu un lauku aizstājvārdi (nosaukumi).

IZVĒLIES
Nomenklatūra Nosaukums AS Nomenklatūras nosaukums
NO
Directory.Nomenclature AS Nomenklatūra

Blakus komandai “SELECT” varat norādīt atslēgvārdus:

  • DAŽĀDI. Vaicājumā tiks atlasītas tikai rindas, kas atšķiras vismaz vienā laukā (bez dublikātiem).
  • PIRMĀ n, Kur n– rindu skaits no rezultāta sākuma, kas jāatlasa. Visbiežāk šī konstrukcija tiek izmantota kopā ar šķirošanu (ORDER BY). Piemēram, ja jums ir jāatlasa noteikts skaits dokumentu, kas ir jaunāki pēc datuma.
  • ATĻAUTA. Šis dizains ļauj atlasīt no datu bāzes tikai tos ierakstus, kas ir pieejami pašreizējam lietotājam. Pamati tā lietošanai atslēgvārds Mēģinot vaicāt ierakstus, kuriem viņam nav piekļuves, lietotājs saņems kļūdas ziņojumu.

Šos atslēgvārdus var izmantot kopā vai atsevišķi.

LAI MAINĪTIES

Šis priekšlikums bloķē datus, lai novērstu savstarpējus konfliktus. Bloķētie dati netiks nolasīti no cita savienojuma līdz darījuma beigām. Šajā klauzulā varat norādīt konkrētas tabulas, kuras ir jābloķē. Pretējā gadījumā visi tiks bloķēti. Dizains attiecas tikai uz automātisko bloķēšanas režīmu.

Visbiežāk, saņemot atlikumus, tiek izmantota klauzula “FOR CHANGE”. Galu galā, kad programmā vienlaikus strādā vairāki lietotāji, kamēr viens saņem atlikumus, cits var tos mainīt. Šajā gadījumā iegūtais atlikums vairs nebūs pareizs. Ja ar šo priekšlikumu bloķēsiet datus, tad līdz brīdim, kad pirmais darbinieks saņems pareizo bilanci un veiks ar to visas nepieciešamās manipulācijas, otrais darbinieks būs spiests gaidīt.

IZVĒLIES
Savstarpēji norēķini, darbinieks.
Savstarpējo norēķinu apjoms Bilance
NO
Uzkrājumu reģistrs Savstarpējie norēķini ar darbiniekiem
LAI MAINĪTIES

KUR

Dizains ir nepieciešams, lai augšupielādētajiem datiem uzliktu sava veida atlasi. Dažos gadījumos, kad tiek iegūti dati no reģistriem, saprātīgāk ir norādīt atlases nosacījumus virtuālo tabulu parametros. Izmantojot "WHERE", vispirms tiek izgūti visi ieraksti, un tikai pēc tam tiek piemērota atlase, kas būtiski palēnina vaicājumu.

Zemāk ir piemērs pieprasījumam iegūt kontaktpersonas konkrētam amatam. Atlases parametram ir šāds formāts: &ParameterName (parametra nosaukums ir patvaļīgs).

IZVĒLE (CASE)

Dizains ļauj norādīt nosacījumus tieši pieprasījuma pamattekstā.

Tālāk esošajā piemērā laukā “Papildu lauks” būs teksts atkarībā no tā, vai dokuments ir vai nav publicēts.

IZVĒLIES
Uzņemšanas T&U.Link,
IZVĒLE
KAD UzņemšanaT&U.Veikts
TAD "Dokuments ir pieņemts!"
CITS “Dokuments netika ievietots...”
BEIGAS kā papildu lauks
NO
Preču un pakalpojumu saņemšanas dokuments KĀ saņemšanas noteikumi un nosacījumi

PIEVIENOJIES

Savieno saiti divas tabulas, pamatojoties uz konkrētu attiecību nosacījumu.

KREISAIS/LABAIS SAVIENOJUMS

LEFT savienojuma būtība ir tāda, ka pirmā norādītā tabula tiek ņemta pilnībā un otrā tiek piesaistīta tai atbilstoši savienojuma nosacījumiem. Ja otrajā tabulā nav neviena ieraksta, kas atbilstu pirmajai tabulai, tad kā to vērtības tiek aizstātas ar NULL. Vienkārši sakot, galvenā tabula ir pirmā norādītā tabula, un otrās tabulas dati (ja tādi ir) jau ir aizstāti ar tās datiem.

Piemēram, preču preces nepieciešams iegūt no “Preču un pakalpojumu saņemšanas” dokumentiem un cenas no informācijas reģistra “Preču cenas”. Šādā gadījumā, ja cena nevienai pozīcijai nav atrasta, tā vietā aizstājiet NULL. Visas preces no dokumenta tiks atlasītas neatkarīgi no tā, vai tām ir cena vai nav.

IZVĒLIES
Kvīts un U. Nomenklatūra,
Cenas.Cena
NO
Preču un pakalpojumu saņemšanas dokuments
INTERNAL JOIN ReģistrētiesInformācija.CenasNomenklatūra.SliceLast AS Cenas
Programmatūras saņemšana&U.Nomenklatūra = Prices.Nomenclature

PAREIZI viss ir tieši otrādi.

PILNS SAVIENOJUMS

Šis savienojuma veids atšķiras no iepriekšējās tēmas, ka rezultātā tiks atgriezti visi gan pirmās, gan otrās tabulas ieraksti. Ja saskaņā ar dots nosacījums Ja pirmajā vai otrajā tabulā nav atrasts neviens ieraksts, tā vietā tiks atgriezta NULL.

Izmantojot pilnu pieslēgumu iepriekšējā piemērā, tiks atlasītas visas preces no dokumenta “Preču un pakalpojumu saņemšana” un visas jaunākās cenas no reģistra “Preču cenas”. Neatrasta ierakstu vērtības gan pirmajā, gan otrajā tabulā būs vienādas ar NULL.

IEKŠĒJĀ PIEVIENOŠANĀS

Atšķirība IEKŠĒJĀ PIEVIENOŠANĀS no FULL ir tas, ka, ja ieraksts nav atrasts vismaz vienā no tabulām, tad vaicājums to neparādīs vispār. Rezultātā no dokumenta “Preču un pakalpojumu saņemšana” tiks atlasītas tikai tās preču vienības, par kurām ir ieraksti informācijas reģistrā “Preču cenas”, ja iepriekšējā piemērā “PILNA” aizstājam ar “IEKŠĒJĀ”.

GROUP BY

Grupēšana 1C vaicājumos ļauj sakļaut tabulas rindas (grupēt laukus) atbilstoši noteiktai kopīga iezīme(grupēti lauki). Grupēšanas laukus var parādīt tikai, izmantojot apkopošanas funkcijas.

Sekojošā vaicājuma rezultāts būs produktu veidu saraksts ar to maksimālajām cenām.

IZVĒLIES
,
MAX(Price.Price) AS Cena
NO

GROUP BY
Cenas.Nomenklatūra.Nomenklatūras veids

REZULTĀTI

Atšķirībā no grupēšanas, izmantojot kopsummas, tiek parādīti visi ieraksti un tiem tiek pievienotas kopsummas rindas. Grupēšana parāda tikai vispārīgus ierakstus.

Rezultātus var apkopot visai tabulai (izmantojot atslēgvārdu “GENERAL”), vairākiem laukiem, laukiem ar hierarhisku struktūru (atslēgvārdi “HIERARHIJA”, “TIKAI HIERARHIJA”). Apkopojot rezultātus, nav nepieciešams izmantot apkopotās funkcijas.

Apskatīsim piemēru, kas ir līdzīgs iepriekšējam piemēram, izmantojot grupēšanu. Šajā gadījumā vaicājuma rezultāts atgriezīs ne tikai grupētus laukus, bet arī detalizētus ierakstus.

IZVĒLIES
Cenas.Nomenklatūra.Nomenklatūras tips AS Nomenklatūras veids,
Cenas.Cena AS Cena
NO
Nomenklatūras informācijas reģistrs. Jaunāko AS cenu momentuzņēmums
REZULTĀTI
MAKSIMĀLA (cena)
BY
TipsNomenklatūra

ŅEMOT

Šis operators ir līdzīgs operatoram WHERE, taču tiek izmantots tikai apkopotajām funkcijām. Pārējie lauki, izņemot tos, ko izmanto šis operators, ir jāgrupē. Operators WHERE nav piemērojams apkopotajām funkcijām.

Tālāk esošajā piemērā preces maksimālās cenas tiek atlasītas, ja tās pārsniedz 1000, grupējot pēc preču veida.

IZVĒLIES

MAX(Price.Price) AS Cena
NO
Nomenklatūras informācijas reģistrs. Jaunāko AS cenu momentuzņēmums
GROUP BY
Cenas.Nomenklatūra.Nomenklatūras veids
ŅEMOT
MAKSIMĀLĀ(Cenas.Cena) > 1000

PASŪTĪT PĒC

Operators ORDER BY sakārto vaicājuma rezultātu. Lai nodrošinātu, ka ieraksti tiek parādīti konsekventā secībā, tiek izmantots AUTO ORDER. Primitīvie veidi tiek sakārtoti pēc normāli noteikumi. Atsauces veidi tiek kārtoti pēc GUID.

Piemērs, kā iegūt darbinieku sarakstu, kas sakārtots pēc vārda:

IZVĒLIES
Darbinieki.Name AS Nosaukums
NO
Direktorija.Darbinieki KĀ Darbinieki
PASŪTĪT PĒC
Vārds
AUTO PASŪTĪJUMS

Citas 1C vaicājumu valodas konstrukcijas

  • KOMBINĒT– divu vaicājumu rezultāti vienā.
  • VISU APVIENOT– līdzīgi kā COMBINE, bet bez identisku rindu grupēšanas.
  • TUKŠS GALDS– dažreiz izmanto savienojuma vaicājumos, lai norādītu tukšu ligzdotu tabulu.
  • VIETA– izveido pagaidu tabulu, lai optimizētu sarežģītus 1C vaicājumus. Šādus pieprasījumus sauc par pakešu pieprasījumiem.

Vaicājumu valodas funkcijas

  • SUBSTRING saīsina virkni no noteiktas pozīcijas līdz noteiktam rakstzīmju skaitam.
  • GADS...OTRAISļauj iegūt atlasīto skaitliskā veida vērtību. Ievades parametrs ir datums.
  • PERIODA SĀKUMS un PERIODA BEIGAS izmanto, strādājot ar datumiem. Kā papildu parametrs norādīts perioda veids (DIENA, MĒNESIS, GADS utt.).
  • ADDKDATEļauj pievienot vai atņemt noteiktu laiku no datuma noteikta veida(OTRĀ, MINŪTE, DIENA utt.).
  • ATŠĶIRĪBAS DATUMS nosaka atšķirību starp diviem datumiem, norādot izvades vērtības veidu (DIENA, GADS, MĒNESIS utt.).
  • Funkcija aizstāj trūkstošo vērtību ar norādīto izteiksmi.
  • PĀRSTĀVNIECĪBA un REPREZENTĀCIJASSAITES iegūstiet norādītā lauka virknes attēlojumu. Attiecīgi attiecas uz jebkurām vērtībām un tikai atsauces vērtībām.
  • TIPS, TIPA VĒRTĪBAS tiek izmantoti, lai noteiktu ievades parametra veidu.
  • SAITE ir loģisks salīdzināšanas operators atribūta vērtības tipam.
  • EXPRESS izmanto, lai pārvērstu vērtību vajadzīgajā veidā.
  • DATETIME iegūst vērtību tipa "Datums" no skaitliskās vērtības(Gads, mēnesis, diena, stunda, minūte, sekunde).
  • NOZĪME 1C pieprasījumā to izmanto, lai norādītu iepriekš noteiktas vērtības - direktorijus, uzskaitījumus, raksturlielumu veidu plānus. Lietošanas piemērs: " Kur juridiska persona = vērtība (uzskaitījums. Juridiska persona. Persona)«.

Vaicājumu veidotājs

Lai izveidotu vaicājumus ar 1C, ir ļoti ērts iebūvēts mehānisms - vaicājumu noformētājs. Tajā ir šādas galvenās cilnes:

  • "Tabulas un lauki" - satur laukus, kas jāatlasa, un to avotus.
  • "Savienojumi" - apraksta struktūras CONNECTION nosacījumus.
  • “Grupēšana” — satur grupēšanas struktūru aprakstu un uz tām balstītus laukus.
  • “Nosacījumi” - atbild par datu atlasi pieprasījumā.
  • “Papildu” — papildu vaicājuma parametri, piemēram, atslēgvārdi komandai “SELECT” utt.
  • “Pievienojumi/Aliasi” - ir norādītas tabulu savienošanas iespējas un norādīti aizstājvārdi (konstrukcija “HOW”).
  • “Pasūtījums” ir atbildīgs par vaicājumu rezultātu kārtošanu.
  • “Kopā” — līdzīgi kā cilnē “Grupēšana”, bet izmanto konstrukcijai “TOTALS”.

Pašu pieprasījuma tekstu var apskatīt, noklikšķinot uz pogas “Pieprasīt” apakšējā kreisajā stūrī. Šajā formā to var labot manuāli vai kopēt.


Pieprasījuma konsole

Lai ātri skatītu vaicājuma rezultātu uzņēmuma režīmā vai atkļūdotu sarežģītus vaicājumus, izmantojiet . Tas satur pieprasījuma tekstu, nosaka parametrus un parāda rezultātu.

Varat lejupielādēt vaicājuma konsoli ITS diskā vai izmantojot .

Šajā rakstā mēs vēlamies ar jums visu apspriest 1C vaicājumu valodas funkcijas, un arī vaicājumu valodas konstrukcijas. Kāda ir atšķirība starp funkciju un dizainu? Funkcija tiek izsaukta ar iekavām un iespējamajiem parametriem tajās, un konstrukcija tiek rakstīta bez iekavām. Neapšaubāmi visas 1C vaicājumu valodas struktūras un funkcijas padarīt datu iegūšanas procesu elastīgu un daudzfunkcionālu. Šīs funkcijas un konstrukcijas attiecas uz pieprasījuma laukiem, un dažas attiecas arī uz nosacījumiem.

1C vaicājumu valodas funkcijas

Jo skaidrs apraksts 1c vaicājumu valodas funkcijas ir daudz retāk nekā struktūru apraksti, mēs nolēmām sākt aplūkot funkcijas. Tagad apskatīsim katru atsevišķi, aprakstot tā mērķi, sintaksi un lietošanas piemēru, tātad:

1. Funkcija DATETIME - šī funkcija izveido konstantu lauku ar tipu "Datums".

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

Lietošanas piemērs:

2. Funkcija DATE DIFFERENCE- atgriež starpību starp diviem datumiem vienā no dimensijām (gads, mēnesis, diena, stunda, minūte, sekunde). Mērījums tiek nodots kā parametrs.

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

Lietošanas piemērs:

Query.Text = "SELECT | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | AS Dienu skaits";

3. Funkcija VALUE- iestata nemainīgu lauku ar iepriekš definētu ierakstu no datu bāzes, jūs varat arī iegūt jebkura veida tukšu saiti.

Sintakse: VALUE(<Имя>)

Lietošanas piemērs:

Request.Text = "SELECT //iepriekš definēts elements | VĒRTĪBA(Directory.Currencies.Dollar) AS dolārs, //tukša saite | VĒRTĪBA(Dokuments.Preču un pakalpojumu saņemšana.EmptyLink) AS kvīts, //pārskaitījuma vērtība | VĒRTĪBA(Pārskaitījums Juridiska fiziska persona) AS Privātpersona, //iepriekš definēts konts VĒRTĪBA(Kontu plāns. Pašuzskaite.Materiāli) AS Konts_10" ;

4. SELECT funkcija- mūsu priekšā ir IF konstrukcijas analogs, kas tiek izmantots kodā, tikai šis tiek izmantots 1C vaicājumos.

Sintakse: IZVĒLE, KAD<Выражение>TAD<Выражение>CITĀDI<Выражение>BEIGAS

Lietošanas piemērs:

Request.Text = //ja summa ir lielāka par 7500, tad ir jābūt atlaidei 300 rubļu apmērā, //tātad, ja nosacījums tiek aktivizēts, funkcija //atgriež Summa - 300 //pretējā gadījumā pieprasījums vienkārši atgriezīs summu "ATLASĪT | IZVĒLĒTIES | KAD TKRkvītis.Summa > 7500 | TAD TKRkvītis.Summa - 300 | CITI TKRkvītis.Summa | BEIGAS KĀ SummaAratlaidi | NO |

5. Funkcija EXPRESS- ļauj izteikt konstantu lauku ar noteiktu veidu.

Sintakse: EXPRESS (lauka nosaukums kā tipa nosaukums)

Lietošanas piemērs:

Query.Text = "ATLASĪT DAŽĀDU | Pārdošana.Reģistra numurs, | IZVĒLĒTIES | WHEN Pārdošana. Reģistratūras saites dokuments.Izdevumi | THEN EXPRESS(Pārdošana.Reģistrs kā dokuments.Izdevumi) | ELSE SELECT | WHEN Pārdošana.Reģistras saites dokuments.Ieviešana | THEN EXPRESS(Sales.Registrar AS Document.Implementation) |. END AS Uzkrāšanas reģistrs Pirkumi";

Vēl viena iespēja ir laukos izmantot funkciju EXPRESS jaukti veidi kur šie ir atrodami? Vienkāršākais piemērs ir jebkura reģistra “reģistrators”. Tātad, kāpēc mums varētu būt nepieciešams kvalificēt veidu reģistratorā? Apskatīsim situāciju, kad no reģistratūras atlasām lauku "Numurs", no kuras tabulas tiks izvēlēts numurs? Pareizā atbilde visiem! Tāpēc, lai mūsu vaicājums darbotos ātri, mums ir jānorāda precīzs veids, izmantojot funkciju EXPRESS

Lietošanas piemērs:

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. ISNULL funkcija(alternatīvā pareizrakstība ISNULL) - ja laukam ir NULL tips, tas tiek aizstāts ar funkcijas otro parametru.

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

Lietošanas piemērs:

Ņemiet vērā arī to, ka ir ieteicams VIENMĒR aizstāt NULL tipu ar kādu vērtību, jo salīdzinājums ar tipu NULL vienmēr atgriež FALSE, pat ja jūs salīdzināt NULL ar NULL. Visbiežāk NULL vērtības veidojas tabulu savienošanas rezultātā (visu veidu savienojumi, izņemot iekšējos).

Query.Text = //Atlasīt visu preci un tās atlikumus //ja kādā vienībā nav bilances, tad būs lauks //NULL, kas tiks aizstāts ar vērtību 0 "SELECT | No. Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) KĀ Atlikuši |. Katalogs.Nomenklatūra AS Nr. |.KREISĀS DARBĪBAS |

7. REPREZENTĀCIJAS funkcija- ļauj iegūt pieprasījuma lauka attēlojumu.

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

Lietošanas piemērs:

Query.Text = "SELECT | REPREZENTĀCIJA(FreeRemainingRemains.Nomenclature) AS Nomenklatūra, | REPREZENTĀCIJA(FreeRemaining.Warehouse) AS Noliktava, | FreeRemainingRemaining.InStockRemaining |FROM |Uzkrāšanas reģistrs.FreeRemainingAS FreeRemaining"

Konstrukcijas 1C vaicājumu valodā

Mēs ar jums apspriedām iepriekš 1C vaicājumu valodas funkcijas, tagad ir laiks apsvērt konstrukcijas 1C vaicājumu valodā, tie ir ne mazāk svarīgi un noderīgi, sāksim.

1. Būvniecība LINK- ir loģisks operators atsauces veida pārbaudei. Visbiežāk sastopams, pārbaudot kompleksa tipa lauku ar noteiktu tipu. Sintakse: SAITE<Имя таблицы>

Lietošanas piemērs:

Request.Text = //ja vērtības veids ir reģistrētājs dokuments Ieejas zāle, //tad pieprasījumā tiks atgriezta "Preču saņemšana", pretējā gadījumā "Preču pārdošana" "SELECT | SELECT | WHEN Atlikumi. Reģistratūras saites dokuments. Preču un pakalpojumu saņemšana | TAD ""Saņemšana"" | CITI ""Patērēšana" " | END AS Kustības veids | NO | Uzkrāšanas reģistrs. Atlikušās preces noliktavās AS paliek" ;

2. Dizains STARP- šis operators pārbauda, ​​vai vērtība ir norādītajā diapazonā.

Sintakse: STARP<Выражение>UN<Выражение>

Lietošanas piemērs:

Request.Text = //iegūstiet visu nomenklatūru, kuras kods ir diapazonā no 1 līdz 100 "SELECT | Nomenclature.Link | FROM | Directory.Nomenclature AS Nomenclature | WHERE | Nomenclature.Code BETWEEN 1 UN 100" ;

3. Konstrukcijas B un B HIERARHIJA- pārbaudiet, vai vērtība ir pārsūtītajā sarakstā (masīvus, vērtību tabulas utt. var pārsūtīt kā sarakstu). Operators IN HIERARHIJA ļauj skatīt hierarhiju (kontu plāna izmantošanas piemērs).

Sintakse: IN(<СписокЗначений>), HIERARHJĀ(<СписокЗначений>)

Lietošanas piemērs:

Pieprasījums.Teksts = //atlasīt visus konta apakškontus "SELECT | Pašpietiekams. Saistīt AS kontu | NO | Kontu plāns. Pašpietiekams AS Pašpietiekams | KUR | Pašpietiekams. Saite HIERARHIJAS VĒRTĪBĀ (Chart of Konti. Pašnodrošinātas preces.

4. Dizains LĪDZĪGS- Šī funkcija ļauj mums salīdzināt virkni ar virknes modeli.

Sintakse: PATĪK "<ТекстШаблона>"

Rindu raksta opcijas:

% — virkne, kas satur jebkādu skaitu patvaļīgu rakstzīmju.

Viens patvaļīgs raksturs.

[...] — jebkura atsevišķa rakstzīme vai rakstzīmju secība, kas norādīta kvadrātiekavās. Uzskaitījums var norādīt diapazonus, piemēram, a–z, kas nozīmē diapazonā iekļautu patvaļīgu rakstzīmi, tostarp diapazona beigas.

[^...] — jebkura atsevišķa rakstzīme vai rakstzīmju secība, kas norādīta kvadrātiekavās, izņemot tās, kas norādītas aiz nolieguma zīmes.

Lietošanas piemērs:

Query.Text = //atrodiet visu nomenklatūru, kas satur sakni TABUR un sākas //ar mazu burtu vai ar lielie burti t "SELECT | Nomenklatūra. Saite | FROM | Katalogs. Nomenklatūra AS Nomenklatūra | WHERE | Produkti. Nosaukums LIKE "" [Tt]abur%""" ;

5. Dizains ATĻAUTS- šis operators ļauj no datu bāzes atlasīt tikai tos ierakstus, kuriem zvanītājam ir lasīšanas atļauja. Šīs tiesības ir konfigurētas ieraksta līmenī (RLS).

Sintakse: ALOWED ir rakstīts aiz atslēgvārda SELECT

Lietošanas piemērs:

Request.Text = "ATLASĪT ATĻAUTO | Darījuma partneri. Saite | NO | Katalogs. Darījuma partneri KĀ darījuma partneri";

6. Dizains DAŽĀDI- ļauj atlasīt ierakstus, kuros nav ierakstu dublikātu.

Sintakse: DAŽĀDI ir rakstīts aiz atslēgvārda SELECT

Lietošanas piemērs:

Request.Text = //atlasa ierakstus, uz kuriem lasītājam ir tiesības "IZVĒLĒTIES DAŽĀDU | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties" ;

Tāpat DAŽĀDU konstrukciju var izmantot ar ATĻAUTO operatoru un citiem operatoriem.

Lietošanas piemērs:

Request.Text = //atlasa dažādus ierakstus, uz kuriem lasītājam ir tiesības "ATLASĪT ATĻAUTOS DAŽĀDU | Counterpartities.Name |FROM | Directory. Counterparties AS Counterpartities";

7. Dizains PIRMAIS- no vaicājuma rezultāta izvēlas parametrā norādīto ierakstu skaitu.

Sintakse: FIRST<число>

Lietošanas piemērs:

Request.Text = //atlasiet pirmos 4 CCD numurus no direktorija "SELECT FIRST 4 | CCD Numbers. Link | FROM | Directory. CCD Numbers AS CCD Numbers";

8. Dizains PĀRMAIŅĀM- ļauj bloķēt galdu, darbojas tikai transakcijās (attiecas tikai uz automātiskajām slēdzenēm).

Sintakse: LAI MAINĪTIES<НаименованиеТаблицы>

Lietošanas piemērs:

Query.Text = "SELECT | Bezmaksas atlikumi, atlikumi. Nomenklatūra, | Bezmaksas atlikumi. Noliktava, | Bezmaksas atlikumi. Noliktavā Atlikušie | NO | Uzkrājumu reģistrs. Bezmaksas atlikumi. Atlikumi KĀ bezmaksas atlikumi Atlikumi | MAINĪJUMU reģistrs | Brīvās atliekas.

9. Dizains PASŪTĪT PĒC- sakārto datus pēc noteikta lauka. Ja lauks ir saite, tad, uzstādot karogu AUTO PASŪTĪJUMS Kārtošana notiks pēc saites attēlojuma, ja karodziņš ir izslēgts, tad saites tiek kārtotas pēc saites adreses vecumposma atmiņā.

Sintakse: PASŪTĪT PĒC<НаименованиеПоля>AUTO PASŪTĪJUMS

Lietošanas piemērs:

Query.Text = "SELECT | Free Remainings Remainings. Nomenclature AS Nomenclature, | Free Remainings Remaining. Warehouse AS Noliktava, | Bezmaksas Atlikums. Noliktavā Atlikušie | No | Reģistrēt Uzkrājumi. Bezmaksas Atlikumi. Atlikušie AS Free Remaining Remainings BY | |. Nomenklatūra |. AUTO PASŪTĪJUMU LASĪŠANA";

10. Dizains GROUP BY- izmanto, lai grupētu vaicājuma virknes pēc noteiktiem laukiem. Ciparu lauki ir jāizmanto ar jebkuru apkopošanas funkciju.

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

Lietošanas piemērs:

Query.Text = "SELECT | ProductsInWarehouses.Nomenclature AS Nomenclature, | ProductsInWarehouses.Warehouse, | SUM(GoodsInWarehouses.Stock) AS KRĀJUMI | NO | ReģistrētiesUzkrājumi.ProduktiNoliktavās AS |ProduktiNoliktavās |Noliktavā | .Noliktava";

11. Dizains HAVING- ļauj datu atlases nosacījumam lietot apkopošanas funkciju, līdzīgi kā WHERE konstrukcijai.

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

Lietošanas piemērs:

Query.Text = //atlasa grupētus ierakstus, kur InStock lauks ir lielāks par 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS INSTOCK |FROM | RegisterItemstockumlationsa. GROUP BY |. ProduktiNoliktavās.Noliktavās |. PIEEJAMĀS |.

12. Būvniecības INDEX BY- izmanto vaicājuma lauka indeksēšanai. Vaicājuma ar indeksēšanu pabeigšana prasa ilgāku laiku, taču paātrina meklēšanu indeksētos laukos. Var izmantot tikai virtuālajās tabulās.

Sintakse: INDEX BY<Поле1, ... , ПолеN>

Lietošanas piemērs:

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. Dizains KUR- ļauj uzlikt nosacījumu visiem atlases laukiem. Rezultātā būs tikai tie ieraksti, kas atbilst nosacījumam.

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

Lietošanas piemērs:

Query.Text = //ir atlasīti visi ieraksti ar CompensationRemaining<>0 un //AmountFor CalcCompRemaining > 100 "SELECT | CompensationRPORemains.Counterparty, |CompensationRPORemains.Child, | CompensationRPORemains.CompensationRemains | AtlīdzībaRPPaliek |KUR |AtlīdzībaRPORatlikums.Atlīdzība<>0 | Un CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

14. Dizaina REZULTĀTI... VISPĀRĪGI- izmanto kopsummas aprēķināšanai. Izmantojot kopsummas katram laukam pēc konstrukcijas KOPĀ, dati tiek grupēti. Pēc izvēles ir GENERAL konstrukcija, kas nodrošina arī papildu grupēšanu. Tālāk redzēsit pieprasījuma rezultāta piemēru.

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

Lietošanas piemērs:

Request.Text = "SELECT | Aprēķini. Darījuma partnera līgums. Līguma veids AS Līguma veids, | Aprēķini. Darījuma partnera līgums AS līgums, | Aprēķini. Darījuma partneris, | Aprēķini. Savstarpējo norēķinu bilances summa AS bilance | NO | Uzkrājumu reģistrs. Savstarpēja Norēķini AR Darījuma partneriem |. KOPĀ |. VISPĀRĪGI, |Līguma veids";

Attēlā ir norādīti grupējumi, kas tika izveidoti pieprasījuma izpildes laikā, augšējais attiecas uz sadaļu VISPĀRĪGI, bet otrais uz lauku Darījuma partnera līgumaLīguma veids.

Uzmanību! Šī ir nodarbības ievada versija, kuras materiāli var būt nepilnīgi.

Piesakieties vietnē kā students

Piesakieties kā students, lai piekļūtu skolas materiāliem

Vaicājumu valoda 1C 8.3 iesācējiem programmētājiem: funkcijas un operatori darbam ar tipiem (VALUE TYPE, TYPE, REFERENCE, ISNULL, EXPRESS)

Atcerēsimies, ka katram direktorija, dokumenta vai jebkura cita lietojumprogrammas objekta atribūtam (īpašumam, laukam) ir savs veids. Un mēs varam apskatīt šo tipu konfiguratorā:

Vaicājumu valodā ir vesela funkciju un operatoru klase darbam ar detaļu veidiem. Apskatīsim tos.

funkcija VALUE TYPE

Šī funkcija ņem vienu parametru (vērtību) un atgriež tā veidu. Par rekvizītus, kas aprakstīti attēlā (iepriekš) Nogaršot direktoriju Pārtika tiks atgriezti:

Tagad apskatīsim rekvizītus Atšķirīga iezīme direktorijā Pilsētas:

Jūs redzat, ka šis rekvizīts var būt viens no vairākiem veidiem: Līnija, Katalogs.Garšas, Katalogs.Krāsas. Šāda veida detaļas sauc par KOMPOZĪTU.

Ja mēģināsim aizpildīt šādas detaļas vērtību režīmā 1C:Enterprise, sistēma jautās, kāda veida vērtība tiks ievadīta:

Un tikai pēc mūsu atlases tas ļaus mums ievadīt izvēlētā veida vērtību.

Tādējādi tāda paša veida direktoriju elementi ( Katalogs.Pilsētas) varēs saglabāt tajā pašā atribūtā ( Atšķirīga iezīme) vērtības dažādi veidi(Auklas, krāsas vai garšas).

Par to varat pārliecināties, noklikšķinot uz direktorija elementiem Pilsētas 1C: Enterprise režīmā. Jūs lasāt nodarbības izmēģinājuma versiju, ir pieejamas pilnas nodarbības.

Lūk, jēga atšķirīga iezīme ir direktorija elements Garšas:

Lūk, līnija:

Un šeit parasti ir atsauces grāmatas elements Krāsas:

Šīs ir iespējas, ko mums paver salikts datu tips!

Interesanti, kā funkcija darbosies TIPA VĒRTĪBAS uz rekvizītiem Atšķirīgs elements, kam ir salikts datu tips:

Tas jau ir ļoti interesanti. Apskatīsim katru rindu atsevišķi.

Atšķirīgās pazīmes vērtības veids elementam Krievija ir vienāds ar NULL. Šī ir pirmā reize, kad mēs saskaramies ar šādu veidu. Šāda veida vērtības tiek izmantotas tikai, lai noteiktu trūkstošo vērtību, strādājot ar datu bāzi.

Tā ir taisnība, jo Krievijas elements ir grupa, nevis parasts direktorija elements Pilsētas, tāpēc tai nav lauka Atšķirīga iezīme. Un trūkstošās vērtības veids, kā mēs lasījām iepriekš, vienmēr ir vienāds ar NULL.

Atšķirīgās pazīmes vērtības veids Permai ir vienāds ar Garšas. Tā ir taisnība, jo Permas pilsētas datubāzē ievadītās atšķirības pazīmes vērtība ir saite uz direktorija elementu Garšas.

Krasnojarskai atribūta veids ir vienāds ar Krāsas, jo datu bāzē atlasītā vērtība ir saite uz direktorija elementu Krāsas.

Voroņežai atribūta veids ir vienāds ar Līnija, jo datu bāzē ievadītā vērtība ir parasta virkne.

Indija atkal ir grupa, tāpēc nav nekādas jēgas. Un trūkstošās vērtības veids, kā mēs atceramies, ir vienāds ar NULL.

Lūk, lieta. Ja dodaties uz direktorija elementu Pilsētas ar vārdu Sanpaulu, tad jūs redzēsiet, ka lauks Atšķirīga iezīme absolūti nav aizpildīts vispār. Tas ir tukšs. A visiem tukšajiem saliktā tipa laukiem ir īpaša nozīme NEDEFINĒTS.

AR NEDEFINĒTS arī mēs sastopamies pirmo reizi. Nozīme NEDEFINĒTS izmanto, ja ir nepieciešams izmantot tukšu vērtību, kas nepieder nevienam citam veidam. Tieši tāda ir mūsu situācija. Un vērtības veids NEDEFINĒTS, kā jūs droši vien jau uzminējāt, ir vienāds ar NULL.

Funkcija TYPE

Tam nepieciešams tikai viens parametrs - primitīvā tipa nosaukums ( LĪNIJA, NUMBER, DATE, BULA), vai tās tabulas nosaukums, kuras saites veidu vēlaties iegūt.

Šīs konstrukcijas rezultāts būs tipa Type vērtība norādītajam tipam.

Izklausās neskaidri, vai ne?

Apskatīsim šī dizaina pielietojumu un viss uzreiz nostāsies savās vietās.

Pieņemsim, ka mums ir jāatlasa visi direktoriju ieraksti Pilsētas, kuriem ir salikti rekvizīti Atšķirīga iezīme ir tipa vērtība LĪNIJA:

Tagad atlasīsim visus ierakstus, kuriem ir atribūtu vērtības Atšķirīga iezīme ir saites uz direktorija elementiem Krāsas(tabula Katalogs.Krāsas):

Atkāpties

Kā jūs atceraties, daži direktorija elementi Pilsētas nav rekvizītu Atšķirīga iezīme. Funkcija TIPA VĒRTĪBASšādiem elementiem tā ražo NULL.

Kā vaicājumā var atlasīt šādus elementus? Šim nolūkam ir paredzēts īpašs loģiskais operators IR NULL(nejaukt ar funkciju Funkcija, ko mēs apskatīsim tālāk). Jūs lasāt nodarbības izmēģinājuma versiju, ir pieejamas pilnas nodarbības.

Šeit ir tā izmantošanas piemērs:

Lieliski. Bet vai pamanījāt, ka nav Sanpaulu elementa, butaforijas vērtības veids Atšķirīga iezīme kuru viņš arī izdeva NULL. Kāpēc tas notika?

Bet lieta tāda, ka situācija ir grupām (Krievija, Indija, Brazīlija), kurām aizpildot detaļas Atšķirīga iezīme principā neiespējami, jo viņiem tā vispār nav, atšķiras no situācijas Sanpaulu elementam, kuram ir iespējama rekvizītu aizpildīšana, bet tas vienkārši nav aizpildīts un ir līdzvērtīgs, kā mēs atceramies, īpaša vērtība NEDEFINĒTS.

Lai atlasītu visus ierakstus, kuriem ir nepieciešamais Atšķirīga iezīme klāt, bet nav aizpildīts, jāizmanto cita konstrukcija:

Taču salīdzinājums ar UNDEFINED, lai noteiktu tukšus (neaizpildītus) atribūtus, darbosies tikai saliktajiem veidiem.

Starp citu, loģiskajam operatoram IS NULL ir noliegšanas forma, kas izskatās šādi:

Loģiskais operators LINK

Piemēram, atlasīsim no direktorija Pilsētas tikai tie ieraksti, kuriem ir saliktā atribūta vērtība Atšķirīga iezīme ir saite uz direktorija elementu Garšas:

Kā jūs atceraties, mēs varētu atrisināt to pašu problēmu, izmantojot TIPA VĒRTĪBAS Un VEIDS:

Funkcija ISNULL

Funkcija ir paredzēta, lai aizstātu vērtību NULL citā nozīmē.

Mēs atceramies to nozīmi NULL atgriezta, ja pieprasītais atribūts (lauks, rekvizīts) neeksistē.

Piemēram, rekvizīti Atšķirīga iezīme direktoriju grupām Pilsētas:

// Rezultāts: labi Funkcija palīdzēs mums izvadīt citu vērtību, ja šī vērtība ir vienāda ar NULL. Jūs lasāt nodarbības izmēģinājuma versiju, ir pieejamas pilnas nodarbības. Lai šajā gadījumā būtu rinda “Tāda rekvizīta nav!”:

Izrādās, ka, ja pirmais funkcijas parametrs Funkcija nav vienāds NULL, tad viņš atgriežas. Ja tas ir NULL, tiek atgriezts otrais parametrs.

Funkcija EXPRESS

Šī funkcija ir paredzēta tikai laukiem, kuriem ir salikts tips. Lielisks šādas jomas piemērs ir īpašums Atšķirīga iezīme direktoriju elementiem Pilsētas.

Kā mēs atceramies, saliktie lauki var būt viens no vairākiem konfiguratorā norādītajiem veidiem.

Laukam Atšķirīga iezīme tādi derīgi tipi ir LĪNIJA, Katalogs.Krāsas Un Katalogs.Garšas.

Dažreiz ir nepieciešams nodot saliktā lauka vērtības noteiktam veidam.

Uzskaitīsim visas lauka vērtības Atšķirīga iezīme rakstīt Atsauce.Krāsas:

Rezultātā visas elementu vērtības, kas bija tipa Katalogs.Krāsas, palika aizpildītas un tika pārveidotas uz norādīto veidu. Visas citu veidu vērtības ( LĪNIJA, Katalogs.Garšas) tagad ir vienādi NULL. Šī ir tipa liešanas īpatnība, izmantojot funkciju EXPRESS.

Tipu var nodot primitīvam tipam ( BULA, NUMBER, LĪNIJA, DATE) vai atsauces veidam. Jūs lasāt nodarbības izmēģinājuma versiju, ir pieejamas pilnas nodarbības. Bet šī saliktā lauka tipu sarakstā ir jāiekļauj tips, uz kuru tiek veidots cast, pretējā gadījumā sistēma iemetīs kļūdu.

Izpildi testu

Sāciet testu

1. Izvēlieties vispareizāko apgalvojumu

2. Tiek izsauktas detaļas, kurām var būt viena no vairāku veidu vērtības

3. Lai noteiktu atribūta vērtības veidu, izmantojiet funkciju

4. Tukšas saliktā tipa detaļas ir svarīgas