Udtryk som en type i en 1C anmodning. S: Virksomheden elsker "til venstre"

I denne artikel vil vi analysere mulighederne for typekonvertering i 1C-forespørgselssproget, som leveres af funktionen "Express".
Lad os se på flere muligheder for at bruge denne funktion.
Og den første mulighed er at afrunde tal.

For at gøre dette skal du bruge Express-funktionen i følgende format:

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

Hvor:
Antal— feltet, der skal afrundes
LængdeNumbermaksimal længde tal
Nøjagtighed— talafrundingsnøjagtighed

Parametrene både længde og præcision skal være positive heltal.
Se, hvordan denne funktion fungerer på billedet nedenfor.

Den anden use case er strengstøbning. Meget ofte bruger konfigurationer strenge af ubegrænset længde, hvilket pålægger nogle begrænsninger. For eksempel kan vi ikke sammenligne strenge med ubegrænset længde.
I forespørgslen nedenfor er feltet FullName af typen streng af ubegrænset længde, og denne forespørgsel vil ikke fungere.

For at det skal fungere, er det nødvendigt at konvertere et felt med ubegrænset længde til en streng med en bestemt længde dette gøres ved hjælp af Express-funktionen i følgende format:

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

Hvor
Linjelængde– den maksimale længde, som strengen reduceres til.
Lad os omarbejde forespørgslen: i betingelsen konverterer vi en ubegrænset streng til en streng med en vis længde. Så er der ingen fejl.

Lad os overveje den sidste og, vil jeg sige, den vigtigste mulighed for dens anvendelse: når du arbejder med felter sammensat type.
Nedenfor er to forespørgsler, der bruger sammensatte felter. Den første er forkert og den anden er korrekt.

Dem. Når du har brug for at få et felt af en eller anden kompleks type, skal du altid få værdien af ​​dette felt først efter at have castet typen ved hjælp af Express-funktionen. I dette tilfælde vil dokumenterne og opslagsbøgerne have følgende format:

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

Hvor
Tabelnavn— objektnavn i .

Brug altid ekspresfunktionen, når du arbejder med sammensatte typer, det optimerer forespørgslen i høj grad.

Hvis du stadig "svømmer" i konstruktionerne af forespørgselssproget, og selv de enkleste forespørgsler forårsager vanskeligheder for dig, så anbefaler jeg dig mit kursus "Forespørgsler i 1C fra begynder til professionel." Hvor disse og mange andre spørgsmål diskuteres mere detaljeret.

Hvad er specielt ved dette kursus:
Kurset er designet til dem, der ikke er fortrolige med forespørgselssproget i 1C;
Pædagogisk materiale velstruktureret og let at lære;
Flere dusin lektioner;
Nyttige praktiske eksempler;
Alle lektioner præsenteres i et klart og enkelt sprog

Til mine læsere, 25% rabatkupon: hrW0rl9Nnx

Jeg forsøger at frigive forskellige interessante gratis artikler og videotutorials så ofte som muligt. Derfor vil jeg blive meget glad, hvis du støtter mit projekt ved at overføre ethvert beløb:

Du kan overføre ethvert beløb direkte:
Yandex.Money - 410012882996301
Webpenge - R955262494655

Deltag i mine grupper.

Lad os se på resten nu.

Funktioner til at arbejde med strenge i 1C-forespørgsler

Der er få funktioner og operatorer til at arbejde med strengdata i 1C-forespørgsler.

For det første kan der tilføjes strenge i forespørgsler. For at gøre dette skal du bruge "+" operatoren:

Anmodning. Tekst = "VÆLG
" "Linje: " " + Kilde.Navn
;

For det andet kan du vælge en del af linjen. For at gøre dette skal du bruge funktionen SUBSTRUKTION. Funktionen ligner det indbyggede 1C-sprog. Den har tre parametre:

  1. Kildestreng.
  2. Nummeret på det tegn, som den valgte linje skal begynde med.
  3. Antal tegn.

Anmodning. Tekst= "VÆLGE
SUBSTRING("
"Linje:" ", 4, 3) Som et resultat";

// Resultat: ok Fungere

UNULL NULL er en speciel datatype på 1C:Enterprise platformen. Han er den eneste mulig betydning

denne type. NULL kan forekomme i forespørgsler i flere tilfælde: ved tilslutning af forespørgselskilder, hvis en tilsvarende værdi ikke blev fundet i en af ​​tabellerne; når du får adgang til detaljerne om et ikke-eksisterende objekt; hvis NULL var angivet i listen over forespørgselsfelter (for eksempel ved kombination af udvalgsresultater fra flere tabeller) osv. Fordi NULL hverken er null eller den tomme streng eller endda en værdi Udefineret, det er ofte nyttigt at erstatte det med en mere nyttig datatype. Det er det, funktionen er designet til.

UNULL.

  1. Den har to parametre:
  2. Værdien kontrolleres.

Anmodning. Tekst= "VÆLGE
Værdien til at erstatte den første parameter med, hvis den viser sig at være NULL.
; ISNULL(Source.Remainder, 0) AS Remainder"
// Hvis resultatet af anmodningen er feltet rest = NULL,

// så vil det blive erstattet af 0, og du kan udføre matematiske operationer med det Funktioner PRÆSTATION Og

INTRODUKTIONSLINKS Disse funktioner er designet til at opnå strengrepræsentationer forskellige betydninger Funktioner. Det vil sige, at de konverterer referencer, tal, booleaner osv. til almindelig tekst. Forskellen mellem dem er, at funktionen Og konverterer alle datatyper til tekst (streng) og funktionen

Anmodning. Tekst= "VÆLGE
- kun links, og returnerer de resterende værdier, som de er, ikke konverteret.
REPRESENTATION(TRUE) SOM Boolean,
REPRÆSENTATION (Source.Link) SOM Link,
REPRESENTATION(DATETIME(2016,10,07)) AS Date"
;
// Boolean = "Ja", Tal = "4", Link = "Forbrugsdokument kontant ordre Nej... fra..."
// Date="07.10.2016 0:00:00"

Anmodning. Tekst= "VÆLGE
REPRESENTATIONREFERENCE(TRUE) SOM Boolean,
REPRESENTATIONREFERENCE(4) SOM NUMMER
PRESENTINGLINK(Source.Link) AS Link,
REPRESENTATIONREFERENCE(DATETIME(2016,10,07)) AS Date"
;
// Boolean = TRUE, Tal = 4, Link = "Dokument Kontantkvitteringsordre nr... fra..."
// Dato=07.10.2016 0:00:00

// så vil det blive erstattet af 0, og du kan udføre matematiske operationer med det TYPE PRÆSTATION TYPE VÆRDIER

// Resultat: ok TYPE returnerer datatypen 1C:Enterprise platform.

Anmodning. Tekst= "VÆLGE
TYPE (antal)
TYPE (streng),
TYPE (Dokument. Udgifter Kontantordre)"
;

// Resultat: ok TYPE VÆRDIER returnerer typen af ​​den værdi, der sendes til den.

Anmodning. Tekst= "VÆLGE
VÆRDIER TYPE (5) SOM Nummer,
TYPE ("
"Linje" ") AS-streng,
TYPE (Source.Link) AS Reference
Fra Directory.Source AS Source"
;
//Number=Number, String=String, Directory = DirectoryLink.Source

Disse funktioner er praktiske at bruge, for eksempel når du skal finde ud af, om et felt modtaget i en anmodning er en værdi af en eller anden type. For eksempel vil vi indhente kontaktoplysninger på modparter fra kontaktinformationsregisteret (kontakter til ikke kun modparter, men også organisationer, enkeltpersoner osv.):

Anmodning. Tekst= "VÆLGE

FRA

HVOR
VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Counterpartys)"
;

// Resultat: ok MENING

// Resultat: ok Mening giver dig mulighed for at bruge 1C-konfigurationsobjekter direkte i en anmodning uden at bruge .

Lad os tilføje endnu en betingelse til det foregående eksempel. Du behøver kun at få telefonnumrene på dine modparter.

Anmodning. Tekst= "VÆLGE
Kontaktinformation.Introduktion
FRA
Register over oplysninger Kontaktoplysninger HVORDAN kontaktoplysninger
HVOR
VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Counterpartys)
AND ContactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

