1s SKD transferă un tabel de valori. Un exemplu de utilizare a unei surse de date externe într-un sistem de stocare. În primul rând, voi descrie ce dorim să obținem ca rezultat.

25.01.2021 Știri

În această filă puteți crea un număr nelimitat de seturi de date. Un set de date este o sursă de date.

Există mai multe tipuri de seturi de date:

  • Cerere;
  • Un obiect;
  • O asociere.

Solicitarea este o cerere obișnuită 1C, doar limbajul solicitării este ușor extins. Pentru comoditate, puteți utiliza constructorul de interogări.

Un obiect este un set extern de date, cum ar fi un tabel de valori.

Unire – combinând mai multe seturi de date de tipuri de interogări și obiecte.

În acest articol, vom parcurge pe scurt toate filele designerului de scheme de compoziție a datelor. Seturi de date În această filă puteți crea un număr nelimitat de seturi de date. Un set de date este o sursă de date. Există mai multe tipuri de seturi de date: Interogare; Un obiect; O asociere. Solicitarea este o cerere obișnuită 1C, doar limbajul solicitării este ușor extins. Pentru comoditate, puteți utiliza constructorul de interogări. Un obiect este un set extern de date, cum ar fi un tabel de valori. Unire – combinând mai multe seturi de date de tipuri de interogări și obiecte. Relații cu seturile de date Această filă descrie relațiile dintre seturile de date. Aici puteți specifica ce seturi de date să legați și după ce câmpuri și cu ce parametri. Cel mai important lucru de reținut: într-o schemă de compunere a datelor, atunci când legați seturi, îl utilizați întotdeauna Conexiune din stânga! Câmpuri calculate În această filă puteți crea câmpuri suplimentare care nu sunt descrise în fila Seturi de date. Ca expresii pentru calcule, puteți utiliza limbajul de expresie al compoziției datelor, câmpurile din seturile principale de date, precum și funcțiile modulelor comune non-globale. Resurse Resursele sunt datele rezumative pentru grupări. În filă, puteți atribui câmpuri din seturi de date, precum și câmpuri calculate ca resursă. De asemenea, pentru resurse, este indicată expresia prin care acestea sunt calculate și se poate indica gruparea prin care se va calcula expresia pentru resurse. Pe baza valorilor resurselor, se calculează și totalurile raportului. Parametri Parametrii de date sunt utilizați de obicei într-o interogare de set de date. Toți parametrii descriși în cerere apar în fila Opțiuni. Pe această filă puteți specifica titlul, tipurile disponibile, valorile disponibile și alte câteva lucruri. Mai multe detalii despre parametri puțin mai târziu. Aspecte În mod implicit, aspectul raportului generat este generat automat de sistemul de compunere a datelor. Dar sistemul permite dezvoltatorului să proiecteze zone individuale ale raportului (câmpuri, grupări, resurse...). Toate aspectele individuale ale zonelor create în această filă sunt asociate numai cu raportul curent. Scheme imbricate Schemele imbricate sunt utilizate în cazurile în care datele dintr-un raport trebuie utilizate în altul. Cu alte cuvinte, „încorporam” o schemă de aspect de date în alta, indicând o conexiune într-un câmp comun. Un exemplu de utilizare a schemelor imbricate poate fi găsit în acest articol. Setări În această filă, dezvoltatorul creează setări standard pentru generarea rapoartelor. În partea de sus a ferestrei este specificat structura ierarhica. Structura de generare a rapoartelor poate consta din următoarele elemente: Grupare; Masa; Diagramă; Diagrama imbricată În partea inferioară a ferestrei, sunt specificate setările pentru întregul raport și pentru fiecare element al structurii raportului. Pe scurt în filele de setări: Câmpuri selectate – lista câmpurilor afișate în raport; Selecție – toate selecțiile posibile ale înregistrărilor de raport; Ordine – sortarea înregistrărilor în raport; Parametri de date – valoarea parametrilor raportului; Câmpuri customizate– câmpuri de raport suplimentare create de utilizator; Formatare condiționată – setează formatarea condiționată a înregistrărilor raportului; Alte setări - tot felul setari aditionale cum ar fi: titlul raportului, aspectul designului, aspectul câmpului etc....

