Contacte

Utilizarea selecțiilor în SCD. Utilizarea selecțiilor în DCS Cum funcționează completarea automată a câmpurilor disponibile în schema de compunere a datelor

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 un sistem de control al accesului și v-ați familiarizat cu principalele componente ale unui sistem de control al accesului. De asemenea, am analizat datele de intrare pentru construirea unui raport și am învățat principalele etape ale rulării unui raport pe un sistem de control al accesului. În plus, mulți au avut ocazia să-și testeze cunoștințele trecând un scurt test. Acum puteți arunca o privire asupra conținutului articolului și puteți vedea ce va fi acoperit în el.

Set de date - interogare.

  1. Spre deosebire de o interogare obișnuită, nu există nicio clauză REZULTATE în interogarea compoziției datelor. În schimb, totalurile sunt generate în fila „Resurse”. Pe această filă, selectați câmpurile pentru care doriți să obțineți expresii finale. Și în fila „Setări” este indicat în ce secțiune vor fi obținute rezultatele, adică aici sunt create grupări adecvate și resursele sunt calculate pe baza acestora. 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 execuție.
    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 putem specifica diferite tipuri de comparații pe care chiar și utilizatorul le poate alege. În plus, atunci când utilizați această opțiune, condițiile de filtrare sunt impuse în interogarea în sine. Dacă raportul se bazează pe o interogare de lot care utilizează tabele temporare, atunci selecția va afecta toate tabelele din interogarea de lot în care apare câmpul de selecție.
    2. La nivelul cererii. Dacă folosim o interogare, atunci nu vom putea folosi altceva decât operația de egalitate.
      Excepția este cazul când trebuie să efectuăm o filtrare „hard” a datelor după o anumită valoare. Să zicem, după valoarea de enumerare. În fila „Parametri” putem seta o condiție. Dacă activăm indicatorul „Limit Disponibilitate”, utilizatorul nu va putea anula această condiție.
  3. De asemenea, este mai corect să aplicați sortarea la nivelul setărilor opțiunilor de raportare.
    1. Dacă specificați un câmp de sortare în cerere, atunci utilizatorul va specifica un alt câmp în configurarea versiunii sale de raport, atunci setarea noastră făcută 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 folosim setările opțiunii de raport din Configurator.
    2. Ce se întâmplă dacă trebuie să configurați sortarea „hard” într-un raport, astfel încât utilizatorul să nu o poată schimba? Apoi setăm sortarea la nivel de interogare, iar în fila „Seturi de date” setăm o limitare a câmpului. Selectați setul de date necesar și bifați caseta din coloana „Limitarea câmpului” - „Comandă”.

Parametrii tabelului virtual.

  • Construirea tabelelor virtuale de registre contabile, registre de acumulare și registre de informații depinde de o dată dată. Aceasta poate fi fie o dată, fie un interval, cum ar fi pentru un tabel de solduri și cifra de afaceri. SDS-ul este creat în așa fel î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. SKD adaugă automat parametrii necesari perioadei la diagrama 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 cerere este selectat un tabel virtual de solduri și cifra de afaceri sau un tabel virtual de cifra 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. Accesați fila „Parametri” și în parametrul „Perioadă” din coloana „Expresii” scrieți următoarele:
      &EndPeriod. Vom activa, de asemenea, indicatorul „Limita disponibilitate”.
    2. Scăpăm complet de parametrul „Perioada” și îl înlocuim cu parametrul „Sfârșitul perioadei”. Să configuram un parametru opțional de tabel 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 caseta de dialog „Opțiuni tabel virtual” (acesta este un buton pătrat gri cu o imagine a unei roți dințate pe fundalul unui tabel mic).
      • În câmpul „Perioad” al casetei de dialog scriem: &End of Period.
      • Acum, în textul solicitării setului de date din parametrii tabelului virtual, acest parametru apare înconjurat de acolade:
Registrul de acumulare. Bunuri rămase. Remaining(((&EndPeriod) ), ) AS Remaining

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

Extensie limbaj de interogare.

Acestea sunt instrucțiuni speciale care sunt incluse în acolade în corpul cererii. Aceste instrucțiuni indică câmpurile și parametrii care pot fi manipulați la configurarea unei versiuni de raport. Datele din acolade vor fi prezente în diagrama de 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 selectată în fila „Seturi de date”).