Det skal bemærkes, at denne funktion kun kan bruges med foruddefinerede værdier, dvs. med værdier, der kan tilgås direkte fra konfiguratoren. Altså funktionen MENING kan ikke bruges med bibliotekselementer oprettet af brugere, men kan arbejde med opregninger, med foruddefinerede bibliotekselementer, med værdier EmptyLink.

Operatør FORBINDELSE

Operatør FORBINDELSE er designet til at kontrollere de værdier, der returneres af en anmodning, for at se, om de tilhører en specifik referencetype. Den samme opgave kan udføres ved hjælp af funktioner TYPE PRÆSTATION TYPE VÆRDIER(som har et bredere anvendelsesområde og blev diskuteret ovenfor).

For eksempel valgopgaven kontaktoplysninger modparter kan løses på denne måde:

Anmodning. Tekst= "VÆLGE
Kontaktinformation.Introduktion
FRA
Register over oplysninger Kontaktoplysninger HVORDAN kontaktoplysninger
HVOR
ContactInformation.Object LINK Directory.Counterparties"
;

Operatør UDTRYKKE

Operatør UDTRYKKE brugt i 1C-forespørgsler i to tilfælde:

  • når du skal ændre egenskaberne for en primitiv type;
  • når du skal omdanne et felt med en sammensat datatype til et felt med en enkelt type.

Primitive datatyper omfatter: tal, streng, dato, boolesk. Nogle af disse datatyper har yderligere egenskaber. Type Antal har længde og præcision, type Linje - længde eller ubegrænset.

Operatør UDTRYKKE giver dig mulighed for at ændre ikke datatypen, men yderligere egenskaber. For eksempel kan han forvandle en streng med ubegrænset længde til en streng med begrænset længde. Dette kan være nyttigt, hvis du har brug for at gruppere forespørgselsresultater efter et sådant felt. Du kan ikke gruppere efter felter med en ubegrænset længde, så vi konverterer den til en streng med en længde på 200 tegn.

Anmodning. Tekst= "VÆLGE
MÆNGDE (ANDEN Ankomst af varer og tjenester. Link) AS Link
FRA
Dokument modtagelse af varer og tjenester HVORDAN modtagelse af varer og tjenester
GRUPPE EFTER
EXPRESS(Modtagelse af varer og tjenester. Kommentar SOM RÆKKE (200))"
;

I nogle tilfælde kan forespørgsler til felter med en sammensat datatype muligvis ikke behandles optimalt af 1C-platformen. Dette resulterer i længere forespørgselstider, så det kan være nyttigt at konvertere en sammensat type til en enkelt type på forhånd.

Anmodning. Tekst= "VÆLGE
EXPRESS(Movement of Goods Turnover.Order AS Document.Customer Order).Dato AS Order Date,
Bevægelse af varer Omsætning.Nomenklatur
FRA
Registrér Akkumuleringer.Movement of Goods.Turnover AS Movement of GoodsOmsætning
HVOR
Flytning af varer Omsætning.Ordre LINK Dokument.Kundeordre"
;

Operatører VALG PRÆSTATION ER NULL

Operatør VALG ligner operatør HVIS i det indbyggede 1C-sprog, men har noget reduceret funktionalitet.

Lad os sige, at vi ønsker at modtage kontaktoplysninger fra kontaktinformationsregisteret og samtidig angive i et separat anmodningsfelt, om det tilhører en modpart eller en enkeltperson.

Anmodning. Tekst= "VÆLGE
ContactInformation.Introduktion,
VALG
HVORNÅR VÆRDIER TYPE(Kontaktoplysninger.Objekt) = TYPE(Directory.Motparts)
SÅ"
Modpart "
ANDET VALG
NÅR VÆRDIER TYPE(Kontaktoplysninger.Objekt) = TYPE(Bibliotek.Individualer)
SÅ"
Individuel"
ANDET "En anden" "
ENDE
SLUT SOM EJER
FRA
Register of Information Kontaktoplysninger AS Kontaktoplysninger"
;

