Utilizarea selecțiilor în skd. Set de date - Interogare

SKD 1C înseamnă Sistem de compunere a datelor. SKD 1C este Metoda noua scrierea rapoartelor în 1C, ceea ce permite utilizatorului să personalizeze complet raportul pe cont propriu.

Dezavantajul lui SKD 1C este că setările sale sunt destul de complicate ș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ă date
  • Specificați SKD 1C rolul câmpurilor (câmpuri calculate, resurse)
  • Introduceți setările implicite SKD 1C.

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 un cod (program) pentru executarea unei interogări și construirea formă tipărită raport.

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

  • Programator - vă scutește de la scrierea unui program pentru a efectua un raport și setări
  • Utilizator - Obține acces semnificativ la setările raportului.

În toate configurațiile noi 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.

Cream un 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. Introduceți numele - fără spații pentru configurare, sinonim pentru utilizator.

Să creăm schema principală a ACS 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 „Setul de date - Alăturare”, apoi mai multe interogări.

În exemplul nostru, vom folosi o interogare simplă.

Să scriem o interogare pentru a obține datele.

Lucrul cu generatorul de interogări nu este diferit de cel normal, am discutat acest lucru în .

Ca urmare a solicitării, SKD 1C va crea o listă de câmpuri disponibile pentru utilizare și va completa cu ea numele implicite.

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

Rețineți că am folosit parametrul &StartDate în interogare. În SKD 1C există un parametru (data) implicit 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ăturarilor din stânga și altor lucruri care pot da naștere la erori.

De exemplu, primești soldurile la începutul lunii, iar cu alăturarea din stânga primești datele pentru azi. Când este utilizat, Period va fi aplicat tuturor tabelelor în mod egal și interogarea nu va funcționa corect.

Setări SKD 1C

În fila Resurse, specificați câmpurile care vor fi însumate pentru totaluri (adică numere). Puteți specifica funcția de însumare pentru câmpuri. În mod implicit, aceasta este Suma (adică însumați numerele de pe toate rândurile și obțineți totalul) sau puteți utiliza Media, Număr, Maxim etc.

În fila Parametri, dezactivează-i pe cei de care nu avem nevoie și activează-i pe cei de care avem nevoie. Aici puteți seta și numele uman al parametrului.

Setările principale 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, formulare de desen și alte lucruri. Pentru a seta un parametru, 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 realizează prin apăsarea butonului Setări. Cel puțin în șablonul implicit. Este posibil să creați singur formularul de raport SKD 1C, iar apoi setările pot fi transferate în alte formulare desenate de programator în mod independent.

Trageți Depozitul din Coloane în Rânduri.

Să tragem Nomenclatura la 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.

Clic Click dreapta la Rânduri (sau 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ă avem mai multe câmpuri afișate într-o coloană deodată. Faceți clic pe câmpul nou creat de două ori cu butonul stâng al mouse-ului. Puteți adăuga câmpuri aici.

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

Prindeți gruparea noastră (Depozit / Nomenclatură) cu butonul stâng al mouse-ului ș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ă fila „Alte setări”. Vă permite să activați sau să dezactivați lucruri precum afișarea totalurilor, locația grupărilor în coloane etc.

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, cum ar fi Nomenclatură și alegeți Setări:Nomenclatură).

În ultimul meu articol, am scris deja că 1C este o platformă paradoxală. Sistemul de conectare a datelor este un astfel de paradox. SKD este destinat proiectării rapoartelor complexe și implică înlocuirea programării „manuale” a rapoartelor prin proiectarea într-un set de instrumente multifuncțional. Capacitatea de a utiliza ACS a apărut în cea de-a opta versiune, dar a durat mult până să apară versiunea 8.2, astfel încât 1C să o poată utiliza în produsele sale standard. Pe de o parte, ACS este un set de instrumente multifuncțional, cu ajutorul căruia puteți crea rapoarte foarte complexe fără o singură linie de cod. Cu toate acestea, sistemul de control al accesului are un prag de intrare destul de mare, este foarte dificil să îl studiezi și să începi să-l folosești pe deplin „dintr-o lovitură”, deoarece interfața nu este în întregime intuitivă, dar majoritatea ghiduri complete utilizarea sunt disponibile numai sub formă de literatură plătită.

