Aspecte de stocare Aspecte ACS Crearea unui raport de către utilizator

Cutie cu nisip

bijutier 23 august 2011 la ora 10:22

Aspectele în 1C 8.2 nu sunt dificile (Partea 1 - Crearea unui aspect)

  • Cameră de depozitare *

Să presupunem că trebuie să afișați un raport ca acesta:

Acest raport poate fi construit cu ușurință folosind un sistem de compoziție a datelor (DCS), mai ales dacă toate datele necesare sunt stocate într-un singur director. Cu toate acestea, să încercăm să afișăm același raport folosind un aspect.


Pentru a genera acest raport, aveți nevoie de un director „Angajați” cu detaliile „Data nașterii”, „Posiție”. Lăsați numele de familie, prenumele și patronimul angajatului să fie stocate împreună într-un câmp implicit - „Nume”. Pentru a indica poziția unui angajat, există un alt director simplu „Poziții” cu câmpuri implicite. Structura cărților de referință necesare este prezentată în figura de mai jos.

Acum să creăm un nou raport și să-l numim „Lista de angajați”. Să mergem la fila „Layouts” și să creăm un nou aspect de tip „TabularDocument”.
O foaie de calcul goală se va deschide în fața noastră, gata de utilizare. Acum trebuie să prezentăm raportul necesar sub forma unui aspect.
Pentru a face acest lucru, mai întâi copiați raportul sursă într-o foaie de calcul goală, de exemplu. la aspectul raportului. Veți obține ceva de genul acesta:

Să punem în ordine aspectul - vom alinia titlurile la centru, vom seta tabelul să afișeze chenarele și vom șterge toate datele din tabel, cu excepția primei înregistrări. O vom avea ca mostră.
Să împărțim raportul final în zone, după cum urmează:

Pentru fiecare zonă, trebuie să atribuiți un nume corespunzător; pentru a face acest lucru, trebuie să selectați zona dorită (în acest caz, toate zonele sunt grupuri de linii) și să faceți clic pe butonul cu pictograma sau pe combinația de taste Ctrl+Shift +N. În fereastra care apare, trebuie să introduceți numele acestei zone. Să numim zonele așa cum sunt indicate în figură.
Acum acele celule de tabel în care ar trebui să fie afișate datele din baza de informații trebuie să fie desemnate ca conținând un șablon. Pentru a face acest lucru, selectați acest câmp și selectați „Proprietăți” în meniul contextual (butonul dreapta al mouse-ului). În lista derulantă a proprietăților celulei „Umpleți”, trebuie să selectați „Șablon” (exemplu în figura de mai jos).

După aceasta, dacă în textul celulei apare o expresie între paranteze drepte, aceasta va fi percepută de sistemul 1C ca un parametru. De exemplu, dacă textul celulei este după cum urmează:

Numele meu este [MyName],

Apoi, pentru a afișa textul „Numele meu este Ivan”, este suficient parametrul "Numele meu" atribuiți valoarea „Ivan”.
În cazul nostru, șablonul va fi data de ieșire a raportului, precum și toate coloanele din rândul care conține datele angajatului. Ca rezultat, după toate manipulările, aspectul raportului va arăta astfel:

Aceasta completează crearea aspectului. Acum trebuie să generați programatic un raport din zonele generate și să îl afișați.

Etichete: 1C 8, aspect, rapoarte, machete

Acest articol nu este supus comentariilor deoarece autorul său nu este încă

« Diagrama de compoziție a datelor deschise„sau, ceea ce este echivalent, faceți clic pe semnul lupă.

3. Deoarece raportul pe care îl creăm nu are încă o schemă de aspect al datelor, platforma vă va solicita să creați noua schema . Diagrama aspectului de date este un aspect din punct de vedere al configurației, așa că se va deschide designerul de aspect, solicitându-vă să selectați un singur tip de aspect → Diagrama de prezentare a datelor. Hai să apăsăm butonul Gata.

Platforma va crea un nou aspect care conține schema de compoziție a datelor și va deschide imediat proiectantul de schemă de compoziție a datelor.

3. Designerul are o mulțime de capabilități pentru proiectarea vizuală a rapoartelor, dar acum vom folosi doar cele mai simple capabilități ale sale și vom defini pur și simplu datele pe care dorim să le vedem ca rezultat al raportului nostru.

Să adăugăm unul nou set de date → interogare .

4. Pentru a crea textul cererii, lansați butonul de designer de solicitări → Constructor de interogări.

5. În lista " Bază de date» este prezentată compoziția obiectelor bazei de date; Pe baza datelor acestor obiecte, putem construi un raport.

Dacă extindeți ramura " RegistreAcumulări", atunci vom vedea că pe lângă tabelul de registru " Materiale rămase„Sunt mai multe în acest thread mese virtuale , pe care sistemul îl generează.

6. Întrucât dorim să vedem atât bilanţul materialelor, cât şi informaţii despre primirea şi consumul acestora, ne va interesa tabelul virtual „ Materiale rămase, resturi și cifre de afaceri" Să o dezvăluim.

După cum puteți vedea (și dacă nu îl vedeți imediat, atunci lucrați prin defilare), acest tabel conține materialul, depozitul și, în plus, soldurile inițiale și finale, precum și valorile primite. , ieșiri și cifra de afaceri pentru toate resursele registrului „Material Remaining”.

7. Să începem să selectăm câmpurile tabelului în ordinea de care avem nevoie făcând dublu clic. Mai întâi să selectăm StocȘi Material. Apoi selectăm CantitateInitialRemaining, CantitateSosire, CantitateConsumîn concluzie CantitateFinalRemaining

