Câmpul nu poate fi utilizat în gruparea ACS. Gruparea câmpurilor pe foldere în sistemul de stocare

Salutări, dragii mei cititori! Să continuăm să ne uităm la elementele de bază ale sistemului de layout. În această serie de articole, ați învățat diferențele dintre o interogare de set de date și o interogare obișnuită. De asemenea, v-ați uitat la parametrii tabelelor virtuale și v-ați familiarizat cu extensia limbajului de interogare. Acum uită-te la conținut pentru a vedea ce vei învăța aici. Noroc!

Funcțiile limbajului de expresie SKD.

Când o interogare este construită în aspect, funcțiile standard ale limbajului de interogare sunt utilizate în interiorul acesteia. Dar sistemul de control al accesului vă permite să definiți funcții suplimentare. Unele funcții sunt similare cu funcțiile din limbajul de interogare, dar folosesc o sintaxă diferită. De exemplu, funcția „Începutul perioadei”:

StartPeriod(DateTime(2002, 10, 12, 10, 15, 34), „Month”)

Această funcție diferă de funcția limbajului de interogare din al doilea parametru. Aici este folosit șirul „Lună”, în timp ce în funcția de limbaj de interogare este folosit literal MONTH.

Descrierile funcțiilor pot fi găsite prin deschiderea Configuratorului: Ajutor -> Cuprins -> Sistem de compunere a datelor -> Limba de expresie a sistemului de compunere a datelor -> Funcții ale limbajului de expresie a sistemului de compunere a datelor.

Unde puteți utiliza funcțiile limbajului de expresie SKD dacă nu pot fi utilizate în limbajul de interogare?

  • În fila din coloana „Expresie”.
  • În fila „Parametri” din coloana „Expresie”.
  • În fila „Setări” din coloana „Câmpuri personalizate”. Utilizatorul își poate crea propriile câmpuri și poate scrie expresii pentru ele.
  • În fila „Seturi de date”, în coloanele „Expresii de reprezentare” și „Expresii de ordonare”.
    Acestea sunt expresii care configurează câmpurile de compoziție a datelor.

Caracteristicile operațiunii ACS.

Când utilizați o interogare de set de date, apar o serie de caracteristici
la optimizarea ACS.

  • Interogarea rezultată este redusă în conformitate cu setările opțiunii de raportare,
    deoarece unele câmpuri din interogarea rezultată sunt eliminate.
  • În plus, tabelele pot fi, de asemenea, șterse din interogarea rezultată, dacă interogarea descrie tabele temporare și nu sunt folosite în altă parte.
  • Același lucru este valabil și pentru seturile de date, dacă am descris multe seturi de date într-o schemă, dar folosim doar unele dintre ele, atunci numai seturile de date utilizate vor fi folosite de sistem pentru a obține informații, iar seturile de date rămase vor fi eliminate din layout-ul de date rezultat.

Aceste caracteristici ar putea avea consecințe negative? Da, pentru că în unele cazuri cererea pe care am dorit-o nu va fi generată. Prin urmare, trebuie să țineți cont de aceste caracteristici atunci când construiți interogări complexe.

Setările de bază ale câmpurilor ACS.

În fila „Seturi de date”, când se creează un set de date de tipul de interogare, câmpurile de aspect sunt completate automat. După cum puteți vedea, câmpurile conțin un număr mare de setări.

Coloană "Camp" conține numele câmpului, care este obținut din baza de informații (IB).
O valoare imuabilă care este codificată de către cerere. Corespunde alias-ului cererii.

Dar există o particularitate. Dacă schimbăm un alias, de exemplu „Articol”, în Generatorul de interogări din fila „Alături/Aliasuri” din coloana „Nume câmp”, în „Produs”, atunci va apărea un câmp nou „Produs” în „Date”. fila Seturi” a aspectului, dar în același timp rămâne câmpul „Nomenclatură”. Acest lucru se datorează faptului că este setat indicatorul de completare automată. Cu această configurare, sistemul nu poate înțelege că câmpul „Produs” este același cu câmpul „Articol”, așa că, pentru orice eventualitate, câmpul este adăugat de două ori.

Ar putea acest design să dăuneze experienței utilizatorului? Da. La urma urmei, două câmpuri „Produs” și „Articol” vor apărea în setările opțiunii de raport. Utilizatorului nu va fi clar cum diferă, deși aceste selecții sunt identice.

Deși puteți exclude aspectul câmpului „Nomenclatură” bifând casetele din coloanele „Restricție câmp” - „Condiție” și „Restricție detalii” - „Condiție” din fila „Seturi de date” din setările câmpului. În plus, puteți debifa indicatorul „Completare automată” și puteți completa toate câmpurile din Designerul de interogări din fila „Compoziția datelor”.

