Câmpuri calculate în SKD. Limbajul de expresie al sistemului de compunere a datelor (1Cv8)

Bună, dragă cititor! Avem o altă lecție despre elementele de bază ale sistemului de layout. Te-ai familiarizat cu funcțiile limbajului de expresie SKD, ai văzut caracteristicile sistemului de aspect și, de asemenea, ai înțeles setările de bază ale câmpurilor de aspect. Acum ne vom uita la material nou. Merge!

Setări suplimentare pentru câmpurile ACS.

Coloană "Tipul valorii" Vă permite să specificați tipul de date pentru câmpul de aspect. De ce să specificați tipul, de exemplu, pentru câmpul „Nomenclatură”, dacă știți deja ce tip este? Acest lucru este necesar dacă câmpul de aspect este de tip compus. Puteți selecta un anumit tip, apoi atunci când selectați prin acest câmp, valorile de acest tip vor fi selectate.

Coloană „Valori disponibile” vă permite să specificați valorile disponibile pentru selecție și să limitați alegerea utilizatorului la anumite limite.

Coloană "Decor" vă permite să specificați designul unui câmp de aspect fără a utiliza machete. Puteți specifica culoarea fontului, culoarea cadrului, orientarea textului etc.

Coloană „Opțiuni de editare” Vă permite să specificați cum să editați câmpul de aspect. De exemplu, puteți specifica o selecție rapidă de elemente dintr-o listă dintr-o selecție. În mod implicit, un câmp de aspect moștenește toate opțiunile de editare din obiectul de metadate.

Câmpuri calculate

În fila „Câmpuri calculate” a compoziției datelor, vă puteți crea propriile câmpuri calculate.

De ce aveți nevoie de câmpuri calculate când le puteți crea la nivel de interogare? Nu toate câmpurile pot fi descrise folosind o interogare. Dacă trebuie să creați un câmp complex din diferite seturi de date, de exemplu, o interogare și un obiect, atunci nu puteți face fără câmpuri calculate. Nu puteți adăuga un câmp de compoziție a datelor dacă sursa de date este o interogare și completarea automată este activată, dar folosind câmpuri calculate puteți adăuga câte câmpuri doriți.

În coloana „Expresie” a câmpului calculat, trebuie să scrieți o expresie arbitrară care utilizează câmpurile de compoziție a datelor, accesând calea acestora (coloana „Cale” din fila „Seturi de date”). Fie puteți utiliza funcții de transformare matematică, fie puteți accesa funcțiile modulelor comune. De exemplu, să scriem în coloana „Calea datelor” numele câmpului calculat „Abatere”, iar în câmpul „Expresie” următoarele.

În lumina viitoarei lansări a 8.2.14, voi încerca să descriu câteva funcții noi ale sistemului de compunere a datelor.

Deschideți diagrama aspectului datelor, de preferință într-un raport extern, pentru a facilita editarea.

Adăugăm un set de date de tipul de interogare și scriem, fie manual, fie folosind designerul de interogări, o interogare simplă:

1. Configurați o solicitare în sistemul de control acces.

2. Configurați câmpuri calculate în sistemul de control acces

3. Configurați aspectul datelor în fila de setări

4. Lansați 1C Enterprise 8.2.14. Deschideți raportul. Formăm, primim.

Descrierea noilor funcții în sine:

1. data curentă ()

Returnează data sistemului. Când se compune un aspect de aspect, în toate expresiile care sunt prezente în aspect, funcția CurrentDate() este înlocuită cu valoarea datei curente.

2. COMPUTEEXPRESSION()

Sintaxă:

CalculateExpression(,)

Descriere:

Funcția este concepută pentru a evalua o expresie în contextul unei grupări.

Funcția ia în considerare selecția grupărilor, dar nu ia în considerare selecțiile ierarhice.

Funcția nu poate fi aplicată unei grupări din selecția grupului respectiv. De exemplu, la selectarea grupării Nomenclatură, nu puteți utiliza expresia CalculateExpression(„Suma(Suma Cifra de afaceri)”, „TotalTotal”) > 1000. Dar o astfel de expresie poate fi folosită în selecția ierarhică.

Dacă înregistrarea finală precede înregistrarea de început, atunci se consideră că nu există înregistrări pentru calcularea datelor detaliate și calcularea funcțiilor agregate.

Când se calculează expresii de interval pentru un total general (parametrul Grupare este setat la GrandTotal), se presupune că nu există înregistrări pentru calcularea datelor detaliate și calcularea funcțiilor agregate.

Linker de aspect la generarea unei expresii de funcție CalculateExpression, dacă expresia de ordonare conține câmpuri care nu pot fi utilizate în grupare, înlocuiește funcția CalculateExpression pe NUL.

Opțiuni

Tip: Linia. Expresia de evaluat.

Tip: Linia. Conține numele grupării în contextul căreia expresia urmează să fie evaluată. Dacă un șir gol este folosit ca nume de grupare, calculul va fi efectuat în contextul grupării curente. Dacă șirul GeneralTotal este folosit ca nume de grup, calculul va fi efectuat în contextul totalului general. În caz contrar, calculul va fi efectuat în contextul grupului părinte cu același nume.

De exemplu:

Sumă(Vânzări.Suma Cifra de afaceri)/Calculați(„Suma(Vânzări.Suma Cifra de afaceri)”, „Total”)

În acest exemplu, rezultatul va fi raportul sumei după câmp Vânzări.Suma Cifra de afaceri gruparea înregistrărilor la suma aceluiași câmp în întregul aspect;

Tip: Linia. Parametrul poate lua următoarele valori:

· Total general— expresia va fi calculată pentru toate înregistrările de grupare.

· Ierarhie— expresia va fi evaluată pentru înregistrarea ierarhică părinte, dacă există, și pentru întreaga grupare, dacă nu există înregistrare ierarhică părinte.

· Gruparea— expresia va fi evaluată pentru înregistrarea curentă de grupare a grupului.

· GroupingNonResource— la calcularea unei funcții pentru o înregistrare de grup pe resurse, expresia va fi calculată pentru prima înregistrare de grup a grupării inițiale.

Când se calculează o funcție CalculateExpression() cu sens GroupingNonResource pentru înregistrările de grup care nu sunt grupate pe resurse, funcția este calculată în același mod în care ar fi calculată dacă valoarea parametrului ar fi egală cu valoarea Gruparea.

Generatorul de aspect al compoziției de date, atunci când generează un aspect al compoziției de date la ieșirea unui câmp de resurse prin care se realizează gruparea în aspect, plasează o expresie în aspect care este calculată utilizând funcția CalculateExpression() , indicând parametrul GroupingNonResource. Pentru alte resurse, expresiile obișnuite de resurse sunt plasate în gruparea de resurse.

Tip: Linia. Indică din ce înregistrare ar trebui să înceapă fragmentul, în care funcțiile de expresie agregată trebuie calculate și din ce înregistrare să se obțină valorile câmpului în afara funcțiilor agregate. Valoarea poate fi una dintre următoarele:

· Primul

· Ultimul (Ultimul)

· Anterior

· Următorul (Următorul)

· Actual

· LimitingValue(Valoare limită) LimitingValue

Tip: Linia. Indică în ce înregistrare trebuie continuat fragmentul, în care trebuie calculate funcțiile agregate ale expresiei. Valoarea poate fi una dintre următoarele:

· Primul. Este necesar să se obțină prima înregistrare de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca decalaj de la începutul grupării. Valoarea rezultată trebuie să fie un număr întreg mai mare decât zero. De exemplu, First(3) - primirea a treia înregistrare de la începutul grupării.

Dacă prima înregistrare este în afara grupării, atunci se consideră că nu există înregistrări. De exemplu, dacă există 3 înregistrări și doriți să obțineți First(4), atunci se consideră că nu există înregistrări.

· Ultimul (Ultimul). Trebuie să obțineți ultima înregistrare de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca decalaj față de sfârșitul grupării. Valoarea rezultată trebuie să fie un număr întreg mai mare decât zero. De exemplu, Last(3) - primirea a treia înregistrare de la sfârșitul grupului.

Dacă ultima înregistrare este în afara grupării, atunci se consideră că nu există înregistrări. De exemplu, dacă există 3 înregistrări și doriți să obțineți Last(4), atunci se consideră că nu există înregistrări.

· Anterior. Trebuie să obțineți înregistrarea anterioară de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca o compensare față de înregistrarea de grupare curentă. De exemplu, Previous(2) - obținerea precedentului din înregistrarea anterioară.

Dacă înregistrarea anterioară depășește gruparea (de exemplu, pentru a doua înregistrare de grupare trebuie să obțineți Previous(3)), atunci se obține prima înregistrare de grupare.

La preluarea înregistrării anterioare pentru un total de grupare, se consideră că se obține prima înregistrare.

· Următorul (Următorul). Trebuie să obțineți următoarea înregistrare de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca o compensare înainte de înregistrarea de grupare curentă. De exemplu, Next(2) - obținerea următoarei din următoarea înregistrare.

Dacă următoarea înregistrare depășește gruparea, atunci se consideră că nu există înregistrări. De exemplu, dacă există 3 intrări și a treia intrare primește Next() , atunci se consideră că nu există intrări.

Când se primește următoarea înregistrare pentru totalul grupării, se consideră că nu există nicio înregistrare.

· Actual. Trebuie să obțineți înregistrarea curentă.

La preluarea pentru un total de grupare, se obține prima înregistrare.

· LimitingValue(Valoare limită). Necesitatea de a obține o înregistrare după valoarea specificată. După cuvânt LimitingValueîntre paranteze trebuie să indicați expresia cu valoarea căreia doriți să începeți fragmentul, primul câmp de ordonare.

Prima înregistrare a cărei valoare a câmpului de ordonare este mai mare sau egală cu valoarea specificată va fi returnată ca înregistrare. De exemplu, dacă câmpul Perioadă este folosit ca câmp de comandă și are valorile 01/01/2010, 02/01/2010, 03/01/2010 și doriți să obțineți LimitingValue(DateTime(2010, 1, 15)), apoi se va primi o înregistrare cu data 02/01/2010.

Tip: Linia. Listează expresii, separate prin virgule, care descriu regulile de ordonare. Dacă nu este specificat, atunci ordonarea se realizează în același mod ca și pentru gruparea pentru care este evaluată expresia. După fiecare expresie puteți specifica un cuvânt cheie Vârstă(pentru a comanda în ordine crescătoare), Descendentă(pentru ordonarea în ordine descrescătoare) și Comanda automată(pentru a ordona câmpurile de referință după câmpurile după care doriți să ordonați obiectul referit). Cuvânt Comanda automată poate fi folosit ca și cu cuvântul Vârstă, deci cu cuvântul Descendentă.

Tip: Linia. La fel ca parametrul Triere. Folosit pentru organizarea înregistrărilor ierarhice. Dacă nu este specificat, constructorul de layout generează comanda conform ordinii specificate în parametru Triere.

Tip: Linia. Specifică regula pentru determinarea înregistrării anterioare sau următoare în cazul în care există mai multe înregistrări cu aceeași valoare de ordonare:

· Separat indică faptul că o secvență de înregistrări ordonate este utilizată pentru a determina înregistrările anterioare și următoare. Valoare implicită.

· Împreună indică faptul că înregistrările anterioare și următoare sunt determinate pe baza valorilor expresiilor de ordonare.

De exemplu, dacă secvența rezultată este ordonată după dată:

Data Numele complet Sens
1 01 ianuarie 2001

Ivanov M.

10
2 02 ianuarie 2001 Petrov S. 20
3 03 ianuarie 2001 Sidorov R. 30
4 04 ianuarie 2001 Petrov S. 40

Separat, Acea:

§ intrarea anterioară la intrarea 3 va fi intrarea 2.

Curent, curent(în consecință, parametrii startȘi Sfârşit), atunci pentru înregistrarea 2 acest fragment va consta dintr-o înregistrare 2. Expresia va fi egală cu 20.

Dacă valoarea parametrului este Împreună, Acea:

§ intrarea anterioară la intrarea 3 va fi intrarea 1.

§ daca fragmentul de calcul este definit ca Curent, curent(în consecință, parametrii startȘi Sfârşit), atunci pentru înregistrarea 2 acest fragment va fi format din înregistrările 2 și 3. Expresie CalculateExpression(„Suma(Valoare)”, Current, Current) va fi egal cu 50.

Când se specifică o valoare a parametrului egală cu Împreună, în parametri startȘi Sfârşit nu puteți specifica un decalaj pentru poziții Primul, Ultimul, Anterior, Următorul.

CalculateExpression(„Suma(Suma Cifra de afaceri)”, „Primul”, „Actual”)

Dacă doriți să obțineți valoarea de grupare în linia anterioară, puteți utiliza următoarea expresie:

CalculateExpression(„Rata”, „Anterior”)

Listă nou functii:

CalculateExpressionWithGroupArray(,) -

Funcția returnează un tablou, fiecare element al căruia conține rezultatul evaluării unei expresii pentru grupare după câmpul specificat.

CalculateExpressionWithGroupValueTable(,) -

Funcția returnează un tabel de valori, fiecare rând conține rezultatul evaluării expresiilor pentru gruparea după câmpul specificat

ValueFilled() - Returnează True dacă valoarea este alta decât valoarea implicită a acestui tip, alta decât NULL, alta decât o referință goală, alta decât Undefined. Valorile booleene sunt verificate pentru valori NULL. Șirurile sunt verificate pentru absența caracterelor care nu includ spații albe

Format(, ) - Primește un șir formatat al valorii transmise. Șirul de format este setat în conformitate cu șirul de format al sistemului 1C:Enterprise.

Subșir(, , ) - Această funcție este concepută pentru a extrage un subșir dintr-un șir.

Lungimea liniei() - Funcția este concepută pentru a determina lungimea unui șir. Parametrul este o expresie șir

Linia() - Dacă o matrice este transmisă ca parametru, funcția returnează un șir care conține reprezentări șir ale tuturor elementelor matricei, separate prin caractere "; ". Dacă un tabel de valori este transmis ca parametru, funcția returnează un șir care conține reprezentări șir ale tuturor rândurilor din tabelul de valori, cu reprezentările celulelor fiecărui rând separate prin caractere „;” și rândurile printr-o linie nouă caracter. Dacă reprezentarea șirului unui element este goală, atunci este afișat un șir în loc de reprezentarea acestuia.