Som det kan ses af eksemplet, i designet VALG der er altid en betingelse efter ordet NÅR; værdi anvendt, hvis betingelsen er sand efter ordet og den anvendte værdi, hvis betingelsen ikke er opfyldt, efter ordet ELLERS. Alle tre designelementer VALG er obligatoriske. Udelad element ELLERS, på samme måde som ved brug af operatøren HVIS i det indbyggede 1C-sprog er det umuligt. Også fra operatøren VALG der er ingen analog til designet ELSEIF, men du kan investere en VALG i en anden, som det blev gjort i vores eksempel.

Operatør ER NULL brugt i design VALG for at sammenligne et forespørgselsfelt med typen NULL.

Anmodning. Tekst= "VÆLGE
VALG
NÅR VÆRDEN ER NULL, SÅ 0
ELSE Betydning
ENDE"
;

Hertil kommer operatøren ER NULL kan bruges i forespørgselsbetingelser, såsom i en sætning HVOR.

Forespørgselssproget er en af ​​de grundlæggende mekanismer i 1C 8.3 for udviklere. Ved hjælp af forespørgsler kan du hurtigt hente alle data, der er gemt i databasen. Dens syntaks ligner meget SQL, men der er nogle forskelle.

De vigtigste fordele ved 1C 8.3 (8.2) forespørgselssproget i forhold til SQL:

  • dereferencere referencefelter (henvisning af et eller flere punkter til objektdetaljer);
  • at arbejde med resultater er meget bekvemt;
  • evnen til at skabe virtuelle tabeller;
  • anmodningen kan skrives på både engelsk og russisk;
  • mulighed for at blokere data for at undgå dødvande.

Ulemper ved forespørgselssproget i 1C:

  • i modsætning til SQL tillader 1C-forespørgsler ikke ændring af data;
  • mangel på lagrede procedurer;
  • umuligt at konvertere en streng til et tal.

Lad os tage et kig på vores mini-tutorial om de grundlæggende konstruktioner af 1C-forespørgselssproget.

På grund af det faktum, at forespørgsler i 1C kun giver dig mulighed for at modtage data, skal enhver forespørgsel begynde med ordet "SELECT". Efter denne kommando er de felter, hvorfra data skal hentes, angivet. Hvis du angiver "*", vil alle tilgængelige felter blive valgt. Det sted, hvorfra dataene vil blive valgt (dokumenter, registre, biblioteker osv.) er angivet efter ordet "FRA".

I eksemplet diskuteret nedenfor er navnene på hele nomenklaturen valgt fra mappen "Nomenklatur". Efter ordet "HOW" er aliaser (navne) for tabeller og felter angivet.

VÆLGE
Nomenklatur Navn AS Navn på nomenklatur
FRA
Directory.Nomenclature AS Nomenclature

Ved siden af ​​"SELECT"-kommandoen kan du angive nøgleord:

  • FORSKELLIGE. Forespørgslen vil kun vælge rækker, der adskiller sig i mindst ét ​​felt (uden dubletter).
  • FØRSTE n, Hvor n– antallet af rækker fra begyndelsen af ​​resultatet, der skal vælges. Oftest bruges denne konstruktion i forbindelse med sortering (ORDER BY). For eksempel når du skal vælge et bestemt antal dokumenter, der er nyere efter dato.
  • TILLADET. Dette design giver dig mulighed for fra databasen kun at vælge de poster, der er tilgængelige for den aktuelle bruger. Grundlag for at bruge dette søgeord Brugeren vil modtage en fejlmeddelelse, når han forsøger at forespørge poster, som de ikke har adgang til.

Disse nøgleord kan bruges sammen eller hver for sig.

AT ÆNDRE

Dette forslag blokerer data for at forhindre gensidige konflikter. Låste data vil ikke blive læst fra en anden forbindelse, før transaktionen afsluttes. I denne klausul kan du angive specifikke tabeller, der skal låses. Ellers vil alle blive blokeret. Designet er kun relevant for den automatiske låsetilstand.

Oftest bruges "FOR FORANDRING"-klausulen ved modtagelse af saldi. Når alt kommer til alt, når flere brugere arbejder i programmet samtidigt, mens én modtager saldi, kan en anden ændre dem. I dette tilfælde vil den resulterende rest ikke længere være korrekt. Hvis du blokerer dataene med dette forslag, vil den anden medarbejder blive tvunget til at vente, indtil den første medarbejder modtager den korrekte saldo og udfører alle de nødvendige manipulationer med den.

VÆLGE
Gensidige afregninger.
Gensidige afregninger Mængde af gensidige afregninger Saldo
FRA
Register over Akkumuleringer. Gensidige afregninger
AT ÆNDRE

HVOR

Designet er nødvendigt for at pålægge de uploadede data en eller anden form for valg. I nogle tilfælde af indhentning af data fra registre er det mere rimeligt at specificere udvælgelsesbetingelser i parametrene for virtuelle tabeller. Ved brug af "WHERE" hentes alle poster først, og først derefter anvendes selektion, hvilket bremser forespørgslen markant.

Nedenfor er et eksempel på en anmodning om at skaffe kontaktpersoner til en konkret stilling. Valgparameteren har formatet: &ParameterName (parameternavnet er vilkårligt).

UDVALG (CASE)

Designet giver dig mulighed for at angive betingelser direkte i forespørgslens brødtekst.

I eksemplet nedenfor vil "AdditionalField" indeholde tekst, afhængigt af om dokumentet er bogført eller ej:

VÆLGE
AdmissionT&U.Link,
VALG
NÅR OptagelseT&U.Udføres
SÅ "Dokumentet er blevet bestået!"
ELSE "Dokumentet blev ikke sendt..."
AFSLUT SOM Ekstrafelt
FRA
Dokument modtagelse af varer og tjenester HVORDAN Modtagelse T&C

VÆR MED

Sammenkædninger forbinder to tabeller baseret på en specifik relationsbetingelse.

VENSTRE/HØJRE FORBINDELSE

Essensen af ​​LEFT join er, at den første specificerede tabel er taget i sin helhed, og den anden er knyttet til den i henhold til forbindelsesbetingelserne. Hvis der ikke er nogen poster, der svarer til den første tabel i den anden, erstattes NULL som deres værdier. Enkelt sagt er hovedtabellen den først specificerede tabel, og dataene i den anden tabel (hvis nogen) er allerede erstattet af dens data.

