Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • OS
  • Limbajul de expresie al sistemului de compoziție a datelor (1Cv8). Primirea prețurilor pentru data documentului într-o solicitare Cum să setați data curentă în SKD

Limbajul de expresie al sistemului de compoziție a datelor (1Cv8). Primirea prețurilor pentru data documentului într-o solicitare Cum să setați data curentă în SKD

SKD 1C înseamnă Sistem de compoziție a datelor. SKD 1C este o nouă modalitate de a scrie rapoarte în 1C, care permite utilizatorului să personalizeze complet raportul.

Dezavantajul lui SKD 1C este că setările sale sunt destul de complexe și nu toți utilizatorii le învață rapid.

Scrierea rapoartelor ACS necesită abilitatea de a lucra cu interogări în 1C, despre care am discutat în.

Care este tehnologia pentru crearea unui raport SKD 1C:

  • Scrieți o solicitare 1C către 1C SKD, care oferă achiziție de date
  • Specificați rolul câmpurilor în SKD 1C (câmpuri calculate, resurse)
  • Introduceți setările implicite 1C SKD.

Utilizatorul are posibilitatea de a schimba multe setări după bunul plac.

Care este tehnologia pentru crearea unui raport privind tehnologiile anterioare:

  • Scrieți o solicitare în programul 1C
  • Dezvoltați un formular de setări (unic pentru raport) care vă va permite să schimbați doar N setări selectate de programator
  • Scrieți codul (programul) pentru executarea cererii și construirea unei forme tipărite a raportului.

După cum puteți vedea, SKD 1C are un avantaj semnificativ atât pentru utilizator, cât și pentru programator:

  • Programator – elimină necesitatea de a scrie un program pentru a rula raportul și setările
  • Utilizator – obține acces semnificativ la setările raportului.

În toate noile configurații 1C, toate rapoartele vor fi utilizate numai pe 1C SKD.

Să vedem cum să creați singur un raport pentru SKD 1C de la zero.

Crearea unui raport SKD 1C

În configurator, faceți clic pe butonul fișier nou (meniul Fișier/Nou).

Selectați tipul de fișier New Report.

Va fi creat un nou raport. Să introducem un nume - fără spații pentru configurare, un sinonim pentru utilizator.

Să creăm schema de bază a SKD 1C.

Creăm o solicitare pentru raportul SKD 1C

Pot exista multe surse de date pentru SKD 1C. Pentru a utiliza, de exemplu, două interogări separate, adăugați mai întâi „Set de date - unire”, apoi mai multe interogări.

În exemplul nostru vom folosi o interogare simplă.

Să schițăm o solicitare de obținere a datelor.

Lucrul cu constructorul de interogări nu este diferit de cel obișnuit;

Ca urmare a generării cererii, SKD 1C va crea o listă de câmpuri disponibile pentru utilizare și le va completa cu nume implicite.

Dacă numele este incomod, îl puteți schimba aici.

Vă rugăm să rețineți că am folosit parametrul &StartDate în cerere. În SKD 1C există un parametru implicit (data) numit &Period și îl puteți folosi.

Mai mult, nu este nevoie să-l specificați direct în cerere - va fi folosit automat. Cu toate acestea, există o subtilitate - se aplică tuturor tabelelor, inclusiv alăturari din stânga și așa mai departe, ceea ce poate da naștere la erori.

De exemplu, obțineți solduri la începutul lunii, iar folosind uniunea din stânga obțineți date pentru astăzi. Dacă utilizați Period, acesta va fi aplicat tuturor tabelelor în mod egal și interogarea nu va funcționa corect.

Setări SKD 1C

În fila Resurse, indicăm câmpurile care vor fi însumate pentru totaluri (adică, numere). Puteți specifica o funcție de însumare pentru câmpuri. În mod implicit, este Sumă (adică însumați numerele din toate liniile și obțineți totalul), dar puteți utiliza Media, Cantitate, Maxim etc.

În fila Setări, le vom dezactiva pe cele de care nu avem nevoie și le vom activa pe cele de care avem nevoie. Aici puteți seta și un nume uman pentru parametru.