În lumina viitoarei lansări a 8.2.14, voi încerca să descriu câteva funcții noi ale sistemului de compunere a datelor.

Deschideți diagrama aspectului datelor, de preferință într-un raport extern, pentru a facilita editarea.

Adăugăm un set de date de tipul de interogare și scriem, fie manual, fie folosind designerul de interogări, o interogare simplă:

1. Configurați o solicitare în sistemul de control acces.

2. Configurați câmpuri calculate în sistemul de control acces

3. Configurați aspectul datelor în fila de setări

4. Lansați 1C Enterprise 8.2.14. Deschideți raportul. Formăm, primim.

Descrierea noilor funcții în sine:

1. data curentă ()

Returnează data sistemului. Când se compune un aspect de aspect, în toate expresiile care sunt prezente în aspect, funcția CurrentDate() este înlocuită cu valoarea datei curente.

2. COMPUTEEXPRESSION()

Sintaxă:

CalculateExpression(,)

Descriere:

Funcția este concepută pentru a evalua o expresie în contextul unei grupări.

Funcția ia în considerare selecția grupărilor, dar nu ia în considerare selecțiile ierarhice.

Funcția nu poate fi aplicată unei grupări din selecția grupului respectiv. De exemplu, la selectarea grupării Nomenclatură, nu puteți utiliza expresia CalculateExpression(„Suma(Suma Cifra de afaceri)”, „TotalTotal”) > 1000. Dar o astfel de expresie poate fi folosită în selecția ierarhică.

Dacă înregistrarea finală precede înregistrarea de început, atunci se consideră că nu există înregistrări pentru calcularea datelor detaliate și calcularea funcțiilor agregate.

Când se calculează expresii de interval pentru un total general (parametrul Grupare este setat la GrandTotal), se presupune că nu există înregistrări pentru calcularea datelor detaliate și calcularea funcțiilor agregate.

Linker de aspect la generarea unei expresii de funcție CalculateExpression, dacă expresia de ordonare conține câmpuri care nu pot fi utilizate în grupare, înlocuiește funcția CalculateExpression pe NUL.

Opțiuni

Tip: Linia. Expresia de evaluat.

Tip: Linia. Conține numele grupării în contextul căreia expresia urmează să fie evaluată. Dacă un șir gol este folosit ca nume de grupare, calculul va fi efectuat în contextul grupării curente. Dacă șirul GeneralTotal este folosit ca nume de grup, calculul va fi efectuat în contextul totalului general. În caz contrar, calculul va fi efectuat în contextul grupului părinte cu același nume.

De exemplu:

Sumă(Vânzări.Suma Cifra de afaceri)/Calculați(„Suma(Vânzări.Suma Cifra de afaceri)”, „Total”)

În acest exemplu, rezultatul va fi raportul sumei după câmp Vânzări.Suma Cifra de afaceri gruparea înregistrărilor la suma aceluiași câmp în întregul aspect;

Tip: Linia. Parametrul poate lua următoarele valori:

· Total general— expresia va fi calculată pentru toate înregistrările de grupare.

· Ierarhie— expresia va fi evaluată pentru înregistrarea ierarhică părinte, dacă există, și pentru întreaga grupare, dacă nu există înregistrare ierarhică părinte.

· Gruparea— expresia va fi evaluată pentru înregistrarea curentă de grupare a grupului.

· GroupingNonResource— la calcularea unei funcții pentru o înregistrare de grup pe resurse, expresia va fi calculată pentru prima înregistrare de grup a grupării inițiale.

Când se calculează o funcție CalculateExpression() cu sens GroupingNonResource pentru înregistrările de grup care nu sunt grupate pe resurse, funcția este calculată în același mod în care ar fi calculată dacă valoarea parametrului ar fi egală cu valoarea Gruparea.

Generatorul de aspect al compoziției de date, atunci când generează un aspect al compoziției de date la ieșirea unui câmp de resurse prin care se realizează gruparea în aspect, plasează o expresie în aspect care este calculată utilizând funcția CalculateExpression() , indicând parametrul GroupingNonResource. Pentru alte resurse, expresiile obișnuite de resurse sunt plasate în gruparea de resurse.

Tip: Linia. Indică din ce înregistrare ar trebui să înceapă fragmentul, în care funcțiile de expresie agregată trebuie calculate și din ce înregistrare să se obțină valorile câmpului în afara funcțiilor agregate. Valoarea poate fi una dintre următoarele:

· Primul

· Ultimul (Ultimul)

· Anterior

· Următorul (Următorul)

· Actual

· LimitingValue(Valoare limită) LimitingValue

Tip: Linia. Indică în ce înregistrare trebuie continuat fragmentul, în care trebuie calculate funcțiile agregate ale expresiei. Valoarea poate fi una dintre următoarele:

· Primul. Este necesar să se obțină prima înregistrare de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca decalaj de la începutul grupării. Valoarea rezultată trebuie să fie un număr întreg mai mare decât zero. De exemplu, First(3) - primirea a treia înregistrare de la începutul grupării.

Dacă prima înregistrare este în afara grupării, atunci se consideră că nu există înregistrări. De exemplu, dacă există 3 înregistrări și doriți să obțineți First(4), atunci se consideră că nu există înregistrări.

· Ultimul (Ultimul). Trebuie să obțineți ultima înregistrare de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca decalaj față de sfârșitul grupării. Valoarea rezultată trebuie să fie un număr întreg mai mare decât zero. De exemplu, Last(3) - primirea a treia înregistrare de la sfârșitul grupului.

Dacă ultima înregistrare este în afara grupării, atunci se consideră că nu există înregistrări. De exemplu, dacă există 3 înregistrări și doriți să obțineți Last(4), atunci se consideră că nu există înregistrări.

· Anterior. Trebuie să obțineți înregistrarea anterioară de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca o compensare față de înregistrarea de grupare curentă. De exemplu, Previous(2) - obținerea precedentului din înregistrarea anterioară.

Dacă înregistrarea anterioară depășește gruparea (de exemplu, pentru a doua înregistrare de grupare trebuie să obțineți Previous(3)), atunci se obține prima înregistrare de grupare.

La preluarea înregistrării anterioare pentru un total de grupare, se consideră că se obține prima înregistrare.

· Următorul (Următorul). Trebuie să obțineți următoarea înregistrare de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca o compensare înainte de înregistrarea de grupare curentă. De exemplu, Next(2) - obținerea următoarei din următoarea înregistrare.

Dacă următoarea înregistrare depășește gruparea, atunci se consideră că nu există înregistrări. De exemplu, dacă există 3 intrări și a treia intrare primește Next() , atunci se consideră că nu există intrări.

Când se primește următoarea înregistrare pentru totalul grupării, se consideră că nu există nicio înregistrare.

· Actual. Trebuie să obțineți înregistrarea curentă.

La preluarea pentru un total de grupare, se obține prima înregistrare.

· LimitingValue(Valoare limită). Necesitatea de a obține o înregistrare după valoarea specificată. După cuvânt LimitingValueîntre paranteze trebuie să indicați expresia cu valoarea căreia doriți să începeți fragmentul, primul câmp de ordonare.