For eksempel er det nødvendigt at indhente varevarer fra "Modtagelse af varer og tjenesteydelser" dokumenter og priser fra informationsregisteret "Varepriser". I dette tilfælde, hvis prisen for en position ikke findes, skal du erstatte NULL i stedet. Alle varer fra dokumentet vil blive valgt, uanset om de har en pris eller ej.

VÆLGE
Kvittering&U.Nomenklatur,
Priser.Pris
FRA
Dokument modtagelse af varer og tjenester
INTERN JOIN RegisterInformation.PricesNomenclature.SliceLast AS Priser
Softwaremodtagelse&U.Nomenklatur = Priser.Nomenklatur

I DET RIGTIGE er alt præcis det modsatte.

FULD FORBINDELSE

Denne type forbindelse er forskellig fra tidligere emner, at som følge heraf vil alle poster i både den første tabel og den anden blive returneret. Hvis iflg givet tilstand Hvis der ikke findes nogen poster i den første eller anden tabel, returneres NULL i stedet.

Når du bruger en fuld forbindelse i det foregående eksempel, vil alle varevarer fra dokumentet "Modtagelse af varer og tjenester" og alle de seneste priser fra "Varepriser"-registret blive valgt. Værdierne for ikke-fundne poster i både den første og anden tabel vil være lig med NULL.

INDRE JOIN

Forskel INTERN JOIN fra FULL er, at hvis en post ikke findes i mindst én af tabellerne, vil forespørgslen slet ikke vise den. Som følge heraf vil kun de vareposter fra dokumentet "Modtagelse af varer og tjenesteydelser" blive udvalgt, for hvilke der er registreringer i informationsregistret "Varepriser", hvis vi i det foregående eksempel erstatter "FULD" med "INTERN".

GRUPPE EFTER

Gruppering i 1C-forespørgsler giver dig mulighed for at skjule tabelrækker (grupperingsfelter) i henhold til en bestemt fællestræk(grupperede felter). Grupperingsfelter kan kun vises ved hjælp af aggregerede funktioner.

Resultatet af følgende forespørgsel vil være en liste over produkttyper med maksimumpriser for dem.

VÆLGE
,
MAX(Price.Price) AS Pris
FRA

GRUPPE EFTER
Priser.Nomenklatur.Nomenklaturtype

RESULTATER

I modsætning til gruppering, når du bruger totaler, vises alle poster, og samlede rækker føjes til dem. Gruppering viser kun generaliserede poster.

Resultaterne kan opsummeres for hele tabellen (ved hjælp af nøgleordet "GENERAL"), for flere felter, for felter med en hierarkisk struktur (søgeord "HIERARKI", "KUN HIERARKI"). Ved opsummering af resultater er det ikke nødvendigt at bruge aggregerede funktioner.

Lad os se på et eksempel svarende til eksemplet ovenfor ved hjælp af gruppering. I dette tilfælde returnerer forespørgselsresultatet ikke kun grupperede felter, men også detaljerede poster.

VÆLGE
Priser.Nomenklatur.Nomenklaturtype AS Nomenklaturtype,
Priser.Pris AS Pris
FRA
Register over priser på nomenklatur. Øjebliksbillede af de seneste AS-priser
RESULTATER
MAKSIMUM(pris)
VED
TypeNomenklatur

HAR

Denne operator ligner WHERE-operatoren, men bruges kun til aggregerede funktioner. De resterende felter, undtagen dem, der bruges af denne operatør, skal grupperes. WHERE-operatøren gælder ikke for aggregerede funktioner.

I eksemplet nedenfor er maksimumpriserne for en vare valgt, hvis de overstiger 1000, grupperet efter varetype.

VÆLGE

MAX(Price.Price) AS Pris
FRA
Register over priser på nomenklatur. Øjebliksbillede af de seneste AS-priser
GRUPPE EFTER
Priser.Nomenklatur.Nomenklaturtype
HAR
MAKSIMUM(Priser.Pris) > 1000

BESTIL EFTER

Operatoren ORDER BY sorterer resultatet af en forespørgsel. For at sikre, at poster vises i en ensartet rækkefølge, bruges AUTO ORDER. Primitive typer er sorteret efter normale regler. Referencetyper er sorteret efter GUID.

Et eksempel på at få en liste over medarbejdere sorteret efter navn:

VÆLGE
Medarbejdere.Navn AS Navn
FRA
Directory.Employees HVORDAN Medarbejdere
BESTIL EFTER
Navn
AUTO BESTILLING

Andre 1C-forespørgselssprogkonstruktioner

  • FORENE– resultater af to forespørgsler i én.
  • KOMBINER ALT– ligner COMBINE, men uden at gruppere identiske rækker.
  • TOM BORD– bruges nogle gange, når du forbinder forespørgsler for at angive en tom indlejret tabel.
  • PLACERE– opretter en midlertidig tabel for at optimere komplekse 1C-forespørgsler. Sådanne anmodninger kaldes batch-anmodninger.

Sprogfunktioner for forespørgsler

  • SUBSTRING afkorter en streng fra en specificeret position til et specificeret antal tegn.
  • ÅR...ANDET giver dig mulighed for at få den valgte værdi af en numerisk type. Indtastningsparameteren er datoen.
  • BEGYNDELSE AF PERIODE og SLUT AF PERIODE bruges, når man arbejder med datoer. Periodetypen (DAG, MÅNED, ÅR osv.) er angivet som en ekstra parameter.
  • ADDKDATE giver dig mulighed for at tilføje eller trække angivet tidspunkt fra en dato bestemt type(ANDET, MINUT, DAG osv.).
  • DIFFERENCEDATE bestemmer forskellen mellem to datoer, hvilket angiver typen af ​​outputværdi (DAG, ÅR, MÅNED osv.).
  • Fungere erstatter den manglende værdi med det angivne udtryk.
  • REPRÆSENTATION og REPRÆSENTATIONSLINKS få en strengrepræsentation af det angivne felt. Anvend på alle værdier og kun referenceværdier.
  • TYPE, TYPE VÆRDIER bruges til at bestemme typen af ​​inputparameteren.
  • FORBINDELSE er en logisk sammenligningsoperator for attributværditypen.
  • UDTRYKKE bruges til at konvertere en værdi til den ønskede type.
  • DATOTIME får en værdi af typen "Dato" fra numeriske værdier(År, måned, dag, time, minut, sekund).
  • MENING i en 1C-anmodning bruges den til at angive foruddefinerede værdier - mapper, opregninger, planer for typer af karakteristika. Eksempel på brug: " Hvor juridisk person = værdi(optælling. juridisk person. individuel)«.