Coloană "Cale" specifică modul în care vom accesa câmpul din toate filele de aspect de date. O valoare care poate fi schimbată la discreția dvs. Sunt permise spații în numele căii, dar numele este cuprins între paranteze drepte. Dar este mai bine ca calea să nu aibă spații, deoarece acesta este un câmp de serviciu. Este mai bine să schimbați titlul bifând coloana „Titlu”.

De ce a fost necesar să se creeze două câmpuri diferite „Câmp” și „Cale” dacă numele lor sunt aproape întotdeauna aceleași? Pentru că sunt folosite multe seturi de date. De exemplu, dacă al doilea set de date este o uniune, atunci pentru a se potrivi câmpurile trebuie să aveți aceleași căi. În alte cazuri, căile pot fi lăsate neschimbate dacă numele lor sunt clare.

Puteți utiliza următoarea metodă pentru a lucra cu coloana „Cale”. Specificând o cale, puteți crea atribute virtuale imbricate ale unui element. De exemplu, să plasăm atributul „Calitate” în interiorul atributului „Produs”. Să schimbăm câmpul „Cale” al atributului „Calitate” în „Produs.Calitate”. Acum în fila „Setări” din fila „Câmpuri selectate” nu vom găsi câmpul „Calitate”, dar va apărea în câmpul „Produs”.

Să aruncăm o privire mai atentă asupra setărilor de restricție de accesibilitate. După cum puteți vedea, există două linii pentru a limita accesibilitatea în coloane „Limita de câmp”Și „Restricție de detalii”.

Coloane de limitare a câmpului ACS

Coloana „Restricție câmp” înseamnă că restricțiile vor fi plasate pe câmpul însuși. Coloana „Restricție de detalii” înseamnă că vor fi impuse restricții asupra detaliilor imbricate ale acestui câmp dacă câmpul aparține unui tip de date complex, cum ar fi un director sau un document.

Fiecare linie este împărțită în încă patru coloane. Dacă marcajul este setat pentru un câmp sau detalii ale acestui câmp:

  • Camp, atunci acestea nu vor fi disponibile pentru selectare în fila „Setări” din fila „Câmpuri selectate”.
  • Condiție, atunci acestea nu vor fi disponibile ca o condiție în fila „Setări” din fila „Selectare”.
  • grup, apoi în fila „Setări” când creați o nouă grupare, gruparea după acestea nu va fi disponibilă.
  • Aranjare, atunci acestea nu vor fi disponibile pentru comandă în fila „Setări” din fila „Sortare”.

Coloană „Expresia reprezentativă” necesară modificarea prezentării câmpului ca urmare a raportului. De exemplu, trebuie să afișați nu numai numele produsului, ci și numărul articolului acestuia. Prin urmare, în această coloană puteți scrie următoarele:

Produs. Articol + "-" + Produs. Nume

În acest domeniu putem folosi toate capacitățile limbajului SKD și putem accesa funcțiile modulelor comune.

Dacă în configurație există un modul general numit „Pentru SKD” și în acest modul este definită o funcție generală (cu cuvântul cheie „Export”) „GetView” cu parametrul „Link”, atunci în câmpul „View Expression” vom va scrie:

Pentru SKD. GetView(Produs)

Dar trebuie să folosiți această oportunitate cu atenție, mai ales dacă funcția modulului general presupune accesarea bazei de date, deoarece acest acces are loc după ce au fost primite toate datele pentru raport. De fapt, pentru fiecare rând interogarea va fi executată din nou.

Coloană „Expresie de comandă” necesare pentru a defini sortarea non-standard. Aici puteți utiliza aceleași construcții ca în câmpul „Vizualizare expresie”.

Ei bine, ți-am spus totul, așa cum am promis. Dacă aveți întrebări, scrieți-le în comentarii. Pentru a ajuta materialul să rămână în minte, voi pregăti un test.

Pentru un set de date, „Obiect” este utilizat pentru a transfera date externe către sistemul de control al accesului, cum ar fi un tabel de valori, rezultatul unei interogări. Pentru acest set de date sunt disponibile descrieri de câmpuri, precum și numele obiectului care va fi transferat către sistemul de control acces:

Descrierea câmpurilor setului de date
După ce am determinat ce tip de set de date folosim, ar trebui să introducem o descriere a câmpurilor pentru ieșirea datelor în raport:

În tabelul „Câmpuri” proprietățile sunt completate:
1. „Câmp” - denumirea câmpului, în cazul unei cereri se completează automat, în cazul unui set de date „Obiect” se determină manual.

2. „Cale” - indică calea către datele din set. Acest nume specificat în acest câmp va apărea în toate setările ACS ulterioare.