Buna ziua!
Astăzi vreau să vă descriu un subiect pe care nu îl puteți înțelege fără echipament de scuba :) ;)

Scufundarea înseamnă că scufundarea este destul de adâncă. Există puține referințe la acest subiect în literatură și nu îl veți înțelege până când nu veți simți nevoia. Nici măcar nu va exista un mesaj pentru o astfel de acțiune ;) Apropo, documentația vorbește despre acest lucru foarte slab și inconsecvent; trebuie să apelați la literatura de la terți.

De exemplu, recomand cu căldură „Dezvoltarea de rapoarte complexe în 1C: Enterprise 8.2”. Sistemul de compunere a datelor", (mai precis, vezi paginile 224, 267 și 473)

În ACS există 2 tipuri de surse de date: Interogare, obiect și unire (acesta chestie nu contează, nu este o sursă de date, ci un procesor de date existente). A se vedea figura 1:


Deci, dacă înțelegem mai mult sau mai puțin cum să lucrăm cu o sursă (set) de date de tip „Interogare”, atunci există dificultăți cu setul de date „Obiect”.

Mai întâi, voi descrie ceea ce dorim să obținem ca rezultat:

Raportați, utilizatorul a făcut clic pe „ Formă» și a fost afișată o listă de articole (vezi Fig. 2):

Da, am făcut o inexactitate, și anume: nu există niciun buton „ Formă", dar există un buton " noua actiune„(Voi explica puțin mai târziu de ce s-a întâmplat asta;)

Da Da! Un alt punct: întreaga listă este derivată din setul de date „Obiect”:

Soluţie:

  1. Crearea unui raport extern;
  2. Adăugați un aspect ACS, să-l numim „Schema principală de aranjare a datelor”;
  3. Adăugăm setul de date „Obiect”, îi atribuim numele „Lista de nomenclatură” (ar trebui să fie la fel ca în Fig. 3);
  4. Nu experimentăm prea mult cu setările raportului, lăsați totul să fie simplu (vezi Fig. 4)

Ok, jumătate din treabă gata ;)

Acum să generăm formularul principal de raport (da, încă ceva! Configurația mea funcționează pe interfața normală, dar cred că forme controlate vei găsi soluția ;) Deci forma este:

Aici apare problema! Dacă facem clic pe butonul „generare” (Fig. 5.), vom vedea o eroare!


Am dedicat acest articol rezolvarii acestei probleme!

Nu a fost posibil să interceptăm evenimentul butonului „Generare”, așa că am decis să folosesc o cârjă. Am lansat configurația în modul de depanare și am încercat să găsesc butonul „generare”.

Am introdus procedura „Generare” în formular, dar nu există intrări în ea, a trebuit să redefinim acțiunea butonului „formular” înainte de a deschide formularul:


În fig. Pe lângă modificarea acțiunii formularului, Figura 8 prezintă un exemplu de cerere, procesarea acesteia și transmiterea datelor generate către sistemul de control al accesului. Să o studiem mai atent:

  1. Generăm date de intrare pentru sistemul de control acces;
  2. Initializam sistemul de control acces;
  3. Afișăm rezultatul PE FORMULAR (atenție și la asta!).

Să ne amintim diagrama de interacțiune a obiectelor sistemului de compoziție a datelor:

Schema de prezentare a datelor dintr-un raport extern este disponibilă ca obiect global într-o metodă de formular Schema de compunere a datelor. De asemenea, îl puteți accesa după nume trecându-l la metodă GetLayout(vezi Fig. 8)

Piesa principală de cod este mai jos:

Solicitare = Solicitare nouă; Query.Text = "SELECT | Nomenclature.Name as Nomenclature |FROM | Directory.Nomenclature AS Nomenclature"; NomenclatureList = Request.Run().Upload(); DataSets = New Structure("NomenclatureList", NomenclatureList); //SKD = ​​​​GetLayout ("MainData LayoutScheme"); SKD = ​​​​DataCompositionScheme; LayoutComp = nou DataLayoutComposer; layoutComp = LayoutComp.Execute(SKD, SKD.DefaultSettings); CompDataProcessor = nou DataCompositionProcessor; ProcessorCompData.Initialize(layoutComp, DataSets); output = new DataCompositionResultOutputProcessorInTabularDocument; output.SetDocument(FormElements.Result); output.Output(ProcessorCompData, true);