Forespørgselsbygger

For at oprette forespørgsler med 1C er der en meget praktisk indbygget mekanisme - forespørgselsdesigneren. Den indeholder følgende hovedfaner:

  • "Tabeller og felter" - indeholder de felter, der skal vælges, og deres kilder.
  • “Connections” - beskriver betingelserne for CONNECTION-strukturen.
  • "Grupper" - indeholder en beskrivelse af grupperingsstrukturer og summerede felter baseret på dem.
  • "Betingelser" - er ansvarlig for at udvælge data i anmodningen.
  • "Avanceret" - yderligere forespørgselsparametre, såsom nøgleord for kommandoen "SELECT" osv.
  • "Joins/Aliaser" - mulighederne for at forbinde tabeller er angivet, og aliaser er specificeret ("HOW"-konstruktionen).
  • "Ordre" er ansvarlig for at sortere resultatet af forespørgsler.
  • "Totaler" - ligner fanen "Grupper", men bruges til "TOTALER"-konstruktionen.

Selve forespørgslens tekst kan ses ved at klikke på knappen "Forespørgsel" i nederste venstre hjørne. I denne formular kan den rettes manuelt eller kopieres.


Anmod om konsol

Brug for hurtigt at se resultatet af en forespørgsel i Enterprise-tilstand eller fejlfinde komplekse forespørgsler. Den indeholder teksten til anmodningen, indstiller parametrene og viser resultatet.

Du kan downloade forespørgselskonsollen på ITS-disken eller via .

I denne artikel vil vi diskutere alt med dig 1C forespørgselssprog funktioner, og også forespørgselssprogkonstruktioner. Hvad er forskellen mellem funktion og design? Funktionen kaldes med parenteser og mulige parametre i dem, og konstruktionen skrives uden parentes. Uden tvivl alle strukturer og funktioner i 1C-forespørgselssproget gøre dataopsamlingsprocessen fleksibel og multifunktionel. Disse funktioner og konstruktioner gælder for anmodningsfelter, og nogle gælder også for betingelser.

1C Sprogfunktioner for forespørgsel

Fordi en klar beskrivelse 1C forespørgselssprog funktioner er meget mindre almindeligt end beskrivelser af strukturer, besluttede vi at begynde at se på funktioner. Lad os nu se på hver enkelt separat og beskrive dens formål, syntaks og eksempel på brug, så:

1. Fungere DATOTIME - denne funktion opretter et konstant felt af typen "Dato".

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

Eksempel på brug:

2. DATO DIFFERENCE funktion- returnerer forskellen mellem to datoer i en af ​​dimensionerne (år, måned, dag, time, minut, sekund). Målingen videregives som en parameter.

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

Eksempel på brug:

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

3. Funktion VALUE- sætter et konstant felt med en foruddefineret post fra databasen, du kan også få et tomt link af enhver type.

Syntaks: VALUE(<Имя>)

Eksempel på brug:

Request.Text = "VÆLG //foruddefineret element | VALUE(Directory.Currencies.Dollar) AS Dollar, //empty link | VALUE(Document.Receipt of Goods and Services.EmptyLink) AS Receipt, //transfer value | VALUE(Transfer . Legal Individual) AS Individual, //foruddefineret konto VALUE(Kontoplan. Selvregnskab.Materials) AS Account_10" .

4. VÆLG funktion- vi har foran os en analog af IF-konstruktionen, som bruges i koden, kun denne bruges i 1C-forespørgsler.

Syntaks: VALG HVORNÅR<Выражение>SÅ<Выражение>ELLERS<Выражение>ENDE

Eksempel på brug:

Request.Text = //hvis beløbet er mere end 7500, så skal der være en rabat på 300 rubler, //så hvis betingelsen udløses, så //returnerer funktionen Beløb - 300 //ellers vil anmodningen blot returnere Beløb "VÆLG | VÆLG | NÅR TCReceipts.Beløb > 7500 | SÅ TCReceipts.Beløb - 300 | ELSE TCReceipts.Amount | END AS AmountWithDiscount | FRA |

5. EXPRESS funktion- giver dig mulighed for at udtrykke et konstant felt med en bestemt type.

Syntaks: EXPRESS(Feltnavn SOM Typenavn)

Eksempel på brug:

Query.Text = "VÆLG DIVERSE | Sales.Registrar.Number, | VÆLG | NÅR Sales.Registrator LINK Document.Expense | THEN EXPRESS(Sales.Registrar AS Document.Expense) | ELSE SELECT | WHEN Sales.Registrar LINK Document.Implementation | THEN EXPRESS(Sales.Registrar AS Document.Implementation) |. END AS Number |.

En anden mulighed er at bruge EXPRESS-funktionen i felter blandede typer hvor findes disse? Det enkleste eksempel er "Registrator" for ethvert register. Så hvorfor skal vi måske kvalificere typen i registratoren? Lad os overveje situationen, når vi vælger feltet "Nummer" fra registratoren, fra hvilken tabel vil nummeret blive valgt? Det rigtige svar af alle! Derfor, for at vores forespørgsel skal fungere hurtigt, skal vi angive en eksplicit type ved hjælp af EXPRESS-funktionen

Eksempel på brug:

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 funktion(alternativ stavemåde ISNULL) - hvis feltet er af typen NULL, så erstattes det med den anden parameter i funktionen.

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

Eksempel på brug:

Bemærk også, at det er tilrådeligt ALTID at erstatte NULL-typen med en eller anden værdi, fordi sammenligning med typen NULL returnerer altid FALSE, selvom du sammenligner NULL med NULL. Oftest dannes NULL-værdier som et resultat af sammenføjning af tabeller (alle typer sammenføjninger undtagen interne).