Prima înregistrare a cărei valoare a câmpului de ordonare este mai mare sau egală cu valoarea specificată va fi returnată ca înregistrare. De exemplu, dacă câmpul Perioadă este folosit ca câmp de comandă și are valorile 01/01/2010, 02/01/2010, 03/01/2010 și doriți să obțineți LimitingValue(DateTime(2010, 1, 15)), apoi se va primi o înregistrare cu data 02/01/2010.

Tip: Linia. Listează expresii, separate prin virgule, care descriu regulile de ordonare. Dacă nu este specificat, atunci ordonarea se realizează în același mod ca și pentru gruparea pentru care este evaluată expresia. După fiecare expresie puteți specifica un cuvânt cheie Vârstă(pentru a comanda în ordine crescătoare), Descendentă(pentru ordonarea în ordine descrescătoare) și Comanda automată(pentru a ordona câmpurile de referință după câmpurile după care doriți să ordonați obiectul referit). Cuvânt Comanda automată poate fi folosit ca și cu cuvântul Vârstă, deci cu cuvântul Descendentă.

Tip: Linia. La fel ca parametrul Triere. Folosit pentru organizarea înregistrărilor ierarhice. Dacă nu este specificat, constructorul de layout generează comanda conform ordinii specificate în parametru Triere.

Tip: Linia. Specifică regula pentru determinarea înregistrării anterioare sau următoare în cazul în care există mai multe înregistrări cu aceeași valoare de ordonare:

· Separat indică faptul că o secvență de înregistrări ordonate este utilizată pentru a determina înregistrările anterioare și următoare. Valoare implicită.

· Împreună indică faptul că înregistrările anterioare și următoare sunt determinate pe baza valorilor expresiilor de ordonare.

De exemplu, dacă secvența rezultată este ordonată după dată:

Data Numele complet Sens
1 01 ianuarie 2001

Ivanov M.

10
2 02 ianuarie 2001 Petrov S. 20
3 03 ianuarie 2001 Sidorov R. 30
4 04 ianuarie 2001 Petrov S. 40

Separat, Acea:

§ intrarea anterioară la intrarea 3 va fi intrarea 2.

Curent, curent(în consecință, parametrii startȘi Sfârşit), atunci pentru înregistrarea 2 acest fragment va consta dintr-o înregistrare 2. Expresia va fi egală cu 20.

Dacă valoarea parametrului este Împreună, Acea:

§ intrarea anterioară la intrarea 3 va fi intrarea 1.

§ daca fragmentul de calcul este definit ca Curent, curent(în consecință, parametrii startȘi Sfârşit), atunci pentru înregistrarea 2 acest fragment va fi format din înregistrările 2 și 3. Expresie CalculateExpression(„Suma(Valoare)”, Current, Current) va fi egal cu 50.

Când se specifică o valoare a parametrului egală cu Împreună, în parametri startȘi Sfârşit nu puteți specifica un decalaj pentru poziții Primul, Ultimul, Anterior, Următorul.

CalculateExpression(„Suma(Suma Cifra de afaceri)”, „Primul”, „Actual”)

Dacă doriți să obțineți valoarea de grupare în linia anterioară, puteți utiliza următoarea expresie:

CalculateExpression(„Rata”, „Anterior”)

Listă nou functii:

CalculateExpressionWithGroupArray(,) -

Funcția returnează un tablou, fiecare element al căruia conține rezultatul evaluării unei expresii pentru grupare după câmpul specificat.

CalculateExpressionWithGroupValueTable(,) -

Funcția returnează un tabel de valori, fiecare rând conține rezultatul evaluării expresiilor pentru gruparea după câmpul specificat

ValueFilled() - Returnează True dacă valoarea este alta decât valoarea implicită a acestui tip, alta decât NULL, alta decât o referință goală, alta decât Undefined. Valorile booleene sunt verificate pentru valori NULL. Șirurile sunt verificate pentru absența caracterelor care nu includ spații albe

Format(, ) - Primește un șir formatat al valorii transmise. Șirul de format este setat în conformitate cu șirul de format al sistemului 1C:Enterprise.

Subșir(, , ) - Această funcție este concepută pentru a extrage un subșir dintr-un șir.

Lungimea liniei() - Funcția este concepută pentru a determina lungimea unui șir. Parametrul este o expresie șir

Linia() - Dacă o matrice este transmisă ca parametru, funcția returnează un șir care conține reprezentări șir ale tuturor elementelor matricei, separate prin caractere "; ". Dacă un tabel de valori este transmis ca parametru, funcția returnează un șir care conține reprezentări șir ale tuturor rândurilor din tabelul de valori, cu reprezentările celulelor fiecărui rând separate prin caractere „;” și rândurile printr-o linie nouă caracter. Dacă reprezentarea șirului unui element este goală, atunci este afișat un șir în loc de reprezentarea acestuia.

1. Calculați (Evaluare)- are scopul de a evalua o expresie în contextul unei grupări. Funcția este utilizată pentru compatibilitatea cu versiunile anterioare ale platformei. Se recomandă utilizarea funcției CalculateExpression în schimb.

Sintaxă:
Calculați (expresie, grupare, tip calcul)

Opțiuni :

  • Expresie(Linia). Conține o expresie calculată;
  • Gruparea(Linia). Conține numele grupării în contextul căreia expresia urmează să fie evaluată. Dacă un șir gol este folosit ca nume de grupare, calculul va fi efectuat în contextul grupării curente. Dacă șirul GrandTotal este folosit ca nume de grup, calculul va fi efectuat în contextul totalului general. În caz contrar, calculul se va efectua în contextul grupului părinte cu același nume.
    De exemplu:
    Suma(Vânzări.Suma Cifra de afaceri) / Calculate(„Suma(Vânzări.Suma Cifra de afaceri)”, „Total”).
    În acest exemplu, rezultatul va fi raportul dintre suma pentru câmpul „Vânzări.Sumă Cifra de afaceri” din înregistrarea grupării și valoarea aceluiași câmp în întregul aspect.
  • Tipul de calcul(Linia). Dacă acest parametru este setat la „TotalTotal”, expresia va fi calculată pentru toate înregistrările de grupare. Dacă valoarea parametrului este „Grupare”, valorile vor fi calculate pentru înregistrarea curentă a grupului de grupare.
2. Evaluați expresia (EvalExpression) - are scopul de a evalua o expresie în contextul unei grupări. Funcția ia în considerare selecția grupărilor, dar nu ia în considerare selecțiile ierarhice. Funcția nu poate fi aplicată unei grupări din selecția grupului respectiv.

Sintaxă:
CalculateExpression(Expresie, Grupare, Tip calcul, Început, Sfârșit, Sortare, Sortare ierarhică, ProcesareValoriComenziIdentice)