Setările de bază sunt făcute în fila Setări:


Să-l deschidem în modul Enterprise. Vă rugăm să rețineți că nu am făcut nicio programare, desen de forme etc. Pentru a seta parametrul, faceți clic pe butonul Setări.

Utilizatorul vede aproape aceeași formă de setări ca și programatorul.

Voila. Raportul funcționează.

Setări SKD 1C

Toate setările raportului SKD 1C se fac făcând clic pe butonul Setări. Cel puțin în șablonul implicit. Este posibil să creați singur formularul de raport SKD 1C și apoi setările pot fi transferate în alte formulare desenate de programator în mod independent.

Să tragem Depozitul de la Coloane la Rânduri.

Să tragem articolul în Depozit.

Faceți clic pe OK și generați raportul. Ura - tocmai am schimbat modul în care funcționează raportul în modul Programare fără programare.

Faceți clic dreapta pe Rânduri (sau pe oricare dintre câmpuri) și selectați Grupare nouă.

Extindeți câmpul Depozit și selectați unul dintre câmpurile acestuia, de exemplu Tip depozit.

După ce ne-am gândit, ne-am amintit că am dori să fie afișate mai multe câmpuri într-o coloană deodată. Faceți clic pe câmpul nou creat de două ori cu butonul stâng al mouse-ului. Aici puteți adăuga câmpuri.

Dacă adăugați o nouă grupare, dar nu selectați un câmp, înseamnă „Toate câmpurile” (afișat ca „Inregistrări detaliate”). Arata cam asa.

Faceți clic stânga pe gruparea noastră (Depozit/Articol) și trageți-o într-o nouă grupare (Tip depozit).

Rezultatul setărilor noastre.

Pe lângă setări, al căror efect este ușor de ghicit după numele lor (Selectare, Sortare etc.), există o filă „Alte setări”. Vă permite să activați sau să dezactivați lucruri precum afișarea totalurilor, plasarea grupărilor în coloane etc.

Vă rugăm să rețineți că setările pot fi setate pentru întregul raport (Raportul este selectat) sau pentru un anumit rând de câmpuri (selectați un rând, de exemplu Nomenclatură și selectați Setări:Nomenclatură).

Limbajul de expresie al sistemului de compunere a datelor

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

Expresiile sunt utilizate în următoarele subsisteme:

  • diagrama de dispunere a datelor - pentru a descrie câmpurile calculate, câmpurile totale, expresiile de relație etc.;
  • setări de aspect al datelor - pentru a descrie expresii de câmp personalizate;
  • layout layout data - pentru descrierea expresiilor pentru conectarea seturilor de date, descrierea parametrilor de layout etc.

Literale

Expresia poate conține literale. Sunt posibile următoarele tipuri de literale:

  • Linia;
  • Număr;
  • Data de;
  • boolean.

Linia

Un șir literal este scris cu caractere „”, de exemplu:

„Literal șir”

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 se scrie fără spații, în format zecimal. Partea fracționată este separată folosind simbolul "." De exemplu:

10.5 200

Data

Un literal de dată este scris folosind literalul cheie DATETIME. După acest cuvânt cheie, anul, luna, ziua, orele, minutele, secundele sunt enumerate în paranteze, separate prin virgulă. Specificarea timpului nu este necesară.

De exemplu:

DATETIME(1975, 1, 06) – 6 ianuarie 1975 DATETIME(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 literalele True (True), False (False).

Sens

Pentru a specifica literali de alte tipuri (enumerări de sistem, date predefinite), se folosește cuvântul cheie Valoare, urmat de numele literalului din paranteze.

Valoare(AccountType. Activ)

Operații pe numere

unar –

Această operațiune are scopul de a schimba semnul unui număr în cel opus. De exemplu:

Vânzări.Cantitate

Unar +

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

Vânzări.Cantitate

binar -

Această operație are scopul de a calcula diferența dintre două numere. De exemplu:

RemainingsAndTurnovers.InitialRemaining – RemainingsAndTurnovers.FinalRemainingsRemainingsAndTurnovers.InitialRemaining - 100 400 – 357

Binar +

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

RemainingsAndTurnover.InitialRemaining + RemainingAndTurnover.Turnover ResiduesAndTurnover.InitialRemaining + 100 400 + 357

Muncă

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

Nomenclator.Preț * 1,2 2 * 3,14

Divizia

Această operație este concepută pentru a obține rezultatul împărțirii unui operand la altul. De exemplu:

Nomenclator.Pret / 1.2 2 / 3.14

Restul diviziei

Această operație este concepută pentru a obține restul atunci când un operand este împărțit la altul. De exemplu:

Nomenclatură % 1,2 2 % 3,14

Operații cu șiruri

Concatenare (binar +)

Această operație este concepută pentru a concatena două șiruri. De exemplu:

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

Ca

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

Valoarea operatorului LIKE este TRUE dacă valoarea<Выражения>satisface modelul, iar FALSE în caz contrar.

Următoarele personaje în<Строке_шаблона>au un sens diferit de doar un alt caracter din rând:

  • % - 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 între paranteze drepte. Enumerarea poate conține intervale, de exemplu a-z, adică un caracter arbitrar inclus în interval, incluzând capetele intervalului;
  • [^...] - între paranteze pătrate o pictogramă de negație urmată de unul sau mai multe caractere: orice caracter cu excepția celor enumerate după pictograma de negație;

Orice alt simbol înseamnă el însuși și nu poartă nicio sarcină suplimentară. Dacă unul dintre caracterele enumerate trebuie să fie scris ca el însuși, atunci trebuie să fie precedat de<Спецсимвол>, specificat după cuvântul cheie SPECIAL CHARACTER (ESCAPE).

De exemplu, șablon

„%ABV[abvg]\_abv%” CARACTER 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; sublinia; literele a; literele b; literele v. Mai mult, această secvență poate fi localizată pornind de la o poziție arbitrară în linie.

Operații de comparație

Egal

Această operație este menită să compare doi operanzi pentru egalitate. De exemplu:

Sales.Counterparty = Sales.NomenclatureMainSupplier

Nu este egal

Această operație este menită să compare doi operanzi pentru inegalitate. De exemplu:

Vânzări.Contraparte<>Vânzări.NomenclaturăMainSupplier

Mai puțin

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

VânzăriCurrent.Amount< ПродажиПрошлые.Сумма

Mai mult

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

SalesCurrent.Sum > SalesPast.Sum

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:

VânzăriCurrent.Amount<= ПродажиПрошлые.Сумма

Mai mult sau egal

Această operație este concepută pentru 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 transmisă. Rezultatul operației va fi True dacă valoarea este găsită sau False în caz contrar. De exemplu:

Articolul B (&Produs1, &Produs2)

Operațiune de verificare a prezenței unei valori într-un set de date

Operația verifică prezenț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 contrapărți

Operație de verificare a unei valori pentru NULL

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

Vânzări.Contrapartea ESTE NULL

Operație de verificare a unei valori pentru inegalitatea NULL

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

Vânzări.Contrapartea NU ESTE NUL

Operații logice

Operațiile logice acceptă expresii de tip boolean ca operanzi.

Operațiunea NU

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

NOT Document.Consignee = Document.Expeditor

Operațiunea I

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

Document.Consignee = Document.Expeditor AND Document.Consignee = &Contraparte

SAU operare

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

Document.Consignee = Document.Expeditor SAU Document.Consignee = &Contraparte

Funcții agregate

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

Sumă

Funcția de agregare Sum calculează suma valorilor expresiilor transmise acesteia ca argument pentru toate înregistrările de detalii. De exemplu:

Sumă (Vânzări. Sumă Cifra de afaceri)

Cantitate

Funcția Count calculează numărul de valori, altele decât NULL. De exemplu:

Cantitate (Vânzări. Contraparte)

Număr de diferite

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

Cantitate (Vânzări diverse. Contraparte)

Maxim

Funcția primește valoarea maximă. De exemplu:

Maxim (Rămas.Cantitate)

Minim

Funcția primește valoarea minimă. De exemplu:

Minim(Rămas.Cantitate)

In medie

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

Medie (Cantitate rămasă)

Alte operațiuni

Operațiunea SELECT

Operația Select are scopul de a selecta una dintre mai multe valori atunci când sunt îndeplinite anumite condiții. De exemplu:

Selectați Când Sumă > 1000 Apoi Sumă În caz contrar 0 Sfârșit

Reguli pentru compararea a două valori

Dacă tipurile de valori comparate sunt diferite unele de altele, atunci relațiile dintre valori sunt determinate pe baza priorității tipurilor:

  • NULL (cel mai mic);
  • boolean;
  • Număr;
  • Data de;
  • 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 sunt aceleași, atunci valorile sunt comparate conform următoarelor reguli:

  • pentru tipul boolean valoarea TRUE este mai mare decât valoarea FALSE;
  • tipul Number are regulile obișnuite de comparare pentru numere;
  • pentru tipul Date, datele anterioare sunt mai mici decât cele ulterioare;
  • pentru tipul String - compararea șirurilor în conformitate cu caracteristicile naționale stabilite ale bazei de date;
  • tipurile de referință sunt comparate pe baza valorilor lor (număr de înregistrare etc.).

Lucrul cu valoare NULL

Orice operație în care unul dintre operanzi este NULL va produce un rezultat NULL.

Exista si exceptii:

  • Operația AND va returna NULL numai dacă niciunul dintre operanzi nu este fals;
  • Operația OR va returna NULL numai dacă niciunul dintre operanzii săi nu este adevărat.

Priorități operaționale

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

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

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

calculati

Funcția Calculate este concepută pentru a calcula o expresie în contextul unei 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ă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:
Sumă(Vânzări.Suma Cifra de afaceri) / Calculare(„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.

Nivel

Funcția este concepută pentru a obține nivelul curent de înregistrare.

Nivel()

NumberInOrder

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

NumberByOrder()

NumberInOrderInGrouping

Returnează următorul număr ordinal din gruparea curentă.

NumberByOrderInGroup()

Format

Obțineți un șir formatat al valorii transmise.

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

Opțiuni:

  • Sens;
  • Formatați șirul.

Format(Facturi consumabile. Sumă document, „NPV=2”)

Începutul perioadei

Opțiuni:

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

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

Rezultat:

01.10.2002 0:00:00

Sfârșitul perioadei

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

Opțiuni:

  • Data de. Tastați data. Data specificată;
  • Tipul perioadei. Tastați șir. Conține una dintre valorile:
    • Minut;
    • Zi;
    • O săptămână;
    • Lună;
    • Sfert;
    • Deceniu;
    • Jumatate de an.

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

Rezultat:

13.10.2002 23:59:59

AddToDate

Funcția este concepută pentru a adăuga o anumită valoare unei date.

Opțiuni:

  • Tip de mărire. Tastați șir. Conține una dintre valorile:
    • Minut;
    • Zi;
    • O săptămână;
    • Lună;
    • Sfert;
    • Deceniu;
    • Jumatate de an.
  • Sumă – cu cât trebuie să măriți data. Număr de tip. Partea fracționată este ignorată.

AddToDate(DateTime(2002, 10, 12, 10, 15, 34), „Lună”, 1)

Rezultat:

12.11.2002 10:15:34

Diferența Data

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

Opțiuni:

  • Expresie. Tastați data. data originală;
  • Expresie. Tip Data. Data scăzută;
  • Tip de diferență. Tastați șir. Conține una dintre valorile:
    • Al doilea;
    • Minut;
    • Zi;
    • Lună;
    • Sfert;

DATEDIFERENCE(DATETIME(2002, 10, 12, 10, 15, 34), DATETIME(2002, 10, 14, 9, 18, 06), „DAY”)

Rezultat:

Subșir

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

Opțiuni:

  • Linia. Tastați șir. Șirul din care este extras subșirul;
  • Poziţie. Număr de tip. Poziția caracterului din care începe subșirul care urmează să fie extras din șir;
  • Lungime. Număr de tip. Lungimea subșirului alocat.

SUBSTRING(Conturi.Adresă, 1, 4)

Lungimea liniei

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

Parametru:

  • Linia. Tastați șir. Un șir a cărui lungime este specificată.

Linie(Contrapărți.Adresă)

An

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

Parametru:

  • Data de. Tip Data. Data până la care este determinat anul.

AN (Cheltuieli.Data)

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.

Parametru

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

Lună

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.

  • Data de. Tastați data. Data până la care se stabilește luna.
MONTH(Cheltuială.Data)

Ziua Anului

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

  • Data de. Tastați data. Data până la care se stabilește ziua anului.
DAYYEAR(Contul cheltuielilor.Data)

Zi

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.

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

O săptămână

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.

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

Zi a 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ă).

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

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.

  • Data de. Tastați data. Data după care este determinată ora zilei.
HOUR(Cheltuieli.Data)

Minut

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.

  • Data de. Tastați data. Data după care este determinat minutul orei.
MINUT(Cheltuieli.Data)

Al doilea

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.

  • Data de. Tastați data. Data după care sunt determinate secundele minutei.
SECOND(Cheltuieli.Data)

Expres

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.

Opțiuni:

  • Expresie pentru a converti;
  • Indicație tip. Tastați șir. 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.

Express(Data.Props1, „Număr(10,3)”)

EsteNull

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.

YesNULL(Suma(Vânzări.Sumă Cifra de afaceri), 0)

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.

Î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.

Destul de des este nevoie de a lucra cu variabile de tip „Data”. În acest articol ne vom uita la tehnicile de bază - trecerea datei curente, verificarea unei valori goale, a unei date arbitrare.

Când scrieți interogări, de multe ori trebuie să comparați datele cu data curentă. Limbajul 1C încorporat are funcția CurrentDate(). Vă permite să determinați ora și data curente pe computer. Pentru a efectua operațiuni cu data curentă, trebuie să treceți valoarea acestei funcții ca parametru la cerere.

Mai jos este o interogare care selectează toate fișierele atașate rapoartelor de cheltuieli cu o dată de creare până în prezent:

ExampleRequest = Solicitare nouă;
Exemplu Request.Text = "
|SELECT
| AdvanceReportAttachedFiles.Link
|DIN
| Directory.AdvanceReportAttachedFilesAS AdvanceReportAttachedFiles
|UNDE
| AdvanceReportAttachedFiles.Date< &ТекДата»;
Exemplu Request.SetParameter("CurrentDate", CurrentDate());

Data personalizată

Funcția discutată mai sus vă permite să comparați și, prin urmare, să faceți o selecție pentru orice perioadă. Această metodă vă permite să specificați o selecție strictă în cerere fără a utiliza parametri suplimentari.

Vă rugăm să rețineți că atunci când utilizați această funcție în exemplul de mai sus, am trecut doar trei numere (an, lună, zi) ca parametri de intrare. Ultimele trei (oră, minut, secundă) sunt opționale și, dacă lipsesc, sunt înlocuite cu „0”, adică începutul zilei.

Acest exemplu va prelua toate fișierele atașate rapoartelor de cheltuieli până la sfârșitul anului trecut 2016. În acest sens, vom indica ora, minutul și secunda pentru a compara punctul de timp „31 decembrie 2016 23:59:59”.

ALEGE
AdvanceReportAttachedFiles.Link
DIN
Directory.AdvanceReportAttachedFiles AS AdvanceReportAttachedFiles
UNDE
AdvanceReportAttachedFiles.Date< ДАТАВРЕМЯ(2016, 12, 31, 23, 59, 59)

Data goală

Cel mai simplu mod de a verifica o variabilă pentru a vedea dacă aceasta conține o dată goală este să folosești o comparație simplă. În acest exemplu, folosind o interogare, vom selecta toate încasările de numerar în contul pentru care data de intrare nu este completată.

Conectați-vă la site ca student

Sistemul de compunere a datelor 1C 8.3 pentru începători: primul raport despre SKD

Dacă nu ați citit introducerea acestui modul, vă rugăm să o citiți: .

Pentru a finaliza lecțiile veți avea nevoie 1C 8.3 (nu mai jos 8.3.13.1644 ) .

Dacă aveți deja instalată versiunea 1C 8.3, utilizați-o. Dacă nu, descărcați și instalați versiunea educațională, pe care 1C o produce special în scopuri educaționale: .

Următoarea comandă rapidă ar trebui să apară pe desktop:

Pentru toate lecțiile din această serie vom folosi baza de date Gastronom pe care am pregătit-o. Coincide complet cu baza pe care am folosit-o în modulele școlare atunci când studiem interogările. Prin urmare, mă aștept să fiți familiarizați cu cărțile și documentele sale de referință.

Dacă l-ați șters, descărcați-l din nou folosind următorul, despachetați-l și adăugați-l la lista de baze de date.

În cele din urmă, bancul de lucru este configurat și acum vom crea primul nostru raport împreună folosind sistemul de compunere a datelor. Va fi foarte simplu să demonstrezi capacitățile generale ale unui sistem de compunere a datelor (abreviat SKD).

Stabilirea unui obiectiv

Scopul acestei lecții- creați un raport care, în modul utilizator, afișează o listă de clienți cu următoarele câmpuri:

  • Nume
  • Podea
  • Culoarea preferată a clientului.

Raportul trebuie să fie extern. Aceasta înseamnă că va fi creat și configurat în configurator și apoi salvat ca fișier separat (extern) pe computer.

Pentru a genera un astfel de raport în 1C, utilizatorul va trebui să lanseze baza de date în modul utilizator, să deschidă acest fișier și să facă clic pe butonul „Generare”.

Merge!

Crearea unui raport

Lansăm configuratorul pentru baza de date Gastronom:

Din meniul principal, selectați „Fișier” -> „Nou...”:

Selectați „Raport extern”:

Crearea unei diagrame de aspect de date în cadrul raportului

Se deschide fereastra pentru crearea unui raport extern. Pentru nume, introduceți: " Lectia 1", apoi apăsați butonul " Diagrama de compoziție a datelor deschise":

Designerul de creare a schemei a început. Suntem de acord cu numele implicit" Schema de aspect de bază de date" și apăsați butonul " Gata":

S-a deschis fereastra de lucru principală, cu multe file și câmpuri, în care ne vom configura schema de aspect al datelor.

Nu trebuie să ne sperii - există într-adevăr o mulțime de oportunități aici, dar nu avem nevoie de toate. Mai ales la prima lecție.

Acum suntem la marcaj " Seturi de date— Vom rămâne acolo.

Scriem o cerere prin constructor

Sistemul de compunere a datelor (abreviat ca DCS) ne cere date, pe care îl va afișa utilizatorului.

Cel mai simplu mod - scrie o cerere până la bază. La școală am învățat să scriem și să înțelegem cererile - așa că mă aștept să aveți abilitățile adecvate.

Click pe verde semnul plus și în lista derulantă selectați elementul " Adăugați un set de date - Interogare":

Sarcina noastră este să scriem textul cererii în acest câmp. Ai uitat încă cum să faci asta?

Vă dau un indiciu:

În această interogare am selectat trei câmpuri (" Nume", "Podea" Și " Culoare preferata") din tabel " Director.Clienți".

Dar nu vă grăbiți să scrieți manual acest text în câmpul „Solicitare”.

Acum vom crea aceeași cerere vizual, doar folosind mouse-ul. Această metodă se numește „ Constructor de interogări".

Pentru a apela acest constructor, faceți clic pe butonul " Constructor de interogări..." în partea dreaptă sus a câmpului "Solicitare":

În fereastra care se deschide, trageți tabelul " Clienții" de la prima coloană la a doua pentru a indica că din acest tabel vom interoga datele:

A ieșit așa:

Apoi, să extindem tabelul " Clienții„în a doua coloană prin semn” La care se adauga"pentru a vedea toate câmpurile și trageți câmpul" Nume" din a doua coloană la a treia pentru a indica faptul că trebuie să interogăm câmpul "Nume" din acest tabel:

A ieșit așa:

Să facem la fel cu câmpurile” Podea" Și " Culoare preferata". Rezultatul va fi astfel:

Faceți clic pe butonul „OK” pentru a părăsi generatorul de interogări și pentru a vedea că textul interogării este adăugat automat în câmpul „Interogare”.

Mai mult, pe baza textului cererii, 1C însuși a scos numele câmpurilor (zona de deasupra cererii) care vor fi utilizate de schema de compunere a datelor:

Acum că am compilat o solicitare, ACS știe cum să obțină date pentru raport.

Configurarea prezentării datelor

Rămâne cumva vizualiza aceste date pentru utilizator sub forma unui formular tipărit. Și aici ACS poate face minuni!

Pentru a crea un astfel de miracol, să mergem la fila " Setări" și faceți clic pe butonul designer de setări ( bagheta magica):

În fereastra care se deschide, specificați tipul de raport " Listă"și apăsați „ Mai departe":

În fereastra următoare, selectați (prin glisare) câmpurile care vor trebui afișate în listă (trageți toate cele disponibile pentru noi: " Culoare preferata", "Nume" Și " Podea"):

Să obținem acest rezultat și să apăsăm butonul " Bine":

Designerul de setări s-a închis și elementul „ Intrări detaliate":

Raportul este gata, să-l verificăm. Pentru a face acest lucru, mai întâi salvați raportul ca fișier extern.

Salvați raportul ca fișier

Deschideți elementul din meniul principal " Fişier"->"Salvați":

Îl voi salva pe desktop sub numele " Lectia 1":

Verificarea raportului în modul utilizator

În cele din urmă, să închidem configuratorul și să mergem la baza noastră de date în modul utilizator:

Nume de utilizator „Administrator”, fără parolă:

Prin meniu, selectați elementul " Fişier"->"Deschis...":

Și specificați fișierul raport (l-am salvat pe desktop sub numele „Lesson1.erf”:

S-a deschis formularul de raportare, faceți clic pe butonul „ Formă":

Gata! Iată imprimanta noastră cu o listă de clienți, culoarea și sexul lor preferat:

Formularul imprimabil poate fi imprimat cu ușurință. Pentru a face acest lucru, trebuie doar să selectați elementul de meniu " Fişier"->"Sigiliu...":

Așadar, pur și simplu, fără programare, am reușit să creăm un raport complet pe care utilizatorii îl pot deschide în bazele lor de date, îl pot genera și imprima.

studenți - răspund prin poștă, dar mai întâi uită-te la.

Conectați-vă la site ca student

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

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

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

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

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

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

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

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

Descrierea noilor funcții în sine:

1. data curentă ()

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

2. COMPUTEEXPRESSION()

Sintaxă:

CalculateExpression(,)

Descriere:

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

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

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

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

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

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

Opțiuni

Tip: Linia. Expresia de evaluat.

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

De exemplu:

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

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

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

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

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

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

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

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

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

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

· Primul

· Ultimul (Ultimul)

· Anterior

· Următorul (Următorul)

· Actual

· LimitingValue(Valoare limită) LimitingValue

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

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

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

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

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

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

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

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

· Următorul (Următorul). Trebuie să obțineți următoarea înregistrare de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca o compensare înainte de 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.

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

Prima înregistrare a cărei valoare a câmpului de ordonare este mai mare sau egală cu valoarea specificată va fi returnată ca înregistrare. De exemplu, dacă câmpul 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 primi o înregistrare cu data 02/01/2010.

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

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

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

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

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

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

Data Numele complet Sens
1 01 ianuarie 2001

Ivanov M.

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

Separat, Acea:

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

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

Dacă valoarea parametrului este Împreună, Acea:

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

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

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

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

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

CalculateExpression(„Rata”, „Anterior”)

Listă nou functii:

CalculateExpressionWithGroupArray(,) -

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

CalculateExpressionWithGroupValueTable(,) -

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

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

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

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

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

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

Cele mai bune articole pe această temă