Internet Windows Android

Sistemul de compunere a datelor 1c 8.3 câmpuri calculate. Funcțiile limbajului de expresie ale sistemului de compunere a datelor

Conectați-vă ca student

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

Sistemul de compunere a datelor 1C 8.3 pentru începători: luați în considerare rezultatele (resursele)

Scopul acestui tutorial va fi:

  • Scrieți un raport care afișează o listă de alimente (directorul de alimente), conținutul lor caloric și gustul.
  • Grupați produsele după culoare.
  • Aflați despre rezumarea (resursele) și câmpurile calculate.

Crearea unui nou raport

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

Tip de document - raport extern:

Sub forma setării raportului, scrieți numele „ Lecția 3"și apăsați butonul" Schema de compunere a datelor deschise":

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

Adăugarea unei cereri prin intermediul constructorului

Pe " Set de date"Apăsați verde semnează plus și selectează elementul " Adăugați set de date - interogare":

În loc să scriem textul cererii manual, rulăm din nou constructor de interogări:

Pe " Mese„trageți masa” Alimente"de la prima coloană la a doua:

Selectarea din tabel " Alimente"câmpurile pe care le vom solicita. Pentru a face acest lucru, trageți câmpurile" Nume", "Gust", "Culoare" și " Conținut caloric"de la a doua coloană la a treia:

S-a dovedit astfel:

Apasa butonul " Bine"- textul cererii a fost generat automat:

Formăm setările pentru prezentarea raportului

Accesați marcajul " Setări"și faceți clic pe bagheta magica, a apela constructor de setări:

Alegerea tipului de raport " Listă... "și apăsați butonul" Mai departe":

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

Trageți din coloana din stânga în marginea din dreapta " Culoare"- va fi grupare liniile din raport. Faceți clic pe „ Bine":

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

  • raportul în ansamblu
  • gruparea „Culoare”
  • înregistrări detaliate - linii cu nume de alimente

Salvați raportul (butonul dischetă) și fără a închide al configuratorului, îl vom deschide imediat în modul utilizator. S-a dovedit astfel:

Modificarea ordinii coloanelor

Dar hai schimbă ordinea coloane (săgeți în sus și în jos) astfel încât să arate ca imaginea de mai jos:

Să salvăm raportul și să îl redeschidem în modul utilizator:

Super, mult mai bine.

Rezumând (cantitatea) după conținutul de calorii

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

Pentru aceasta există un mecanism de calcul al resurselor.

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

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

Salvăm și generăm un raport:

Acum avem totaluri pentru fiecare dintre grupuri și pentru raport în ansamblu.

Rezumând (mediu) după conținutul de calorii

Acum să facem astfel încât să se afișeze încă o coloană in medie conținutul de calorii al produselor pe grupe și, în general, conform raportului.

Nu puteți atinge coloana „Calorie” deja existentă - suma totală este deja afișată în ea, prin urmare să luăm alt câmp, care va fi o copie exactă a câmpului „Conținut caloric”.

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

Accesați marcajul " Câmpuri calculate"și faceți clic pe verde semnul plus:

Într-o coloană " Calea datelor"scrie numele noului câmp ( împreună, fără spații). Lasă-l să se numească „ Conținut mediu de calorii„și în coloană” Expresie"scriem numele unui câmp existent, pe baza căruia va fi calculat noul câmp. Scriem acolo" Conținut caloric„. Coloană” Titlu"va fi completat automat.

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

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

S-a dovedit astfel:

Salvăm și generăm un raport:

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

Pentru a face acest lucru, vom folosi din nou mecanismul deja familiar resurse(rezumând). Accesați marcajul " Resurse"și trageți câmpul" Conținut mediu de calorii„din coloana din stânga spre dreapta:

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

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ă destul de corect. Dar există intrări suplimentare pentru produse individuale (nu pentru grupuri) pe care am dori să le eliminăm din raport.

Știți de ce au apărut (valori nu pe grupe)? Pentru că atunci când am adăugat câmpul " Conținut mediu de calorii„în setările raportului, în al doilea pas pe care l-am selectat întregul raport în ansambluși acest câmp nou a intrat în elementul " Detaliat înregistrări".

Să remediem eroarea. Pentru a face acest lucru, să revenim la „ Setări", Selectați" Înregistrări detaliate„mai întâi de sus (pasul 2) și apoi” Înregistrări detaliate„mai jos (pasul 3), accesați fila” Selectat câmpuri„și vom vedea un element în coloana sa dreaptă” Auto".

Element " Auto"nu este un singur câmp. Acestea sunt mai multe câmpuri care ajung aici automat pe baza setărilor superioare.

Pentru a vedea care sunt aceste câmpuri - faceți clic pe „ Auto" dreaptași selectați elementul " Extinde":

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

Și iată câmpul nostru " Conținut mediu de calorii"care a ajuns aici de la punct" Raport"când l-am târât acolo. Doar scoate bifați caseta de lângă acest câmp pentru a elimina rezultatul.

Limbajul de exprimare a sistemului de compoziție a datelor

Limbajul de expresie al sistemului de compoziție a datelor este conceput pentru a scrie expresii utilizate în diferite părți ale sistemului.

