1c atribuie un tip unui element de formular. Tipuri de baze de date

25.10.2019 Sfat

Deoarece în codul programului lucrăm cu valori, trebuie să le cunoaștem periodic tipul. Tipul 1C este întotdeauna indicat în metadatele detaliilor - în directoare și documente.

Lucrul cu tipuri 1C este adesea folosit:

  • Condiții în program
  • Acțiuni diferite în funcție de tipul valorii 1C în construcția „Dacă ... Atunci ...”.
  • Limitări atunci când lucrați în interfață
  • Interzicerea sau permiterea utilizatorului să introducă valori ale anumitor tipuri de 1C într-un câmp din formular.
  • Determinarea parametrului actual al funcției/procedurii
  • Dacă un parametru de funcție/procedură poate fi de orice tip 1C, atunci trebuie să îl definiți pentru a obține corect valoarea.

Tipul 1C poate fi obținut:

  • Determinați tipul valorii reale 1C
  • Obiectele de valoare au proprietăți care indică tipul 1C permis (de exemplu, tipurile 1C permise într-o coloană de tabel, într-un câmp dintr-un formular, în metadate) sau metode care returnează aceste tipuri 1C
  • Din metadate - puteți obține tipul 1C așa cum este specificat în metadate din configurator.

Tipurile 1C pot fi împărțite în trei tipuri:

  • Tipuri de bază 1C
  • Tipuri de baze de date 1C (referință, obiecte)
  • Tipurile 1C.

Definirea tipului 1C și compararea tipurilor 1C

Puteți afla tipul valorii 1C folosind funcția TypeValue (Variable)

Pentru a înțelege ce tip 1C a returnat această funcție, trebuie să specificăm tipul de care avem nevoie („TypeName”)

De exemplu, definiția (comparația) a unei variabile de tip 1C:
Dacă TypeValue(Variable) = Type("TypeName"), atunci

Ce tipuri ar trebui să scriu ca TypeName?

Tipuri de bază

Tipuri de bază de 1C - număr, șir, dată, boolean.

De exemplu:

Znch = 12; If ValueType(Value) = Type("Number" "String" ) Then ElseIf Value = Type("Date") Then ElseIf Value = Type ("Boolean" ) Then endIf;

Tipuri de baze de date

1C stochează datele într-o bază de date, dar nu sub formă de înregistrări individuale, ci sub formă de obiecte.

Cele mai multe obiecte salvate (inclusiv: directoare, documente, enumerări, procese de afaceri, sarcini) sunt disponibile ca Obiect (pentru editare și scriere) și ca Link (pentru citire). Consultați „Legături și obiecte” pentru mai multe detalii.

De exemplu:

Valoare = Directoare. Organizații. EmptyLink() ; Dacă TypeValue(Value) = Type( „DirectoryLink.Organizations”) Apoi ElseIf Value = Type( „DirectoryObject.Organizations”) Apoi ElseIf TypeValue(Valoare) = Type( „DocumentLink. Primirea mărfurilor”) Apoi ElseIf Value = Type( „Obiect document.Recepția mărfurilor”) Apoi endIf;

Pot fi prezentate registre tipuri variate. Numele tipului de registru este compus:
RegisterRegisterTypeAccessType.RegisterName

Tipuri de registre 1C:

  • informație
  • Economii
  • Contabilitate
  • Calcul.

Există mai multe tipuri de acces la registru. Cel mai des folosit:

  • Set de înregistrări
  • Listă
  • Probă
  • Record
  • RecordKey.

Exemplu:
Dacă TypeValue(Value) = Type("InformationRegisterList.RegisterName"), atunci
OtherwiseIf Value = Type ("AcumulationRegisterRecordSet.RegisterName") Then
endIf;

Tipurile 1C

Limbajul 1C vă permite să lucrați cu multe obiecte create dinamic în program, de exemplu, o matrice, o listă de valori, un tabel de valori, o structură...

Astfel de tipuri 1C sunt indicate prin numele lor (într-un cuvânt, fără spații). De exemplu:
Dacă TypeValue(Value) = Type(„Matrice”), atunci
ElseIf Value = Type ("Lista de valori") Then
endIf;

Determinarea valorii unui tip de referință 1C

Lucrul cu toate obiectele bazei de date (directoare, documente...) se realizează prin link-uri. De exemplu, dacă dorim să facem o referință într-un document, atunci tipul său 1C va fi „DirectoryLink.DirectoryName”.