Query.Text = //Vælg hele elementet og dets saldi //hvis der ikke er nogen saldo i et element, så vil der være et felt //NULL, som vil blive erstattet med værdien 0 "SELECT | No. Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) AS Remainings |. Directory.Nomenclature AS-nr. |.

7. REPRESENTATION funktion- giver dig mulighed for at få en repræsentation af anmodningsfeltet.

Syntaks: PRÆSTATION(<НаименованиеПоля>)

Eksempel på brug:

Query.Text = "VÆLG | REPRESENTATION(FreeRemainingRemains.Nomenclature) AS Nomenclature, | REPRESENTATION(FreeRemainingRemaining.Warehouse) AS Warehouse, | FreeRemainingRemaining.InStockRemaining |FROM |Accumulationinma ASRemain.Remain;FreeRemainingRemaining.Remaining

Konstruerer i 1C-forespørgselssproget

Vi diskuterede med dig ovenfor 1C forespørgselssprog funktioner, nu er det tid til at overveje konstruktioner i 1C-forespørgselssproget, de er ikke mindre vigtige og nyttige, lad os komme i gang.

1. Byggeri LINK- er en logisk operator til kontrol af en referencetype. Opstår oftest ved kontrol af et felt af en kompleks type mod en bestemt type. Syntaks: FORBINDELSE<Имя таблицы>

Eksempel på brug:

Request.Text = //hvis værditypen er logger dokument Entre, //så vil anmodningen returnere "Modtagelse af varer", ellers "Salg of Goods" "VÆLG | VÆLG | NÅR Rester. Registrator LINK-dokument. Modtagelse af varer og tjenester | SÅ ""Modtagelse"" | ELSE ""Forbrug" " | AFSLUT AS Bevægelsestype |FRA | Akkumuleringsregister. Resterende varer i lagre AS forbliver" ;

2. Design MELLEM- denne operatør kontrollerer, om værdien er inden for det angivne område.

Syntaks: MELLEM<Выражение>OG<Выражение>

Eksempel på brug:

Request.Text = //hent hele nomenklaturen, hvis kode ligger i området fra 1 til 100 "SELECT | Nomenclature.Link |FROM | Directory.Nomenclature AS Nomenclature |WHERE | Nomenclature.Code MELLEM 1 OG 100" ;

3. Konstruktion B og B HIERARKI- tjek om værdien er i den overførte liste (arrays, værditabeller osv. kan overføres som en liste). Operatoren IN HIERARKIET giver dig mulighed for at se hierarkiet (et eksempel på brug af kontoplanen).

Syntaks: I(<СписокЗначений>), I HIERARKIET(<СписокЗначений>)

Eksempel på brug:

Request.Text = //vælg alle underkonti til kontoen "VÆLG | Selvforsørgende. Link AS-konto | FRA | Kontoplan. Selvforsørgende AS Selvforsørgende | HVOR | Selvforsørgende. Link I HIERARKI VÆRDI (diagram over Regnskaber.

4. Design LIGNENDE- Denne funktion giver os mulighed for at sammenligne en streng med et strengmønster.

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

Valgmuligheder for rækkemønster:

% - en sekvens, der indeholder et vilkårligt antal vilkårlige tegn.

Én vilkårlig karakter.

[...] - ethvert enkelt tegn eller sekvens af tegn anført inden for kantede parenteser. Optællingen kan angive områder, for eksempel a-z, hvilket betyder et vilkårligt tegn inkluderet i området, inklusive enderne af området.

[^...] - ethvert enkelt tegn eller sekvens af tegn, der er angivet inden for firkantede parenteser, undtagen dem, der er angivet efter negationstegnet.

Eksempel på brug:

Query.Text = //find hele nomenklaturen, der indeholder roden TABUR og begynder //enten med et lille bogstav eller med store bogstaver t "VÆLG | Nomenklatur. Link | FRA | Katalog. Nomenklatur AS Nomenklatur | HVOR | Produkter. Navn SOM "" [Tt]abur%""" ;

5. Design TILLADET- denne operatør giver dig mulighed for kun at vælge de poster fra databasen, som den, der ringer, har læsetilladelse til. Disse rettigheder er konfigureret på rekordniveau (RLS).

Syntaks: TILLADET er skrevet efter søgeordet SELECT

Eksempel på brug:

Request.Text = "VÆLG TILLADTE | Modparter. Link | FRA | Directory. Modparter AS Modparter";

6. Design DIVERSE- giver dig mulighed for at vælge poster, hvor der ikke er duplikerede poster.

Syntaks: VARIOUS er skrevet efter søgeordet SELECT

Eksempel på brug:

Request.Text = //vælger poster, som læseren har rettigheder til "SELECT VARIOUS | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties" ;

Den FORSKELLIGE konstruktion kan også bruges med den TILLADTE operatør og andre operatører.

Eksempel på brug:

Request.Text = //vælger forskellige poster, som læseren har rettigheder til "SELECT ALLOWED VARIOUS | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties";

7. Design FØRST- vælger antallet af poster angivet i parameteren fra forespørgselsresultatet.

Syntaks: FØRST<число>

Eksempel på brug:

Request.Text = //vælg de første 4 CCD-numre fra mappen "SELECT FIRST 4 | CCD Numbers. Link | FROM | Directory. CCD Numbers AS CCD Numbers";

8. Design TIL FORANDRING- giver dig mulighed for at låse et bord, fungerer kun i transaktioner (kun relevant for automatiske låse).

Syntaks: AT ÆNDRE<НаименованиеТаблицы>

Eksempel på brug:

Query.Text = "VÆLG | Frie rester. Nomenklatur, | Gratis rester. Lager, | Gratis rester. Resterende på lager | FRA | Register over akkumuleringer. Gratis Resterende. Rester AS Gratis Resterende Rester | TIL ÆNDRING | Register over akkumulationer . Gratis rester";

9. Design BESTIL AF- organiserer data efter et bestemt felt. Hvis feltet er et link, så når du sætter flaget AUTO BESTILLING Sortering vil ske efter linkrepræsentation, hvis flaget er slået fra, sorteres links efter ancienniteten af ​​linkadressen i hukommelsen.