Expresiile sunt utilizate în următoarele subsisteme:

  • schema de compunere a datelor - pentru descrierea câmpurilor calculate, câmpurilor totale, expresiilor de relații etc.
  • setări de compoziție a datelor - pentru descrierea expresiilor de câmp personalizate;
  • șablon de compoziție a datelor - pentru descrierea expresiilor de relație a setului de date, descrierea parametrilor șablonului etc.

Litere

Expresiile pot conține literale. Sunt posibile litere de următoarele tipuri:

  • Linia;
  • Număr;
  • Data;
  • Boolean.

Linia

Un literal șir este scris în caracterele „” ”, de exemplu:

„Șir literal”

Dacă trebuie să utilizați caracterul „” „în interiorul unui șir literal, ar trebui să utilizați două astfel de caractere.

De exemplu:

„Literal“ „între ghilimele„ „„

Număr

Numărul este scris fără spații, în format zecimal. Partea fracționată este separată cu simbolul „.”. De exemplu:

10.5 200

data

Literalul de dată este scris folosind literalul cheii DATETIME. După acest cuvânt cheie, între paranteze, separate prin virgule, sunt enumerate anul, luna, ziua, orele, minutele, secundele. Ora este opțională.

De exemplu:

DATE TIME (1975, 1, 06) - 6 ianuarie 1975 DATE (2006, 12, 2, 23, 56, 57) - 2 decembrie 2006, 23 ore 56 minute 57 secunde, 23 ore 56 minute 57 secunde

Boolean

Valorile booleene pot fi scrise folosind literele True, False.

Sens

Pentru a specifica literale de alte tipuri (enumerări de sistem, date predefinite), utilizați cuvânt cheie O valoare urmată de numele literal între paranteze.

Valoare (tip de cont. Activ)

Operații pe numere

Unar -

Această operațiune este destinată inversării semnului unui număr. De exemplu:

Vânzări.Cantitate

Unary +

Această operațiune nu efectuează nicio acțiune asupra numărului. De exemplu:

Vânzări.Cantitate

Binar -

Această operație este concepută pentru a calcula diferența dintre două numere. De exemplu:

Solduri și cifre de afaceri. Sold inițial - Solduri și cifre de afaceri. Sold solduri finale și cifre de afaceri. Sold inițial - 100 400 - 357

Binar +

Această operație este concepută pentru a calcula suma a două numere. De exemplu:

Solduri și cifre de afaceri. Sold inițial + Solduri și cifre de afaceri. Solduri de afaceri și cifre de afaceri. Sold inițial + 100 400 + 357

Muncă

Această operație este concepută pentru a calcula produsul a două numere. De exemplu:

Nomenclatură. Preț * 1,2 2 * 3,14

Divizia

Această operație este destinată obținerii rezultatului împărțirii unui operand la altul. De exemplu:

Nomenclatură. Preț / 1,2 2 / 3,14

Restul diviziei

Această operațiune este menită să obțină restul împărțirii unui operand la altul. De exemplu:

Nomenclatură Preț% 1,2 2% 3,14

Operații de șir

Concatenare (binar +)

Această operație este destinată concatenării a două șiruri. De exemplu:

Nomenclatură.Articol + „:” + Nomenclatură.Nume

Ca

Această operație verifică dacă șirul se potrivește cu modelul trecut.

Valoarea operatorului LIKE este TRUE dacă valoarea<Выражения>se potrivește cu modelul și FALS altfel.

Următoarele caractere din<Строке_шаблона>are sens altul decât următorul caracter al liniei:

  • % - procent: o secvență care conține zero sau mai multe caractere arbitrare;
  • _ - subliniere: un caracter arbitrar;
  • […] - unul sau mai multe caractere între paranteze drepte: un caracter, oricare dintre cele enumerate în paranteze drepte. Enumerarea poate conține intervale, de exemplu, a-z, adică un caracter arbitrar inclus în interval, inclusiv capetele intervalului;
  • [^…] - între paranteze drepte o pictogramă de negare urmată de unul sau mai multe caractere: orice caracter, cu excepția celor enumerate după pictograma de negare;

Orice alt simbol înseamnă el însuși și nu are nicio semnificație suplimentară. Dacă este necesar să scrieți unul dintre personajele listate ca pe sine, atunci trebuie să fie precedat de<Спецсимвол>specificat după cuvântul cheie ESCAPE.

De exemplu, șablonul

„% ABC [abcg] \ _ abc%” SIMBOL SPECIAL „\”

înseamnă un subșir format dintr-o succesiune de caractere: litera A; literele B; literele B; o cifră; una dintre literele a, b, c sau d; caracter de subliniere; literele a; literele b; litere c. Mai mult, această secvență poate fi localizată pornind de la o poziție arbitrară în linie.

Operații de comparare

La fel

Această operațiune este destinată să compare doi operanzi pentru egalitate. De exemplu:

Sales.Contractor = Sales.NomenclatureMainSupplier

Nu este egal

Această operație are scopul de a compara doi operanzi pentru inegalitate. De exemplu:

Vânzări, antreprenor<>Sales.NomenclatureMainSupplier

Mai puțin

Această operație are scopul de a verifica dacă primul operand este mai mic decât al doilea. De exemplu:

SalesCurrent.Sum< ПродажиПрошлые.Сумма

Mai mult

Această operație are scopul de a verifica dacă primul operand este mai mare decât al doilea. De exemplu:

SalesCurrent.Total> SalesPast.Amount

Mai puțin sau egal

Această operație este concepută pentru a verifica dacă primul operand este mai mic sau egal cu al doilea. De exemplu:

SalesCurrent.Sum<= ПродажиПрошлые.Сумма

Mai mult sau egal

Această operație are scopul de a verifica dacă primul operand este mai mare sau egal cu al doilea. De exemplu:

SalesCurrent.Amount> = SalesPast.Amount

Operațiunea B

Această operație verifică prezența unei valori în lista de valori trecute. Rezultatul operației va fi True dacă se găsește valoarea sau False altfel. De exemplu:

Elementul B (& Elementul 1 și Elementul 2)

Operația de verificare a existenței unei valori într-un set de date

Operațiunea verifică existența unei valori în setul de date specificat. Setul de date de validare trebuie să conțină un câmp. De exemplu:

Vânzări. Contrapartă către contrapărți

Operațiunea de verificare a unei valori pentru NULL

Această operațiune returnează True dacă valoarea este NULL. De exemplu:

Sales.Contractor ESTE NUL

Operația de verificare a unei valori pentru inegalitatea NULL

Această operațiune returnează True dacă valoarea nu este NULL. De exemplu:

Sales.Contractor NU ESTE NUL

Operații logice

Operațiile logice iau expresii booleene ca operanzi.

Operațiunea NU

Operația NU returnează True dacă operandul său este False și False dacă operandul său este True. De exemplu:

NU Document.Consignee = Document.Shipper

Operațiunea ȘI

Operatorul AND returnează True dacă ambii operanzi sunt True și False dacă unul dintre operandi este False. De exemplu:

Document.Consignee = Document.Shipper ȘI Document.Consignee = & Contrapartă

SAU operațiune

Operația OR returnează True dacă unul dintre operanzi este True și False dacă ambii operandi sunt False. De exemplu:

Document.Consignee = Document.Carrier SAU Document.Consignee = & Contrapartă

Funcții agregate

Funcțiile agregate efectuează o acțiune asupra unui set de date.

Sumă

Funcția Sum aggregate calculează suma valorilor de expresie care i-au fost transmise ca argument pentru toate înregistrările de detalii. De exemplu:

Suma (Sales.AmountTurnover)

Cantitate

Funcția Count calculează numărul de valori care nu sunt nule. De exemplu:

Cantitate (vânzări. Contractor)

Numărul diferitelor

Această funcție calculează numărul de valori distincte. De exemplu:

Cantitate (diverse vânzări. Contractor)

Maxim

Funcția devine valoare maximă... De exemplu:

Maxim (solduri. Cantitate)

Minim

Funcția obține valoarea minimă. De exemplu:

Minim (solduri. Cantitate)

In medie

Funcția obține media pentru valori non-NULL. De exemplu:

Media (Solduri. Suma)

Alte operațiuni

Operațiunea SELECT

Operațiunea Selectare este concepută pentru a selecta una dintre mai multe valori atunci când sunt îndeplinite anumite condiții. De exemplu:

Alegere Când Sumă> 1000 Apoi Sumă Altfel 0 Sfârșit

Reguli pentru compararea a două valori

Dacă tipurile valorilor comparate diferă între ele, atunci relația dintre valori este determinată pe baza priorității tipurilor:

  • NUL (cel mai mic);
  • Boolean;
  • Număr;
  • Data;
  • Linia;
  • Tipuri de referință

Relațiile dintre diferitele tipuri de referință sunt determinate pe baza numerelor de referință ale tabelelor corespunzătoare unui anumit tip.

Dacă tipurile de date se potrivesc, valorile sunt comparate în conformitate cu următoarele reguli:

  • Tipul boolean are TRUE valoare mai mare decât valoarea FALSE;
  • tipul Numărului are regulile obișnuite de comparație pentru numere;
  • tipul de dată are date anterioare mai mici decât cele ulterioare;
  • pentru tipul String - comparații de șiruri în conformitate cu caracteristicile naționale stabilite ale bazei de date;
  • tipurile de referință sunt comparate pe baza valorilor lor (numere de înregistrare etc.).

Lucrul cu o valoare NULL

Orice operație în care valoarea unuia dintre operanzi este NULL va avea ca rezultat NULL.

Există excepții:

  • operația ȘI va reveni NULL numai dacă niciunul dintre operanzi nu este False;
  • operația OR va reveni NULL numai dacă niciunul dintre operanzi nu este True.

Priorități de funcționare

Operațiunile au următoarele priorități (prima linie are cea mai mică prioritate):

  • B ESTE NUL NU ESTE NUL;
  • =, <>, <=, <, >=, >;
  • Binar +, Binar -;
  • *, /, %;
  • Unary +, Unary -.