Cum funcționează completarea automată a câmpurilor disponibile pentru schema de compoziție a datelor?

    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 înregistrare 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 „Perioada”, „Începutul perioadei” și „Sfârșitul perioadei” devin
      disponibile pentru selecție.
    4. Dacă în textul cererii este specificată o condiție „grea”, atunci acest parametru va fi adăugat și la fila „Parametri”.

Dacă caseta de selectare Completare automată este debifată, câmpurile schemei de compunere a datelor sunt șterse, dar parametrii încadrați între acolade în textul cererii rămân.

Cum să completați singur câmpurile schemei de compunere a datelor?

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

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

SELECT Rămășițele. Nomenclatură AS Nomenclatură, Rămășițe. Cantitate AS Cantitate RegisterAcumulare. Bunuri rămase. Remaining(((&EndPeriod) ), ) AS Remaining

În fila „Tabele” putem seta parametrii tabelului virtual pentru toate mesele.

Acum, în fila „Aspect de date”, selectați fila „Câmpuri”. Aici setăm câmpurile de selecție care
vor fi prezentate î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 un număr, atunci va fi imposibil să puneți un steag în câmpul „Și...”.

Să selectăm două câmpuri „Nomenclatură” și „Cantitate”. Pentru câmpul „Nomenclatură”, setați steagul „I..”
astfel încât să fie selectate înregistrările copil. Veți primi următoarea interogare:

SELECT Rămășițele. Nomenclatură AS Nomenclatură, Rămășițe. Cantitate AS Cantitate (SELECT Nomenclatura. * , Cantitate) Registrul de acumulare. Bunuri rămase. Remaining(((&EndPeriod) ), ) AS Remaining

În noua cerere, între acolade, a apărut o altă 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 câmpuri în condiții de aspect. Dacă accesați fila „Setări” și selectați fila „Selectare”, 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 pentru parametrii tabelului virtual trebuie să fie specificată și în fila „Compoziția datelor” a Proiectantului de interogări. În colțul din stânga sus, faceți clic pe butonul pentru a deschide dialogul „Parametrii tabelului virtual”.
(acesta este un buton pătrat gri cu o imagine a unei roți dințate pe fundalul unei mese mici). În câmpul „Condiție” al casetei de dialog scriem: Nomenclatură. Acum, în textul solicitării setului de date din parametrii tabelului virtual, acest parametru „Nomenclatură” va apărea înconjurat de acolade:

Registrul de acumulare. Bunuri rămase. Solduri(((&Sfârșitul perioadei) ), ((Nomenclatură) )) Solduri AS

În limbajul obișnuit de interogare, specificarea unui parametru arată astfel: Nomenclatură = &Nomenclatură. Dar în extensia limbajului de interogare este scris diferit. Este indicat 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ția datelor” a Generatorului de interogări, vedem o altă filă, „Condiții”. Este necesar să se indice în extensia limbajului de interogare condițiile pentru clauza WHERE. Selectați câmpul „Cantitate”. Acest câmp este acum disponibil în condițiile din fila „Setări” - „Selectare”. Și în textul cererii au apărut linii noi, cuprinse între acolade.

(UNDE rămâne. Cantitate)

Dacă se specifică selecția după câmpul cantității, atunci această propoziție va fi inserată în cererea finală. Unde tipul de condiție și valoarea de comparație vor fi determinate prin configurarea opțiunii de raportare.

Deci, cred că este suficient material pentru astăzi. Dacă există puncte neclare, nu ezitați să întrebați, pentru că de aceea este posibil să comentați. Acest material va fi pregătit pentru a fi fixat în curând, așa că abonați-vă la actualizări de pe site-ul nostru pentru a nu 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ă ale câmpurilor de aspect. Succes în înțelegerea acestui material dificil!