3. „Titlu” - o linie cu titlul câmpului care este afișat în raport sau în setări

4. „Limit field availability” - o serie de casete de selectare - setări, utilizate pentru a indica modul în care acest câmp nu poate fi utilizat în setări. Este posibil să se indice astfel de restricții
A. „Câmp” - câmpul nu poate fi utilizat în selecțiile ACS
b. „Condiție” - câmpul nu poate fi folosit ca condiție
c. „Grup” - interzice utilizarea câmpului în grupări
d. „Comandă” - interzicerea utilizării câmpului în sortare

5. „Limitarea disponibilității detaliilor câmpului” - un număr de casete de selectare de mai jos indică restricții pentru detaliile câmpului, sensul stabilirii acestor restricții este același ca și pentru câmp

6. „Rol” - denotă proprietăți suplimentare ale câmpului și relațiile acestuia cu alte câmpuri. Pentru a edita roluri, se deschide un dialog special:

A. „Fără rol” - nu sunt impuse „încărcări” speciale pe câmp, modul implicit pentru majoritatea câmpurilor
b. „Perioada” - conține numărul perioadei dacă câmpul are un tip de perioadă. Cea mai tânără perioadă trebuie să fie de tipul 1. De exemplu, într-o interogare calculăm totaluri pentru diferite perioade: PeriodSecond = 1, PeriodDay = 2, PeriodWeek = 3 etc. Acest număr va indica modul în care totalurile pentru câmpurile de sold sunt calculate în ACS.
c. „Suplimentar” – indică faptul că câmpul perioadei este opțional
d. „Cont” - indică faptul că câmpul este un cont contabil și este utilizat pentru a calcula totalurile contabile.
e. „Tipul” este o expresie șir care este utilizată pentru a calcula tipul de cont. Rezultatul expresiei trebuie să fie valoarea enumerării AccountType (Active, Passive, Active/Passive) sau un număr. Valoarea numărului 0 corespunde unui cont activ, 1 – pasiv, 2 – activ-pasiv. Expresia este scrisă în limbajul de expresie al sistemului de compunere a datelor. Aceste informații sunt utilizate în calcule bazate pe câmpuri de solduri contabile;
f. „Rămăși” – un semn că câmpul este un câmp de rest;
g. „Nume” – un șir care conține numele grupului de câmpuri rămase. De exemplu: „Suma”, „Cantitate”;
h. „Tip” – tipul restului (InitialRemainder, FinalRemainder, Nu (câmpul nu este un rest));
i. „Bum.” Tip” – tipul soldului contabil (Debit, Credit, Nici unul (câmpul nu este un sold contabil));
j. „Câmp cont” – numele câmpului contului pentru care se calculează soldurile;
k. Ignorați valorile NULL – dacă este setat, atunci rezultatul nu trebuie să includă înregistrări de grup pentru acest câmp dacă câmpul conține o valoare NULL.
l. „Necesar” - la executarea unei interogări, un câmp cu indicatorul specificat va fi întotdeauna prezent, chiar dacă nu a fost selectat în selecție.

7. „Vizualizare expresie” - conține o expresie care este utilizată la afișarea valorilor câmpurilor într-un raport.