Ca rezultat, fereastra Câmpuri trebuie completată după cum urmează:

8. După aceea, pe fila Gruparea indicați câmpul grupului Stoc.

9. Faceți clic Bineși reveniți la proiectantul schemei de compoziție a datelor.

Platforma va plasa în câmp textul cererii care a fost creată folosind constructorul Cerere.

Acest câmp este un editor de text în care puteți edita manual o solicitare existentă. În plus, puteți apela din nou designerul de interogări și puteți edita interogarea folosindu-l.

Să acordăm atenție listei de câmpuri ale sistemului de compunere a datelor, pe care platforma le-a completat în partea de sus a designerului.

Afișează câmpurile care sunt disponibile pentru setul de date curent. În cazul nostru, sistemul 1C:Enterprise a completat această listă automat din textul solicitării și nu este nevoie să o configurați manual.

10. Să mergem la marcaj Setăriși adăugați o grupare (meniu contextual Grup nou).

În acest caz, nu vom specifica câmpul de grupare, ci pur și simplu facem clic Bine.

Raportul va afișa înregistrări detaliate din baza de informații → înregistrări obținute ca urmare a executării unei interogări fără rezultate.

11. Acum să configuram câmpurile care vor fi afișate în rezultatul raportului.

Pentru a face acest lucru, accesați marcajul Câmpurile selectateși pe fereastră Camp mutați din lista câmpurilor disponibile:

  • Stoc:
  • Material;
  • CantitateInitialRemaining;
  • CantitateIncoming;
  • CantitateConsum;
  • CantitateFinalRemaining.

12. Să lansăm 1C:Enterprise în modul de depanare și să vedem cum funcționează raportul.

13. Rulați comanda Operațiuni în†’ Raport în†’ Materiale.

Sistemul va genera automat un formular de raport și un formular de setări pentru acesta.

14. Faceți clic Formă.

După cum puteți vedea, raportul nostru este destul de „prezentabil” și reflectă pe deplin mișcarea materialelor care a avut loc în organizația noastră.

Crearea unui aspect al documentului Furnizarea de servicii

1. Deschideți fereastra de editare a obiectelor de configurare în configurator Furnizarea de documente a serviciilor.

2. Accesați marcajul Aspecteși fugi Designer de imprimare:

3. Pornit primul pas Să indicăm că noua procedură, care va fi creată de designer pentru a genera forma tipărită a documentului, va fi localizată în modulul formular.

4. La a doua treaptă Făcând clic pe săgeata dublă vom stabili că toate detaliile documentului nostru vor fi afișate în antetul formularului tipărit.

5. Pornit al treilea pas În același mod, vom stabili ca toate detaliile părții tabelare a documentului să fie afișate în formă tipărită.

6. La a patra treaptă proiectantul ne va cere să formăm subsolul (partea de jos) a formularului de imprimare. Deoarece în acest caz nu vom folosi subsolul, vom trece imediat mai departe.

7. Pe al cincilea pas indicăm că proiectantul trebuie să introducă un nou buton în formularul de document pentru a apela procedura de generare a unui formular tipărit și face clic Bine.

8. Formularul documentului și aspectul acestuia se vor deschide în configurator:

9. Să verificăm aspectul în acțiune. Lansați 1C:Enterprise în modul de depanare și deschideți documentul Prestarea serviciului nr. 1. Vă rugăm să rețineți că există un buton nou în colțul din dreapta jos al documentului Sigiliu, care a fost adăugat de designer.

10. Faceți clic pe acest buton și veți vedea o formă tipărită a documentului nostru.

După cum puteți vedea, designerul a generat un formular tipărit complet adecvat pentru documentul nostru. Singurul lucru care lipsește din acest formular este suma totală a documentului.

Editarea aspectului documentului Furnizarea de servicii

1. Deschideți configuratorul, extindeți arborele documentelor Asigurarea de serviciiși faceți dublu clic pe aspect Sigiliu.

După cum puteți vedea, aspectul documentului constă în zone denumite , care sunt tipărite într-o anumită ordine.

2. Adăugați zona noua pentru a afișa suma totală a documentului:

  • utilizați mouse-ul pentru a selecta două linii goale Furnizare de documente de servicii: tipărire;
  • executați comanda Tabel în†’ Nume în†’ Atribuiți nume...¦

3. Să numim zona Total.

4. În zona creată:

  • într-o coloană Preț, Hai să scriem Total;
  • într-o coloană Sumă Hai să scriem TotalByDocument.

5. Apelând paleta de proprietăți pentru ultima celulă completată, indicăm că această celulă nu va conține text, ci parametru :

Fiecare celulă a documentului din foaia de calcul pe care o edităm poate conține fie text, un parametru sau un șablon.

Text , conținut în celulă, va fi afișat pe ecran.

Parametru va fi înlocuit cu o valoare care îi poate fi atribuită utilizând limbajul încorporat. Textul conținut în celulă este numele acestui parametru.

Probă este un șir de text în care valorile parametrilor vor fi inserate în anumite locuri.

Prin urmare, specificarea pentru celulă ca umplutură Parametru, am definit un parametru de domeniu numit TotalByDocument, căruia îi vom atribui valoarea de care avem nevoie la crearea formularului tipărit.

6. Acum să deschidem modul formulare de documente Furnizare de servicii → Formular document.

7. Să găsim o procedură în ea Sigiliu iar după buclă adăugăm următoarele linii:

Sensul fragmentului adăugat este simplu: obținem o nouă zonă Total(cel pe care tocmai l-am adăugat la aspect).