La finalul articolului vreau să vă recomand unul gratuit de la Anatoly Sotnikov. Acesta este un curs de la un programator experimentat. Vă va arăta separat cum să creați rapoarte în sistemul de control al accesului. Trebuie doar să ascultați cu atenție și să vă amintiți! Veți primi răspunsuri la următoarele întrebări:
  • Cum se creează un raport simplu de listă?
  • Pentru ce sunt coloanele Câmp, Cale și Titlu din fila „Câmpuri”?
  • Care sunt limitările pentru câmpurile de aspect?
  • Cum se configurează corect rolurile?
  • Care sunt rolurile câmpurilor de aspect?
  • Unde pot găsi fila de compoziție a datelor într-o interogare?
  • Cum se configurează parametrii în sistemul de control acces?
  • Devine și mai interesant...
Poate că nu ar trebui să încerci să navighezi singur pe internet în căutarea informațiilor necesare? În plus, totul este gata de utilizare. Doar începeți! Toate detaliile despre ceea ce este în lecțiile video gratuite sunt pe pagina autorului softmaker http://www..pngsoftmaker 2015-12-07 14:51:12 2018-06-12 13:14:13 Sistemul de compunere a datelor (DCS). Partea 2.

Atenţie! Aceasta este o versiune introductivă a lecției, ale cărei materiale pot fi incomplete.

Conectați-vă la site ca student

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

Sistem de compunere a datelor 1C 8.3 pentru începători: conectarea seturi 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 Andrey este roșu, atunci una dintre alimentele sale preferate va fi roșiile (sunt roșii).
  • Aplicați două seturi de date în raport. Primul set este reprezentat de date din tabelul de director „Clienți”. Al doilea sunt datele din tabelul directorului „Food”.
  • Implementează legătura dintre aceste două seturi, astfel incat raportul sa contina doar produsele preferate pentru fiecare client.

Creați un 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, indicați numele „Lecția 6” și faceți clic pe butonul „Deschide diagrama compoziției datelor”:

Lăsați numele implicit al schemei:

Adăugarea primului set de date

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

Apelați constructorul cererii:

Indicăm tabelul „Clienți” și câmpurile care trebuie obținute din cerere:

Adăugarea unui al doilea set de date

Adăugați un al doilea set de date:

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

Indicăm tabelul directorului „Food” și câmpurile care trebuie obținute din cerere:

Rezultatul a fost următorul text de solicitare:

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

Faceți numele mai descriptive

Pentru claritate, să redenumim DataSet1 în Customers și DataSet2 în Food.

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

Putem folosi datele din fiecare set din raportul nostru. Vom accesa aceste date prin câmpuri.

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

Vedem că numele se suprapun și ne putem încurca cu ușurință. 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 pe bagheta magică pentru a afișa designerul 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 două seturi (ar trebui să fiți foarte familiarizați cu acest lucru de la îmbinările în interogările pe care le-am studiat în modulele anterioare). Fiecare înregistrare din tabelul Clienți are o înregistrare corespunzătoare din tabelul Alimente.

Dar din toate aceste înregistrări, trebuie să lăsăm doar pe acelea al căror câmp „Client’s Favorite Color” este egal cu câmpul „FoodColor”:

Conectăm două seturi de date

Pentru a face acest lucru, vom conecta două seturi de date (Clienți și Alimente) folosind câmpurile Customer FavoriteColor și FoodColor.

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

Configuram parametrii ca in figura de mai jos:

O sa fac o explicatie.

Sursa și receptorul comunicării. Ei bine, totul este clar aici. Indicăm primul set (Clienți) și al doilea set (Food) de date. Aș dori să atrag o atenție deosebită asupra faptului că comunicarea se va desfășura conform principiului unire stânga exterioară(am tratat-o ​​la tema cererilor din modulele anterioare). Pe baza acestui lucru, trebuie să alegeți care set va fi sursa și care receptor.

Sursa de expresie. Indicăm aici o expresie sau pur și simplu un câmp din setul de date sursă (am specificat câmpul ClientFavoriteColor din setul Clienți aici).

Expresia receptorului. Indicăm aici o expresie sau pur și simplu un câmp din setul de date receptor (am indicat câmpul ColorFood din setul Food).

Astfel, această conexiune va lăsa din lista anterioară doar acele rânduri pentru care câmpul FavoriteColor al Clientului este egal cu câmpul FoodColor.

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

Grozav!

O sa fac o explicatie despre domeniu" Condiția de comunicare„, despre care programatorii începători își lovesc atât de des sulițele.

