Acasă - Setări
Diagrama de prezentare a datelor (1C SKD). Exemple de utilizare a funcției SKD - calculați expresia 1s 8 expresia câmpurilor calculate SKD

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 întrerupere 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 câmpul 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 linia anterioară a solicitării noastre specificând valoarea Calculate Expression ("Suma documentului", "Suma anterioară") în câmpul "Expresie".

  • 1C-Bitrix
  • Una dintre cele mai importante domenii ale software-ului de afaceri este raportarea. Soarta unei afaceri poate depinde (și nu într-un sens figurat!) de cât de ușor este să personalizați un raport existent la nevoile în schimbare ale afacerii (și ale legislației) sau să creați unul nou, fie că este un raport pentru biroul fiscal sau o diagramă a dependenței cererii de bunuri de sezon și de alți factori . Un sistem de raportare puternic și flexibil care facilitează extragerea datelor necesare din sistem, prezentarea lor într-o formă ușor de înțeles, permițând utilizatorului final să reconfigureze un raport standard pentru a vedea datele într-o lumină nouă - acesta este idealul pe care fiecare sistemul de afaceri ar trebui să depună eforturi pentru.

    În platforma 1C:Enterprise, un mecanism numit „Sistemul de compunere a datelor” (abreviat ca DCS) este responsabil pentru generarea de rapoarte. În acest articol vom încerca să oferim o scurtă descriere a ideii și arhitecturii mecanismului ACS și a capacităților acestuia.


    ACS este un mecanism bazat pe o descriere declarativă a rapoartelor. Sistemul de control acces este conceput pentru generarea de rapoarte și pentru afișarea informațiilor cu o structură complexă. Apropo, pe lângă dezvoltarea rapoartelor, mecanismul ACS este folosit și în 1C:Enterprise într-o listă dinamică, un instrument pentru afișarea informațiilor din listă cu funcționalitate bogată (afișarea listelor plate și ierarhice, design condiționat de rânduri, grupări etc. ).

    Puțină istorie

    În prima versiune a platformei 1C:Enterprise 8, versiunea 8.0, rapoartele au fost făcute astfel:
    1. Una sau mai multe interogări au fost scrise în limbajul de interogare 1C (limbaj asemănător SQL, mai multe despre el mai jos).
    2. A fost scris un cod care a transferat rezultatele interogărilor executate într-un document sau o diagramă de calcul. Codul ar putea face, de asemenea, lucrări care nu ar putea fi făcute într-o interogare - de exemplu, a calculat valori folosind limbajul 1C încorporat.
    Abordarea este simplă, dar nu cea mai convenabilă - există setări vizuale minime, totul trebuie programat „corp la mână”. Iar unul dintre atuurile de la acea vreme a platformei complet noi „1C:Enterprise 8” a fost reducerea la minimum în soluția de aplicare a cantității de cod care trebuie scris manual, în special prin design vizual. Ar fi logic să urmați aceeași cale în mecanismul de raportare. Acest lucru a fost realizat prin dezvoltarea unui nou mecanism - Sistemul de compunere a datelor.

    Una dintre ideile care au stat la baza sistemului de control al accesului a fost flexibilitatea și personalizarea rapoartelor, care era accesibilă atât dezvoltatorului, cât și utilizatorului final. În mod ideal, aș dori să ofer utilizatorului final acces la același set de instrumente de proiectare a rapoartelor ca și dezvoltatorului. Ar fi logic să se creeze un singur set de instrumente disponibile pentru toată lumea. Ei bine, deoarece instrumentele necesită participarea utilizatorului final, înseamnă că utilizarea programării în ele ar trebui redusă la minimum (cel mai bine este să o eliminați complet), iar setările vizuale ar trebui utilizate la maximum.

    Enunțarea problemei

    Sarcina în fața echipei de dezvoltare a fost să creeze un sistem de raportare bazat nu pe un algoritmic (adică prin scrierea codului), ci pe o abordare declarativă a creării de rapoarte. Și credem că problema a fost rezolvată cu succes. Din experiența noastră, aproximativ 80% din raportarea necesară poate fi implementată folosind ACS fără o singură linie de cod (cu excepția scrierii formulelor pentru câmpurile calculate), mai ales prin setări vizuale.
    Dezvoltarea primei versiuni a SDS a durat aproximativ 5 persoane-ani.

    Două limbi

    Există două limbi implicate în crearea rapoartelor. Unul este un limbaj de interogare folosit pentru a prelua date. Al doilea este limbajul de expresie al compoziției datelor, conceput pentru a scrie expresii utilizate în diferite părți ale sistemului, de exemplu, în setările de compoziție a datelor, pentru a descrie expresiile câmpurilor utilizator.

    Limbajul de interogare

    Limbajul de interogare se bazează pe SQL și este ușor de învățat pentru cei care cunosc SQL. Exemplu de cerere:

    Este ușor să vezi analogii secțiunilor standard pentru interogările SQL - SELECT, FROM, GROUP BY, ORDER BY.

    În același timp, limbajul de interogare conține un număr semnificativ de extensii menite să reflecte specificul problemelor financiare și economice și să minimizeze efortul necesar pentru a dezvolta soluții aplicative:

    • Accesarea câmpurilor folosind un punct. Dacă câmpurile unui tabel sunt de tip referință (stochează link-uri către obiecte dintr-un alt tabel), dezvoltatorul se poate referi la ele în textul solicitării prin „.”, iar sistemul nu limitează numărul de niveluri de imbricare. a unor astfel de link-uri (de exemplu, Comanda clientului. Contractul. Organizația. Telefon).
    • Formarea multidimensională și pe mai multe niveluri a rezultatelor. Totalurile și subtotalurile se formează ținând cont de grupare și ierarhie, nivelurile pot fi parcurse în orice ordine cu însumări și se asigură construirea corectă a totalurilor în funcție de dimensiunile de timp.
    • Suport pentru mese virtuale. Tabelele virtuale furnizate de sistem vă permit să obțineți date aproape gata făcute pentru majoritatea sarcinilor aplicației, fără a fi nevoie să creați interogări complexe. Astfel, un tabel virtual poate furniza date despre soldurile produselor pe perioade la un anumit moment în timp. În același timp, tabelele virtuale folosesc la maximum informațiile stocate, de exemplu, totaluri calculate anterior etc.
    • Tabele temporare. Limbajul de interogare vă permite să utilizați tabele temporare în interogări. Cu ajutorul lor, puteți îmbunătăți performanța interogării, în unele cazuri puteți reduce numărul de blocări și puteți face textul interogării mai ușor de citit.
    • Solicitări de loturi. Pentru a face lucrul cu tabelele temporare mai convenabil, limbajul de interogare acceptă lucrul cu interogări în lot - astfel, crearea unui tabel temporar și utilizarea acestuia sunt plasate într-o singură interogare. O cerere de lot este o succesiune de cereri separate prin punct și virgulă (";"). Cererile din lot sunt executate una dupa alta. Rezultatul executării unei cereri de lot, în funcție de metoda utilizată, va fi fie rezultatul returnat de ultima solicitare din lot, fie o matrice de rezultate din toate interogările din lot în secvența în care urmează interogările din lot .
    • Preluarea reprezentărilor câmpurilor de referință. Fiecare tabel de obiecte (în care este stocat un director sau un document) are un câmp virtual - „Vizualizare”. Acest câmp conține o reprezentare textuală a obiectului și facilitează munca creatorului raportului. Deci, pentru un document, acest câmp conține toate informațiile cheie - numele tipului de document, numărul și data acestuia (de exemplu, „Vânzare 000000003 din 07/06/2017 17:49:14”), salvând dezvoltatorul de la scrierea unui câmp calculat.
    • etc.
    Mecanismul de solicitare modifică automat cererea ținând cont de rolurile cărora îi aparține utilizatorul în numele căruia se execută cererea (adică, utilizatorul va vedea doar datele pe care are dreptul să le vadă) și opțiunile funcționale (adică, în conformitate cu cu cele configurate în funcționalitatea soluției aplicației).

    Există, de asemenea, extensii speciale de limbaj de interogare pentru sistemele de control al accesului. Extinderea se realizează folosind instrucțiuni sintactice speciale incluse în acolade și plasate direct în corpul cererii. Folosind extensii, dezvoltatorul stabilește ce operațiuni va putea efectua utilizatorul final atunci când personaliza raportul.

    De exemplu:

    • ALEGE. Această propoziție descrie câmpurile pe care utilizatorul le va putea selecta pentru ieșire. După acest cuvânt cheie, sunt listate aliasurile câmpurilor din lista principală de selecție a interogărilor care vor fi disponibile pentru configurare, separate prin virgule. Exemplu: (SELECTARE articol, depozit)
    • UNDE. Sunt descrise câmpurile pe care utilizatorul poate aplica selecția. Această propunere utilizează câmpuri de tabel. Utilizarea alias-urilor câmpurilor din lista de selecție nu este permisă. Fiecare parte a uniunii poate conține propriul element WHERE. Exemple: (WHERE Item.*, Warehouse), (WHERE Document.Date >= &StartDate, Document.Date<= &ДатаКонца}
    • etc.
    Exemplu de utilizare a extensiilor:

    Limbajul de exprimare al compoziției datelor

    Limbajul de expresie al compoziției datelor este conceput pentru a scrie expresii utilizate, în special, pentru a descrie expresii de câmp personalizate. SKD vă permite să definiți câmpuri personalizate într-un raport folosind fie propriile expresii, fie seturi de opțiuni cu condiții pentru selectarea lor (analog cu CASE în SQL). Câmpurile personalizate sunt similare cu câmpurile calculate. Ele pot fi setate atât în ​​configurator, cât și în modul 1C:Enterprise, dar funcțiile modulelor comune nu pot fi utilizate în expresii de câmp personalizate. Prin urmare, câmpurile personalizate sunt destinate utilizatorului mai degrabă decât dezvoltatorului.

    Exemplu:

    Procesul de creare a unui raport privind sistemul de control al accesului

    Când creăm un raport, trebuie să creăm un aspect care să determine modul în care datele vor fi afișate în raport. Puteți crea un aspect bazat pe o diagramă de aspect de date. O diagramă de aspect al datelor descrie esența datelor care sunt furnizate raportului (de unde să obțineți datele și cum puteți controla aspectul acestora). Schema de compunere a datelor este baza pe care pot fi generate tot felul de rapoarte. Schema de compunere a datelor poate conține:
    • solicitați text cu instrucțiuni pentru sistemul de compunere a datelor;
    • descrierea mai multor seturi de date;
    • descrierea detaliată a câmpurilor disponibile;
    • descrierea relațiilor dintre mai multe seturi de date;
    • descrierea parametrilor de achiziție a datelor;
    • descrierea amenajărilor câmpurilor și grupărilor;
    • etc.

    De exemplu, puteți adăuga o interogare ca set de date la schema de compunere a datelor și puteți apela constructorul de interogare, care vă permite să creați grafic o interogare de complexitate arbitrară:

    Rezultatul lansării designerului de interogări va fi textul interogării (în limbajul de interogare 1C:Enterprise). Acest text poate fi ajustat manual dacă este necesar:

    Pot exista mai multe seturi de date într-o schemă de aspect de date, seturile de date pot fi legate în aspect în orice mod, pot fi adăugate câmpuri calculate, pot fi specificați parametrii de raport etc. Merită menționată o caracteristică interesantă a mecanismului de interogare din 1C:Enterprise. Interogările sunt traduse în cele din urmă într-un dialect al SQL specific SGBD-ului cu care funcționează direct aplicația. În general, încercăm să folosim la maximum capacitățile serverelor DBMS (suntem limitați de faptul că folosim doar acele capabilități care sunt disponibile simultan în toate DBMS-urile suportate de platforma 1C:Enterprise - MS SQL, Oracle, IBM DB2 , PostgreSQL). Astfel, la nivel de interogare în câmpurile calculate, putem folosi doar acele funcții care sunt traduse în SQL.

    Dar la nivelul schemei de compunere a datelor, putem deja adăuga câmpuri personalizate și folosi funcții în ele în limbajul de dezvoltare 1C încorporat (inclusiv cele scrise de noi), ceea ce extinde foarte mult capacitățile rapoartelor. Din punct de vedere tehnic, arată așa - tot ce poate fi tradus în SQL este tradus în SQL, interogarea este executată la nivel DBMS, rezultatele interogării sunt plasate în memoria serverului de aplicații 1C și SKD calculează pentru fiecare înregistrare valorile ​​de câmpuri calculate ale căror formule sunt scrise în limbajul 1C.


    Adăugarea câmpurilor personalizate

    Puteți adăuga un număr arbitrar de tabele și diagrame la raport:


    Designer de rapoarte


    Raport de execuție

    Folosind SKD, utilizatorul poate adăuga selecții complexe la raport (care vor fi adăugate la cerere în locurile potrivite), design condiționat (permițând formatarea diferită a câmpurilor afișate - cu font, culoare etc., în funcție de valorile acestora). ) și multe altele.

    Procesul de construire și generare a unui raport poate fi descris pe scurt după cum urmează:

    • Dezvoltatorul în timpul proiectării cu ajutorul unui designer (sau în timpul rulării folosind cod) determină schema de aspect al datelor:
      • Textul cererii/cererilor
      • Descrierea câmpurilor calculate
      • Relații între solicitări (dacă sunt mai multe)
      • Opțiuni de raportare
      • Setări implicite
      • etc.
    • Setările de mai sus sunt salvate în aspect
    • Utilizatorul deschide raportul
      • Posibil efectuează setări suplimentare (de exemplu, modifică valorile parametrilor)
      • Faceți clic pe butonul „Generați”.
    • Setările utilizatorului sunt aplicate schemei de compoziție a datelor definită de dezvoltator.
    • Se formează un aspect intermediar al compoziției datelor, care conține instrucțiuni despre unde să primească datele. În special, interogările specificate în aspect sunt ajustate. Astfel, câmpurile care nu sunt utilizate în raport sunt eliminate din cerere (acest lucru se face pentru a minimiza cantitatea de date primite). Toate câmpurile care participă la formulele de câmp calculate sunt adăugate la interogare.
    • Procesorul de compunere a datelor intră în joc. Procesorul de layout execută interogări, conectează seturi de date, calculează valori pentru câmpurile și resursele calculate și efectuează grupări. Într-un cuvânt, face toate calculele care nu au fost efectuate la nivel de SGBD.
    • Procesorul de ieșire a datelor lansează o solicitare de execuție și afișează datele primite într-o foaie de calcul, diagramă etc.


    Procesul de generare a unui raport folosind mecanismul ACS

    Încercăm să minimizăm cantitatea de date de raport transferate de la server la aplicația client. La afișarea datelor într-un document foaie de calcul, la deschiderea unui document foaie de calcul, transferăm de pe server doar acele linii pe care utilizatorul le vede la începutul documentului. Pe măsură ce utilizatorul se deplasează de-a lungul liniilor documentului, datele lipsă sunt descărcate de pe server la client.

    Setări personalizate

    Toate instrumentele ACS sunt disponibile atât pentru dezvoltator, cât și pentru utilizatorul final. Dar practica a arătat că utilizatorul final este adesea intimidat de abundența capabilităților instrumentului. Mai mult, în cele mai multe cazuri, utilizatorul final nu are nevoie de toată puterea setărilor - este suficient pentru el să aibă acces rapid la setarea unuia sau doi parametri de raport (de exemplu, perioada și contrapartea). Pornind de la o anumită versiune a platformei, dezvoltatorul de rapoarte are posibilitatea de a marca ce setări de raport sunt disponibile utilizatorului. Acest lucru se face utilizând caseta de selectare „Includeți în setările utilizatorului”. De asemenea, setările raportului au acum un indicator „Mod de afișare”, care ia una dintre cele trei valori:
    • Acces rapid. Setarea va fi afișată direct în partea de sus a ferestrei de raport.
    • Comun. Setarea va fi disponibilă prin butonul „Setări”.
    • Inaccesibil. Setarea nu va fi disponibilă pentru utilizatorul final.


    Setarea modului de afișare în timpul de proiectare


    Afișați setarea în modul Acces rapid în timpul rulării (sub butonul Generare)

    Planuri de dezvoltare

    Una dintre domeniile noastre prioritare în dezvoltarea sistemelor de control al accesului este simplificarea setărilor utilizatorilor. Experiența noastră arată că pentru unii utilizatori finali, lucrul cu setările utilizatorului este încă o activitate majoră. Luăm în considerare acest lucru și lucrăm în această direcție. În consecință, va deveni, de asemenea, mai ușor pentru dezvoltatori să lucreze cu sisteme de control al accesului, deoarece Noi, ca și înainte, dorim să oferim un singur instrument pentru crearea rapoartelor atât pentru dezvoltator, cât și pentru utilizatorul final.

    Conectați-vă la site ca student

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

    Sistemul de compunere a datelor 1C 8.3 pentru începători: numărarea rezultatelor (resurse)

    Scopul acestei lecții va fi:

    • Scrieți un raport care să afișeze o listă de produse (directorul de alimente), conținutul caloric și gustul acestora.
    • Grupați produsele după culoare.
    • Aflați despre câmpurile de rezumat (resurse) și calculate.

    Creați un nou raport

    Ca și în lecțiile anterioare, deschidem baza de date " Delicatese„în configurator și creați un nou raport prin meniu” Fişier"->"Nou...":

    tip document - raport extern:

    În formularul de configurare a raportului, scrieți numele „ Lecția 3" și apăsați butonul " Diagrama de compoziție a datelor deschise":

    Lăsați numele implicit al schemei și faceți clic pe butonul „ Gata":

    Adăugarea unei cereri prin constructor

    Pe fila " Setul de date" click verde semnul plus și selectați „ Adăugați un set de date - Interogare":

    În loc să scriem manual textul solicitării, îl rulăm din nou constructor de interogare:

    Pe „fila” Mesele„trageți masa” Mâncare" de la prima coloană la a doua:

    Selectați din tabel " Mâncare„câmpurile pe care le vom solicita. Pentru a face acest lucru, trageți și plasați câmpurile” Nume", "Gust", "Culoare" Și " Conținut caloric" de la a doua coloană la a treia:

    A ieșit așa:

    Apăsați butonul " Bine" - textul cererii a fost generat automat:

    Crearea setărilor de prezentare a raportului

    Accesați fila " Setări" și faceți clic pe bagheta magică a suna designer de setări:

    Selectați tipul de raport " Listă..." și apăsați butonul " Următorul":

    Trageți din coloana din stânga la dreapta câmpurile care vor fi afișate în listă și faceți clic pe „ Următorul":

    Trageți din coloana din stânga în câmpul din dreapta " Culoare"- se va întâmpla gruparea rândurile din raport. Faceți clic pe " Bine":

    Și iată rezultatul muncii designerului. Ierarhia raportului nostru:

    • raportul în ansamblu
    • gruparea „Culoare”
    • intrări detaliate - rânduri cu nume de alimente

    Salvați raportul (buton dischetă) Și fără a se închide Vom deschide imediat configuratorul în modul utilizator. A ieșit așa:

    Schimbarea ordinii coloanelor

    Dar haideți hai sa schimbam ordinea coloane (săgeți în sus și în jos), astfel încât să arate ca figura de mai jos:

    Să salvăm raportul și să-l deschidem din nou în modul utilizator:

    Grozav, e mult mai bine.

    Să rezumam conținutul de calorii

    Ar fi bine să rezumăm conținutul caloric al alimentelor pe grupe. Pentru a vedea suma conținutului de calorii al tuturor produselor, să zicem, alb sau galben. Sau aflați conținutul total de calorii al tuturor produselor din baza de date.

    În acest scop, există un mecanism de calcul al resurselor.

    Accesați fila " Resurse"și trageți câmpul" Conținut caloric„(vom rezuma) din coloana din stânga la dreapta.

    În acest caz, în câmp, selectați expresia din lista derulantă " Cantitate (calorii)", deoarece totalul va fi suma tuturor elementelor incluse în total:

    Salvăm și generăm un raport:

    Acum avem rezultate pentru fiecare dintre grupuri și pentru raportul în ansamblu.

    Să rezumam (medie) în termeni de calorii

    Acum să-l facem să apară într-o altă coloană medie conținutul caloric al produselor pe grupuri și în raport în ansamblu.

    Nu puteți atinge coloana „Calorii” existentă - totalul este deja afișat în ea, deci să creăm un alt câmp, care va fi o copie exactă a câmpului „Calorie”.

    Pentru a crea un astfel de câmp „virtual”, vom folosi mecanismul câmpuri calculate.

    Accesați fila " Câmpuri calculate" și apăsați verde semnul plus:

    In coloana " Calea datelor„Noi scriem numele noului câmp ( perfect, fara spatii). Să se numească „ Conținut caloric mediu", iar în coloana " Expresie„Noi scriem numele unui câmp existent pe baza căruia se va calcula noul câmp. Scriem acolo” Conținut caloric„. Coloană” Titlu" va fi completat automat.

    Am adăugat un câmp nou (" Conținut caloric mediu"), dar nu va apărea în raport de la sine - trebuie să apelați din nou designer de setări("bagheta magică") sau adăugați acest câmp manual.

    Hai să o facem doilea mod. Pentru a face acest lucru, accesați fila " Setări", selectați " Raport„(la urma urmei, dorim să adăugăm câmpul în întregime la raport), selectați fila din partea de jos” Câmpurile selectate"și trageți câmpul" Conținut caloric mediu„din coloana din stânga la dreapta:

    A ieșit așa:

    Salvăm și generăm un raport:

    Câmpul a apărut și vedem că valorile sale sunt valorile câmpului „Calorie”. Mare!

    Pentru a face acest lucru, vom folosi din nou mecanismul deja familiar resurse(rezumat). Accesați fila " Resurse"și trageți câmpul" Conținut caloric mediu„din coloana din stânga la dreapta:

    Mai mult, în coloana „ Expresie"alege" Medie (Medie de calorii)":

    Salvăm și generăm un raport:

    Vedem că pentru grupuri, adică pentru fiecare culoare, și pentru raport în ansamblu, valoarea medie a fost calculată absolut corect. Dar ei sunt prezenți intrări suplimentare pentru produse individuale (nu grupuri) pe care aș dori să le elimin din raport.

    Știți de ce au apărut (valori nu pe grup)? Pentru că atunci când am adăugat câmpul " Conținut caloric mediu„în setările raportului, la pasul doi am selectat întregul raport iar acest câmp nou a ajuns în elementul " Detaliat înregistrări".

    Să reparăm eroarea. Pentru a face acest lucru, reveniți la fila " Setări", selectați " Intrări detaliate" mai întâi de sus (pasul 2) și apoi " Intrări detaliate„de jos (pasul 3), mergi la marcaj” Selectat câmpuri" și vom vedea în coloana din dreapta elementul " Auto".

    Elementul " Auto" - acesta nu este un singur câmp. Acestea sunt mai multe câmpuri care se încadrează aici automat pe baza setărilor de nivel superior.

    Pentru a vedea care sunt aceste câmpuri, faceți clic pe elementul " Auto" corect butonul și selectați " Extinde":

    Elementul " Auto" extins în următoarele câmpuri:

    Și aici este domeniul nostru" Conținut caloric mediu"care a venit aici din punct de vedere" Raport" când l-am târât acolo. Doar hai sa scoatem bifați caseta de lângă acest câmp pentru a elimina rezultatul acestuia.

    CalculateExpression este o funcție ACS destul de dificil de înțeles, iar exemplele de aplicare în informațiile de referință sunt destul de rare. Acest articol discută exemple care vor fi cu siguranță utile oricărui dezvoltator:

    1. total cumulat în grupare;
    2. total cumulat într-un tabel încrucișat;
    3. obținerea valorii anterioare;
    4. Ieșire PM pe o linie.

    1. Obținerea unui indicator pe bază de angajamente

    Să obținem cantitatea de bunuri ca total cumulat la nivel de grupare. Pentru a face acest lucru, creați un câmp calculat (vezi Figura 1).
    În fila „Resurse”, setați funcția pentru câmpul calculat:
    CalculateExpression(„Suma(CantitateCifra de afaceri)”, „Primul”, „Actual”)
    care va însuma numărul de produse din prima înregistrare la cea actuală (vezi Figura 2).

    Dacă cantitatea totală cumulată a unui articol trebuie să fie obținută la nivelul înregistrărilor detaliate, atunci setăm funcția CalculateExpression pentru câmpul calculat în fila „Câmpuri calculate” (vezi Figura 3).
    În funcție de nivelul de obținere a totalului cumulat, creăm o grupare (vezi Figura 4): la nivel de resurse - grupare pe mărfuri, la nivel de telecomandă - grupare de înregistrări detaliate.
    Figura 4. Grupări de rapoarte cu totaluri cumulate

    2. Obținerea valorii indicatorului din rândul anterior

    Să obținem cursul de schimb pentru data și data anterioară. Pentru a face acest lucru, creați un câmp calculat și scrieți următoarea expresie în câmpul de expresie (vezi Figura 5):
    CalculateExpression(„Rata”, „Anterior”, „Anterior”)
    care va lua valoarea anterioară a cursului de schimb pentru rândul curent, ultimul parametru al funcției limitează primirea datelor.
    Deoarece lucrăm la nivelul înregistrărilor detaliate, mergem imediat la fila „Setări” și creăm o grupare - înregistrări detaliate.

    3. Obținerea unui indicator ca total cumulat într-un tabel încrucișat

    Să obținem cantitatea de bunuri pe bază de angajamente pe perioadă. Pentru a face acest lucru, creați un câmp calculat (vezi Figura 1). În fila „Resurse”, specificăm următoarea expresie pentru câmpul calculat (vezi Figura 6):
    CalculateExpression(„Suma(CantitateCifra de afaceri)”, „Perioada”, „Primul”, „Actual”)
    care la nivelul grupării va calcula cantitatea de mărfuri în intervalul de la primul rând până la cel curent în contextul perioadei pentru fiecare articol.
    În fila „Setări”, creați un tabel cu gruparea după element pe rând și gruparea după perioadă într-o coloană (vezi Figura 7).

    4. Ieșirea datelor tabelare într-o singură linie

    Metodele de afișare a datelor tabelare într-o singură linie, inclusiv metoda care utilizează funcția CalculateExpression, sunt discutate în articol

    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)

    Parametri:

    • 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 va fi efectuat în contextul grupării 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, Start, Sfârșit, Sortare, Sortare ierarhică, ProcesareValoriComenziIdentice)

    Parametri:

    • 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, atunci când generează o expresie pentru câmpul % în grupul ierarhic, generează o expresie care conține relația dintre expresia resursă și funcția CalculateExpression pentru expresia resursă calculată pentru gruparea curentă cu tipul de calcul Hierarchy.
    • Început. 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.
      • "Dura" 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 intrarea 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"
      • "Dura"
      • "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 aspectului 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 EvaluateExpression, compozitorul aspectului, dacă expresia de ordonare conține câmpuri care nu pot fi utilizate în grupare, înlocuiește funcția EvaluateExpression 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)

    Parametri:

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


    Generatorul de layout, când generează expresii pentru a afișa un câmp personalizat a cărui expresie conține doar funcția CalculateArrayWithGroup, generează expresia de ieșire în așa fel încât datele de afișare ș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, GroupFieldExpressions, SelectRecords, SelectGroups)

    Parametri:

    • 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, „Deletion Flag = False”. Dacă acest parametru folosește o funcție de agregare, va apărea o eroare la compunerea datelor;
    • Selectarea grupărilor- selecția aplicată înregistrărilor de grup. De exemplu: „Amount(AmountTurnover) > &Parameter1”.
    Exemplu:
    CalculateExpressionWithGroupValueTable(„Contul CA contraparte, Suma(Suma Cifra de afaceri) AS SalesVolume”, „Contul”)

    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.
    Compozitorul de aspect, atunci când generează un aspect, convertește parametrii funcției în termeni de câmpuri de aspect al compoziției datelor. 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, Format șir)

    Parametri:

    • 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)

    Parametri:

    • Data(Data). 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)

    Parametri:

    • Data(Data). Data specificată;
    • Tipul perioadei(Linia). Conține una dintre următoarele valori: Minut; Oră; Zi; Săptămână; Lună; Trimestru; An; Deceniu; Jumătate de an.
    Exemplu:
    EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), „Săptămâna”)
    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)

    Parametri:

    • Expresie(Data). data originală;
    • TipMărire(Linia). Conține una dintre următoarele valori: Minut; Oră; Zi; Săptămână; Lună; Trimestru; An; Deceniu; Jumătate 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)

    Parametri:

    • Expresia1(Data). Data scăzută;
    • Expresia 2(Data). data originală;
    • Tip Diferență(Linia). Conține una dintre valorile: Al doilea; Minut; Oră; Zi; Lună; Trimestru; 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)

    Parametri:

    • 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). 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). Data până la care este determinat trimestrul
    Exemplu:
    QUARTER(Cheltuieli.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). Data până la care este determinată 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). Data până la care se stabilește ziua anului.
    Exemplu:
    DAYYEAR(ExpenseAccount.Date)

    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ă:
    Zi (Data)

    Parametru:

    • Data(Data). 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 din an 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). 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). Data după care este determinată ziua săptămânii.
    Exemplu:
    ZIUA SĂPTĂMÂNII (Cheltuieli.Data)

    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). Data după care este determinată ora zilei.
    Exemplu:
    HOUR(Cheltuială.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). 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). 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)

    Parametri:

    • Expresie- expresie 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)

    Parametri:

    • Expresia1- valoarea de verificat;
    • Expresia 2- 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 prin 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)

    Parametri:

    • Baza(Număr). Baza operației de exponențiere.
    • Indicator(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)

    Parametri:

    • 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). 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ărilor)

    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.

     


    Citire:



    Cum să anulați un abonament Megogo la televizor: instrucțiuni detaliate Cum să vă dezabonați de la abonamentele Megogo

    Cum să anulați un abonament Megogo la televizor: instrucțiuni detaliate Cum să vă dezabonați de la abonamentele Megogo

    Caracteristicile și avantajele serviciului Megogo Unul dintre cele mai mari servicii video din Europa de Est și CSI este Megogo. Catalogul conține peste 80 de mii...

    Cum să partiționați un disc cu Windows instalat fără a pierde date Partiționați discul 7

    Cum să partiționați un disc cu Windows instalat fără a pierde date Partiționați discul 7

    Împărțirea unui hard disk în partiții utilizând Windows7 Partiționarea unității C:\ în Win7 Când cumpărați un computer sau laptop nou cu...

    De ce editorii nu pot edita toate paginile

    De ce editorii nu pot edita toate paginile

    Utilizatorii care lucrează frecvent în Microsoft Word pot întâmpina anumite probleme din când în când. Am discutat deja despre soluția multora dintre ele...

    Codurile promoționale Pandao pentru puncte

    Codurile promoționale Pandao pentru puncte

    Uneori, când încerci să intri în magazinul oficial al gigantului digital, Play Market scrie pentru a activa un cod promoțional. Pentru a obține o cuprinzătoare...

    imagine-alimentare RSS