Apoi parametrul TotalByDocument situat în această zonă, atribuim valoarea sumei părții tabelare a documentului după coloană Sumă(partea tabelară a documentului este accesată după nume → Lista de nomenclaturi).

În cele din urmă, scoatem zona într-un document final de foaie de calcul care va fi afișat pe ecran și imprimat de utilizator.

În mod similar, utilizând proprietățile celulelor de aspect și controlând ordinea în care sunt afișate, dezvoltatorul are capacitatea de a crea o formă tipărită a oricărui design.

Și acum, pentru documentul nostru Asigurarea de servicii, arăta destul de complet, să adăugăm suma totală pentru document și pe formularul de ecran, astfel încât utilizatorul să o poată vedea în procesul de completare a părții tabelare a documentului.

Editarea documentului formular Prestare de servicii

1. Deschideți formularul de document Furnizare de servicii → Formular de document în configurator.

2. Deschideți paleta de proprietăți pentru câmpul tabel aflat în formular și setați proprietatea subsol, care determină dacă controlul are un subsol Câmp tabel.

3. Deschideți proprietățile coloanei Preț:

  • setați textul subsolului → Total: ;
  • poziție orizontală în subsol → Apăsați dreapta;
  • în fontul de subsol, schimbați stilul în Gras.

4. Deschideți proprietățile coloanei Sumă:

  • instalați o poziție orizontală în subsol→ Apăsați dreapta;
  • pune steagul DisplayTotalsInBasement;
  • în fontul de subsol, schimbați stilul în Gras.

5. Lansați 1C:Enterprise în modul de depanare și vedeți cum arată acum forma documentului de furnizare a serviciului nr. 1.

În mod similar, prin utilizarea proprietăților controalelor și setarea valorilor acestora, dezvoltatorul poate crea o afișare a oricărui design și comportament.


Ei ne găsesc: crearea unui raport în 1s 8 2 de la zero, 1 Deschideți în configurator fereastra de editare a obiectului de configurare Document Prestare servicii 2 Accesați fila Layouts și lansați designerul de imprimare În fereastra care se deschide, în primul pas indicăm că va fi creată o nouă comandă Print pentru a genera tipărituri, cum se face un raport în 1 secundă, elaborarea proiectantului de documente, Crearea unui raport folosind proiectantul de formulare de ieșire, crearea de rapoarte în 1s 8 002, atelier de realizare a rapoartelor în subd 2007, atelier de realizare a materialelor metodologice în domeniul turismului, raportați materialele rămase în crearea depozitului 1c, deschideți designerul de layout 1c


Ei spun că numele 1C însemna inițial expresia „o secundă”, adică. programele trebuie să producă rapoarte rapid, „într-o secundă”. Viteza rapoartelor este foarte importantă, dar este și mai important ca rapoartele să ofere informațiile corecte - vom înțelege acest lucru folosind exemplul creării unui raport simplu în 1C 8.3 pe baza configurației Trade Management 10.3. Pentru a crea rapoarte corecte, este de dorit (chiar recomandat) să poți configura 1C și să poți programa puțin în limbajul intern și limbajul de interogare al lui 1C, deși, pe de altă parte, crearea de rapoarte este o oportunitate excelentă. pentru a începe să stăpânească aceste abilități.

Această descriere este educativă pentru înțelegerea principiilor de bază ale creării rapoartelor 1C

Cum se creează un raport în 1C 8.3

Pentru a crea un raport, trebuie să deschideți 1C în modul configurator; pentru a face acest lucru, în fereastra de lansare 1C, selectați baza de date dorită din listă și faceți clic pe butonul Configurator:

În configuratorul propriu-zis, accesați meniul Fișier și selectați Nou:


În meniul care apare, selectați Raport extern și faceți clic pe OK:


După aceasta, se va deschide o nouă fereastră de raport. În câmpul Nume, introduceți numele raportului; acesta trebuie să fie fără spații sau caractere speciale:


Cum se face un raport folosind un aspect

Această metodă necesită cel mai mult abilități de programare în 1C, dar aici nu vom analiza mecanismele de primire și procesare a datelor, vom face un raport simplu pentru a înțelege mecanismul de lansare a raportului și de afișare a formularului de raport pe ecran:

În fereastra de raport (care se deschide la crearea unui raport), în lista de jos, plasați cursorul pe elementul Aspecte și, când faceți clic dreapta, faceți clic pe Adăugare în meniul care apare:


În designerul de aspect care se deschide, puteți specifica numele aspectului, Documentul foaie de calcul ar trebui să fie selectat ca tip de aspect, apoi faceți clic pe butonul Terminare din designer:


Aceasta va deschide o fereastră de aspect care seamănă cu o foaie Excel:


În acest aspect, trebuie să creați zone - grupuri de rânduri sau coloane pe care programul le va folosi ca șabloane, să inserați datele primite din baza de date în ele și să afișați aceste șabloane pe ecran, formând astfel un raport din aceste părți.

Să creăm un raport care să afișeze o listă de articole. Pentru a face acest lucru, vom crea două zone de aspect: antetul raportului și linia articolului.

Pentru a crea o zonă de antet, faceți clic stânga pe antetul liniei (unde este indicat numărul liniei) pentru a selecta linia astfel (întreaga linie trebuie selectată cu un singur clic pe antet):


După aceea, accesați meniul Tabel din meniul principal, accesați submeniul Nume și faceți clic pe elementul Atribuire nume:


Programul vă va solicita să specificați Numele zonei, numele nu trebuie să conțină spații sau caractere speciale, după care faceți clic pe OK, ar trebui să arate astfel:


Acum, în zona creată, trebuie să introduceți textul care va fi afișat în raport și să îl formatați. Pentru a face acest lucru, introduceți text în prima celulă, de exemplu, „Lista de articole”. Lucrul cu celule este similar cu Excel.

Pentru a formata textul într-o celulă, faceți clic dreapta pe celulă și faceți clic pe Proprietăți. Fereastra cu proprietățile celulei se va deschide în partea dreaptă. Derulând în jos conținutul ferestrei, găsiți câmpul Font și faceți clic pe butonul „...”:


În fereastra care se deschide, în secțiunea Stil, bifați caseta Bold și faceți clic pe OK:


Aspectul ar trebui să arate astfel:


În același mod, creăm zona de linie a articolului, dar nu o evidențiază cu caractere aldine:


În zona de linii trebuie să indicați că Numele este un parametru, de exemplu. că numele real al articolului va fi înlocuit acolo la ieșirea raportului. Pentru a face acest lucru, deschideți proprietățile celulei cu numele și în proprietățile din câmpul Umplere, selectați valoarea Opțiune, aceasta completează configurarea aspectului:


Revenim la fereastra principală a raportului și în lista de jos, faceți clic dreapta pe elementul Formulare și faceți clic pe Adăugare:


În designerul de formulare de raport care se deschide, faceți clic pe butonul Terminare, se va deschide formularul de raport, faceți dublu clic pe butonul Generare:


Ca urmare, fereastra cu proprietățile butonului se va deschide în partea dreaptă a ecranului; în câmpul Acțiune, faceți clic pe lupă:


După aceasta, se va deschide un modul de formular în care trebuie să programați generarea unui raport:


Mai întâi, înlocuiți textul selectat cu următorul cod de program:

//creați un document de foaie de calcul care va fi completat cu părți ale raportului și afișat pe ecran
TabDocument = Nou TabularDocument;
//în continuare, obținem aspectul care a fost creat la crearea raportului
Layout = GetLayout("Layout");
//acum trebuie să afișăm antetul raportului, pentru aceasta obținem zona antetului din aspect și o afișăm într-un document de foaie de calcul
AreaHeader = Layout.GetArea("Header");
TabDocument.Output(AreaHeader);
//folosind o interogare, obținem o selecție de nume de elemente care trebuie afișate în raport
Solicitare = Solicitare nouă;
Solicitare.Text = "
|SELECT
| Nume
|DIN
| Director.Nomenclatură
|";
//obține zona de linie a articolului din aspect - o vom accesa într-o buclă pentru a afișa fiecare articol
AreaString = Layout.GetArea("String");
//procesează fiecare nume din selecția rezultată într-o buclă
Selectare = Query.Run().Select();
While Select.Next() Loop
//pentru a afișa următoarea linie, trebuie să specificați următorul nume în parametrul de zonă (am configurat parametrul în sine la crearea aspectului)
AreaString.Parameters.Name = Selection.Name;
//parametrul a fost completat, acum puteți afișa șirul
TabDocument.Output(AreaString);
EndCycle;
//documentul foaie de calcul a fost generat, acum îl afișăm pe ecran
TabDocument.Show("Lista de articole");

Când textul este copiat în modulul formular, liniile care încep cu o bară oblică dublă „//” vor fi evidențiate în verde - acestea sunt comentarii care descriu ceea ce face fiecare linie de cod:


Să rezumam ce linii de cod de program sunt necesare pentru a genera un raport:

  1. Este necesar să creați un document foaie de calcul care va fi completat cu părți ale raportului și afișat pe ecran; acest lucru se face cu linia „TabDocument = New TabularDocument;”
  2. Trebuie să obținem aspectul raportului, din acesta vom obține structura raportului în părți (zone), acest lucru se face cu linia „Layout = GetLayout(“Layout”)”
  3. Pentru a afișa fiecare dintre zone, trebuie să o obțineți din aspect și să o scoateți într-un document de foaie de calcul, acest lucru se face cu liniile "Header Area = Layout.GetArea("Header")" și "TabDocument.Output(HeaderArea) "
  4. Dacă trebuie să completați parametrii care devin cunoscuți numai atunci când programul este executat, atunci înainte de a afișa zona trebuie să completați astfel de parametri, acest lucru se face cu linia „AreaString.Parameters.Name = Selection.Name”
  5. Și numai atunci când documentul foaie de calcul este completat cu toate părțile necesare ale raportului, acesta este afișat pe ecran, acest lucru se face cu linia „TabDocument.Show(„Lista de articole”)”

Și acum puteți verifica funcționarea raportului - deschideți 1C în modul întreprindere (butonul 1C: Enterprise în fereastra de lansare 1C). În meniul principal, accesați meniul fișier, faceți clic pe Deschidere:


Găsiți și deschideți fișierul raport salvat. În formularul care se deschide, faceți clic pe butonul Generare:


și obținem o listă de nomenclatură:


Aceasta este doar o modalitate de a crea rapoarte în 1C. În următoarele articole ne vom uita la altele.

Să luăm în considerare crearea unui raport extern în 1C 8 fără a utiliza un sistem de compunere a datelor. Pentru a crea un raport extern, vom folosi configurația Contabilitate 2.0, datele inițiale: „Scrieți un raport pe contul contabil 62 în care va fi afișată în context cifra de afaceri pentru perioada specificată. ContrapartideȘi Contractele contrapartidelor.

1. Creați un raport