Funcțiile limbajului de expresie ale sistemului de compunere a datelor

calculati

Funcția Calculate este concepută pentru a evalua o expresie în contextul unor grupări. Funcția are următorii parametri:

  • Expresie. Tastați Șir. Conține o expresie calculată;
  • Gruparea. Tastați Șir. Conține numele grupării în contextul căruia trebuie evaluată expresia. Dacă un șir gol este folosit ca nume de grupare, calculul se va efectua în contextul grupării curente. Dacă linia GeneralTotal este utilizată ca nume de grupare, calculul se va efectua în contextul marelui total. În caz contrar, calculul va fi efectuat în contextul grupării părinte cu același nume. De exemplu:
Suma (Sales.SumTurnover) / Calculate ("Suma (Sales.SumTurnover)", "TotalTotal")

ÎN acest exemplu ca rezultat, obțineți raportul dintre suma pentru câmpul „Sales.SumTurnover” din înregistrarea de grupare la suma aceluiași câmp din întregul aspect.

Nivel

Funcția este destinată obținerii nivelului actual de înregistrare.

Nivel()

NumberOrder

Obțineți următorul număr de ordine.

NumberOrder ()

NumberOrderInGroup

Returnează următorul număr secvențial din gruparea curentă.

NumberOrderInGrouping ()

Format

Obțineți șirul formatat al valorii trecute.

Șirul de format este setat în conformitate cu șir de format 1C: Enterprise.

Parametri:

  • Sens;
  • Formatează șirul.

Format (Invoices.SumDoc, "NPT = 2")

Începutul perioadei

Parametri:

    • Minut;
    • Zi;
    • O săptămână;
    • Lună;
    • Sfert;
    • Deceniu;
    • Jumătate de an.

Începutul perioadei (DateTime (2002, 10, 12, 10, 15, 34), „Luna”)

Rezultat:

01.10.2002 0:00:00

Sfârșitul perioadei

Funcția este concepută pentru a extrage o dată specifică dintr-o dată dată.

Parametri:

  • Data. Tastați Data. Data specificată;
  • Tipul perioadei. Tastați Șir. Conține una dintre valori:
    • Minut;
    • Zi;
    • O săptămână;
    • Lună;
    • Sfert;
    • Deceniu;
    • Jumătate de an.

EndPeriod (DateTime (2002, 10, 12, 10, 15, 34), „Săptămâna”)

Rezultat:

13.10.2002 23:59:59

Adăugați la dată

Funcția este destinată adăugării unei anumite valori datei.

Parametri:

  • Tipul de mărire. Tastați Șir. Conține una dintre valori:
    • Minut;
    • Zi;
    • O săptămână;
    • Lună;
    • Sfert;
    • Deceniu;
    • Jumătate de an.
  • Valoare - cu cât ar trebui mărită data. Număr tip. Partea fracționată este ignorată.

Adăugați la dată (DateTime (2002, 10, 12, 10, 15, 34), „Luna”, 1)

Rezultat:

12.11.2002 10:15:34

Diferența de dată

Funcția este concepută pentru a obține diferența dintre două date.

Parametri:

  • Expresie. Tastați Data. Data originală;
  • Expresie. Tastați Data. Data scăzută;
  • Tipul diferenței. Tastați Șir. Conține una dintre valori:
    • Al doilea;
    • Minut;
    • Zi;
    • Lună;
    • Sfert;

DIFERENȚĂ (DATA TIME (2002, 10, 12, 10, 15, 34), DATA DATA (2002, 10, 14, 9, 18, 06), „ZI”)

Rezultat:

Substring

Această funcție este concepută pentru a extrage un șir de caractere dintr-un șir.

Parametri:

  • Linia. Tastați Șir. Șirul din care se extrage șirul secundar;
  • Poziţie. Număr tip. Poziția caracterului din care începe șirul de caractere care trebuie extras din șir;
  • Lungime. Număr tip. Lungimea subcordului de selectat.

SUBSTRAT (Contractori. Adresa, 1, 4)

Lungimea liniei

Funcția este concepută pentru a determina lungimea unui șir.

Parametru:

  • Linia. Tastați Șir. Șirul care trebuie specificat în lungime.

Șir (Accounts.Adress)

An

Această funcție este concepută pentru a extrage un an dintr-o valoare de tipul Datei.

Parametru:

  • Data. Tastați Data. Data până la care se determină anul.

AN (Data facturii)

Sfert

Această funcție este destinată extragerii unui număr de sfert dintr-o valoare de tipul Datei. Numărul sfertului este în mod normal în intervalul 1-4.

Parametru

  • Data. Tastați Data. Data până la care se stabilește trimestrul
TRIMESTRE (Data expedierii)

Lună

Această funcție este destinată extragerii numărului lunii dintr-o valoare de tipul Datei. Numărul lunii este în mod normal în intervalul 1-12.

  • Data. Tastați Data. Data la care se stabilește luna.
LUNĂ (Data facturii)

Ziua anului

Această funcție este destinată să obțină ziua anului dintr-o valoare de tipul Datei. Ziua anului este în mod normal cuprinsă între 1 și 365 (366).

  • Data. Tastați Data. Data până la care se determină ziua anului.