Syntaks: BESTIL EFTER<НаименованиеПоля>AUTO BESTILLING

Eksempel på brug:

Query.Text = "VÆLG | Frie rester. Nomenklatur AS Nomenklatur, | Gratis rester. Lager AS, | Gratis resterende rester. På lager Resterende | FRA | Registrer Akkumuleringer. Gratis rester. Resterende SOM Frie resterende rester | | BESTIL EFTER |. Nomenklatur |. AUTO ORDRELÆSNING";

10. Design GROUP BY- bruges til at gruppere forespørgselsstrenge efter specifikke felter. Numeriske felter skal bruges med enhver aggregeret funktion.

Syntaks: GRUPPE EFTER<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Eksempel på brug:

Query.Text = "SELECT | ProductsInWarehouses.Nomenclature AS Nomenclature, | ProductsInWarehouses.Warehouse, | SUM(GoodsInWarehouses.InStock) AS INSTOCK |FROM | RegisterAccumulations.ProductsInWarehouses AS ProductsInWarehouses | |InWarehouses.Warehouses;

11. Design HAVING- giver dig mulighed for at anvende en aggregeret funktion til en datavalgsbetingelse, svarende til WHERE-konstruktionen.

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

Eksempel på brug:

Query.Text = //vælger grupperede poster, hvor InStock-feltet er større end 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS INSTOCK |FROM | RegisterAccumulations.ItemsInStocks.Items GRUPPER EFTER |. ProductsInWarehouses.Nomenclature, |. ProductsInWarehouses.Warehouse |.

12. Byggeri INDEKS AF- bruges til at indeksere forespørgselsfeltet. En forespørgsel med indeksering tager længere tid at fuldføre, men fremskynder søgningen gennem indekserede felter. Kan kun bruges i virtuelle tabeller.

Syntaks: INDEKS AF<Поле1, ... , ПолеN>

Eksempel på brug:

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

13. Design HVOR- giver dig mulighed for at pålægge en betingelse på alle valgfelter. Resultatet vil kun omfatte poster, der opfylder betingelsen.

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

Eksempel på brug:

Query.Text = //alle poster med CompensationRemaining er valgt<>0 og //AmountForCalcCompRemaining > 100 "SELECT | CompensationRPORmains.Counterparty, |CompensationRPORmains.Child, | CompensationRPORmains.CompensationRemaining, | CompensationRPORmains.AmountForCalcCompRemains |CompensationRPORmains.Child, | CompensationRPORmains.CompensationRemaining, | CompensationRPORmains.AmountForCalcCompRemains |CompensationRPORmains.Compensation.Compensation.CompensationRemains |KompensationRPORmaining.CompensationRemaining<>0 | And CompensationRPORmains.AmountForCalcCompRemaining> 100" ;

14. Design RESULTATER... GENERELT- bruges til at beregne totaler. designet specificerer de felter, hvormed totalerne beregnes, og aggregerede funktioner anvendes på de samlede felter. Ved brug af totaler for hvert felt efter TOTAL-konstruktionen, grupperes data. Der er en valgfri GENEREL konstruktion. Dens brug giver også yderligere gruppering. Du vil se et eksempel på anmodningsresultatet nedenfor.

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

Eksempel på brug:

Request.Text = "VÆLG | Beregninger. Modpartsaftale. Aftaletype AS Kontrakttype, | Beregninger. Modpartsaftale AS Kontrakt, | Beregninger. Modpart, | Beregninger. Mængde af gensidig afregningssaldo AS Saldo | FRA | Akkumuleringsregister. Gensidig Afregning MED modparter. Beregninger i ALT |. GENERELT |.

Figuren skitserer de grupperinger, der blev dannet under udførelsen af ​​anmodningen, den øverste henviser til sektionen GENERAL, og den anden til feltet Counterparty AgreementAgreement Type.

Opmærksomhed! Dette er en indledende version af lektionen, hvis materialer kan være ufuldstændige.

Log ind på siden som studerende

Log ind som elev for at få adgang til skolens materialer

Forespørgselssprog 1C 8.3 for begyndere programmører: funktioner og operatorer til at arbejde med typer (VÆRDITYPE, TYPE, REFERENCE, ISNULL, EXPRESS)

Lad os huske, at hver attribut (egenskab, felt) i en mappe, et dokument eller et hvilket som helst andet applikationsobjekt har sin egen type. Og vi kan se på denne type i konfiguratoren:

I forespørgselssproget er der en hel klasse af funktioner og operatorer til at arbejde med typer detaljer. Lad os se på dem.

VALUE TYPE funktion

Denne funktion tager én parameter (værdi) og returnerer dens type. Til rekvisitterne beskrevet på billedet (ovenfor) Smag vejviser Mad følgende vil blive returneret:

Lad os nu se på rekvisitterne Særpræg i biblioteket Byer:

Du kan se, at denne rekvisit kan være en af ​​flere typer: Linje, Directory.Tastes, Directory.Colors. Denne type detaljer kaldes KOMPOSIT.

Hvis vi forsøger at udfylde værdien af ​​en sådan detalje i 1C:Enterprise mode, vil systemet spørge os, hvilken type værdi der vil blive indtastet:

Og først efter vores valg vil det give os mulighed for at indtaste værdien af ​​den valgte type.

Således mappeelementer af samme type ( Directory.Cities) vil være i stand til at gemme i den samme attribut ( Særpræg) værdier forskellige typer(streng, farver eller smag).

Du kan selv se dette ved at klikke på elementerne i mappen Byer i 1C:Enterprise-tilstand. Du læser en prøveversion af lektionen, fulde lektioner er tilgængelige.

Her er meningen særpræg er et bibliotekselement Smag:

Her er linjen:

Og her er generelt et element i opslagsbogen Farver:

Det er de muligheder, en sammensat datatype åbner for os!

Jeg spekulerer på, hvordan funktionen vil opføre sig TYPE VÆRDIER på rekvisitterne DistinctiveElement, der har en sammensat datatype:

Dette er allerede meget interessant. Lad os se på hver linje individuelt.