Opțiuni :

  • Expresie(Linia). Conține o expresie calculată;
  • Gruparea(Linia). Conține numele grupării în contextul căreia expresia urmează să fie evaluată. Dacă un șir gol este folosit ca nume de grupare, calculul va fi efectuat în contextul grupării curente. Dacă șirul GrandTotal este folosit ca nume de grup, calculul va fi efectuat în contextul totalului general. În caz contrar, calculul se va efectua în contextul grupării părinte cu acel nume;
  • Tipul de calcul(Linia). Dacă acest parametru este setat la „TotalTotal”, expresia va fi calculată pentru toate înregistrările de grupare. Dacă valoarea parametrului este „Grupare”, valorile vor fi calculate pentru înregistrarea curentă a grupului de grupare. Dacă parametrul este setat la „Grupare fără resurse”, atunci când se calculează funcția pentru o înregistrare de grup după resursă, expresia va fi evaluată pentru prima înregistrare de grup a grupării originale. La evaluarea funcției CalculateExpression cu valoarea „GroupingNonResource” pentru înregistrările de grup care nu sunt grupări după resursă, funcția este evaluată în același mod în care ar fi evaluată cu valoarea parametrului „Grouping”. Generatorul de aspect al compoziției de date, atunci când generează un aspect al compoziției de date la ieșirea unui câmp - o resursă prin care se realizează gruparea, la aspect, iese în aspect o expresie calculată folosind funcția CalculateExpression cu parametrul „GroupingNon-Resource” specificat. Pentru alte resurse grupate după resursă, sunt returnate expresii normale de resurse. Dacă parametrul este setat la „Ierarhie”, atunci expresia trebuie evaluată pentru înregistrarea ierarhică părinte, dacă există una, și pentru întreaga grupare, dacă nu există înregistrare ierarhică părinte. Generatorul de aspect, când generează o expresie pentru câmpul % în grupul ierarhic, generează o expresie care conține relația expresiei resursă cu funcția CalculateExpression pentru expresia resursă calculată pentru gruparea curentă cu tipul de calcul Hierarchy.
  • start. Indică din ce înregistrare trebuie să înceapă fragmentul, în care funcțiile de expresie agregată trebuie calculate și din ce înregistrare să se obțină valorile câmpului în afara funcțiilor agregate. Un șir care conține unul dintre:
    • "Primul" Este necesar să se obțină prima înregistrare de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca decalaj de la începutul grupării. Valoarea rezultată trebuie să fie un număr întreg mai mare decât zero. De exemplu, First(3) – primirea a treia înregistrare de la începutul grupării. Dacă prima înregistrare este în afara grupării, atunci se consideră că nu există înregistrări. De exemplu, dacă există 3 înregistrări și doriți să obțineți First(4), atunci se consideră că nu există înregistrări.
    • "Ultimul" Trebuie să obțineți ultima înregistrare de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca decalaj față de sfârșitul grupării. Valoarea rezultată trebuie să fie un număr întreg mai mare decât zero. De exemplu, Last(3) – primirea a treia înregistrare de la sfârșitul grupului. Dacă ultima înregistrare este în afara grupării, atunci se consideră că nu există înregistrări. De exemplu, dacă există 3 înregistrări și doriți să obțineți Last(4), atunci se consideră că nu există înregistrări.
    • "Anterior" Trebuie să obțineți înregistrarea anterioară de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca o compensare față de înregistrarea de grupare curentă. De exemplu, Previous(2) – obținerea precedentului din înregistrarea anterioară. Dacă înregistrarea anterioară se află în afara grupării (de exemplu, a doua înregistrare de grupare necesită obținerea Previous(3)), atunci se obține prima înregistrare de grupare. La primirea înregistrării anterioare pentru totalul grupării, se obține prima înregistrare.
    • "Următorul" Trebuie să obțineți următoarea înregistrare de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca o compensare înainte de înregistrarea de grupare curentă. De exemplu, Next(2) – obținerea următoarei din următoarea înregistrare. Dacă următoarea înregistrare depășește gruparea, atunci se consideră că nu există înregistrări. De exemplu, dacă există 3 intrări și a treia intrare primește Next, atunci se consideră că nu există intrări. Când se primește următoarea înregistrare pentru totalul grupării, se consideră că nu există nicio înregistrare.
    • "Actual". Trebuie să obțineți înregistrarea curentă. La preluarea pentru un total de grupare, se obține prima înregistrare.
    • „Valoare limită”. Necesitatea de a obține o înregistrare după valoarea specificată. După cuvântul LimitingValue din paranteze, trebuie să indicați expresia cu valoarea căreia doriți să începeți fragmentul, primul câmp de ordonare. Prima înregistrare a cărei valoare a câmpului de ordonare este mai mare sau egală cu valoarea specificată va fi returnată ca înregistrare. De exemplu, dacă câmpul Perioada este folosit ca câmp de comandă și are valorile 01/01/2010, 02/01/2010, 03/01/2010 și doriți să obțineți LimitingValue(DateTime(2010) , 1, 15)), apoi se va obține o înregistrare cu data 02/01 2010.
  • Sfârşit. Indică în ce înregistrare trebuie continuat fragmentul, în care trebuie calculată expresia agregată. Un șir care conține unul dintre:
    • "Primul"
    • "Ultimul"
    • "Anterior"
    • "Următorul"
    • "Actual".
    • „Valoare limită”.
  • Triere. Un șir care listează expresiile, separate prin virgule, în direcția în care trebuie ordonată secvența. Dacă nu este specificat, atunci ordonarea se realizează în același mod ca și pentru gruparea pentru care este evaluată expresia. După fiecare expresie se poate specifica cuvântul cheie Crescător, pentru ordonarea în ordine crescătoare, Descrescător, pentru ordonarea în ordine descrescătoare, Auto-Ordenare, pentru ordonarea câmpurilor de referință după câmpurile după care doriți să ordonați obiectul referit. Cuvântul Auto Order poate fi folosit atât cu cuvântul Crescător, cât și cu cuvântul Descendent.
  • Sortare Ierarhică. Similar cu sortarea. Folosit pentru organizarea înregistrărilor ierarhice. Dacă nu este specificat, compozitorul de aspect generează ordonarea conform ordinii specificate în parametrul Sort.
  • Procesarea acelorași valori ale comenzii. Un șir care conține unul dintre:
    • „Împreună” înseamnă că o secvență de înregistrări ordonate este utilizată pentru a determina înregistrările anterioare și următoare;
    • „Separat” înseamnă că înregistrările anterioare și următoare sunt determinate pe baza valorilor expresiilor de ordonare;
    De exemplu, dacă secvența rezultată este ordonată după dată:
    1. 01 ianuarie 2001 Ivanov M. 10
    2. 02 ianuarie 2001 Petrov S. 20
    3. 02 ianuarie 2001 Sidorov R. 30
    4. 03 ianuarie 2001 Petrov S. 40
    Când utilizați procesarea valorilor identice ale comenzii „Separat”, cea anterioară pentru înregistrarea 3 va fi înregistrarea 2, iar când utilizați „Împreună” - înregistrarea 1. Și fragmentul pentru înregistrarea curentă pentru înregistrarea 2 pentru „Separat” va fi înregistrarea 2, iar pentru „Împreună” - înregistrările 2 și 3. Astfel, totalul pentru înregistrarea curentă pentru „Separat” va fi 20, iar pentru „Împreună” - 50. Când „Împreună” este specificat în Start și Parametrii de sfârșit, nu puteți specifica un offset pentru pozițiile „Primul”, „Ultimul”, „Anterior”, „Următorul”. Valoarea implicită este „Separat”.
Exemplu:
Obținerea raportului dintre suma pentru câmpul „Vânzări.Sumă Cifra de afaceri” a unei înregistrări de grupare și valoarea aceluiași câmp în întregul aspect:
Sum(Vânzări.Suma Cifra de afaceri) / CalculateExpression(„Suma(Vânzări.Suma Cifra de afaceri)”, „Total”).