Da! Iată un alt moment frumos!!!

ÎN în acest exemplu, după cum puteți vedea (vezi Fig. 2), ieșirea este realizată în formă, și nu în tabel. document! Și acest lucru este foarte bine, pentru că putem lucra cu formularul (interceptați programatic evenimentele elementului de formular, facem tot felul de trucuri cu drag and drop etc.;)

Într-un document foaie de calcul, putem pur și simplu să afișăm pe ecran datele procesate și să transferăm controlul documentului către utilizator și nu putem influența în niciun fel procesul ulterioar de editare a acestui conținut!

Vezi in sistem de ajutor « Camp document foaie de calcul „, și voi oferi doar un extras din documentația încorporată a sistemului 1c Enterprise 8.2:

„Un câmp de document de foaie de calcul este un document de foaie de calcul plasat într-un formular. Împreună cu varietatea de capabilități de proiectare ale unui document de foaie de calcul, acest lucru vă permite să organizați procesarea evenimentelor care apar atunci când selectați celule, imagini, precum și alte controale plasate într-un câmp al unui document de foaie de calcul.”

Bine, după cum se spune, mult noroc în luptă;)

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: prezentarea raportului sub formă de diagramă

Astăzi vom completa raportul de la ultima lecție (sau mai bine zis, o copie a acestuia) cu posibilitatea de a afișa aceleași date sub formă de diagramă.

Stabilirea unui obiectiv

  • Faceți o copie a raportului de la ultima lecție.
  • Afișați aceleași date sub formă de diagramă.
  • În acest caz, seria (coloanele, axa Y) ar trebui să fie produse, iar punctele (axa X) ar trebui să fie clienți. Valorile coloanei (de-a lungul axei Y) vor fi cantitatea de mâncare comandată de client.

Modificarea unei copii a raportului anterior

Facem o copie a raportului de la ultima lecție sub numele „Lecția 9” și deschidem această copie în configuratorul bazei de date „Gastronom”.

Schimbați numele raportului în „Lecția 9” și faceți clic pe butonul „Open data layout diagram”:

Nu vom schimba seturile de date - sarcina noastră este să le schimbăm prezentarea pentru utilizator.

Prin urmare, mergem imediat la fila „Setări” și ne îndreptăm atenția către coloana din stânga cu opțiuni de raport.

Nu am mai lucrat cu această rubrică până acum, dar astăzi vă voi spune ce înseamnă.

Toate setările pe care le facem în această filă (folosind designerul de baghetă magică sau manual în partea de jos) se referă la una dintre opțiunile de raport, care este evidențiată în partea stângă a ferestrei.

În mod implicit, această opțiune este întotdeauna una și se numește „Principal”. Trucul este că în modul utilizator poți comuta cu ușurință între aceste opțiuni.

Și acum avem opțiunea principală, în setările căreia este indicat să afișați datele sub forma unui tabel:

Să redenumim această opțiune astfel ( dublu click) și cea principală din „Tabel”:

Adăugarea unei noi opțiuni de raport

Acum, folosind semnul plus, vom adăuga o altă opțiune (unde vom pune setarea pentru afișarea datelor sub formă de diagramă):

Să numim imediat această opțiune „Diagrama”:

Configurarea unei noi versiuni de raport

După cum puteți vedea, dreapta acestei opțiuni (am evidențiat-o) este goală, adică nu există setări. Să le creăm folosind bagheta noastră magică:

De data aceasta vom selecta tipul de raport „Diagrama...”:

Selectați „Cantitate” ca câmpuri de afișat (similar cu tabelul):

Ca serie (axa Y) indicăm câmpul „Mâncare”, iar ca puncte (axa X) - câmpul „Clienți”:

A ieșit așa:

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

Vedem o masă... ce este?! Dar ideea este că trebuie doar să selectați o altă opțiune de raport. Faceți clic pe butonul „Selectați opțiunea...” și selectați opțiunea „Diagramă”:

Diagrama este gata

Să creăm din nou raportul:

Super, ce frumusețe

Prelucrarea referințelor, după parcurgerea tuturor pașilor din acest tutorial

La finalul modulului

Aceasta încheie discuția noastră despre elementele de bază ale unui sistem de compunere a datelor. Am încercat să spun și să explic exemple simple principii fundamentale necesare începătorilor pentru a lucra cu sisteme de control acces.

Dacă în viitorul tău ( Te sfătuiesc să faci asta după ce termini școala) va fi nevoie de un studiu mai aprofundat al sistemului de compunere a datelor - există o carte minunată de E. Yu. Khrustaleva „Dezvoltarea rapoartelor complexe în 1C: Enterprise 8”.

În acest modul, ați dobândit suficiente cunoștințe și abilități practice pentru a începe să citiți literatură mai serioasă pe acest subiect.

Am făcut o treabă grozavă, este timpul să ne relaxăm!

Utilizare 1C sisteme de compunere a datelor imposibil fără seturi de date. Pot exista mai multe dintre ele într-o singură schemă de layout de date. Și pot comunica între ei într-un anumit fel. Sau mai bine zis, fie sau uni. În acest articol ne vom uita fuzionarea seturilor de date. Combinarea seturilor de date într-un sistem de control al accesului este similară.

Pentru a combina două sau mai multe seturi de date în sistemul de control al accesului, trebuie să accesați fila Seturi de date pre-creați un set de date special - unire


Primim această imagine


Și la acest obiect creat adăugăm seturi care vor fi combinate direct. Să adăugăm două seturi de date. Una dintre ele va fi o cerere, iar a doua, pentru varietate, va fi un obiect (sursă de date externă). Ca aceasta:


De exemplu, luați în considerare combinarea seturilor de date cu soldurile produselor.

În setul în care vom folosi, adăugăm manual câmpuri Produs, Cantitateși introduceți numele obiectului care conține datele


Pentru setul de date în care se utilizează interogarea, vom primi date folosind resturile din următorul registru de acumulare:


Să facem o cerere simplă

SELECT Produse rămase.Produs.Vizualizați produsul AS, Produse rămase.Cantitate rămasă AS rămasă (SELECT Produs, rămasă) FROM RegisterAccumulation.ProductsRemaining.Remaining AS Produse rămase

Pentru a scăpa de depozite, a trebuit să folosim compoziția datelor în cerere (tot ce se află în acolade) și dezactivați marcajul de completare automată din partea de jos. De asemenea, nu un element de director a fost luat ca produs, ci reprezentarea lui, astfel încât tipul a fost același ca în setul cu o sursă de date externă. Pentru ca datele din seturi diferite să se încadreze într-un câmp, acestea trebuie să aibă același nume în câmp cale. Prin urmare pentru teren Resturi calea a fost corectată manual la Cantitate pentru a-l sincroniza cu al doilea set de date. De fapt, este mai bine, desigur, să utilizați imediat aliasul dorit în cerere. În acest caz, în mod deliberat, nu am făcut acest lucru pentru a concentra atenția asupra unei astfel de caracteristici.

Acum să ne uităm direct la date.
Am următoarele solduri de bunuri stocate în registrul de acumulare:

iar în sursa externă de date aceasta este imaginea

Să configuram schema de aspect în cel mai primitiv mod.
Camp Cantitate Desigur, o vom face o resursă, iar în fila de setări o vom adăuga pur și simplu la structură Intrări detaliate. Și bineînțeles, să nu uităm să punem ProdusȘi Cantitate la câmpurile selectate. Și pentru fericire deplină, vom aranja după produs.


Ca urmare a rulării raportului cu aceste setări ACS, obținem următorul tabel

După cum puteți vedea, Lampa, care se află în ambele seturi de date, este reprezentată în rezultatul interogării prin două linii. Pentru a le restrânge într-o singură linie, trebuie să modificați ușor structura setări ACS iar în loc de înregistrări detaliate, grupați după câmp Produs.


Și acum obținem rezultatul fără linii duplicate.