Mai întâi de toate, să creăm un fișier de raport extern; pentru a face acest lucru, să trecem la 1s 8 în modul Configurator, să mergem la meniu Fișier -> Nou, sau faceți clic pe pictogramă document nou.

Selectați elementul din listă Raport extern. După crearea raportului extern, dați-i un Nume (de exemplu Cel mai simplu Raport) și salvați-l pe disc. Vom adauga si doua detalii: Începutul perioadeiȘi Sfârșitul perioadei tip Data, vom avea nevoie de ele pentru a limita intervalul de timp pentru eșantionarea datelor atunci când generăm un raport.

2. Creați un aspect de raport extern

Pentru a genera un raport în 1C 8, aveți nevoie de un aspect, acesta este un șablon pentru afișarea datelor în care sunt setați toți parametrii necesari, sunt desenate tabele etc. Să adăugăm un aspect nou; pentru a face acest lucru, selectați elementul din arborele de metadate ale raportului Aspecteși apăsați butonul Adăuga, la creare, selectați tipul pentru aspect document foaie de calcul.

Aspectul nostru va avea 4 zone:

  • Antet - în această zonă vom afișa numele raportului, perioada pentru care a fost generat și antetul tabelului;
  • Date contrapartidei - in aceasta zona vom afisa datele contrapartidei intr-un tabel;
  • DateContract de contrapartidă - în această zonă vom afișa datele despre contractul de contraparte într-un tabel;
  • Subsol - în această zonă vom afișa valorile totale pentru întregul raport pentru câmpurile Venituri și Cheltuieli.

Să începem să creăm zone de aspect. Pentru a crea o zonă în aspect, selectați numărul necesar de linii și faceți clic Tabel de meniu -> Nume -> Atribuire nume(Sau Ctrl + Shift + N). Spre regiune Un capac Să scriem numele raportului: Cifra de afaceri 62 contează, desenați folosind instrumentul Frontiere antetul raportului și, de asemenea, setați parametrii Începutul perioadeiȘi Sfârșitul perioadei. Cu ajutorul parametrilor, puteți afișa datele necesare în raport; ne vom ocupa de acest lucru în următoarea etapă de dezvoltare, și anume la scrierea codului raportului. Pentru a crea un parametru în aspect, selectați celula dorită, scrieți numele parametrului în ea (fără spații), faceți clic dreapta pe el, selectați elementul din meniul care se deschide Proprietăți. În proprietățile celulei din filă Aspect selectați umplutura Parametru.