Acest exemplu calculează valoarea ierarhiei curente:
Alegere
Când Level() > 0
Apoi EvaluateExpression ("Referință", "Ierarhie")
Altfel Null
Sfârşit

Note:
Funcția ia în considerare selecția grupărilor, dar nu ia în considerare selecțiile ierarhice. Funcția nu poate fi aplicată unei grupări din selecția grupului respectiv. De exemplu, la selectarea grupării Nomenclatură, nu puteți utiliza expresia CalculateExpression("Sum(SumTurnover)", "TotalTotal") > 1000 . Dar o astfel de expresie poate fi folosită în selecția ierarhică. Dacă înregistrarea finală precede înregistrarea de început, atunci se consideră că nu există înregistrări pentru calcularea datelor detaliate și calcularea funcțiilor agregate. Când se calculează expresii de interval pentru un total general (parametrul Grupare este setat la „Total brut”), se presupune că nu există înregistrări pentru calcularea datelor detaliate și calcularea funcțiilor agregate. Când se generează o expresie pentru funcția CalculateExpression, compozitorul de aspect, dacă expresia de ordonare conține câmpuri care nu pot fi utilizate în grupare, înlocuiește funcția CalculateExpression cu NULL.

3. Evaluați expresia cu matrice de grup (EvalExpression cu matrice de grup) - funcția returnează un tablou, fiecare element al căruia conține rezultatul calculării unei expresii pentru grupare după câmpul specificat.

Sintaxă:
CalculateExpressionWithGroupArray (Expresie, GroupFieldExpressions, SelectRecords, SelectGroups)

Opțiuni :

  • Expresie(Șir) - expresia care trebuie evaluată. De exemplu, „Amount(AmountTurnover)”;
  • FieldExpressionsGroups
  • Selectarea înregistrărilor
  • Selectarea Grupurilor- selecția aplicată înregistrărilor de grup. De exemplu: „Amount(AmountTurnover) > &Parameter1”.
Exemplu:
Maximum(CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Contraparte"));


Generatorul de layout, atunci când generează expresii pentru afișarea unui câmp personalizat a cărui expresie conține doar funcția CalculateArrayWithGroup, generează expresia de afișare astfel încât datele afișate de vizualizări și datele să fie ordonate.
De exemplu, pentru un câmp personalizat cu expresia:
CalculateExpressionWithGroupArray(„Suma(AmountTurnover)”, „Contraparte”)
Generatorul de layout va genera următoarea expresie pentru ieșire:
ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable(„Vizualizare(Suma(DataSet.AmountTurnover)), Amount(DataSet.AmountTurnover))”, „DataSet.Account”), „2”)))

4. Calculați expresia cu GroupValueTable (EvalExpressionWithGroupValueTable) - funcţia returnează un tabel de valori, fiecare element conţinând rezultatul calculării unei expresii pentru grupare după câmpul specificat.

Sintaxă:
CalculateExpressionWithGroupValueTable (expresie, expresii GroupField, selecție înregistrări, selecție grup)

Opțiuni :

  • Expresie(Șir) - expresia care trebuie evaluată. O linie poate conține mai multe expresii separate prin virgule. După fiecare expresie poate exista un cuvânt cheie opțional AS și numele coloanei tabelului de valori. De exemplu: „Contraparte, Sumă (Suma Cifra de afaceri) Ca volum de vânzări”.
  • FieldExpressionsGroups- expresii de grupare a câmpurilor, separate prin virgule. De exemplu, „Contrapartidă, Partid”;
  • Selectarea înregistrărilor- o expresie aplicată înregistrărilor de detaliu. De exemplu, „Delete Flag = False”. Dacă acest parametru folosește o funcție de agregare, va apărea o eroare la compunerea datelor;
  • Selectarea Grupurilor- selecția aplicată înregistrărilor de grup. De exemplu: „Amount(AmountTurnover) > &Parameter1”.
Exemplu:
CalculateExpressionWithGroupValueTable(„Contraparte AS Counterparty, Amount(AmountTurnover) ASSalesVolume”, „Counterparty”)

Rezultatul acestei funcții va fi un tabel de valori cu coloanele Contraparte și Volum vânzări, care va conține contrapartidele cu volumele lor de vânzări.
Generatorul de layout, atunci când generează un layout, convertește parametrii funcției în termeni de câmpuri de layout de date. De exemplu, câmpul Cont va fi convertit în DataSet.Account.
De exemplu, un câmp personalizat cu expresia:
CalculateExpressionWithGroupValueTable(„Cont, Sumă(Suma Cifra de afaceri)”, „Cont”)
Generatorul de layout va genera următoarea expresie pentru ieșire:
ConnectRows(GetPart(Order(CalculateExpressionWithGroupingValueTable), „DataSet.Account, DataSet.AccountRepresentation, Sum(DataSet.AmountTurnover), View(DataSet.AmountTurnover), DataSet.OrderingField”, „1,,DataSet“, „3“, „3”. ), „2, 4”))

5. Nivel - funcția este concepută pentru a obține nivelul curent de înregistrare.

Sintaxă:
Nivel()

Exemplu:
Nivel()

6. SequenceNumber - obțineți următorul număr de serie.

Sintaxă:
NumberByOrder()

Exemplu:
NumberByOrder()

7. SequenceNumberInGrouping - returnează următorul număr de secvență din gruparea curentă.

Exemplu:
NumberByOrderInGroup()

8. Format - obțineți un șir formatat al valorii transmise.

Sintaxă:
Format(Valoare, FormatString)

Opțiuni :

  • Sens- expresia care trebuie formatată;
  • FormatString- șirul de format este setat în conformitate cu șirul de format 1C:Enterprise.
Exemplu:
Format(Facturi. Sumă document, „NPV=2”)

9. BeginOfPeriod

Sintaxă:
StartPeriod(Data, PeriodType)

Opțiuni :

  • Data(Data de). Data specificată;
  • Tipul perioadei
Exemplu:
StartPeriod(DateTime(2002, 10, 12, 10, 15, 34), „Month”)
Rezultat: 10/01/2002 0:00:00

10. EndOfPeriod - funcția este concepută pentru a selecta o anumită dată dintr-o dată dată.

Sintaxă:
EndPeriod(Data, PeriodType)

Opțiuni :

  • Data(Data de). Data specificată;
  • Tipul perioadei(Linia). Conține una dintre următoarele valori: Minut; Ora; Zi; O săptămână; Lună; Sfert; An; Deceniu; Jumatate de an.
Exemplu:
EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Week")
Rezultat: 13.10.2002 23:59:59

11. AddKDate (DateAdd) - funcția este concepută pentru a adăuga o anumită valoare datei.

Sintaxă:
AddToDate(Expresie, IncrementType, Magnitude)

Opțiuni :

  • Expresie(Data de). data originală;
  • TipMărire(Linia). Conține una dintre următoarele valori: Minut; Ora; Zi; O săptămână; Lună; Sfert; An; Deceniu; Jumatate de an.
  • Magnitudinea(Număr). Cu cât de mult trebuie mărită data, partea fracțională este ignorată.
Exemplu:
AddToDate(DateTime(2002, 10, 12, 10, 15, 34), „Lună”, 1)
Rezultat: 12.11.2002 10:15:34

12.DataDiferenta - funcția este concepută pentru a obține diferența dintre două date.