Condiția de conectare este un câmp auxiliar. Puteți scrie expresii acolo implicând 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 se face legătura. Și dacă această expresie este TRUE, atunci se va încerca să se stabilească legături între acest rând și rândurile de la receptorul de legătură. Dacă expresia este FALSĂ, atunci nu se vor face astfel de încercări.

În ultimul meu articol, am scris deja că 1C este o platformă paradoxală. Sistemul de compunere a datelor este unul dintre aceste paradoxuri. SKD este conceput pentru proiectarea rapoartelor complexe și implică înlocuirea programării „manuale” a rapoartelor cu proiectarea într-un set de instrumente multifuncțional. Capacitatea de a utiliza sisteme de control al accesului a apărut în cea de-a opta versiune, dar a durat mult până să apară versiunea 8.2 pentru ca 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 o barieră destul de mare în calea învățării și a începe să-l folosească pe deplin „din mers” este foarte dificil, deoarece interfața nu este complet intuitivă, iar cele mai complete manuale de utilizare sunt disponibile doar în formă de literatură plătită.

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

Solicitare = Solicitare nouă(
"ALEGE
| Tabel.Nomenclatură,
| Masa.Depozit
|DIN
| &TK AS Tabel");
Request.SetParameter("TZ", TZ);

Dar cu SKD totul nu este atât de simplu. Din păcate, este imposibil să se efectueze operația descrisă mai sus în sistemul de compunere a datelor. Cu toate acestea, sistemul a implementat capacitatea de a încărca tabele externe de valori.

Aici merită să facem o scurtă digresiune și să vorbim despre seturi de date. Seturile de date sunt surse de informații de la care sistemul de management al datelor primește date pe care ulterior le compila într-un raport. Seturile de date sunt împărțite în tipuri, folosind în principal tipul „Interogare”, î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, rezultatul este un anumit set de câmpuri obținute ca urmare a executării unei cereri sau a încărcării unui obiect extern. Ulterior, aceste câmpuri pot fi manipulate în fila „Setări”, împreună cu setări detaliate pentru structura raportului. Pentru a interconecta seturi diferite, ACS oferă posibilitatea de a indica conexiuni între seturi de date în fila cu același nume. Aceste conexiuni 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 dintre seturile de date vor afecta aspectul datelor conform structurii specificate în „; fila Setări”.

Să detaliem problema până la un exemplu. Există un raport standard: Salarizare pentru organizarea configurației ZiK 8. Este necesar ca tipurile de calcule din raport să fie grupate în anumite grupuri. Calcul Corespondențele View-Group 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 de interogare” - „Angajări” după tip de calcul (Figura 3). În „setul de date solicitate” - „Angajări” există informații pentru grupuri, ștergem toate intrările. Ulterior, î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(Rezultat = Nedefinit, Date de decriptare = Nedefinit, OutputInReportForm = True) Export

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

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

UserPanelValue = TypicalReports.GetUserPanelSettingValuesofObject(ThisObject);
DefaultSettings = SettingsComposer.GetSettings();
TypicalReports.GetAppliedSetting(ThisObject);
TypicalReports.GenerateTypicalReport(ThisObject, Result, Decryption Data, OutputToReportForm, ExternalData);
SettingsLinker.LoadSettings(DefaultSetting);
Rezultat returnat;

EndFunction

Dacă am face un raport de la zero, codul de lansare pentru generarea raportului ar arăta astfel:

ExternalDataSets = Structură nouă;
ExternalDataSets.Insert(„Grupuri”, Grupuri); //Grupuri - tabelul de valori dorit
DataCompositionSchema = GetLayout("MainDataCompositionSchema"); //aspectul nostru cu diagrama fluxului de date
Settings = DataCompositionScheme.DefaultSettings;
LayoutLinker = newDataLayoutLayoutLinker;
LayoutLayout = LayoutComposer.Execute(DataLayoutSchema, Settings);
DataCompositionProcessor = newDataCompositionProcessor;
DataCompositionProcessor.Initialize(LayoutLayout, ExternalDataSets);
TabDoc = New TabularDocument;
OutputProcessor = Nou OutputProcessorDataCompositionResultInTabularDocument;
OutputProcessor.SetDocument(TabDoc);
OutputProcessor.Output(DataCompositionProcessor);

Citit 9660 o singura data



Ți-a plăcut articolul? Împărtășește-l