De exemplu, trebuie să convertiți o dată într-un format special; pentru aceasta indicăm următoarea expresie: „Format(PeriodHalf-Year,”DF = """Half-Year from"" dd.LL.yyyy"""" )" sau convertiți linkul către document într-o formă arbitrară: ""Data: "+Link.Date+"Număr: "+Link.Number".

8. „Expresie de comandă” - cum se comandă acest câmp. La editare, se deschide un dialog:


În caseta de dialog, puteți specifica cum să aranjați acest câmp. „Expresie” - cum este ordonat acest câmp, „Tipul de comandă” - „crescător” sau „descrescător”, „Necesitatea comenzii automate” - determinarea automată a câmpurilor prin care este necesară ordonarea rezultatului compoziției datelor.

9. „Verificarea ierarhiei” - folosit dacă trebuie să creați selecții non-standard.
A. „Set de date” – un set de date pentru verificarea ierarhiei;
b. „Parametru” – un parametru în care va fi înlocuită valoarea pentru care doriți să obțineți elemente copil;

10. „Tipul valorii” - clarificarea tipului valorii unui câmp de set de date, util de utilizat pentru a clarifica câmpuri de tip compus

11. „Proiectare” - parametri de proiectare pentru câmpul set de date. La editare, se deschide un dialog:


Puteți seta următorii parametri:
Culoare de fundal - Definește culoarea de fundal a celulelor.
Culoare text - Definește culoarea textului din celule
Culoare diagramă - Definește culoarea liniilor din diagramă.
Culoarea chenarului - Culoarea liniei chenarului
Stil chenar - Tipuri de linii de chenar
Stil chenar stânga - stânga
Top Border Style - Top
Stil chenar dreapta - dreapta
Stilul de margine de jos - de jos
Font - Tip de font, grosime, înclinare etc.
Indentare - Numărul de caractere de indentare
Indentare automată - Numărul de caractere de indentare, utilizate în grupări
Poziție orizontală - Poziția orizontală a textului într-o celulă
Poziție verticală - Poziția verticală a textului în celulă
Plasare - Plasați text care nu se încadrează în celulă
Orientare text - Orientare text în grade (rotire la 90 perpendiculară)
Format - Format șir de valoare
Evidențiați negativ - Semnați pentru a evidenția valorile negative
Lățimea minimă - Lățimea minimă a celulei în puncte
Înălțimea minimă - Înălțimea minimă a celulei
Înălțime maximă - Înălțime maximă
Text - Textul care este afișat în locul valorii

În plus, acești parametri sunt utilizați pentru a configura aspectul condiționat la afișarea câmpurilor în raport.
Pe lângă elementele de câmp, descrierea poate conține foldere care servesc la organizarea locației câmpurilor în câmpurile disponibile.


Pentru a plasa un câmp într-un folder, trebuie să creați un folder, de exemplu „Selectare”, apoi pentru câmpurile plasate în folder, specificați calea prin punct: „Selectare.Organizare”, „Selectare.Diviziuni” . După aceasta, în câmpurile disponibile la configurare, vom vedea un folder care conține elementele pe care le-am specificat.

Î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 interogării ș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 setări

4. Lansați 1C Enterprise 8.2.14. Deschide 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:

Suma(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, când generează un aspect al compoziției de date la ieșirea câmpului 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. Enumeră 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 fac 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 interogării ș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 setări

4. Lansați 1C Enterprise 8.2.14. Deschide 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:

Suma(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, când generează un aspect al compoziției de date la ieșirea câmpului 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. Enumeră 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 fac 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.


Platformă: 8.3; Tip formular: controlat.

Astăzi vom vorbi despre utilizare foldere în SKD, în ce câmpuri pot fi plasate și ce afectează aceasta în cele din urmă. Mai precis, vor fi luate în considerare două puncte - aceasta este crearea de foldere pe marcaj Seturi de date in masa Câmpuri, și crearea de foldere pe un marcaj Câmpurile selectate, care la rândul său se află pe fila Setări.

Ca exemplu, să-l luăm pe cel pe care l-am creat mai devreme și să experimentăm cu el. Permiteți-mi să vă reamintesc că raportul afișează următorul tabel:

Gruparea câmpurilor în dosare din fila „Seturi de date”.

Atunci când un raport conține un număr mare de câmpuri, poate fi indicat să le organizați în dosare în funcție de unul sau altul, astfel încât să fie mai ușor de navigat la configurarea raportului. Și aici este de ajutor crearea de foldere pe un marcaj. Seturi de date. Acest lucru nu afectează în niciun fel funcționarea raportului.

Pentru exemplul nostru, să creăm un folder Caracteristici, în care vom amplasa câmpurile O taraȘi Nume. Acest lucru se face folosind butonul corespunzător sau din meniul contextual:

Acum trebuie să plasați câmpurile în acest folder. Și pentru prima dată acest lucru provoacă anumite dificultăți, deoarece nici copierea, nici tragerea nu ajută. Pentru a face acest lucru, trebuie să editați calea câmpurilor, unde indicați numele folderului și, separate printr-un punct, numele câmpului în sine.

Acum să trecem la câmpurile selectate din setări și să vedem cum se reflectă modificările făcute acolo:

După cum puteți vedea, două câmpuri sunt marcate ca șterse. Prin urmare, acestea trebuie eliminate din listă și adăugate din nou, dar din folder Caracteristici:


Dacă aceste câmpuri au fost folosite în alte file (Selectare, Sortare etc.), atunci trebuie făcute și modificările corespunzătoare acolo.

Gruparea câmpurilor pentru a schimba aspectul unui raport

Acum să facem câmpurile PrețȘi Cantitate au fost afișate în raport nu unul lângă celălalt, ci unul sub celălalt, adică Să creăm o grupare verticală a acestor câmpuri. Pentru a face acest lucru, pe fila Câmpurile selectate hai să creăm un folder Indicatori cu o poziție verticală și mutați-l în ea PrețȘi Cantitate:


Efectuăm raportul și obținem următorul aspect:


În practică, pot fi întâlnite structuri de grupare destul de complexe, cu mai multe niveluri de cuibărit și diferite tipuri de aranjare.