Sintaxă:
DifferenceDate(Expresie1, Expression2, DifferenceType)

Opțiuni :

  • Expresia1(Data de). Data scăzută;
  • Expresia2(Data de). data originală;
  • Tip Diferență(Linia). Conține una dintre următoarele valori: Second; Minut; Ora; Zi; Lună; Sfert; An.
Exemplu:
DATEDIFERENCE(DATETIME(2002, 10, 12, 10, 15, 34),
DATETIME(2002, 10, 14, 9, 18, 06), „DAY”)
Rezultat: 2

13. Subșir - această funcție este concepută pentru a extrage un subșir dintr-un șir.

Sintaxă:
Subșir (șir, poziție, lungime)

Opțiuni :

  • Linia(Linia). Șirul din care este extras subșirul;
  • Poziţie(Număr). Poziția caracterului din care începe subșirul care urmează să fie extras din șir;
  • Lungime(Număr). Lungimea subșirului alocat.
Exemplu:
SUBSTRING(Conturi.Adresă, 1, 4)

14. StringLength - funcția este concepută pentru a determina lungimea unui șir.

Sintaxă:
StringLength(Șir)

Parametru:

  • Linia(Linia). Un șir a cărui lungime este determinată.
Exemplu:
Linie(Contrapărți.Adresă)

15. Anul- această funcție este concepută pentru a extrage anul dintr-o valoare de tip Date.

Sintaxă:
An (Data)

Parametru:

  • Data(Data de). Data până la care este determinat anul.
Exemplu:
AN (Cheltuieli.Data)

16. Sfert - această funcție este concepută pentru a extrage numărul trimestrului dintr-o valoare de tip Date. Numărul sfertului variază în mod normal de la 1 la 4.

Sintaxă:
Trimestru (Data)

Parametru:

  • Data(Data de). Data până la care este determinat trimestrul
Exemplu:
QUARTER(Cheltuială.Data)

17. Luna - această funcție este concepută pentru a extrage numărul lunii dintr-o valoare de tip Date. Numărul lunii variază în mod normal de la 1 la 12.

Sintaxă:
Luna(Data)

Parametru:

  • Data(Data de). Data până la care se stabilește luna.
Exemplu:
MONTH(Cheltuială.Data)

18. Ziua anului (DayOfYear) - această funcție este concepută pentru a obține ziua anului dintr-o valoare de tip Date. Ziua anului variază în mod normal între 1 și 365 (366).

Sintaxă:
Ziua anului (Data)

Parametru:

  • Data(Data de). Data până la care se stabilește ziua anului.
Exemplu:
DAYYEAR(Contul cheltuielilor.Data)

19. Ziua- această funcție este concepută pentru a obține ziua lunii dintr-o valoare de tip Date. Ziua lunii variază în mod normal între 1 și 31.

Sintaxă:
Ziua intalnirii)

Parametru:

  • Data(Data de). Data până la care se stabilește ziua lunii.
Exemplu:
ZI (Cheltuieli.Data)

20. Săptămâna - această funcție este concepută pentru a obține numărul săptămânii al anului dintr-o valoare de tip Date. Săptămânile anului sunt numerotate începând de la 1.

Sintaxă:
Săptămâna (Data)

Parametru:

  • Data(Data de). Data după care sunt determinate numerele săptămânii.
Exemplu:
SĂPTĂMÂNĂ(Cheltuieli.Data)

21. Ziua săptămânii - această funcție este concepută pentru a obține ziua săptămânii dintr-o valoare de tip Date. Ziua normală a săptămânii variază de la 1 (luni) la 7 (duminică).

Sintaxă:
Ziua săptămânii (Data)

Parametru:

  • Data(Data de). Data după care este determinată ziua săptămânii.
Exemplu:
ZIUA SĂPTĂMÂNII (Data facturii de cheltuieli)

22. Ora- această funcție este concepută pentru a obține ora din zi dintr-o valoare de tip Date. Ora zilei variază de la 0 la 23.

Sintaxă:
Ora (Data)

Parametru:

  • Data(Data de). Data după care este determinată ora zilei.
Exemplu:
HOUR(Cheltuieli.Data)

23. Minutul - această funcție este concepută pentru a obține minutul orei dintr-o valoare de tip Date. Minutul orei variază de la 0 la 59.

Sintaxă:
Minutul (Data)

Parametru:

  • Data(Data de). Data după care este determinat minutul orei.
Exemplu:
MINUT(Cheltuieli.Data)

24. În al doilea rând - această funcție este concepută pentru a obține secunda dintr-un minut dintr-o valoare de tip Date. Secunda dintr-un minut variază de la 0 la 59.

Sintaxă:
A doua (data)

Parametru:

  • Data(Data de). Data după care sunt determinate secundele minutei.
Exemplu:
SECOND(Cheltuieli.Data)

25. Turnat - această funcție este concepută pentru a extrage un tip dintr-o expresie care poate conține un tip compus. Dacă expresia conține un alt tip decât cel cerut, va fi returnat NULL.

Sintaxă:
Express (Expresie, TipIndicație)

Opțiuni :

  • Expresie- expresia de convertit;
  • Indicație tip(Linia). Conține un șir de tip. De exemplu, „Număr”, „Șir”, etc. Pe lângă tipurile primitive, această linie poate conține numele tabelului. În acest caz, se va încerca să se exprime o referire la tabelul specificat.
Exemplu:
Express(Data.Props1, „Număr(10,3)”)

26. IsNull (IsNull) - această funcție returnează valoarea celui de-al doilea parametru dacă valoarea primului parametru este NULL. În caz contrar, va fi returnată valoarea primului parametru.

Sintaxă:
IsNull(Expresia1, Expresia2)

Opțiuni :

  • Expresia1- valoarea de verificat;
  • Expresia2- returnează valoarea dacă Expression1 este NULL.
Exemplu:
YesNULL(Suma(Vânzări.Sumă Cifra de afaceri), 0)

27.ACos- calculează arc cosinus în radiani.

Sintaxă:
ACos (expresie)

Parametru:

  • Expresie(Număr). Valoarea cosinusului (în intervalul -1 ... 1) după care este determinat unghiul.
28.ASin- calculează arcsinusul în radiani.

Sintaxă:
ASin(expresie)

Parametru:

  • Expresie(Număr). Valoarea sinusului (în intervalul -1 ... 1) după care este determinat unghiul.
29.ATan- calculează arctangenta în radiani.

Sintaxă:
ATan(expresie)

Parametru:

  • Expresie(Număr). Valoarea tangentei după care este determinat unghiul.
30.Cos- calculează cosinusul.

Sintaxă:
Cos(expresie)

Parametru:

  • Expresie
31. Exp- ridicarea numărului e la o putere.

Sintaxă:
Exp(Expresie)

Parametru:

  • Expresie(Număr). Sensul gradului.
32.Jurnal- calculează logaritmul natural.

Sintaxă:
Jurnal (expresie)

Parametru:

  • Expresie
33.Log10- calculează logaritmul lui X la baza 10.

Sintaxă:
Log10 (expresie)

Parametru:

  • Expresie(Număr). Numărul inițial este mai mare decât 0.
34. Pow- exponentiarea.

Sintaxă:
Pow (bază, indicator)

Opțiuni :

  • Baza(Număr). Baza operației de exponențiere.
  • Index(Număr). Exponent.