Typen af ​​værdi af det karakteristiske træk for elementet Rusland er lig med NULL. Det er første gang, vi støder på denne type. Værdier af denne type bruges udelukkende til at bestemme den manglende værdi, når du arbejder med databasen.

Dette er sandt, fordi Rusland-elementet er en gruppe og ikke et almindeligt katalogelement Byer, så den har intet felt Særpræg. Og typen af ​​en manglende værdi, som vi læste ovenfor, er altid lig med NULL.

Typen af ​​værdi af det karakteristiske træk for Perm er lig med Smag. Dette er sandt, fordi værdien af ​​det karakteristiske træk, der er indtastet i databasen for byen Perm, er et link til bibliotekselementet Smag.

For Krasnoyarsk er typen af ​​attribut lig med Farver, fordi den valgte værdi i databasen er et link til et mappeelement Farver.

For Voronezh er typen af ​​attribut lig med Linje, fordi den indtastede værdi i databasen er en almindelig streng.

Indien er igen en gruppe, så der er ingen betydning. Og typen af ​​den manglende værdi, som vi husker, er lig med NULL.

Her er sagen. Hvis du går til mappeelementet Byer med navn São Paulo, så vil du se, at feltet Særpræg absolut ikke udfyldt overhovedet. Det er tomt. EN alle tomme felter af en sammensat type har en særlig betydning UDEFINERET.

MED UDEFINERET vi støder også på for første gang. Mening UDEFINERET bruges, når det er nødvendigt at bruge en tom værdi, der ikke tilhører nogen anden type. Det er præcis vores situation. Og værditypen UDEFINERET, som du sikkert allerede har gættet, er lig med NULL.

Funktion TYPE

Det kræver kun én parameter - navnet på den primitive type ( LINE, ANTAL, DATO, BOOLEAN), eller navnet på den tabel, hvis linktype du vil have.

Resultatet af denne konstruktion vil være en værdi af typen Type for den angivne type.

Det lyder vagt, ikke?

Lad os se på anvendelsen af ​​dette design, og alt vil straks falde på plads.

Antag, at vi skal vælge alle telefonbogsposter Byer, som har sammensatte rekvisitter Særpræg har en værdi af type LINE:

Lad os nu vælge alle poster, der har attributværdier Særpræg er links til mappeelementer Farver(tabel Directory.Colors):

Tilbagetog

Som du husker, nogle elementer i mappen Byer har ikke rekvisitter Særpræg. Fungere TYPE VÆRDIER for sådanne elementer, den producerer NULL.

Hvordan kan du vælge sådanne elementer i en forespørgsel? En særlig logisk operator er tilvejebragt til dette ER NULL(ikke at forveksle med funktionen Fungere, som vi vil se på nedenfor). Du læser en prøveversion af lektionen, fulde lektioner er tilgængelige.

Her er et eksempel på dets brug:

Stor. Men har du bemærket, at der ikke er noget element af Sao Paulo, rekvisitter værdi type Særpræg som han også gav ud NULL. Hvorfor skete dette?

Men sagen er, at situationen er for grupper (Rusland, Indien, Brasilien), som udfylder detaljerne Særpræg umuligt i princippet, da de slet ikke har det, adskiller sig fra situationen for Sao Paulo-elementet, hvor det er muligt at udfylde rekvisitter, men det er simpelthen ikke udfyldt og er, som vi husker, lig med en særlig værdi UDEFINERET.

For at vælge alle poster, der har de nødvendige Særpræg til stede, men ikke udfyldt, bør en anden konstruktion anvendes:

Men sammenligning med UDEFINERET for at bestemme tomme (uudfyldte) attributter vil kun fungere for sammensatte typer.

Forresten har den logiske operator IS NULL en negationsform, der ser sådan ud:

Logisk operator LINK

Lad os f.eks. vælge fra biblioteket Byer kun de poster, der har værdien af ​​en sammensat attribut Særpræg er et link til et mappeelement Smag:

Som du husker, kunne vi løse det samme problem vha TYPE VÆRDIER Og TYPE:

Funktion ISNULL

Funktionen er designet til at erstatte en værdi NULL til en anden betydning.

Vi husker, at meningen NULL returneres, hvis den ønskede attribut (felt, egenskab) ikke eksisterer.

For eksempel rekvisitter Særpræg for biblioteksgrupper Byer:

// Resultat: ok Fungere vil hjælpe os med at udlæse en anden værdi, hvis denne værdi er lig med NULL. Du læser en prøveversion af lektionen, fulde lektioner er tilgængelige. Lad i dette tilfælde være linjen "Der er ingen sådan rekvisit!":

Det viser sig, at hvis den første parameter af funktionen Fungere ikke lige NULL, så vender han tilbage. Hvis den er NULL, returneres den anden parameter.

EXPRESS funktion

Denne funktion er kun til felter, der har en sammensat type. Et glimrende eksempel på et sådant felt er ejendommen Særpræg for mappeelementer Byer.

Som vi husker, kan sammensatte felter være en af ​​flere typer angivet i konfiguratoren.

Til mark Særpræg sådanne gyldige typer er LINE, Directory.Colors Og Directory.Tastes.

Nogle gange bliver det nødvendigt at støbe værdierne af et sammensat felt til en bestemt type.

Lad os liste alle feltværdier Særpræg at skrive Reference.Farver:

Som et resultat var alle elementværdier, der var af typen Directory.Colors, forblev udfyldt og blev konverteret til den angivne type. Alle værdier af andre typer ( LINE, Directory.Tastes) er nu lige NULL. Dette er det særlige ved typestøbning ved hjælp af funktionen UDTRYKKE.

Du kan caste en type enten til en primitiv type ( BOOLEAN, ANTAL, LINE, DATO) eller til en referencetype. Du læser en prøveversion af lektionen, fulde lektioner er tilgængelige. Men typen, som støbningen laves til, skal medtages på listen over typer for dette sammensatte felt, ellers vil systemet give en fejl.

Tag testen

Start test

1. Vælg det mest korrekte udsagn

2. Detaljer, der kan tage værdier af en af ​​flere typer kaldes

3. Brug funktionen til at bestemme typen af ​​attributværdi

4. Tomme detaljer af en sammensat type er vigtige