ZIUA ANULUI (Data facturii)

Zi

Această funcție este destinată să obțină ziua lunii dintr-o valoare de tipul Datei. Ziua lunii este în mod normal în intervalul 1-31.

  • Data. Tastați Data. Data până la care se determină ziua lunii.
ZI (Data facturii)

O săptămână

Această funcție este destinată obținerii numărului săptămânii anului dintr-o valoare de tipul Datei. Săptămânile anului sunt numerotate începând cu 1.

  • Data. Tastați Data. Data la care se determină numerele săptămânii.
SĂPTĂMÂNĂ (Data facturii)

Zi a săptămânii

Această funcție este destinată să obțină ziua săptămânii dintr-o valoare de tipul Datei. Ziua săptămânii este în mod normal între 1 (luni) și 7 (duminică).

  • Data. Tastați Data. Data până la care se determină ziua săptămânii.
ZIUA SĂPTĂMÂNII (Data facturii)

Ora

Această funcție este destinată să obțină ora din zi dintr-o valoare de tipul Datei. Ora zilei variază de la 0 la 23.

  • Data. Tastați Data. Data până la care se determină ora zilei.
ORA (Data facturii)

Minut

Această funcție este destinată să obțină minutul orei dintr-o valoare de tipul Datei. Minutul orei variază de la 0 la 59.

  • Data. Tastați Data. Data până la care se determină minutul orei.
MINUT (Data facturii)

Al doilea

Această funcție este destinată obținerii secundei minutului dintr-o valoare de tipul Datei. Al doilea dintr-un minut variază de la 0 la 59.

  • Data. Tastați Data. Data la care se determină secundele minutului.
A DOUA (Data facturii)

Expres

Această funcție este destinată extragerii unui tip dintr-o expresie care poate conține un tip complex. Dacă expresia conține un alt tip decât tipul cerut, va fi returnată o valoare NULL.

Parametri:

  • Expresia de convertit;
  • Indicarea tipului. Tastați Șir. Conține un șir de tip. De exemplu, „Număr”, „Șir” etc. cu exceptia tipuri primitive șir dat poate conține numele tabelului. În acest caz, se va încerca să se exprime o referință la tabelul specificat.

Express (Data.Props1, "Number (10.3)")

Da Nul

Această funcție returnează valoarea celui de-al doilea parametru dacă valoarea primului parametru este NULL.

În caz contrar, valoarea primului parametru va fi returnată.

Da NULL (Suma (Sales.SumTurnover), 0)

Funcții comune ale modulului

Expresia motorului de compoziție a datelor poate conține apeluri către funcții ale globalului module comune configurare. Nu este necesară o sintaxă suplimentară pentru a apela astfel de funcții.

În acest exemplu, funcția „Numele abreviate” va fi apelată din modulul general de configurare.

Rețineți că utilizarea funcțiilor modulelor comune este permisă numai atunci când 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.

EvaluateExpression- o funcție destul de complexă a ACS de înțeles și exemple de aplicații în informațiile de referință sunt destul de rare. Acest articol discută exemple care sunt utile pentru fiecare dezvoltator:

  1. total cumulativ în grupare;
  2. un total de rulare într-o tabelă încrucișată;
  3. obținerea valorii anterioare;
  4. ieșirea PM într-o singură linie.

1. Obținerea indicatorului pe o bază cumulativă

Să obținem numărul de bunuri pe o bază cumulativă la nivel de grupare. Pentru a face acest lucru, creăm un câmp calculat (vezi Figura 1).
În fila „Resurse”, setați funcția pentru câmpul calculat:
Calculați expresia ("Sumă (valoare)", "Prima", "Curentă")
care va însuma numărul de produse de la prima înregistrare la cea curentă (vezi Figura 2).

Dacă doriți să obțineți numărul de bunuri pe un total cumulativ la nivelul înregistrărilor detaliate, atunci funcția Calculați expresia este setată pentru câmpul calculat din fila „Câmpuri calculate” (a se vedea Figura 3).
În funcție de nivelul de obținere a totalului cumulativ, creăm o grupare (vezi Figura 4): la nivelul resurselor - gruparea pe mărfuri, la nivelul DZ - gruparea înregistrărilor detaliate.
Figura 4. Gruparile raportului cu un total cumulativ

2. Obținerea valorii indicatorului din linia anterioară

Să obținem cursul valutar 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 (a se vedea Figura 5):
CalculateExpression (Curs, Anterior, Anterior)
care va lua valoarea anterioară a cursului valutar pentru linia curentă, ultimul parametru al funcției restricționează recuperarea datelor.
Deoarece lucrăm la nivelul înregistrărilor detaliate, accesați direct fila „Setări” și creați o grupare - înregistrări detaliate.

3. Obținerea unui indicator pe un total cumulativ într-o filă încrucișată