În cursul studiului meu despre SKD, a apărut o problemă. Este necesar să obțineți date dintr-un tabel de valori terță parte folosind limbajul de interogare și apoi să operați aceste date ca și cu date similare din tabelele bazei de date (operații pivot, grupare și așa mai departe). În formatul clasic, am face o interogare care primește informații din tabelul trecut la interogare ca parametru.

Solicitare = Solicitare nouă(
"ALEGE
| Tabel. Nomenclator,
| Masa.Depozit
| DE LA
| &TK AS Tabel");
Request.SetParameter("TK", TK);

Dar cu SKD nu este atât de simplu. Din păcate, operația descrisă mai sus nu se poate face în sistemul de compunere a datelor. Cu toate acestea, este implementată posibilitatea încărcării tabelelor externe de valori în sistem.

Aici merită să facem o mică digresiune lirică și să vorbim despre Datasets. Seturile de date sunt surse de informații de la care SKD obține date pe care ulterior le compila într-un raport. Seturile de date sunt împărțite în tipuri, folosind în principal tipul „Solicitare”, în corpul căruia programatorul scrie o interogare în baza de date. Tipul „Obiect” este folosit pentru a încărca date de la obiecte externe. În ambele cazuri, la ieșire avem un anumit set de câmpuri obținute ca urmare a executării unei cereri sau încărcării unui obiect extern. Ulterior, aceste câmpuri pot fi operate în fila „Setări”, împreună cu configurarea detaliată a structurii raportului. Pentru interconectarea diferitelor seturi în ACS, este posibil să se specifice legăturile seturilor de date în fila cu același nume. Aceste legături sunt un analog direct al uniunii din stânga într-o interogare clasică. Cu toate acestea, trebuie luat în considerare faptul că interogările din orice set de date nu „știu” despre existența altor seturi de date, în cele din urmă relațiile cu seturile de date vor afecta aspectul datelor conform structurii specificate în fila „Setări”.

Detaliem problema printr-un exemplu. Există un raport standard Declarații de decontare ale organizării configurației ZiK 8. Este necesar ca tipurile de calcule din raport să fie grupate în anumite grupuri. Tipul de calcul al corespondențelor-grup sunt stocate într-un tabel extern de valori. Pentru a-l încărca în schema principală de aspect al datelor, creăm un „obiect de set de date” cu numele „Grupuri” (Figura 2). Facem o conexiune cu „setul de date solicitate” - „Angajări” după tipul de calcul (Figura 3). În „setul de date solicitate” - „Angajări” există informații despre grupuri, ștergem toate aparițiile. După care, în fila „Setări”, putem folosi câmpul „Grup”, a cărui valoare este încărcată dintr-o sursă de date externă (Figura 4). În funcția de generare a rapoartelor, suplimentăm încărcarea datelor externe.

Funcția GenerateReport(Result = Undefined, DecodeData = Undefined, OutputToReportForm = True) Export

//obținerea sau formarea tabelului dorit de valori „Grup” și scrierea acestuia în variabila cu același nume

ExternalData = New Structure();//creează și completează structura de date externă
ExternalData.Insert(Grupuri);

UserPanelValue = GenericReports.GetUserPanelSettingsValuesofObject(ThisObject);
DefaultSettings = SettingsComposer.GetSettings();
GenericReports.GetAppliedSetting(ThisObject);
GenericReports.Generate GenericReport(ThisObject, Result, Decryption Data, OutputToReportForm, ExternalData);
SettingsComposer.LoadSettings(DefaultSetting);
Rezultat returnat;

EndFunctions

Dacă ar fi să creăm un raport de la zero, atunci codul de pornire al generării raportului ar arăta astfel:

ExternalDataSets = Struct nou;
ExternalDataSets.Insert(„Grupuri”, Grupuri); //Grupuri - tabelul de valori necesar
DataCompositionSchema = GetLayout("MainDataCompositionSchema"); //aspectul nostru cu aspectul de date
Setări = DataCompositionSchema.Setări implicite;
Layout Layout Builder = Noua versiune de date Layout Layout Builder;
LayoutLayout = LayoutComposer.Run(DataCompositionScheme, Settings);
DataCompositionProcessor = DataCompositionProcessor nou;
DataCompositionProcessor.Initialize(LayoutLayout, ExternalDataSets);
TabDoc = New SpreadsheetDocument;
OutputProcessor = Nou OutputProcessorofDataCompositionResultIntoSpreadsheetDocument;
OutputProcessor.SetDocument(TabDoc);
OutputProcessor.Output(DataCompositionProcessor);

Citit 9660 o singura data

Atenţie! Iată o versiune de probă a lecției, ale cărei materiale ar putea să nu fie complete.

Conectați-vă ca student

Conectați-vă ca student pentru a accesa conținutul școlii

1C 8.3 Sistem de compunere a datelor pentru începători: realizarea unei conexiuni între seturile de date

  • Scrieți un raport care să afișeze clienții și produsele lor preferate. Fiecare client are o culoare preferată, iar fiecare produs are propria sa culoare - pe baza acestor culori trebuie să determinați „favoritul” produsului. De exemplu, dacă culoarea preferată a lui Andrei este roșu, atunci una dintre alimentele lui preferate vor fi roșiile (sunt roșii).
  • Aplicați două seturi de date raportului. Primul set este datele din tabelul de referință „Clienți”. Al doilea - date din tabelul cărții de referință „Food”.
  • Implementează conexiunea acestor două seturi astfel încât în ​​raport să rămână doar produsele preferate pentru fiecare dintre clienți.

Crearea unui nou raport

Deschideți baza de date „Gastronom” în configurator și creați un nou raport prin meniul principal:

Tip document - „Raport extern”:

Sub forma unui nou raport, specificați numele „Lecția6” și faceți clic pe butonul „Deschideți schema de compunere a datelor”:

Lăsați numele implicit al schemei:

Adăugarea primului set de date

În schema care se deschide, accesați fila „Seturi de date” și selectați „Adăugați un set de date - interogare” prin semnul plus verde:

Numim constructorul de interogare:

Specificați tabelul „Clienți” și câmpurile pe care doriți să le obțineți din interogare:

Adăugarea unui al doilea set de date

Adăugarea unui al doilea set de date:

Selectați-l (DataSet2) și apelați din nou constructorul de interogare:

Specificați tabelul cărții de referință „Food” și câmpurile pe care doriți să le obțineți din cerere:

Acesta este textul cererii:

Vă rugăm să rețineți că acum avem două seturi de date în raport: DataSet1 și DataSet2. Fiecare are propriul text și date de solicitare.

A face numele mai descriptive

Pentru claritate, să redenumim Dataset1 în Clients și Dataset2 în Food.

Faceți acest lucru făcând dublu clic pe fiecare dintre seturi:

Putem folosi datele fiecăruia dintre seturile din raportul nostru. Vom accesa aceste date prin câmpuri.

ÎN acest moment setul „Clienți” are următoarele câmpuri: „Nume” și „Culoare Favorită”, iar setul „Mâncare”: „Nume” și „Culoare”.

Vedem că numele se intersectează și ne putem încurca ușor. Deci, să schimbăm numele câmpurilor pentru a fi mai descriptive.

Selectați setul „Clienți” și modificați numele câmpurilor astfel:

Apoi selectați setul „Mâncare” și schimbați numele câmpurilor astfel:

Apelarea constructorului de setări

În cele din urmă, accesați fila „Setări” și faceți clic bagheta magica pentru a apela constructorul de setări:

Tipul raportului - „Lista...”:

Selectați câmpurile pentru raport din ambele seturi:

Vezi de ce a fost atât de important să schimbi numele câmpurilor? În stadiul setărilor de compoziție a datelor, nu vedem din ce seturi provin aceste câmpuri. Vedem doar numele lor.

Verificarea raportului

Salvăm raportul și îl generăm în modul utilizator:

Da. Bine, dar nu chiar. A avut loc o așa-numită îmbinare încrucișată a celor două seturi (ar trebui să fiți familiarizați cu acest lucru din îmbinările din interogările pe care le-am studiat în modulele anterioare). Fiecare înregistrare din tabelul „Clienți” are o înregistrare corespunzătoare din tabelul „Mâncare”.

Dar din toate aceste înregistrări, trebuie să lăsăm doar acelea pentru care câmpul „FavoriteCustomerColor” este egal cu câmpul „FoodColor”:

Conectarea a două seturi de date

Pentru a face acest lucru, să legăm două seturi de date (Clienți și Alimente) de câmpurile Culoare preferată și Culoare alimentară ale clientului.

Accesați fila „Legături seturi de date” și faceți clic pe butonul plus pentru a adăuga un nou link:

Setați parametrii așa cum se arată mai jos:

O sa fac o explicatie.

Sursa de comunicare și receptor. Ei bine, totul este clar aici. Specificați primul set (Clienți) și al doilea set (Food) de date. vreau să desenez Atentie speciala acea comunicare se va realiza conform principiului unire stânga exterioară(am parcurs-o la tema cererilor din modulele anterioare). Pe baza acestui lucru, trebuie să alegeți ce set va fi sursa și ce receptor.

expresie sursă. Specificați aici o expresie sau pur și simplu un câmp din setul de date sursă (am specificat câmpul Culoare Favorită a Clientului din setul Clienți aici).

expresia receptorului. Indicăm aici o expresie sau doar un câmp din setul de date receptor (am indicat câmpul Food Color din setul Food).

Astfel, acest link va lăsa din lista anterioară doar acele rânduri al căror câmp FavoriteCustomerColor este egal cu câmpul FoodColor.

Salvați raportul și rulați-l în modul utilizator:

Grozav!

Voi face o explicație despre domeniu" Condiția de comunicare„, despre care programatorii începători își lovesc atât de des sulițele.

Condiția de legătură este un câmp auxiliar. Puteți scrie expresii acolo. care implică câmpuri numai din setul de date specificat în sursa linkului.

În acest caz, pentru toate rândurile de la sursa linkului, această expresie (condiția linkului) va fi verificată înainte de a lega. Și dacă această expresie este TRUE, atunci se va încerca să se lege acest șir de șiruri din sink-ul de legătură. Dacă expresia este FALSĂ, nu se vor face astfel de încercări.

O zi bună, cititorii mei! Astăzi vom continua să ne uităm la elementele de bază ale sistemului de layout. În această serie de articole, ați aflat ce este SKD și v-ați familiarizat cu principalele componente ale SKD. De asemenea, am luat în considerare datele de intrare pentru construirea unui raport și am învățat principalele etape ale rulării unui raport despre ACS. În plus, mulți au avut ocazia să-și testeze cunoștințele trecând printr-unul mic. Și acum poți să te uiți la conținutul articolului și să vezi ce se va discuta în el.

Set de date - interogare.

  1. Spre deosebire de o interogare obișnuită, o interogare de compunere a datelor nu conține o clauză TOTAL. În schimb, totalurile sunt generate în fila Resurse. În această filă, selectați câmpurile pentru care doriți să obțineți expresiile finale. Și în fila „Setări”, este indicat în ce secțiune vor fi obținute rezultatele, adică aici sunt create grupările corespunzătoare și resursele sunt calculate din acestea. Puteți citi mai multe despre asta în articol.
  2. Următorul punct se referă la setările de selecție. Există două posibilități de implementare.
    1. Prin setările opțiunii de raportare. Acest lucru se poate face în fila „Setări” - „Selectare”. Dacă folosim această opțiune, atunci este cea mai flexibilă, deoarece puteți specifica tipuri diferite comparații dintre care chiar și utilizatorul poate alege. De asemenea, la utilizarea acestei opțiuni, condițiile de filtrare sunt impuse în interogarea propriu-zisă. Dacă raportul se bazează pe o interogare de lot care utilizează tabele temporare, atunci selecția va afecta toate tabelele de interogare de lot în care apare câmpul de filtru.
    2. la nivelul cererii. Dacă folosim o interogare, atunci nu putem folosi altceva decât operația de egalitate.
      O excepție este cazul când trebuie să efectuăm o filtrare „hard” a datelor după o anumită valoare. Să spunem prin valoarea de enumerare. În fila „Parametri”, putem seta condiția. Dacă activăm indicatorul „Restricționați accesibilitatea”, atunci utilizatorul nu va putea anula această condiție.
  3. Sortarea este, de asemenea, mai corectă de impusă la nivelul setărilor variantelor de raport.
    1. Dacă specificați un câmp de sortare în cerere, atunci utilizatorul va specifica un alt câmp în configurarea opțiunii sale de raport, atunci setarea noastră efectuată la nivel de solicitare va avea cea mai mică prioritate. Sortarea setată de utilizator în configurarea variantei de raport va fi efectuată mai întâi. Prin urmare, dacă trebuie să setați sortarea „în mod implicit”, atunci utilizați setările variantei de raport din Configurator.
    2. Și dacă trebuie să configurați o sortare „hard” în raport, astfel încât utilizatorul să nu o poată schimba? Apoi setăm sortarea la nivel de solicitare, iar în fila „Seturi de date”, setăm restricția câmpului. Selectați setul de date dorit și bifați caseta în coloana „Restricție câmp” - „Comandare”.

Opțiuni de masă virtuală.

  • Construirea tabelelor virtuale de registre contabile, registre de acumulare, registre de informații depinde de data specificată. Poate fi fie o singură dată, fie un interval, ca, de exemplu, pentru un tabel de solduri și cifre de afaceri. ACS este conceput astfel încât, dacă raportul se bazează pe un tabel virtual, atunci este necesar să lase utilizatorul să aleagă pentru ce interval sau la ce dată să genereze raportul. ACS adaugă automat parametrii necesari perioadei la schema de aspect.
  • Dacă în interogare este selectat un tabel virtual de solduri sau un tabel virtual de registre de informații, atunci se adaugă automat un parametru numit „Perioadă”.
  • Dacă în interogare este selectat un tabel virtual de solduri și cifre de afaceri sau un tabel virtual de cifre de afaceri, atunci se adaugă automat parametrii „Începutul perioadei” și „Sfârșitul perioadei”.
  • Ce să faci dacă trebuie să obții solduri la sfârșitul perioadei? Există două moduri:
    1. Mergem la fila „Parametri” iar în parametrul „Perioada” din coloana „Expresii” scriem următoarele:
      &EndPeriod. Activați, de asemenea, indicatorul „Restricționați accesibilitatea”.
    2. Scăpăm complet de parametrul „Period” și îl înlocuim cu parametrul „EndPeriod”. Configurați un parametru opțional masă virtuală:
      • Accesați fila „Seturi de date” și faceți clic pe butonul „Generator de interogări...”.
      • În fila „Compoziția datelor” din colțul din stânga sus, faceți clic pe butonul pentru a deschide dialogul „Opțiuni tabel virtual” (acesta este un buton pătrat gri cu o roată roată pe fundalul unui tabel mic).
      • În câmpul „Perioad” al casetei de dialog, scrieți: &EndPeriod.
      • Acum, în textul interogării setului de date din parametrii tabelului virtual, acest parametru va apărea înconjurat de acolade:
ÎnregistrareAcumulare. Rămășițe de bunuri. Rămâne(((&EndPeriod) ), ) AS Rămâne

Acoladele indică o extensie a limbajului de interogare pentru compoziția datelor. De asemenea, indică faptul că acest parametru este opțional. Aceasta înseamnă că dacă nu este definit în schema de compunere a datelor, atunci soldurile vor fi primite la data curentă.

Extensie de limbaj de interogare.

Acestea sunt instrucțiuni speciale care sunt incluse în acolade în corpul cererii. Aceste instrucțiuni specifică câmpurile și parametrii care pot fi operați la configurarea unei variante de raport. Datele din acolade vor fi prezente în aspect chiar dacă caseta de selectare Completare automată este dezactivată.

Când se creează un set de date de interogare, în mod implicit, câmpurile disponibile ale schemei de compunere a datelor sunt completate automat pe baza interogării create (caseta de selectare „Completare automată” este bifată în fila „Seturi de date”).

Cum funcționează câmpurile de schemă de compoziție a datelor disponibile cu completare automată?

    1. Câmpurile din lista de selecție a interogărilor și câmpurile lor secundare devin disponibile.
    2. Dacă selectăm din registrul de acumulare, atunci chiar și câmpurile de registru care nu sunt incluse în cerere devin disponibile în câmpurile de compunere a datelor. Dar aceste câmpuri sunt disponibile doar pentru selecție (în expresii condiționate)
      și nu pot fi folosite ca câmpuri de ieșire.
    3. Parametrii tabelelor virtuale „Period”, „StartPeriod” și „EndPeriod” devin
      disponibile pentru selecție.
    4. Dacă în textul solicitării este specificată o condiție „grea”, atunci acest parametru va fi adăugat și în fila „Parametri”.

Dacă caseta de selectare Completare automată este debifată, atunci câmpurile schemei de compoziție a datelor sunt șters, dar parametrii încadrați între acolade în corpul interogării rămân.

Cum pot completa singur câmpurile schemei de compunere a datelor?

Debifați caseta „Completare automată” din fila „Seturi de date”.

Faceți clic pe butonul „Query Builder...”. Să creăm următoarea interogare:

ALEGE Rămâne. Nomenclatură AS Nomenclatură, Rămășițe. Cantitate AS Cantitate Registrul de acumulare. Rămășițe de bunuri. Rămâne(((&EndPeriod) ), ) AS Rămâne

În fila „Tabele”, putem seta parametrii tabelelor virtuale pentru toate mesele.

Acum, în fila „Compoziția datelor”, selectați fila „Câmpuri”. Aici setăm câmpurile de selecție, care
va fi prezentat în diagrama de layout.

Câmpul „Și....” înseamnă că înregistrările secundare vor fi incluse în selecție
câmpuri de tip complex, cum ar fi directoare și documente etc. Dacă câmpul este , cum ar fi un număr, atunci va fi imposibil să puneți un steag în câmpul „ȘI...”.

Selectați două câmpuri „Nomenclatură” și „Cantitate”. Pentru câmpul „Nomenclatură” setați steagul „Și ..”,
pentru a selecta înregistrările copilului. Obțineți următoarea interogare:

ALEGE Rămâne. Nomenclatură AS Nomenclatură, Rămășițe. Cantitate AS Cantitate (SELECT Nomenclature. * , Cantitate) Registrul de acumulare. Rămășițe de bunuri. Rămâne(((&EndPeriod) ), ) AS Rămâne

În noua interogare, între paranteze, mai există o secțiune SELECT - acesta este textul extensiei care indică câmpurile care vor fi disponibile în aspect. Câmpul „Nomenclatură.*” indică faptul că câmpul „Nomenclatură” și detaliile sale secundare, cum ar fi „Cod”, „Nume”, etc., vor fi disponibile. Deci, am completat singuri câmpurile de aspect.

Dar acum nu putem folosi marginile în condiții de aspect. Dacă accesați fila „Setări” și selectați fila „Selectare”, atunci nu puteți seta condiții pentru niciunul dintre câmpurile pe care le-am selectat în paragraful anterior. De ce?

Impunerea de condiții asupra parametrilor tabelului virtual trebuie specificată și în fila Compoziție date din Generatorul de interogări. În colțul din stânga sus, faceți clic pe butonul pentru a deschide dialogul „Opțiuni tabel virtual”.
(acesta este un buton pătrat gri cu o roată roată pe fundalul unei mese mici). În câmpul „Condiție” al casetei de dialog, scrieți: Nomenclatură. Acum, în textul interogării setului de date din parametrii tabelului virtual, acest parametru „Nomenclatură” va apărea înconjurat de acolade:

ÎnregistrareAcumulare. Rămășițe de bunuri. Rămâne(((&EndPeriod) ), ((Nomenclatură) )) AS Rămâne

Într-un limbaj de interogare obișnuit, specificarea unui parametru arată astfel: Nomenclatură = &Nomenclatură. Dar în extensia limbajului de interogare, aceasta este scrisă diferit. Este specificat doar numele câmpului. Aici nu specificăm operația de egalitate, inegalitate sau în ierarhie, deoarece utilizatorul însuși va selecta operația dorită în setările sale.

În fila Compoziție datelor din Generatorul de interogări, vedem o altă filă, Condiții. Este necesar să se specifice condițiile pentru clauza WHERE din extensia limbajului de interogare. Selectați câmpul „Sumă”. Acum acest câmp este disponibil în condițiile din fila „Setări” - „Selectare”. Și în textul cererii au apărut linii noi, cuprinse între paranteze.

(UNDE rămâne. Cantitate)

Dacă se specifică selecția după câmpul de cantitate, atunci această propoziție va fi inserată în interogarea finală. Unde tipul de condiție și valoarea de comparație vor fi determinate prin setarea variantei de raport.

Deci, cred că este suficient material pentru ziua de azi. Dacă mai aveți puncte neclare, atunci nu ezitați să întrebați, pentru că pentru asta este prevăzută posibilitatea de a comenta. În curând vom fi pregătiți să consolideze acest material, așa că abonați-vă la actualizări de pe site-ul nostru pentru a nu-l rata!

Și în această serie de lecții, ne vom uita la funcțiile limbajului de expresie SKD, vom vorbi despre caracteristicile sistemului de aspect și, de asemenea, vom analiza setările de bază pentru câmpurile de aspect. Succes în înțelegerea acestui material dificil!

La sfârșitul articolului vreau să vă sfătuiesc să vă eliberați de Anatoly Sotnikov. Acesta este un curs de la un programator experimentat. El vă va arăta separat cum să creați rapoarte în ACS. Trebuie doar să ascultați cu atenție și să vă amintiți! Veți primi răspunsuri la întrebări precum:
  • Cum se creează un raport simplu de listă?
  • Pentru ce sunt coloanele Câmp, Cale și Titlu din fila Câmpuri?
  • Care sunt restricțiile privind câmpurile de aspect?
  • Cum să configurați corect rolurile?
  • Care sunt rolurile câmpurilor de aspect?
  • Unde pot găsi fila cu aspectul datelor într-o interogare?
  • Cum se configurează parametrii în SKD?
  • Mai interesant in continuare...
Probabil, nu ar trebui să încercați să navigați pe Internet în căutarea informatie necesara? În plus, totul este gata de utilizare. Doar începeți! Toate detaliile despre ce se află în tutorialele video gratuite de pe pagina autorului soft maker http://www..pngsoft maker 2015-12-07 14:51:12 2018-06-12 13:14:13 Sistem de compunere a datelor (SKD). Partea 2.

Extensie limbaj de interogare pentru sistemul de compunere a datelor

Extinderea limbajului de interogare pentru sistemul de compunere a datelor se realizează folosind instrucțiuni sintactice speciale, cuprinse între paranteze și plasate direct în textul interogării.

Elemente de sintaxă a extensiei limbajului de interogare al sistemului de compoziție a datelor

ALEGE

Această propoziție descrie câmpurile pe care utilizatorul le va putea selecta pentru ieșire. Dupa asta cuvânt cheie alias-urile câmpurilor din lista principală de selecție a interogărilor, care vor fi disponibile pentru personalizare, sunt listate separate prin virgule.

De exemplu:

(SELECT Nomenclator, Depozit)

Un alias de câmp poate fi urmat de o combinație de caractere „.*”, ceea ce indică posibilitatea de a utiliza câmpuri copil din acest câmp.

De exemplu, intrarea Nomenclatură.* indică posibilitatea utilizării câmpurilor copil din câmpul „Nomenclatură” (de exemplu, câmpul „Nomenclatură.Cod”). Elementul SELECT poate fi prezent doar în prima interogare de îmbinare.

UNDE

Descrie câmpurile pe care utilizatorul poate aplica selecția. Această propunere utilizează câmpuri de tabel. Nu este permisă utilizarea aliasurilor de câmpuri selectate. Fiecare parte de unire poate conține propriul element WHERE.

(UNDE Nomenclatura.*, Depozit)

Un exemplu simplu

Trebuie să obțineți vânzări pentru perioada + afișați întreaga gamă, indiferent dacă au existat vânzări sau nu. Adică trebuie să selectați date din tabelul cifrei de afaceri din Registrul vânzărilor, date din directorul nomenclatorului. Să omitem întrebarea de ce avem nevoie de toată nomenclatura.

Pentru a rezolva problema, puteți crea o interogare care conectează articolul și tabelul cifrei de afaceri din vânzări cu o alăturare stângă, ca urmare, pentru articolul care nu a fost vândut în perioada selectată, vom obține valorile câmpului contraparte, Tratat, Cantitate, Sumă= nul. O astfel de cerere:

Alegeți un srnome -ofertă. Dink ca nomenclator, costuri de vânzări. Control, vânzări, contracte, vânzări, vânzări. În prezent, ca cantitate, vânzări, cost ca cost dintr-o carte de referință. Nomenclatura ca una spinală - conexiune înfășurată a registrului. Dezvoltare ca vanzari de sprnies.

Iată rezultatul:

contraparte Tratat Nomenclatură Cantitate Sumă
nul nul _Test1 nul nul
SRL „Coarne și copite” Acord1 Papuci 10 1200
"Gazprom" afacere tare Cizme 5 13000
nul nul Galoșuri nul nul
nul nul Ardezii nul nul

În acest exemplu, nu au existat vânzări ale articolului: „Galose” și „Slates”

Și totul ar fi bine, dacă grupăm selecția după contraparte, atunci toate articolele care nu pot fi vândute se vor încadra într-o grupare separată, unde Contrapartea = Null, dar clientul dorește să aibă o selecție arbitrară în raport după câmpul contraparte (de desigur, aceasta înseamnă contrapartea din Registrul vânzărilor). Cum să fii? La urma urmei, de fapt, trebuie doar să filtram tabelul Vânzări. Dacă folosim completarea automată în constructorul ACS, atunci câmpurile de selecție disponibile vor include câmpul contraparte, totul pare a fi in regula, dar la executarea unui raport cu selectie pe contrapartida vom pierde toate inregistrarile din legatura cu nomenclatorul. De exemplu, să setăm o selecție: contraparte = LLC Coarne și copite. Rezultatul va arăta astfel:

Nu este exact ceea ce avem nevoie, nu?

Pentru a rezolva problema, puteți, desigur, să adăugați un parametru la interogare, de exemplu, la parametrii tabelului virtual Cifra de afaceri din vânzări, dar in acelasi timp se pierde flexibilitatea setarii tipului de comparatie.

Există o soluție: pentru aceasta, în generator de interogări fila Dispunerea datelor => Mese adăugați un câmp de condiții la condițiile tabelului virtual Cifra de afaceri din vânzăriși-și schimbă pseudonimul în CounterpartySelection

Pentru a nu confunda utilizatorul cu câmpurile de selecție, dezactivați câmpul de condiție contraparteși schimbați titlul câmpului CounterpartySelection


Ca rezultat al executării acestei scheme cu filtrarea activată după câmpul contraparte, interogarea rezultată va lua forma:

Alegeti un srnome.Dink ca nomenclator,vanzarile cifrei de afaceri.Antreprenor ca contraparte,vanzari,contract ca contract -contract,vanzari.In prezent.Completarea ca> cantitate, costurile de vanzari ca cost,reprezentare (vanzarile cifrei de afaceri. Contract de contract) ca personal contractual, reprezentare, reprezentare (control vânzări. RefNomenclature.Reprezentare AS NomenclaturăReprezentare FROM Directory.Nomenclatură AS ReferenceNomenclature LEFT JOIN Registrul de acumulare.Vânzări.Citturi de afaceri(&P , , , Counterparty = &P3 ) AS SprferenceNomenclature. = SalesTurnovers.Nomenclatura

Și rezultatul corespunzător:

contraparte Tratat Nomenclatură Cantitate Sumă
nul nul _Test1 nul nul
SRL „Coarne și copite” Acord1 Papuci 10 1200
nul nul Cizme nul nul
nul nul Galoșuri nul nul
nul nul Ardezii nul nul

Test1 este un grup din directorul Nomenclatură, în care se află totul

La publicație este atașată schema XML a raportului utilizat în publicație. Am creat schema în Integrated Automation, dar cred că totul va funcționa bine atât în ​​SCP, cât și în UT 10

Rezumând

Acest exemplu arată cum să vă creați propriile setări de selecție în ACS și să le dezactivați pe cele create automat dacă proiectați o schemă cu marcajul activat Completare automată.

Dacă aveți suficientă experiență pentru a crea circuite fără a utiliza Completare automată- atunci acest sfat nu are sens.

Software folosit

  • Program de captură de ecran SnapOK!
  • Editor de fișiere XML


Se încarcă...
Top