Uneori se întâmplă ca datele dintr-un raport să nu poată fi obținute folosind o interogare sau o combinație de interogări. Trebuie să utilizați unele proceduri pentru a colecta date, iar datele sunt plasate într-un tabel de valori. Se pune întrebarea - pot fi utilizate aceste date într-o schemă de compunere a datelor? La urma urmei, instrumentul SKD este puternic și convenabil. Se pare că este posibil să folosiți datele din tabelul de valori ca sursă de date pentru un raport în sistemul de control al accesului și nu este deloc dificil de făcut. Acest articol vă va arăta cum să creați un astfel de raport pentru formularele obișnuite.
Deci, cum creați un raport ACS folosind date dintr-un tabel de valori? Să începem cu începutul.
Mai întâi de toate, deschideți configuratorul și creați un nou raport extern.

Deschideți modulul obiect și creați o procedură predefinită la compunerea rezultatului (DocumentResult, Decriptare Date, StandardProcessing)

În cadrul acestei proceduri vom colecta date și vom genera un raport.
În procedura Când se compune rezultatul, dezactivăm procesarea standard. StandardProcessing = Fals;
Apoi formăm un tabel de valori într-un mod arbitrar. Numele coloanelor din tabelul de valori trebuie să se potrivească cu câmpurile viitoare ale setului de date din ACS:


De exemplu, să adăugăm trei rânduri de date. Apoi, creăm rezultatul raportului pas cu pas.

  • Din diagramă obținem setările implicite.

  • Trimitem datele de decriptare variabilei corespunzătoare.

  • Cream layout-ul folosind generatorul de layout.

  • Transferăm diagrama, setările și datele de decodare în aspectul aspectului.

  • Efectuăm layout-ul folosind procesorul de layout. Pentru a face acest lucru, executați metoda Initialize() a procesorului de compoziție de date. Ca parametri trecem aspectul compoziției datelor, seturi de date externe (tip: Structură, cheia de structură trebuie să se potrivească cu numele obiectului din schema de compunere a datelor, valoarea este tabelul de valori generat), datele de decriptare.

  • Ștergeți câmpul din foaia de calcul.

  • Afișăm rezultatul într-o foaie de calcul.
Rezultatul este următorul cod:
DataLayoutSchema = GetLayout( „MainDataCompositionSchema”); //Settings = DataCompositionScheme.DefaultSettings; // - Dacă procedați așa cum se arată mai sus (recomandat pentru unele resurse), atunci când modificați setările în modul client // nu veți vedea aceste modificări, deoarece setările vor fi întotdeauna implicite. Cum se face corect - opțiunea de mai jos Settings = SettingsComposer. GetSettings(); DecryptionData = newDataCompositionDecryptionData; LayoutLinker = newDataLayoutLayoutLinker; LayoutLayout = LayoutLocker. Execute(DataCompositionScheme, Settings, DecryptionData); ExternalDataSet = Structură nouă( „Exemplu tabel cu valori”, TZOoutput); DataCompositionProcessor = newDataCompositionProcessor; DataCompositionProcessor. Initialize(LayoutLayout, ExternalDataSet, DecryptionData); DocumentResult. Clar(); OutputProcessor = Nou OutputProcessorDataCompositionResultInTabularDocument; Procesor de ieșire. SetDocument(DocumentResult); Procesor de ieșire. Ieșire(DataCompositionProcessor); Adăugarea unui aspect diagramă de aspect. Putem lăsa numele ca implicit.

Creăm un set de date. Pentru a face acest lucru, adăugați un nou set de date de tip Object. În câmpul Nume al obiectului care conține datele plasăm numele pe care l-am specificat ca cheie la crearea structurii External DataSet. Apoi adăugăm câmpuri. Numele trebuie să se potrivească exact cu numele coloanelor din tabelul cu valori. Apoi, putem specifica valori acceptabile, formate etc.

Adăugați resurse dacă este necesar. Rezultatele vor fi calculate pe baza acestora. În cazul nostru, acestea sunt câmpurile Cantitate și Cantitate.

În fila Setări, folosind designerul de setări, creăm o opțiune implicită de raport

Ne salvăm raportul. Îl lansăm în client și îl creăm. Un exemplu de rulare a unui raport ACS folosind date din tabelul de valori este prezentat în imagine.


Asta e tot. Destul de simplu, nu?

Exemplul de raport rezultat poate fi descărcat