Să obținem numărul de bunuri pe o bază cumulativă în contextul perioadei. Pentru a face acest lucru, creăm un câmp calculat (vezi Figura 1). În fila „Resurse”, pentru un câmp calculat, vom specifica următoarea expresie (vezi Figura 6):
Calculați expresia („Sumă (cifră de afaceri)”, „perioadă”, „prima”, „curentă”)
care, la nivel de grupare, va calcula cantitatea de bunuri în intervalul de la prima linie la cea curentă în contextul perioadei pentru fiecare articol.
În fila „Setări”, creați un tabel grupat după element într-un rând și grupat după punct într-o coloană (a se vedea Figura 7).

4. Ieșirea datelor secțiunii tabulare pe o singură linie

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

În lumina viitoarei versiuni din 8.2.14, voi încerca să descriu unele dintre noile funcții ale sistemului de compoziție a datelor.

Deschideți schema de compoziție a datelor, de preferință într-un raport extern, pentru a ușura editarea.

Adăugăm un set de date de tipul interogării și scriem o interogare simplă, fie manual, fie utilizând constructorul interogării:

1. Configurați o cerere în ACS.

2. Configurarea câmpurilor calculate în ACS

3. Configurăm compoziția datelor în fila Setări

4. Lansarea 1C Enterprise 8.2.14. Deschidem raportul. Ne formăm, obținem.

Descrierea noilor funcții în sine:

1. Data curentă ()

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

2. CALCULAȚI EXPRIMAREA ()

Sintaxă:

Evaluează expresia (,)

Descriere:

Funcția este concepută pentru a evalua o expresie în contextul unor 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 de grup a acestei grupări. De exemplu, în selecția Nomenclaturii de grupare, nu puteți utiliza expresia CalculateExpression ("Sum (SumTurnover)", "TotalTotal")> 1000... Dar o astfel de expresie poate fi utilizată î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.

La calcularea expresiilor de interval pentru totalul total (parametrul de grupare este setat la Total general), se presupune că nu există înregistrări pentru calcularea datelor detaliate și calcularea funcțiilor agregate.

Layer linker atunci când generați o expresie de funcție EvaluateExpression, în cazul în care expresia de ordonare conține câmpuri care nu pot fi utilizate în grupare, înlocuiește funcția EvaluateExpression pe NUL.

Parametrii

Un fel: Linia... Expresia de evaluat.

Un fel: Linia... Conține numele grupării în contextul căruia trebuie evaluată expresia. Dacă un șir gol este folosit ca nume de grupare, calculul se va efectua în contextul grupării curente. Dacă linia GeneralTotal este utilizată ca nume de grupare, calculul se va efectua în contextul marelui total. În caz contrar, calculul va fi efectuat în contextul grupării părinte cu același nume.

De exemplu:

Suma (Sales.SumTurnover) / Calculate ("Suma (Sales.SumTurnover)", "TotalTotal")

În acest exemplu, rezultatul va fi raportul dintre suma pe câmp Sales.AmountTurnover gruparea înregistrărilor la suma aceluiași câmp în întregul aspect;

Un fel: Linia... Parametrul poate lua următoarele valori:

· Rezultatul general- expresia va fi evaluată 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ă o înregistrare ierarhică părinte.

· Gruparea- expresia va fi evaluată pentru înregistrarea de grup curentă a grupării.

· 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 originale.

La calcularea funcției EvaluateExpression () cu sensul GroupingNonResource pentru înregistrările de grup care nu sunt grupări pe resurse, funcția este calculată în același mod în care s-ar calcula dacă valoarea parametrului ar fi egală cu valoarea Gruparea.

Compozitorul șablonului de compoziție a datelor, atunci când generează șablonul de compoziție a datelor, la ieșirea câmpului de resurse prin care se realizează gruparea în șablon, plasează o expresie calculată folosind funcția EvaluateExpression () , specificând parametrul GroupingNonResource... Pentru restul resurselor, expresiile obișnuite ale resurselor sunt grupate după resurse.

Un fel: Linia... Indică cu ce înregistrare se începe fragmentul, în care se calculează funcțiile agregate ale expresiei și din ce înregistrare se obțin valorile câmpurilor din afara funcțiilor agregate. Valoarea poate fi una dintre următoarele:

· Primul

· Ultimul

· Anterior

· Următorul (Următorul)

· Actual

· Valoare limită(BoundaryValue) Valoare limită

Un fel: Linia... Indică la ce înregistrare să continue fragmentul în care să evalueze funcțiile agregate ale expresiei. Valoarea poate fi una dintre următoarele:

· Primul... Trebuie să obțineți primul record de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca offset de la începutul grupării. Valoarea rezultată trebuie să fie un număr întreg mai mare decât zero. De exemplu, First (3) - obținerea celui de-al treilea record de la începutul grupării.

Dacă prima înregistrare se află în afara limitelor de grupare, atunci se consideră că nu există înregistrări. De exemplu, dacă există 3 înregistrări și doriți să obțineți prima (4), atunci se consideră că nu există înregistrări.

· Ultimul... Trebuie să obțineți cea mai recentă înregistrare de grupare. O expresie poate fi specificată după cuvântul dintre paranteze, al cărui rezultat va fi folosit ca un offset de la sfârșitul grupării. Valoarea rezultată trebuie să fie un număr întreg mai mare decât zero. De exemplu, Ultimul (3) - obținerea celui de-al treilea record de la sfârșitul grupării.