După aceasta, numele parametrului din celulă va fi cuprins între paranteze unghiulare ("<>„). Drept urmare, zona Un capac ar trebui sa arate asa:

În zonă DataCounterparty vom crea parametri pentru afișarea numelui contrapărții, precum și pentru venituri și cheltuieli pentru contul 62, folosind instrumentul Frontiere Să proiectăm zona ca un rând de masă.

În zonă Acord de contrapartidă de date Să creăm parametri pentru afișarea numelui contractului, precum și pentru venituri și cheltuieli pentru contul 62, folosind instrumentul Borders vom proiecta zona ca un rând de tabel. Să facem o mică liniuță înaintea parametrului Acord de contrapartidă(acest lucru se poate face prin divizarea și îmbinarea celulelor. Faceți clic dreapta pe celulă -> Combina sau Celulă împărțită), este necesar pentru ca raportul să poată vedea că linia pentru contract este mai jos în ierarhie decât linia pentru contraparte.

În zonă subsol Să creăm parametri pentru totalurile veniturilor și cheltuielilor.

Ca rezultat, ar trebui să obținem un aspect ca acesta:

3. Creați un formular de raport

Pentru a afișa datele, setați perioada de formare și butonul Formă raportul nostru va necesita un formular. Pentru a crea un formular, găsiți elementul în arborele de metadate ale raportului extern Formeși apăsați butonul Adăuga. Pe prima pagină a designerului de formulare, nu trebuie să faceți nicio modificare, trebuie doar să faceți clic pe butonul Mai departe.

Pe pagina următoare a designerului, selectați ambele detalii disponibile( Începutul perioadei, Sfârșitul perioadei) pentru plasarea pe formular.

Ca rezultat, vom obține acest formular:

Dar nu suntem mulțumiți de el în această formă; să-i facem câteva modificări:

  • Să tragem butonul Formă din panoul de jos al raportului în sus (acest lucru va fi mai convenabil pentru utilizator);
  • Întindeți forma vertical și orizontal;
  • Să aranjam câmpurile Începutul perioadeiȘi Sfârșitul perioadei orizontal;
  • Să adăugăm un element de control al câmpului de document pentru foaie de calcul în formular (raportul nostru va fi afișat în el), dăm-i un nume TabDoc;
  • Să creăm un buton de selecție a perioadei (atunci când faceți clic, va apărea un dialog cu o alegere convenabilă a perioadei dorite). Nu vom scrie încă codul programului pentru acesta, așa că vom plasa butonul de lângă câmpurile perioadei.

Ca rezultat, formularul nostru va arăta astfel:

4. Programare

După crearea formularului de raport, să începem programarea. Mai întâi, să creăm o procedură pentru afișarea unui dialog de selecție a perioadei (am creat deja un buton pentru aceasta în etapa anterioară). Faceți clic dreapta pe buton și selectați elementul de meniu Proprietăți, în proprietățile butonului accesați fila Evenimente, unde folosind butonul cu o pictogramă lupă vom crea o procedură Buton1 Apăsațiîn modulul formular.

Puteți comuta între formular și modulul său folosind filele din partea de jos a formularului

Pentru a apela formularul de selecție a perioadei, vom folosi procedura standard Contabilitate 2.0 dintr-un modul comun Lucrul cu dialoguri - HandlerPeriodSettingPress, trebuie să îi transmiteți detaliile raportului ca parametri Începutul perioadeiȘi Sfârșitul perioadei.

Procedură Buton1Apăsați(Element) Lucrul cu Dialogs.PeriodSettingHandlerPressing(PeriodStart,PeriodEnd); Sfârșitul procedurii

Acum să trecem la scrierea codului care va genera și afișa raportul nostru. Modulul formular are deja o procedură ButtonGeneratePress, care se va executa la apăsarea butonului Formă, acolo vom scrie codul nostru. Să începem prin a inițializa variabilele necesare. În primul rând, să creăm o variabilă pentru câmpurile documentului din foaia de calculîn care vom scoate date, acest lucru nu este necesar, doar că înregistrarea apelurilor către acesta va deveni mai scurtă, ceea ce înseamnă că codul programului va fi mai ușor de înțeles pentru citire.

TabDoc = FormElements.TabDoc;

Să obținem aspectul raportului extern folosind funcția GetLayout(<ИмяМакета>) , vom trece numele layout-ului ca parametru, iar dacă un astfel de layout există, funcția îl va găsi.

Layout = GetLayout("Layout");

După ce este primit aspectul, să creăm variabile pentru fiecare dintre zonele sale, folosiți metoda de aspect pentru aceasta GetArea(<ИмяОбласти>) .

AreaHeader = Layout.GetArea("Header" ); AreaDataAccount = Layout.GetArea( „Datele contractantului”); AreaDataContract = Layout.GetArea("DataContract" ); AreaFooter = Layout.GetArea("Footer" );

Să ștergem câmpul din foaia de calcul. Acest lucru este necesar pentru ca de fiecare dată când este generat un nou raport, datele vechi să fie șterse.

TabDoc.Clear();

Acum că inițializarea variabilelor este completă, să trecem la completarea și afișarea zonelor de aspect una câte una. Să începem cu antetul. Dacă vă amintiți, am creat doi parametri în această zonă Începutul perioadeiȘi Sfârșitul perioadei, vom trece acolo valorile perioadei de generare a raportului, pentru aceasta vom folosi proprietatea Opțiuni zonele de amenajare.

AreaHeader.Parameters.PeriodStart = PeriodStart; AreaHeader.Parameters.EndPeriod = EndPeriod;

Gata cu acțiunile cu zona Un capac Nu este necesar producătorul, așa că vom afișa câmpul său într-un document de foaie de calcul.

TabDoc.Output(AreaHead);

În continuare, vom scrie o interogare în baza de date, cu care vom prelua cifra de afaceri în cont 62 din registrul contabil Autoportant. Să definim o variabilă în care va fi localizată cererea noastră.

Solicitare = cerere nouă;

Înainte de a începe să scriem textul de solicitare, să îi transmitem parametrii necesari. Deoarece scriem o cerere de factură 62 contabilitate, apoi în primul rând vom crea un parametru pentru acesta

Request.SetParameter("Account62", Planuri de conturi. Auto-susținând. Găsește după cod("62" ));

De asemenea, este necesară trecerea perioadei de generare a raportului în cerere. Nu uitați că avem detalii speciale de raport pentru perioada de generare și le transmitem ca parametri.

Request.SetParameter("Începutul perioadei", Începutul perioadei); Request.SetParameter("Sfârșitul perioadei", Sfârșitul perioadei);

Să începem să scriem textul interogării, vom face acest lucru folosind designerul de interogări. În multe tutoriale scriu că trebuie să poți scrie o interogare atât manual, cât și folosind un constructor, dar în practică nu este cazul. În sarcinile cu care se confruntă constant un programator 1C, prioritatea este să scrie cod rapid și eficient, iar atunci când scrieți manual o interogare în baza de date, acest lucru este aproape imposibil de realizat; veți petrece mult timp prețios reproducând corect toate structurile de interogare. și găsirea greșelilor de scriere pe care le-ați făcut când ați scris etc. Prin urmare, nu vă pierdeți timpul încercând să scrieți interogări manual, ci folosiți constructorul de interogări. Vă va economisi timp și vă va permite să scrieți interogări complexe fără prea mult efort. Pentru a începe să scrieți textul solicitării, să scriem în cod:

Solicitare.Text = "" ;

După aceea, plasați cursorul între ghilimele, faceți clic dreapta și selectați Constructor cerere. Se va deschide fereastra de proiectare de interogări.

Acum trebuie să selectăm tabelul de bază de date 1C 8 de care avem nevoie. Avem nevoie de un tabel virtual Revoluții registrul contabil Autoportant. Să-l găsim în partea stângă a ferestrei de designer

Să-l mutăm în zonă Meseși să începem să completăm parametrii. Pentru toate tabelele de interogări virtuale există un set special de parametri care vă permit să selectați datele necesare din tabelul principal (în cazul nostru, tabelul principal Registrul contabil Autoportant). Să deschidem fereastra parametrilor tabelului virtual.

Să completăm parametrii pentru perioada pe care am trecut la cerere. Pentru a utiliza un parametru în textul cererii, trebuie să scrieți simbolul înaintea numelui său ampersand(&)

Rămâne de completat condiția pentru contul contabil. contabilitate. Pentru a face acest lucru, găsiți linia în parametrii tabelului virtual Condiția contului si o sa scriem acolo

Cont ÎN IERARHIE (&Contul62)

De asemenea, puteți utiliza constructorul de condiții făcând clic pe butonul cu trei puncte.

Nu este nevoie să impunem alte condiții pe masa virtuală, așa că haideți să facem clic pe butonul Bineîn fereastra parametrilor tabelului virtual. Apoi, trebuie să selectăm câmpurile de care avem nevoie din tabel Autoportant.Cifra de afaceri(și anume: Contraparte, Contract de contraparte, Venituri și Cheltuieli). Pentru a vizualiza lista de câmpuri disponibile în tabelul pe care l-am selectat, faceți clic pe simbolul „+” de lângă numele acestuia. După aceea, trageți câmpurile necesare în zona din dreapta a designerului de interogări, care se numește: Câmpuri. Dacă deschidem planul de conturi, vom vedea asta pentru cont 62 analitice pe Pentru contraparte, acesta este Subconto1, și prin Acord de contraparte - Subconto2.

Prin urmare, din câmpurile tabelului virtual selectăm Subconto1Și Subconto2. Deoarece avem nevoie de venituri și cheltuieli după sumă, selectăm și câmpurile SumaTurnoverDtȘi SumăCurnoverKt

Să completăm aliasurile câmpurilor pe care le-am selectat; pentru a face acest lucru, accesați fila Sindicate/Alias-uriși setați numele câmpurilor necesare.

Deoarece în raportul nostru datele vor fi afișate ierarhic (Contrapartea se află la primul nivel, iar toate contractele sale sunt la al doilea), vom configura afișarea datelor în ierarhie folosind Totaluri. Să mergem la fila din designer Rezultate. Trageți secvențial în câmpurile de grupare ContrapartidăȘi Acord de contrapartidă, iar în finală VenireȘi Consum.

Acest lucru finalizează munca în constructorul de interogări, faceți clic pe butonul Bineși vedem că textul solicitării noastre apare în codul programului.

Query.Text = „SELECT | Cifra de afaceri auto-suportabilă.Subconto1 AS contraparte, | Auto-susținere Cifra de afaceri.Subconto2 AS Acord de contraparte, | Cifra de afaceri autoportabilă. | Cifra de afaceri autoportabilă.Suma Cifra de afaceriKt AS Cheltuială|DIN | Registrul de contabilitate. Auto-contabil. Cifra de afaceri (&Începutul perioadei, &Sfârșitul perioadei, Cont ÎN IERARHIE (&Contul 62),) AS Auto-contabil Cifra de afaceri|REZULTATE | AMOUNT(Venit), | SUMA(Cheltuieli) |PO | contrapartidă, | Acord de contrapartidă”;

După ce am terminat de scris cererea, să începem să completăm zonele DataCounterparty, DataAgreementContraparteȘi subsol. Vom completa toate aceste zone cu datele primite la executarea cererii. Deoarece interogarea noastră conține grupări( ContrapartidăȘi Acord de contrapartidă) selectați datele din acesta după cum urmează:

SelectionCounterpart = Request.Execute().Select(BypassQueryResult.ByGrouping);

În acest fel vom primi înregistrări cu totaluri pentru toate contrapărțile.

Înainte de a parcurge datele eșantionului folosind o buclă, inițializam variabilele destinate calculării rezultatelor generale pentru raport:

TotalIncoming = 0; TotalConsumption = 0;

Pentru ca datele raportului să fie afișate cu o ierarhie (și rotații de-a lungul „+”), să setăm începutul grupării automate a rândurilor documentului foaie de calcul:

TabDoc.StartAutoGroupingRows();

Toate pregătirile sunt finalizate, acum să începem să accesăm cu crawlere rezultatele interogării. Vom efectua traversarea folosind o buclă Pa

În timp ce Selectați cont. Următorul() Ciclu EndCycle ;

La începutul ciclului, resetați parametrii VenireȘi Consum regiune DataCounterparty. Pentru ce este? Să ne imaginăm o situație în care contrapartea unchiul Vasia, veniturile sunt 10, iar cheltuielile sunt 5, iar pentru următoarea contraparte unchiul Petya nu există venituri sau cheltuieli, în acest caz, dacă nu resetăm parametrii VenireȘi Consum, apoi în linie de contraparte unchiul Petya va fi un venit de 5 și o cheltuială de 10.

AreaDataAccount.Parameters.Receipt = 0; AreaDataAccount.Parameters.Expense = 0;

După aceea umplem zona DataCounterparty date despre elementele eșantionului

FillPropertyValues(AreaAccountData.Parameters,SelectionAccount);

După completarea datelor, puteți afișa zona document foaie de calcul, Deoarece folosim gruparea automată a rândurilor, trebuie să indicăm nivelul rândului din grupare (raportul nostru va avea două niveluri, pentru contrapartide primul pentru contracte).

TabDoc.Output(AreaDataAccount,1);

Acum pentru această contraparte vom face o selecție conform contractelor sale.

SelectionCounterparty Agreement = SelectionCounterparty.Select(BypassQueryResult.ByGroups);

Vom efectua traversarea folosind o buclă Pa.

While SelectionCounterparty Agreement.Next() Loop EndCycle ;

În ciclul acordurilor de contrapartidă, să resetam parametrii VenireȘi Consum, umpleți zona DataContract din eșantion și afișați-l într-un document foaie de calcul la al doilea nivel de înregistrări.

AreaDataContract.Parameters.Receipt = 0; AreaDataContract.Parameters.Expense = 0; CompletațiPropertyValues(AreaDataAgreement.Parameters,SelectionCounterpartyAgreement); TabDoc.Output(AreaDataContract,2);

Tot în acest ciclu, vom adăuga valorile curente la variabilele pentru calcularea valorilor totale pentru venituri și cheltuieli.

TotalReceipt = TotalReceipt + SelectionCounterpartyAgreement.Receipt; TotalExpense = TotalExpense + SampleCounterparty Agreement.Expense;

Acest lucru încheie producția de date în zonă DataCounterparty, DataAgreementContraparte finalizat, nu mai rămâne decât să finalizați gruparea automată a rândurilor documentului foaie de calcul.

TabDoc.FinishAutoGroupingRows();

Cicluri complete responsabile pentru transmiterea datelor în zonă DataCounterpartyȘi DataAgreementContraparte arata asa:

TabDoc.StartAutoGroupingRows(); While SelectionAccount.Next() Loop AreaDataAccount.Parameters.Receipt = 0 ; AreaDataAccount.Parameters.Expense = 0 ; FillPropertyValues(AreaAccountData.Parameters,SelectionAccount); TabDoc.Output(AreaDataAccount,1); SelectionCounterparty Agreement = SelectionCounterparty.Select(BypassQueryResult.ByGroups); While SelectionCounterparty Agreement.Next() Loop AreaDataAgreement.Parameters.Receipt = 0 ; AreaDataContract.Parameters.Expense = 0 ; CompletațiPropertyValues(AreaDataAgreement.Parameters,SelectionCounterpartyAgreement); TabDoc.Output(AreaDataContract,2); TotalReceipt = TotalReceipt + SelectionCounterpartyAgreement.Receipt; TotalExpense = TotalExpense + SampleCounterparty Agreement.Expense; EndCycle ; EndCycle ; TabDoc.FinishAutoGroupingRows();

Rămâne de afișat datele finale din zonă subsolși scoateți zona în sine document foaie de calcul.

AreaBasement.Parameters.TotalIncoming = TotalIncoming; AreaBasement.Parameters.TotalConsumption = TotalConsumption; TabDoc.Output(AreaFooter);

Acest lucru completează procesul de scriere a unui raport extern pentru 1C 8 fără a utiliza un sistem de control al accesului. Acum poate fi generat în modul 1C:Enterprise 8 și adăugat în director Procesare externă Puteți descărca fișierul raportului discutat în articol din .

Urmăriți un videoclip despre crearea unui imprimabil extern pentru o aplicație gestionată:

Cutie cu nisip

Leonid Iakubovich 23 august 2011 la ora 10:22

Aspectele în 1C 8.2 nu sunt dificile (Partea 1 - Crearea unui aspect)

Să presupunem că trebuie să afișați un raport ca acesta:

Acest raport poate fi construit cu ușurință folosind un sistem de compoziție a datelor (DCS), mai ales dacă toate datele necesare sunt stocate într-un singur director. Cu toate acestea, să încercăm să afișăm același raport folosind un aspect.


Pentru a genera acest raport, aveți nevoie de un director „Angajați” cu detaliile „Data nașterii”, „Posiție”. Lăsați numele de familie, prenumele și patronimul angajatului să fie stocate împreună într-un câmp implicit - „Nume”. Pentru a indica poziția unui angajat, există un alt director simplu „Poziții” cu câmpuri implicite. Structura cărților de referință necesare este prezentată în figura de mai jos.

Acum să creăm un nou raport și să-l numim „Lista de angajați”. Să mergem la fila „Layouts” și să creăm un nou aspect de tip „TabularDocument”.
O foaie de calcul goală se va deschide în fața noastră, gata de utilizare. Acum trebuie să prezentăm raportul necesar sub forma unui aspect.
Pentru a face acest lucru, mai întâi copiați raportul sursă într-o foaie de calcul goală, de exemplu. la aspectul raportului. Veți obține ceva de genul acesta:

Să punem în ordine aspectul - vom alinia titlurile la centru, vom seta tabelul să afișeze chenarele și vom șterge toate datele din tabel, cu excepția primei înregistrări. O vom avea ca mostră.
Să împărțim raportul final în zone, după cum urmează:

Pentru fiecare zonă, trebuie să atribuiți un nume corespunzător; pentru a face acest lucru, trebuie să selectați zona dorită (în acest caz, toate zonele sunt grupuri de linii) și să faceți clic pe butonul cu pictograma sau pe combinația de taste Ctrl+Shift +N. În fereastra care apare, trebuie să introduceți numele acestei zone. Să numim zonele așa cum sunt indicate în figură.
Acum acele celule de tabel în care ar trebui să fie afișate datele din baza de informații trebuie să fie desemnate ca conținând un șablon. Pentru a face acest lucru, selectați acest câmp și selectați „Proprietăți” în meniul contextual (butonul dreapta al mouse-ului). În lista derulantă a proprietăților celulei „Umpleți”, trebuie să selectați „Șablon” (exemplu în figura de mai jos).

După aceasta, dacă în textul celulei apare o expresie între paranteze drepte, aceasta va fi percepută de sistemul 1C ca un parametru. De exemplu, dacă textul celulei este după cum urmează:

Numele meu este [MyName],

Apoi, pentru a afișa textul „Numele meu este Ivan”, este suficient parametrul "Numele meu" atribuiți valoarea „Ivan”.
În cazul nostru, șablonul va fi data de ieșire a raportului, precum și toate coloanele din rândul care conține datele angajatului. Ca rezultat, după toate manipulările, aspectul raportului va arăta astfel:

Aceasta completează crearea aspectului. Acum trebuie să generați programatic un raport din zonele generate și să îl afișați.

Etichete: 1C 8, aspect, rapoarte, machete