35. Păcat- calculează sinusul.

Sintaxă:
Păcat (expresie)

Parametru:

  • Expresie(Număr). Specificat în radiani.
36. str- calculează rădăcina pătrată.

Sintaxă:
Sqrt(expresie)

Parametru:

  • Expresie(Număr). Număr nenegativ.
37. Tan- calculează tangenta.

Sintaxă:
Tan(expresie)

Parametru:

  • Expresie(Număr). Valoarea sinusului după care este determinat unghiul.
38. Rotunda- rotunjește numărul inițial la adâncimea de biți necesară. Modul de rotunjire este standard (1,5 ca 2).

Sintaxă:
Env(Expresie, adâncime de biți)

Opțiuni :

  • Expresie(Număr). Numărul original;
  • Adâncime de biți(Număr). Numărul de zecimale la care se rotunjește.
39. Int- taie partea fracționară a unui număr.

Sintaxă:
Obiect (expresie)

Parametru:

  • Expresie(Număr). Un număr fracționar.
40. Funcţiile modulelor comune

O expresie de motor de compoziție de date poate conține apeluri la funcții ale modulelor de configurare comune globale. Nu este necesară nicio sintaxă suplimentară pentru a apela astfel de funcții.

Exemplu:
AbreviatedName(Documente.Link, Documente.Data, Documente.Număr)

În acest exemplu, funcția „AbreviatedName” va fi apelată din modulul de configurare generală.
Rețineți că utilizarea funcțiilor comune ale modulului este permisă numai dacă este specificat parametrul corespunzător al procesorului de compoziție a datelor.
În plus, funcțiile modulelor comune nu pot fi utilizate în expresiile de câmp personalizate.

41. Resentiment - această funcție returnează o reprezentare șir a valorii transmise a unui tip non-primitiv. Pentru valorile de tip primitiv, returnează valoarea în sine.

<Пустое значение>".

Exemplu:
Prezentare (contraparte)

42. Snur - această funcție convertește valoarea transmisă într-un șir.

Dacă o matrice sau un tabel de valori este folosit ca parametru, funcția returnează un șir care conține o reprezentare șir a tuturor elementelor matricei, separate prin caracterele „;”. Dacă orice element are o reprezentare șir goală, atunci șirul "<Пустое значение>".

Exemplu:
Rând (Data vânzării)

43. ValueIsFilled

Pentru valorile NULL, Undefined returnează întotdeauna False.
Pentru valorile booleene, returnează întotdeauna True.
Pentru alte tipuri, returnează True dacă valoarea diferă de valoarea implicită pentru tipul dat.

Exemplu:
ValueFilled(Data de livrare)

44. LevelInGroup - această funcție obține nivelul curent de înregistrare în raport cu gruparea.

Poate fi folosit pentru a obține nivelul de imbricare al unei înregistrări într-o grupare ierarhică.

Exemplu:
LevelInGroup()

45. ValueType

Sintaxă:
ValueType(Expresie)

Parametru:

  • Expresie(Linia). Tip de valoare șir.
Returnează o valoare de tip Type care conține tipul de valoare al parametrului funcției.

Utilizarea corectă a unei scheme de compunere a datelor (DCS) vă permite să:

  • reduce semnificativ timpul necesar pentru elaborarea unui raport;
  • eliminați necesitatea creării unui handler de formulare gestionat;
  • obține un rezultat frumos cu posibilitatea de personalizare suplimentară de către utilizator.

Dar nu toți dezvoltatorii profită la maximum de capacitățile schemei, deoarece nu toate setările sale sunt evidente și intuitive. În special, mulți oameni știu că în 1C SKD există câmpuri calculate, cu toate acestea, nu înțeleg pe deplin scopul utilizării lor și metodele de lucru cu acestea.

Ce este un câmp calculat

În cele mai multe cazuri, sursa de date din diagrama de aspect este o interogare. În principiu, în cadrul interogării în sine puteți utiliza deja diverse formule, construcții și expresii. Apare o întrebare firească: de ce avem nevoie de funcționalitate duplicată?

Faptul este că sistemul de control al accesului este ceva mai mult decât afișarea rezultatului unei interogări, iar acest lucru este clar vizibil din formularul de creare a diagramei (Fig. 1).

Câmpurile calculate vă permit să efectuați anumite acțiuni cu setul de date generat:

  • Ieșiți o serie de date primite de o solicitare într-o anumită celulă, combinând mai multe linii într-una singură;
  • Accesați funcțiile de export ale modulului general;
  • Executați diferitele expresii disponibile pentru limbajul de aspect și utilizați funcțiile speciale EvaluateExpression.

Să trecem prin această listă.

Matrice de valori într-o singură celulă

Să simulăm o situație în care este necesar să primim toate numerele documentului de chitanță pentru o contraparte într-o celulă separată:


Astfel, am creat un câmp suplimentar de calcul în schema noastră;


După cum puteți vedea din exemplul de mai sus, nu există dificultăți în adăugarea și procesarea câmpurilor calculate. Am folosit două funcții: Array() și ConnectRows().

Câteva cuvinte despre acesta din urmă. Pe lângă primul parametru care indică identificatorul matricei, valori sau valoare, în el pot fi setate încă doi:

  1. Element Separator – indică ce caracter va separa un element de matrice sau un rând al unui tabel de valori de altul (în cazul nostru, am omis acest parametru și a fost atribuit implicit o ruptură de linie);
  2. Separator de coloane – un caracter folosit pentru a separa coloanele dintr-un tabel de valori (punct virgulă este folosit în mod implicit).

Accesarea funcțiilor de export ale unui modul comun

Funcțiile unui modul comun pot acționa ca o sursă de date pentru completarea unui câmp calculat.

Câteva puncte importante:

  • Funcția trebuie să fie exportabilă;
  • Dacă o funcție se află într-un modul comun cu atributul „Global” setat, este apelată direct după nume, altfel funcția trebuie apelată conform schemei „Nume modul partajat”. „Numele funcției care trebuie apelată”.

Ca exemplu de utilizare, vom lua aceeași cerere de documente de primire și o vom afișa într-o coloană separată. Nu vom descrie cererea în sine, să trecem direct la câmpurile calculate:


Astfel, vedem că aproape orice procesor de date poate fi inițializat din sistemul de control al accesului, ceea ce extinde semnificativ posibilitățile de utilizare a schemei.

Dispunerea expresiilor de limbaj

Destul de des, în munca unui dezvoltator, apare o situație când este necesar să se afișeze rezultatul divizării în domeniul ACS:

  1. Calculați costul mediu al articolului;
  2. Toate tipurile de interes;
  3. Calculele castigului mediu etc.

Pentru a evita probleme, în aceste cazuri este indicat să introduceți un test de împărțire cu 0 în câmpul calculat.

Acest lucru se poate face folosind construcția „Alege Când….Atunci… În caz contrar… Încheiere”.

La final, câteva cuvinte despre funcția destul de nouă CalculateExpression(). Cu ajutorul acestuia, în special, puteți calcula abaterile de cost între liniile curente și anterioare, soldul cumulat etc.

Să presupunem că puteți obține Suma documentului din rândul precedent al solicitării noastre, specificând valoarea Calculate Expression („Suma document”, „Suma anterioară”) în câmpul „Expresie”.