Dacă ultima înregistrare se află în afara limitelor de grupare, atunci se consideră că nu există înregistrări. De exemplu, dacă există 3 înregistrări și doriți să obțineți ultimul (4), atunci se consideră că nu există înregistrări.

· Anterior... Trebuie să obțineți înregistrarea anterioară de grupare. O expresie poate fi specificată după cuvântul dintre paranteze, al cărui rezultat va fi folosit ca offset înapoi de la înregistrarea de grupare curentă. De exemplu, Previous (2) - obțineți precedentul din înregistrarea anterioară.

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

La recuperarea înregistrării anterioare pentru totalul grupării, prima înregistrare este considerată a fi obținută.

· Următorul (Următorul)... Trebuie să obțineți următorul record de grupare. O expresie poate fi specificată după cuvântul dintre paranteze, al cărui rezultat va fi folosit ca offset înainte de înregistrarea de grupare curentă. De exemplu, Următorul (2) - obțineți următorul din înregistrarea următoare.

Dacă următoarea înregistrare iese din grupare, atunci se consideră că nu există înregistrări. De exemplu, dacă există 3 înregistrări și Next () este primit pentru a treia înregistrare, atunci nu există înregistră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 actuală.

La preluarea pentru totalul grupării, se obține prima înregistrare.

· Valoare limită(BoundaryValue)... Necesitatea de a obține o înregistrare la valoarea specificată. După cuvânt Valoare limităîntre paranteze, trebuie să specificați o expresie cu a cărei valoare doriți să începeți fragmentul, primul câmp de ordonare.

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

Un fel: Linia... Listează expresiile, separate prin virgule, care descriu regulile de ordonare. Dacă nu este specificat, ordonarea se efectuează î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ă(a comanda în ordine crescătoare), Descendentă(pentru ordine descrescătoare) și Comandare automată(pentru a ordona câmpurile la care se face referire după câmpurile după care doriți să comandați obiectul la care se face referire). Cuvânt Comandare automată poate fi folosit ca la un cuvânt Vârstă, deci cu cuvântul Descendentă.

Un fel: Linia... Similar cu parametrul Triere... Folosit pentru aranjarea înregistrărilor ierarhice. Dacă nu este specificat, constructorul de layout generează ordonarea în conformitate cu ordonarea specificată în parametru Triere.

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

· Separat indică faptul că o secvență de înregistrări ordonate este utilizată pentru a defini î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, apoi:

Intrarea anterioară la intrarea 3 va fi intrarea 2.