De exemplu:

Valoare = Directoare. Organizații. EmptyLink() ; Dacă Directoarele. TypeAllLinks() . Conține(TypeValue(Value)) Atunci //acesta este directorul OtherwiseIf Documents. TypeAllLinks() . Conține(ValueType(Value)) Apoi //acesta este un document endIf;

Lucrul cu tipuri 1C într-o solicitare

Într-o cerere, tipul 1C poate fi verificat în două moduri.

Pentru a verifica tipul unui câmp într-o solicitare 1C 8.3, puteți utiliza funcția de limbaj de interogare VALUE TYPE(<Поле>).

WHERE VALUES TYPE(Tabel.Sum) = TYPE(NUMBER)

Funcție TYPE(<Имя типа>) primește un tip după numele său. Nume de tip primitiv: Număr, șir, boolean, dată. Denumirile tipurilor de referință se construiesc după următorul principiu: Document.Vânzări de bunuri și servicii sau Director.Nomenclator.

SELECT Autoportant Cifra de afaceri. Subconto1, Cifra de afaceri autoportabilă. Subconto2, Cifra de afaceri autoportabilă. Subconto3, Autoportant Cifra de afaceri. SumăTurnover, SELECTION WHEN VALUES TYPE(Self-contabilTurnover. Subconto3 ) = TYPE(Document. Sales of GoodsServices) THEN "Vânzări" WHEN VALUES TYPE(Self-contabilTurnover. Subconto3 ) = TYPE(Document.Vânzări de bunuriServicii) THEN "Vânzări" WHEN VALUES TYPE(Self-contabilTurnover. Subconto3 ) = TYPE(Document. VALUES TYPE(Auto-contabilitateTurnover borota.Subconto3 ) = TYPE(Document . Cheltuieli Ordin de numerar) ATUNCI „RKO” ALTRE "Un alt document" END AS Calcule tip document FROM RegisterAccounting. Autoportant. Cifra de afaceri(& Începutul perioadei, & Sfârșitul perioadei, Registrator, Cont = & Account6201 , , , , ) AS Self-AccountingTurnovers Pentru câmpurile de tip de referință mai există unul metoda de verificare folosind operatorul REFERENCE.

ALEGEREA CÂND Autoportant Cifra de afaceri. Subconto3 LINK Document. Vânzări de bunuri și servicii. APOI „Vânzare” CÂND Cifra de afaceri auto-suportată. Subconto3 LINK Document. Chitanță Comandă în numerar APOI „PKO” CÂND Auto-contabil Cifra de afaceri. Subconto3 LINK Document. Comandă în numerar consumabil, APOI „RKO” ALTELOR "Un alt document" Sfârşit

Obținerea tipurilor 1C disponibile

Multe obiecte au o proprietate.ValueType, care conține o listă de tipuri 1C:

Câmp de pe formularul de client gras
Form Elements.FieldName.ValueType
Câmp de pe formular client slab(excepție: numită AvailableTypes)
Elements.FieldName.AvailableTypes
Coloana tabelului de valori, arborele de valori
Detalii formular
Element de selecție

Cum să lucrați cu această listă de tipuri 1C în câmp.ValueType - consultați „Descrierea tipurilor” în secțiunea „Limbaj 1C”.

Lucrul cu tipuri de detalii 1C în metadatele de configurare

La adăugarea și editarea detaliilor în configurator, programatorul specifică tipul (tipurile) de detalii 1C. În codul programului în limbajul 1C, puteți obține (aflați) tipul (tipurile) de detalii 1C.

Metode de bază:

Pentru un obiect 1C, apelați metoda Metadata(), care returnează metadatele unui anumit obiect și apoi lucrați cu lista de detalii (și detaliile secțiunii tabelului)

Utilizați variabila globală „Metadate”, care returnează toate metadatele de configurare și apoi accesați detaliile unui anumit obiect

Metadate.Documente.Recepția Bunurilor.Detalii

Atributul are o proprietate.Type, care conține o listă de tipuri 1C setate în configuratorul pentru acest atribut.

Cum să lucrați cu această listă de tipuri 1C - consultați „Descrierea tipurilor” în secțiunea „Limba 1C”.

Specificați filtrul de tip 1C

Pentru multe obiecte este posibil să se specifice un filtru de tipuri de valori 1C care pot fi utilizate, de exemplu:

Lista de valori (.AvailableValues)
Câmp pentru formularul client gestionat (.AvailableTypes)
Acolo unde filtrul nu este disponibil pentru modificare, este posibil să se specifice filtrul în metoda obiectului. De exemplu, o coloană a unui tabel (arborele) de valori are.ValueType și nu o putem modifica, dar atunci când adăugați o coloană folosind metoda.Add(), al doilea parametru poate fi folosit pentru a specifica o listă de 1C disponibile. tipuri.

Pentru a specifica o listă de tipuri 1C pentru un filtru, se utilizează o listă de tipuri 1C; cum să lucrați cu aceasta, consultați „Descrierea tipurilor” în secțiunea „Limbaj 1C”.

- clasificarea valorilor (adică a datelor) în funcție de tipul lor - șiruri, numere, date etc. Tipul de valoare este unul dintre Noțiuni de bazăîn orice limbaj de programare.

Conversia de tip este conversia unei valori (date) de la un tip la altul, cum ar fi dintr-un șir într-un număr sau invers. Un concept mai restrâns de formatare a valorii este conversia de la orice tip într-un șir cu conversie într-un formular care va fi convenabil de citit de utilizator, inclusiv localizarea.

Există limbi cu tastare puternică a datelor. Aceasta înseamnă că atunci când creează (definind) o variabilă, programatorul specifică strict ce tip de date poate stoca. La fel și cu funcțiile, parametrii de procedură etc. În metadatele 1C, tipul de detalii este strict specificat (deși există un tip compus care vă permite să specificați mai multe opțiuni). Dar în codul programului în limbajul 1C nu există o tastare strictă, ceea ce înseamnă că puteți crea o variabilă numerică, apoi o puteți echivala cu un șir. Funcția poate, în funcție de parametri și condiții, să returneze un număr, sau un boolean sau un șir.

Cum se lucrează cu tipuri de date în limba 1C și cum se convertesc tipurile 1C?

Valoarea 1C Nedefinită

Nedefinit este o valoare 1C, ceea ce înseamnă că nu există nicio valoare. Folosind această valoare 1C, puteți „zero” variabile, inclusiv pentru apelarea implicită a unui destructor, de exemplu, obiecte COM.
Variabila1 = New COMObject("Excel.Application");
Variabila1 = Nedefinit;

O valoare similară este 1C NULL, care poate fi returnată printr-o cerere atunci când se încearcă obținerea de date din baza de date, dacă nu a fost posibilă obținerea acesteia (mai precis, valoarea din câmpul NULL înseamnă că câmpul din baza de date este „ neumplut”).
Selectare = Query.Run().Select();
While Select.Next() Loop
Dacă Selection.Field1 = NULL Atunci
Continua;
endIf;
EndCycle;

Tipuri de valori 1C

Este posibil să utilizați următoarele ca „variabile”:

  • Variabile create în textul programului (folosind metodele descrise mai sus)
  • Detalii ale obiectului sau formularului de metadate (create în configurator, indicând exact tipul 1C).

Recuzitele pot avea un tip compozit 1C, adică mai multe posibile. Atribuirea valorii 1C de către utilizator în acest caz poate fi un proces în doi pași:

  • Selectarea unui tip de valoare 1C dintre cele disponibile
  • Selectarea valorii 1C.

În mod implicit, acest atribut are valoarea 1C Nedefinit. Când este selectat tipul 1C, dar valoarea 1C nu a fost încă selectată, valoarea goală a acestui tip 1C (0 pentru un număr, o legătură goală pentru tipurile de referință 1C, vezi mai jos). Și în cele din urmă – valoarea 1C. Din program, valorile sunt atribuite direct, fără selecție intermediară de tip 1C.

Este posibil să se determine tipul valorii 1C în mai multe moduri:
//metoda 1 – comparație cu tipurile 1C cunoscute
Variabila1 = 12;
Dacă TypeValue(Variable1) = Type(„Număr”), atunci
//…
OtherwiseIf TypeValue(Variable1) = Type("DirectoryLink.DirectoryName") Atunci
//…
endIf;

Conversia tipurilor 1C

Valoarea 1C a tipurilor simple 1C poate fi convertită folosind operatorul - numele tipului 1C:
//la numere
ValueNumber = Number("22"); //dacă este imposibil să convertiți tipurile 1C, va fi generată o eroare, deci este mai bine să utilizați un handler de erori (vezi mai jos)

//la linie
ValueString = String(22);
ValueString = AbbrLP(22);
ValueString = Format(22, "CHG=0");

//la întălnire
ValueDate = Data("20120101120000"); //01.01.2012 12:00:00
ValueDate = Data(2012, 01, 01, 12, 0, 0);
ValueDate = Data(2012, 01, 01);

Conversia tipurilor 1C - valori ale tipurilor complexe 1C

Formatarea valorilor 1C

Pentru a specifica formatul exact, se folosește funcția Format(), cu ajutorul căreia se poate specifica reprezentarea necesară.
NumberString = Format(2400, „Setări”)

În linia „Setări”, trebuie să specificați formatul 1C necesar. Astfel de setări sunt indicate într-o formă specială codificată. Să ne uităm la setările cele mai frecvent utilizate:

Format 1C de date și numere conform regulilor diferitelor țări
Dacă trebuie să afișați o dată sau un număr și nu doriți să vă deranjați să știți cum ar trebui să fie prezentate conform regulilor țării dorite, există cea mai simplă configurare care vă va permite să faceți acest lucru:
L = Numele scurt al țării dorite

Un exemplu de ieșire a datei conform regulilor unor țări:
Format(CurrentDate(), „L=ru”)
> 28.03.2012 14:21:32
Format(CurrentDate(), "L=en")
> 28.03.2012 14.21.24
Format(CurrentDate(), "L=fr")
> 28/03/2012 14:22:08

Format de dată în limbajul 1C
Dacă setarea implicită nu este suficientă pentru dvs. și doriți să specificați în mod independent ordinea părților date și simbolurile pentru separarea lor, trebuie să utilizați setarea:
DF = „dmg chms”

În consecință, „dmg” este ziua, luna și anul, iar „chms” este orele, minutele și secundele. Este posibil să săriți peste oricare dintre aceste părți. Ordinul este oricare. Caracterele specificate între părți vor fi folosite ca caractere de separare.

Data simbolului piesei m.b. este indicat de mai multe ori la rând, tipul acestei părți a datei depinde de aceasta, de exemplu „d” sau „dd” sau „dddd”.

Explicația părților date:

  • d – zi
    o „d” mic
    o de la 1 la 4 ori
  • L – luna
    o „M” mare
    o de la 1 la 4 ori
  • g – an
    o „g” mic
    o 1 sau 2 sau 4 ori
  • h – ore
    o „h” mic - format de 12 ore
    o „H” mare - format de 24 de ore
    o de 1 sau 2 ori
  • m – minute
    o „m” mic
    o de 1 sau 2 ori
  • s – secunde
    o „s” mic
    o de 1 sau 2 ori
  • bb – afișați AM/PM pentru formatul de 12 ore
  • k – sfert.

Un exemplu de afișare a unei date care indică regulile:

Format de număr în limba 1C
Spre deosebire de formatarea unei date, unde totul este destul de simplu, formatarea unui număr are multe opțiuni. Iată cele care sunt cele mai des folosite.

Prima „problemă” este legată de gruparea implicită a cifrelor în numere cu 3 și separarea grupurilor cu un spațiu, de exemplu:
StrNumber = șir (22300500)
> 22 300 500

Acest lucru este incomod atunci când un număr este convertit într-un șir nu pentru rezultate frumoase și ușor de înțeles pentru utilizator, ci pentru nevoile de service. Acest lucru poate fi influențat folosind parametrul „CHG”, de exemplu:

Un parametru care vă permite să rotunjiți un număr atunci când scoateți numărul necesar de cifre după punctul zecimal „NFR”:
Format(3.535353, "BDT=""2""")
> 3,54

Un parametru care vă permite să specificați caracterul separator dintre părțile întregi și fracționale ale „BRD”:
Format(3.535353, "BRD="".""")
> 3.535353

În unele cazuri, poate fi util să poți afișa altceva în loc de numărul „0”: un șir gol sau „necompletat”. Acest lucru vă permite să faceți parametrul „CHN”:
Format(0, "CHN=""""")

Atenţie! Aceasta este o versiune introductivă a lecției, ale cărei materiale pot fi incomplete.

Conectați-vă la site ca student

Conectați-vă ca student pentru a accesa materialele școlare

Limbajul de interogare 1C 8.3 pentru programatori începători: funcții și operatori pentru lucrul cu tipuri (VALUE TYPE, TYPE, REFERENCE, ISNULL, EXPRESS)

Să ne amintim că fiecare atribut (proprietate, câmp) al unui director, document sau orice alt obiect aplicație are propriul său tip. Și ne putem uita la acest tip în configurator:

În limbajul de interogare, există o întreagă clasă de funcții și operatori pentru lucrul cu tipuri de detalii. Să ne uităm la ele.

Funcția VALUE TYPE

Această funcție preia un parametru (valoare) și returnează tipul acestuia. Pentru recuzita descrisă în imagine (mai sus) Gust director Alimente vor fi returnate următoarele:

Acum să ne uităm la recuzită Trăsătură distinctivă la director Orase:

Vedeți că această recuzită poate fi una din mai multe tipuri: Linia, Director.Gusturi, Director.Culori. Acest tip de detalii se numește COMPOSIT.

Dacă încercăm să completăm valoarea unui astfel de detaliu în modul 1C:Enterprise, sistemul ne va întreba ce tip de valoare va fi introdusă:

Și numai după selecția noastră ne va permite să introducem valoarea tipului selectat.

Astfel, elemente de director de același tip ( Director.Orase) va putea stoca în același atribut ( Trăsătură distinctivă) valori tipuri diferite(Șnur, Culori sau Arome).

Puteți vedea acest lucru singur făcând clic pe elementele directorului Oraseîn 1C:mod Enterprise. Citiți o versiune de probă a lecției, sunt disponibile lecții complete.

Aici valoarea caracteristică distinctivă este un element de director Arome:

Iată linia:

Și aici este, în general, un element al cărții de referință Culori:

Acestea sunt posibilitățile pe care ni le deschide un tip de date compus!

Mă întreb cum se va comporta funcția VALORI DE TIP pe recuzită Element distinctiv, având un tip de date compus:

Acest lucru este deja foarte interesant. Să ne uităm la fiecare linie individual.

Tipul de valoare a trăsăturii distinctive pentru elementul este egal cu Rusia NUL. Este prima dată când întâlnim acest tip. Valori de acest tip sunt utilizate numai pentru a determina valoarea lipsă atunci când lucrați cu baza de date.

Acest lucru este adevărat, deoarece elementul Rusia este un grup și nu un element de director obișnuit Orase, deci nu are câmp Trăsătură distinctivă. Iar tipul unei valori lipsă, după cum citim mai sus, este întotdeauna egal cu NUL.

Tipul de valoare a caracteristicii distinctive pentru Perm este egal cu Arome. Acest lucru este adevărat, deoarece valoarea caracteristicii distinctive introduse în baza de date pentru orașul Perm este o legătură către elementul director Arome.

Pentru Krasnoyarsk, tipul de atribut este egal cu Culori, deoarece valoarea selectată în baza de date este o legătură către un element de director Culori.

Pentru Voronezh, tipul de atribut este egal cu Linia, deoarece valoarea introdusă în baza de date este un șir obișnuit.

India este din nou un grup, deci nu are nicio semnificație. Și tipul valorii lipsă, după cum ne amintim, este egal cu NUL.

Iată chestia. Dacă mergeți la elementul director Orase cu nume Sao Paulo, atunci vei vedea că câmpul Trăsătură distinctivă deloc completat. E gol. A toate câmpurile goale de tip compus au o semnificație specială NEDEFINIT .

CU NEDEFINIT ne întâlnim și noi pentru prima dată. Sens NEDEFINIT folosit atunci când este necesar să se utilizeze o valoare goală care nu aparține niciunui alt tip. Aceasta este exact situația noastră. Și tipul valorii NEDEFINIT, după cum probabil ați ghicit deja, este egal cu NUL.

Funcție TIP

Este nevoie de un singur parametru - numele tipului primitiv ( LINIA, NUMĂR, DATA, BOOLEAN), sau numele tabelului al cărui tip de link doriți să obțineți.

Rezultatul acestui construct va fi o valoare de tip Type pentru tipul specificat.

Sună vag, nu-i așa?

Să ne uităm la aplicarea acestui design și totul va cădea imediat la loc.

Să presupunem că trebuie să selectăm toate intrările din director Orase, care au recuzită compozită Trăsătură distinctivă are o valoare de tip LINIA:

Acum să selectăm toate înregistrările care au valori de atribut Trăsătură distinctivă sunt legături către elemente de director Culori(masa Director.Culori):

Retragere

După cum vă amintiți, câteva elemente ale directorului Orase nu au recuzită Trăsătură distinctivă. Funcţie VALORI DE TIP pentru astfel de elemente pe care le produce NUL.

Cum puteți selecta astfel de elemente într-o interogare? Pentru aceasta este prevăzut un operator logic special ESTE NUL(a nu se confunda cu funcția ISNULL, pe care ne vom uita mai jos). Citiți o versiune de probă a lecției, sunt disponibile lecții complete.

Iată un exemplu de utilizare a acestuia:

Grozav. Dar ați observat că nu există niciun element din Sao Paulo, tipul valorii de recuzită Trăsătură distinctivă pe care l-a dat și el NUL. De ce s-a întâmplat?

Dar chestia este că situația pentru grupuri (Rusia, India, Brazilia), pentru care completarea detaliilor Trăsătură distinctivă imposibil în principiu, deoarece nu o au deloc, diferă de situația pentru elementul Sao Paulo, pentru care este posibilă completarea recuzitei, dar pur și simplu nu este completată și este egală, după cum ne amintim, cu o valoare deosebită NEDEFINIT.

Pentru a selecta toate înregistrările care au cerințele Trăsătură distinctivă prezent, dar nu umplut, ar trebui folosită o construcție diferită:

Dar compararea cu UNDEFINED pentru a determina atributele goale (necompletate) va funcționa numai pentru tipurile compuse.

Apropo, operatorul logic IS NULL are o formă de negație care arată astfel:

Operator logic LINK

De exemplu, să selectăm din director Orase numai acele înregistrări care au valoarea unui atribut compus Trăsătură distinctivă sunt un link către un element de director Arome:

După cum vă amintiți, am putea rezolva aceeași problemă folosind VALORI DE TIPȘi TIP:

Funcția ISNULL

Funcția este concepută pentru a înlocui o valoare NUL la un alt sens.

Ne amintim că sensul NUL returnat dacă atributul solicitat (câmp, proprietate) nu există.

De exemplu, recuzită Trăsătură distinctivă pentru grupuri de directoare Orase:

Funcţie ISNULL ne va ajuta să scoatem o valoare diferită dacă această valoare este egală cu NUL. Citiți o versiune de probă a lecției, sunt disponibile lecții complete. Să fie în acest caz linia „Nu există o astfel de recuzită!”:

Se pare că dacă primul parametru al funcției ISNULL nu este egal NUL, apoi se întoarce. Dacă este NULL, atunci este returnat al doilea parametru.

Funcția EXPRESS

Această funcție este numai pentru câmpurile care au un tip compus. Un exemplu excelent al unui astfel de domeniu este proprietatea Trăsătură distinctivă pentru elementele directorului Orase.

După cum ne amintim, câmpurile compuse pot fi unul dintre mai multe tipuri specificate în configurator.

Pentru câmp Trăsătură distinctivă astfel de tipuri valide sunt LINIA, Director.CuloriȘi Director.Gusturi.

Uneori devine necesar să turnați valorile unui câmp compus la un anumit tip.

Să enumerăm toate valorile câmpului Trăsătură distinctivă a tasta Referință.Culori:

Ca rezultat, toate valorile elementelor care au fost de tip Director.Culori, au rămas umplute și au fost convertite la tipul specificat. Toate valorile de alte tipuri ( LINIA, Director.Gusturi) sunt acum egale NUL. Aceasta este particularitatea turnării tipului folosind funcția EXPRES.

Puteți arunca un tip fie într-un tip primitiv ( BOOLEAN, NUMĂR, LINIA, DATA) sau la un tip de referință. Citiți o versiune de probă a lecției, sunt disponibile lecții complete. Dar tipul la care se face turnarea trebuie inclus în lista de tipuri pentru acest câmp compozit, altfel sistemul va arunca o eroare.

A lua testul

Începeți testul

1. Alegeți afirmația cea mai corectă

2. Sunt numite detalii care pot lua valori de unul dintre mai multe tipuri

3. Pentru a determina tipul valorii atributului, utilizați funcția

4. Detaliile goale ale unui tip compozit sunt importante