Curent, Curent(respectiv 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ă, apoi:

Intrarea anterioară la intrarea 3 va fi intrarea 1.

§ dacă fragmentul calculat este definit ca Curent, Curent(respectiv parametrii startși Sfârșit), atunci pentru înregistrarea 2 acest fragment va consta din înregistrările 2 și 3. Expresie Calculați expresia ("Suma (valoare)", curent, curent) va fi egal cu 50.

Când este specificat, valoarea parametrului este Împreună, în parametri startși Sfârșit nu puteți specifica un offset pentru poziții Primul, ultimul, precedentul, următorul.

Calculați expresia ("Sum (SumTurnover)", "First", "Current")

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

Evaluează expresia (curs, anterior)

Listă nou funcții:

EvaluateExpressionGroupedArray(,) -

Funcția returnează o matrice, fiecare element conținând rezultatul evaluării expresiei care trebuie grupată după câmpul specificat.

EvaluateExpressionGroupedValuesTable(,) -

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

ValueFilled() - Returnează True dacă valoarea este diferită de valoare de acest tip implicit, non-NULL, non-nul, nedefinit. Pentru valorile booleene, se efectuează o verificare nulă. Pentru șiruri, se efectuează o verificare pentru absența caracterelor non-spațiu

Format(,) - Obțineți șirul formatat al valorii trecute. Șirul de format este setat în conformitate cu șirul de format al sistemului 1C: Enterprise.

Substring(,,) - Această funcție este concepută pentru a extrage un șir de caractere dintr-un șir.

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

Linia() - Dacă o matrice este transmisă ca parametru, funcția returnează un șir care conține reprezentări de șiruri ale tuturor elementelor matricei separate prin caractere ";". Dacă un tabel de valori este trecut ca parametru, funcția returnează un șir care conține reprezentări de șiruri ale tuturor rândurilor din tabelul de valori, cu reprezentări de celule ale fiecărui rând separate prin caractere „;” și șiruri - prin flux de linii. Dacă un element are o reprezentare de șir gol, atunci se afișează un șir în loc de reprezentarea sa.

Unul dintre cele mai convenabile și unice instrumente de dezvoltare din 1C este sistemul de compoziție a datelor (ACS). Puțini în ce sisteme de informare dezvoltatorii pot crea rapoarte fără a scrie niciun cod de programare. Acest mecanism a fost dezvoltat pentru a simplifica și a accelera dezvoltarea formularelor de raportare și pentru a oferi utilizatorilor mai multe oportunități de a lucra cu datele de ieșire. Acesta din urmă este foarte apreciat de utilizatorii avansați, care, datorită acestui fapt, pot personaliza independent raportul în funcție de propriile nevoi, fără să aștepte acțiunile dezvoltatorilor.

Crearea unui raport în 1C prin ACS

Procesul de elaborare a unui raport utilizând ACS poate fi împărțit în următoarele etape:

  1. Crearea unei cereri. Solicitarea poate fi scrisă manual sau puteți face fără codul programului folosind o interfață convenabilă;
  2. Personalizarea raportului. Câmpurile, totalurile, grupările, parametrii, proiectarea raportului sunt selectate;
  3. După aceea, trebuie doar să conectăm raportul rezultat la configurație în orice mod disponibil.

În ciuda capacității utilizatorilor de a personaliza rapoartele pe ACS, acestea trebuie create prin configurator.

Să luăm în considerare un exemplu de creare raport extern pe SKD:


Acum intrăm în 1C, deschidem raportul pentru a ne asigura că acțiunile efectuate sunt corecte. Toate datele sunt reflectate, grupările pot fi restrânse și extinse. După cum puteți vedea, ACS vă permite să primiți rapoarte complete fără a scrie cod, cu excepția cerințelor non-standard. Având în vedere că majoritatea rapoartelor au o structură similară, cunoașterea ACS va reduce semnificativ timpul de dezvoltare pentru aceste obiecte.

Marea popularitate a acestui mecanism a fost asigurată de sprijinul posibilităților largi în formarea raportului. Mai mult, pot fi utilizate nu numai de dezvoltatori, ci și de utilizatorii obișnuiți.

Capabilități ACS

Există situații în care am făcut un raport, apoi un utilizator vine și cere să facă Revizuire minoră... De exemplu, afișați SKU-uri în loc de nume de articole. ACS permite utilizatorilor să facă astfel de îmbunătățiri pe cont propriu folosind butonul „Mai multe” - „Schimbați varianta ...”.


Fereastra care se deschide este similară cu fereastra de setări din raportul din configurator și are și funcții similare. Pentru a rezolva problema, utilizatorul trebuie să meargă la fila „Câmpuri” și să schimbe câmpul „Nomenclatură”. Acest câmp pentru editare este deschis făcând dublu clic și butonul „Selectare ...” devine disponibil.


Fereastra care se deschide ne oferă posibilitatea de a selecta orice valoare care va apărea în câmpul „Nomenclatură”. Unele câmpuri din stânga au semnul plus - dezvoltatorul a plasat linkuri în aceste câmpuri, ceea ce înseamnă că le putem vedea detaliile. Deschidem „Nomenclatura” și vedem articolul de care avem nevoie. Selectați-l și selectați-l.


Fereastra pentru editarea variantelor de rapoarte conține multe funcții utile sisteme de compunere a datelor. De exemplu, utilizatorul poate modifica în mod independent ordinea grupărilor, poate adăuga o selecție sau poate impune proiectare condiționată... Finalizăm editarea și generăm un raport - după cum puteți vedea, întreaga nomenclatură este acum afișată sub formă de SKU-uri.


Mecanismul 1C: Enterprise 8.3 ACS are, de asemenea, funcționalități avansate pentru dezvoltatori. La elaborarea raportului, am folosit doar 2 file - „Seturi de date” și „Setări”, dar există multe altele în ACS. Pentru a utiliza toate funcțiile sistemului de compoziție a datelor, trebuie să înțelegeți de ce este necesară fiecare dintre file:

  1. Seturi de date - toate interogările implicate în generarea raportului sunt listate aici;
  2. Legături set de date - utilizate pentru a crea legături între diferite interogări din prima filă;
  3. Câmpuri calculate - o listă de câmpuri adăugate care nu aparțin cererii. Cel mai adesea este utilizat în cazurile în care, pe baza valorilor câtorva câmpuri, trebuie să obțineți 1 valoare dintr-o interogare;
  4. Resurse. În 1C, așa-numitele câmpuri pentru care trebuie să cunoașteți rezultatele. Resursele susțin diverse operații aritmetice - sumă, cantitate, maxim și altele;
  5. Parametrii. Sunt utilizate dacă, pentru a genera un raport, este necesar ca utilizatorul să introducă anumite date - data, departamentele sau articolele, de exemplu;
  6. Aspecte. Conceput pentru acele cazuri în care utilizatorii doresc să vadă un raport conceput unic. Creați un loc separat pentru semnături sau o nouă parte superioară a raportului - toate acestea se pot face aici;
  7. Scheme imbricate. Acestea sunt necesare atunci când raportul dvs. trebuie să conțină date din alte rapoarte;
  8. Setări. Secțiunea declară câmpurile afișate, grupările, configurabile aspect raport.


Numărul de posibilități inerente mecanismului ACS de către dezvoltatori este mare, dar multe dintre ele sunt utilizate extrem de rar. Chiar și programatorii 1C cu experiență de-a lungul anilor de muncă pot să nu folosească unele funcții. Pentru a începe munca de succes în ACS, este suficient să cunoașteți conceptele de bază și setările utilizate frecvent. În cazuri rare, documentația va fi salvată.