Odată, când făceam un nou document, m-am confruntat cu necesitatea de a face mai multe formulare tipărite pentru document. Mai mult, utilizatorii nu au putut spune exact cum ar trebui grupate datele sub formă tipărită. Au existat informații contradictorii. Unii dintre utilizatori au dorit să grupeze după unul dintre detalii, unii după alții. Adică, în viitor, trebuia să creez aproximativ șase machete diferite pentru tipărire, ceea ce nu mi se potrivea. Ca rezultat, a fost găsită o soluție - imprimarea documentului utilizând schema de compoziție a datelor. Un document cu tipul „Schemă de compoziție a datelor”, precum și un formular cu setări ACS a fost adăugat la document. De fapt, exista doar un câmp în setări în care a fost afișat arborele cu grupările ACS (Settings Composer. Settings). Adică, făcând clic pe butonul „Tipărește”, utilizatorul deschide automat o fereastră cu setările de grupare presetate (cele mai frecvent utilizate). Și, dacă este necesar, el însuși putea stabili grupările în contextul cerințelor de care avea nevoie. Ei bine, atunci a existat o imprimare directă, luând în considerare setările specificate de utilizator. Nu voi intra în detalii tehnice. Principalul lucru pe care am vrut să-l transmit a fost ideea în sine.

2 comentarii despre „Utilizarea ACS pentru a tipări documente” ”

    Utilizatorii mei au făcut-o. Adevărat, aceștia nu erau contabili, ci manageri ai diviziilor companiei. Ei bine, plus că instrucțiunea a fost scrisă. Și înțelegerea „cine este” documente, directoare, registre etc. de atunci nu li s-a cerut tipărirea a fost apelată direct din caseta de dialog a documentului făcând clic pe butonul standard „Tipărire”

Aproape toți parametrii disponibili în casetele de dialog cu setările de imprimare (setările imprimantei, proprietățile paginii) pot fi specificați direct la generarea unui document de foaie de calcul.

Să luăm în considerare proprietățile și metodele unui document de foaie de calcul legat de setările de imprimare (în exemplele date, „TabDok” este un obiect de tip „Document de foaie de calcul”).

Proprietate „Numele imprimantei” vă permite să setați o altă imprimantă decât cea implicită pentru imprimare. Numele trebuie să se potrivească cu numele imprimantei setate pe sistem:

TabDoc.PrinterName \u003d "Canon iR1133";

Când imprimați un lot de documente, puteți economisi timp setând semnalizatorul de asamblare:

TabDoc.ParseCopy \u003d Adevărat;

Numărul de copii poate fi specificat după cum urmează:

TabDoc.Număr de copii \u003d 5;

Desigur, puteți specifica câmpurile:

TabDoc. Marja stângă \u003d 20; // Marja stângă 20mm, alte margini 10mm (implicit)

Câteva proprietăți ale paginii:

TabDoc.Page Orientation \u003d Orientare pagină. Peisaj; TabDoc.InstancesOnPage \u003d 2; // 2 pagini TabDoc vor fi plasate pe foaie. Autoscale \u003d true; // similar cu setările de mărire a lățimii paginii

Dacă este necesar, puteți specifica o anumită valoare de scalare în procente (proprietate „Scară de imprimare” ).

Proprietate "Mărimea paginii" vă permite să setați dimensiuni standard ale paginilor - „A3”, „A4”, „A5” (o listă completă de opțiuni este disponibilă în ajutorul 1C).

TabDoc.Page Size \u003d "A3"; // litera A trebuie să fie engleză

Pentru dimensiunea de hârtie personalizată, puteți specifica înălțimea și lățimea paginii (în mm):

TabDoc.PageSize \u003d "Personalizat"; // non-standard TabDoc.PageHeight \u003d 350; TabDoc.Lățimea paginii \u003d 350;

De asemenea, în foaia de calcul, este disponibil controlul ieșirii antetelor și subsolurilor și a conținutului acestora. Acest lucru se face folosind proprietățile „Antetul paginii” și "Subsol". De exemplu:

TabDoc.HeaderFooter.Office \u003d adevărat; // va fi tipărit antetul TabDoc.FooterSizeTop \u003d 7; // dimensiunea subsolului 7mm (implicit 10mm) TabDoc.HeaderFooter.VerticalPosition \u003d VerticalPosition.Top; TabDoc.HeaderFooter.StartPage \u003d 2; // antetul este afișat din a doua pagină FontFootboard \u003d Font nou ("Courier New", 8, True); TabDoc.HeaderFooter.Font \u003d HeaderFont; // font italic TabDoc.HeaderFooter.TextVCenter \u003d "Antet"; TabDoc.HeaderFooter.TextRight \u003d "Pagină [& Număr pagină] din [& PaginiTotal]"; // paginare TabDok.HeaderFooter.TextLeft \u003d "[& Data]"; // data curentă

Documentul generat este trimis la imprimare folosind metoda "Tip()". Există două opțiuni de apel posibile.

1) Direct către imprimantă:

TabDoc.Print (ModePrintDialogueUse.Do not use); TabDoc.Print (adevărat);

2) Înainte de tipărire, va fi afișat dialogul de imprimare:

TabDoc.Print (ModePrintDialogueUse.Use); TabDoc.Print (fals);

În plus, puteți controla paginarea documentului. Puteți estima numărul de pagini dintr-un document pe baza setărilor imprimantei curente, după cum urmează:

TabDoc.Număr de pagini ();

Folosind metode „CheckOutput ()” și „CheckConnection ()” Puteți determina dacă un document de foaie de calcul sau o serie de regiuni de documente de foaie de calcul se potrivește pe pagină în înălțime și lățime cu setările curente ale imprimantei.

Trebuie avut în vedere că lucrarea ultimelor trei metode depinde de imprimanta instalată. Dacă metoda nu o poate găsi, se aruncă o excepție.

Pentru a forța inserarea pauzelor de pagină, metodele permit „DisplayVerticalPage Separator ()” și "OutputHorizontalPage Separator ()" .

Astfel, puteți controla tipărirea pagină cu pagină și controla umplerea paginii:

Dacă nu TabDoc.CheckOutput (Array of OutputOptions), atunci TabDoc.OfferHorizontalPageSplitter (); End If

O caracteristică importantă a platformei 1C: Enterprise 8.2 este separarea strictă a proprietăților și metodelor în funcție de contextul de execuție. Dacă toate proprietățile de mai sus sunt disponibile în orice context, atunci metodele enumerate nu sunt disponibile pentru clientul subțire. O excepție este metoda „Print ()”, a cărei disponibilitate este limitată, din motive evidente, la partea clientului. Aceasta înseamnă că formarea unui document de foaie de calcul ar trebui să aibă loc pe server și ar trebui trimis pentru a fi tipărit în procedura clientului.

Să creăm un raport extern care să afișeze informații de raportare despre soldul stocului și cifra de afaceri a acestuia. Informațiile solicitate sunt solicitate de o cerere utilizând un set de date de tipul „Cerere”, care conține textul cererii:
SELECTAȚI
_DemoNomenclature.Ref AS Nomenclatura
PLACE ActualNomenclature
DE
Directory._DemoNomenclature AS _DemoNomenclature
UNDE
NU _DemoNomenclature.Eliminați marca
ȘI NU _DemoNomenclature. Acesta este un grup
;

////////////////////////////////////////////////////////////////////////////////
SELECTAȚI
ActualNomenclature.Nomenclature,
_DemoRemains of GoodsInStoragePlacesRemains andTurnover.Storage,
_DemoGoodsBalancesInStoragePlacesBalancesAndTurnover.QuantityBeginner Balance,
_DemoGoodsBalancesInStoragePlacesBalances andTurnovers.QuantityBalance final,
_DemoRemains of GoodsInStoragePlacesRemains andTurnovers.NumberIncome,
_DemoGoodsBalancesInStoragePlacesBalances andTurnovers.QuantityExpense,
_DemoRemains of GoodsInStoragePlacesRemains andTurnovers.NumberTurnover
DE
ActualNomenclature AS ActualNomenclature
CONEXIUNEA LA STÂNGA Registru de acumulare._DemoRămâneri de mărfuri în locații de depozitare.Restanțe și cifre de afaceri AS _DemoRemains of GoodsInStoragePlacesRemains ANDTurnovers
Software Up-to-dateNomenclature.Nomenclature \u003d _DemoProductsBalances In StoragePlacesBalances & Turnovers.Nomenclature

În consecință, raportul conține următoarele câmpuri (a se vedea Figura 1):

Deoarece informațiile sunt preluate din tabelul virtual „Rămășițe și cifre de afaceri”, ACS creează automat doi parametri de date, Perioada de început și Perioada de sfârșit, care sunt necesari pentru a seta limitele perioadei de eșantionare a datelor. Prefer să nu lucrez direct cu astfel de parametri, ci să le setez valorile printr-un alt parametru care va fi disponibil utilizatorului pentru editare (vezi Figura 2).
Raportul își face treaba, dar șeful raportului este destul de uscat. În timpul muncii mele, am găsit mai multe moduri de a proiecta antetul raportului:

  1. Configurarea anteturilor de câmp în fila ACS „Datasets”;
  2. Configurarea anteturilor de câmp din fila „Setări” ACS;
  3. Setarea programată a anteturilor de câmp;
  4. Setarea antetului raportului utilizând un aspect;
  5. Finalizarea rezultatului (document foaie de calcul);
Să le luăm în considerare în detaliu.

1. Setarea antetelor în fila ACS „Datasets”

Totul este simplu aici, puneți o bifă în fața proprietății câmpului „Titlu” (adică anulați titlul automat) și introduceți textul titlului dorit (vezi Figura 4).
Dacă doriți să setați aspectul pentru întregul câmp, și nu doar pentru titlul acestuia, există proprietatea câmpului „Aspect”, cu care puteți seta un anumit aspect al câmpului, de exemplu, puteți schimba fontul sau setați culoarea fundalului (vezi Figura 5).
Aici se termină cunoștințele mele despre fila „Seturi de date”.

2. Configurarea anteturilor de câmp din fila „Setări” ACS

Pentru a seta titlul unui câmp, selectați câmpul dorit, faceți clic dreapta pentru a deschide meniul contextual și selectați elementul „Setați titlul” (vezi Figura 6)
Pentru a grupa câmpurile (de exemplu, după tipul de informații), trebuie să adăugați un câmp de grupare și să plasați câmpurile necesare în acesta (a se vedea Figura 7), cuibărirea este nelimitată.
De asemenea, puteți juca cu proprietatea „Locație” a câmpului de grupare, care determină tipul de grupare a câmpurilor.

Aceste acțiuni pot fi efectuate și în 1C: modul Enterprise, deschizând setările raportului, DAR, elementul „Câmpuri selectate” trebuie să fie inclus în setările raportului (vezi Figura 8).
Aceasta completează partea ușoară a personalizării antetului raportului. Dintre avantajele acțiunilor de mai sus: toată configurația este realizată prin mijloace standard. Contra: imposibilitatea de a seta un antet de câmp cu mai multe linii.

3. Setarea programată a anteturilor de câmp

Platforma vă permite să setați programat titluri de câmp, în plus, să setați mai multe linii, ceea ce face posibilă stabilirea flexibilă și dinamică a titlurilor de câmp atunci când generați un raport.

Pentru a face acest lucru, în modulul de raport definim procedura Când compuneți rezultatul... În această procedură, vom scrie codul pentru a seta antetul câmpului.

// 1. Obțineți setări personalizate.
Setări CD \u003d ThisObject.SettingsComposer.GetSettings ();

// 2. Obțineți valoarea parametrului „Perioadă” din care determinăm data de începere și de încheiere a perioadei.
ParameterPeriod \u003d NewDataCompositionParameter ("Perioada");
Period \u003d CD Settings.DataParameters.FindParameterValue (ParameterPeriod) .Value;
Period Start \u003d Period.Start Date;
PeriodEnd \u003d Period.EndDate;

// 3. Pregătiți informații despre redefinirea antetului câmpului. Pentru a face acest lucru, creați
// o matrice care va conține informații: FieldName - valori ale proprietății "Calea" din
// set de date (vezi figura 1), Titlu - textul titlului.
FieldList \u003d New Array;
pStartPeriod \u003d Format (BeginPeriod, "DF \u003d dd.MM.yyyy; DF \u003d" Data goală "");
FieldStartBallow \u003d Structură nouă ("FieldName, Title", "QuantityStartingBalance", "Resting by" + Symbols.PS + lineStartPeriod);
ListFields.Add (Sold FieldStart);
stEndPeriod \u003d Format (EndPeriod, "DF \u003d dd.MM.yyyy; DF \u003d" Data goală "");
Câmp EndRemainment \u003d Structură nouă ("FieldName, Title", "NumberEndRemainment", "Balance by" + Symbols.PS + lineEndPeriod);
ListFields.Add (FieldEnd Remaining);

// 4. Obțineți lista câmpurilor, care se află în gruparea „Rămâne” (a se vedea Figura 7) și
// setați un nou titlu prin looping prin elemente.
SelectedFields \u003d CD Settings.Selection.Elements; // Primul nivel al câmpurilor.
SelectedFieldsRemains \u003d SelectedFields.Elements; // Gruparea câmpurilor rămase.
Pentru fiecare câmp selectat din câmpurile selectate rămâne ciclul
Pentru fiecare element de matrice din buclă de câmpuri de listă
CompositionField \u003d NewDataCompositionField (ArrayElement.FieldName);
Dacă SelectedField.Field \u003d Câmpul Layout atunci
SelectedField.Header \u003d ArrayItem.Header;
EndIf;
Sfârșitul ciclului;
Sfârșitul ciclului;

// 5. Încărcați setările modificate ale utilizatorului înapoi.
ThisObject.SettingsComposer.DownloadSettings (Setări CD);

Rezultatul raportului (a se vedea figura 10):
Metoda este mai grea decât toate cele de mai sus, dar îmi place.

4. Setarea antetului raportului utilizând aspectul

Pentru o personalizare mai flexibilă a aspectului raportului în ACS, este prevăzută crearea de machete. În setările raportului, creați încă o „înregistrare detaliată” de grupare și setați numele „șir DZ” pentru această grupare (a se vedea Figura 11).
În fila Aspecte, adăugați un aspect de antet de grupare. Pentru aspectul din documentul foii de calcul, creați un antet de raport (antetul raportului trebuie să conțină atâtea antete de câmp pe cât afișează înregistrarea detaliată) și indicați aria documentului foii de calcul pentru aspect (a se vedea Figura 12).
Ca urmare, raportul are următorul antet (a se vedea Figura 13):

Figura 13. Aspectul ACS ca antet de raport
În opinia mea, aspectele au un mare dezavantaj, este imposibilitatea reconstrucției pentru un anumit grup de utilizatori, deci ar trebui utilizate dacă formularul de raportare este reglementat și nu poate fi modificat. Încercați să setați gruparea pentru gruparea „RowDZ” și veți vedea că aspectul este defect.

Pe site-ul de asistență pentru tehnologia informației, există un articol Utilizarea aspectelor predefinite, care descrie în detaliu modul de utilizare a aspectelor în ACS.

5. Finalizarea rezultatului (document foaie de calcul)

Această metodă folosește minunata metodă a documentului de foaie de calcul FindText (), dar pentru a utiliza această metodă, trebuie să dezactivați procesarea standard de generare a rezultatului raportului.

Să începem. Dezactivați generarea standard, pentru aceasta în modulul de raport pentru eveniment Când compuneți rezultatul setați variabila StandardProcessing la False și scrieți propriul nostru aspect al rezultatului:
StandardProcessing \u003d False;
Layout Composer \u003d New DataComposition Layout Composer;
LayoutComposition \u003d LayoutComposer.Run (
ThisObject.DataCompositionSchema,
ThisObject.SettingsComposer.Settings,
Decriptare date);
Procesor de compoziție \u003d nou procesor de compunere a datelor;
LayoutProcessor.Initialize (LayoutData, DecodeData, True);
OutputProcessor \u003d Nou OutputProcessorDataCompositionResultInTableDocument;
OutputProcessor.SetDocument (DocumentResult);
OutputProcessor.Output (LayoutProcessor);
Mai detaliat, aspectul programatic al rezultatului raportului este descris în articol

Rezultatul combinat este trimis într-un document de foaie de calcul - variabila DocumentResult. Mai mult, după generarea rezultatului și trimiterea acestuia într-un document de foaie de calcul, scriem un cod pentru a înlocui un text de celulă cu altul. De exemplu, în antetul raportului, schimbați numele grupării „Rămâne” în „Rămâne de stoc” (vezi Figura 14):
Cell \u003d DocumentResult.FindText ("Rămâne");
Dacă Cell<> Nedefinit Apoi
Cell.Text \u003d "Elementul rămâne";
EndIf;

De asemenea, puteți seta formatarea pentru celula găsită, consultați proprietățile unei celule a unui document de foaie de calcul în asistentul de sintaxă.

Am descoperit această metodă pentru mine recent, este simplă și permite lucrul foarte flexibil cu antetul raportului, principalul lucru este că textul celulei are un text unic.

P.S. poate ai în arsenalul tău un alt mod de a proiecta anteturi de teren?

Atunci când creați rapoarte utilizând sistemul de compoziție a datelor (ACS), este convenabil să afișați parametrii raportului (cel puțin cei mai frecvent utilizați) pe formular, astfel încât să nu forțați utilizatorul să intre în fereastra standard de setări ACS.

Să analizăm cum se poate face acest lucru folosind formulare convenționale 1C. Să facem imediat o rezervare că acest articol se va concentra pe ieșirea parametrilor pentru formular, adică parametrii înșiși în ACS trebuie să fie deja creați.

Există două moduri de a afișa parametrii ACS în forma obișnuită:

  • ieșirea completă a tabelului cu setările parametrilor
  • ieșirea parametrilor individuali ca câmpuri de intrare.

Tabelul de setare a parametrilor afișat în formular este similar cu tabelul de setare a parametrilor generat de ACS. Pentru a-l afișa pe formular, trebuie să creați un control TabularField, în care proprietate Dateindica Setări Composer.Settings.Data Parameters

În acest caz, utilizatorului i se vor afișa toți parametrii ACS care nu au o restricție de disponibilitate.

Cu toate acestea, în unele cazuri, această metodă poate să nu pară atât de frumoasă și nu foarte ușor de utilizat. Să luăm în considerare modul de afișare a parametrilor ACS separat sub formă de câmpuri de intrare obișnuite.

  1. Să creăm detaliile raportului corespunzătoare parametrilor. În exemplul nostru, acestea vor fi cerințele Data de începere, Data de încheiere, Organizarea... Să stabilim tipurile lor de date corespunzătoare.
  2. Să creăm un câmp de intrare pe formular pentru fiecare dintre parametri și să le conectăm prin proprietate Date cu detaliile raportului. Pentru fiecare câmp de intrare, ar fi bine să creați o inscripție lângă numele parametrului, astfel încât utilizatorul să înțeleagă ce parametru editează.
  3. Pentru fiecare câmp de intrare, trebuie să creați o procedură pentru gestionarul de evenimente Când se schimbă, care va seta valoarea selectată de utilizator la parametrii ACS. În exemplu, am creat o procedură și l-am atribuit schimbării evenimentelor pentru toate cele trei câmpuri de intrare. Adică, atunci când un parametru este modificat, toți trei sunt resetați. Din punct de vedere al performanței, cel mai probabil nu este eficient, dar de atunci nu sunt mulți parametri, diferența nu se observă. Cu un număr mare de parametri, merită afișată setarea fiecăruia într-o procedură separată. Deci, codul de procedură pentru handler Când se schimbă va arăta astfel:

    Procedură ParametersOnChange (Item)

    ParameterDateStart \u003d Linker setări. Setări. Parametrii de date. Elemente. Găsiți („StartPeriod”); // Căutarea se efectuează după numele parametrului ACS
    ParameterDateStart. Utilizare \u003d Adevărat; // Parametrul va fi folosit la selectare
    ParameterDateStart. Valoare \u003d Data de începere; // Parametrul este atribuit cu valoarea atributului de raport

    ParameterDateCon \u003d Setări Linker. Setări. Parametrii de date. Elemente. Găsiți („EndPeriod”);
    ParameterDateCon. Utilizare \u003d Adevărat;
    ParameterDateCon. Valoare \u003d EndDay (EndDate);

    ParameterOrg \u003d Setări Linker. Setări. Parametrii de date. Elemente. Găsiți („Organizație”);
    ParameterOrg. Utilizare \u003d Adevărat;
    ParameterOrg. Valoare \u003d Organizare;

    Sfârșitul procedurii

Caracteristici de creare a rapoartelor în 1C v8 în modul client gros

Cum să alegi o opțiune?

  • Puneți butonul „Selectare opțiune” pe panoul de raport
  • Plasați câmpul „OnDate” pe formular

Cod simplu: ProcedureFormSelectOptions (Button) layout \u003d GetLayout ("MainDataCompositionSchema"); spVariants \u003d Lista nouă de valori; Pentru fiecare opțiune din Layout.OptionsSettings Cycle spVariants.Add (option.Settings, option.Presentation); Sfârșitul ciclului;

choice \u003d spVariants.SelectItem (); Dacă Alegere \u003d Nedefinit, atunci Reveniți; EndIf;

Setări Composer.LoadSettings (selection.Value);

Form (); Sfârșitul procedurii

Procedură OnDateWhenChanging (Element) Generate (); Sfârșitul procedurii

Procedură Form () Form Elements.Result.Clear (); Setări Linker.Settings.DataParameters.SetParameterValue ("Perioada", la data); BuildResult (Form Elements.Result); Sfârșitul procedurii

Procedură OnOpening () OnDate \u003d CurrentDate (); Form (); Sfârșitul procedurii

Caracteristici de creare a rapoartelor prin ACS

Generarea unui raport pas cu pas

  1. Creați un raport în nodul Rapoarte
  2. Creați un aspect într-un raport, al cărui tip este Schema de compoziție a datelor
  3. Setați în proprietățile raportului: Schema principală de compoziție a datelor \u003d Aspect creat
  4. În proprietățile raportului, setați subsistemul căruia îi aparține (raportul din Enterprise va fi afișat în panoul de navigare superior)
  5. Creați o cerere în Aspect (element: Adăugați set de date - Cerere)
  6. În fila Parametri a aspectului, debifați toate liniile din coloana Restricție acces - adică toți parametrii vor fi disponibili pentru editare de către utilizator
  7. În fila Setări a Aspectului, în fereastra în care este afișat nodul Raport, creați o nouă grupare fără a specifica câmpul de grupare - va fi creată o linie detaliată
  8. În fila Setări a Aspectului, în fereastra unde este afișat un set suplimentar de file, selectați suplimentar. Fila Parametri - marcați toți parametrii cu o bifă și pe fiecare parametru apăsați butonul Proprietăți ale elementului de setări ale utilizatorului, se va deschide fereastra de setări a parametrilor, unde trebuie să bifați caseta - Includeți parametrul în setările utilizatorului
  9. În fila Setări a Aspectului, în fereastra unde este afișat un set suplimentar de file, selectați suplimentar. Fila SelectedFields - adăugați acolo coloane care vor fi afișate în raport
  10. Rulați Enterprise, deschideți raportul, setați valorile parametrilor, generați (verificați dacă este selectată opțiunea principală pentru generarea raportului)

Cum pot adăuga un parametru care nu poate fi modificat de utilizator?

De exemplu, trebuie să setăm parametrul de interogare „Infobase”

  • În formularul de aspect, în fila Parametri, debifați caseta de selectare „Includeți în câmpurile disponibile” și „Restricții de accesibilitate” pentru parametrul necesar
  • Sub forma aspectului de aspect, în fila Setări din subfila (de mai jos) Parametri, debifați parametrul necesar, deschideți proprietățile (butonul cu o cheie), în acest formular:
    • Debifați „Includeți în setările personalizate”
    • Modul de editare setat la „Indisponibil”


  • În modulul formularului de raport, în gestionarul de evenimente "OnVariantLoadOnServer" (puteți, de asemenea, OnOpening, dar NU OnCreateAtServer, deoarece este executat ÎNAINTE de a încărca setările raportului și setările vor fi suprascrise) setați programatic parametrul:

Procedura & AtServer la încărcarea opțiunii OnServer (Setări)

// Setarea parametrului Settings \u003d Report.Configuration Composer.Settings; Settings.DataParameters.SetParameterValue ("InformationBase", Report.InformationBase); Sfârșitul procedurii

Cum pot seta variante de raport?

  • Sub forma aspectului aspectului din fila Setări din câmpul din stânga, puteți crea variantele de raport necesare

Cum se setează grupări?

  • Sub forma aspectului aspectului din fila Setări din câmpul din dreapta sus, puteți crea grupările necesare

Cum se afișează programat un raport?

În modulul formular:

& Procedura clientului Generare raport Executare ()

ThisForm.ComposeResult ();

Sfârșitul procedurii

Cum testez un raport?

Trebuie să faceți:

  • Pentru a forma o situație într-un test de client este cel mai convenabil prin tabelul de situații
  • obțineți formularul de raport - formular \u003d GetForm ("Formularul Report.Process.Motion.Report");
  • încărcați varianta necesară a raportului - setați parametrul extensiei formularului de raport „VariantKey” (numele setării în șablonul de compoziție a datelor)
  • încărcați setările de raport necesare -? pentru a completa parametrul extensiei formularului de raport „UserSettings” (tip „UserDataCompositionSettings”) nu a funcționat, totul este complicat, vezi mai jos.
  • formular deschis - formular. Open ()
  • executați formarea - form.ComposeResult ();
  • verificați conținutul formularului de document al foii de calcul Rezultat - ar fi bine să aveți funcții de comparație cu referința mxl
  • formă apropiată - formă.Închidere (); - sau poate nu trebuie să-l deschideți, trebuie să verificați

vezi si

  • descriere: meniu Ajutor / Asistent de sintaxă / fila Cuprins / Obiecte interfață aplicație gestionată / Extensii formular gestionat / Extensie formular gestionat pentru raport / Parametri formular

Cum pot încărca setările de raport necesare?

Documentația descrie că există un astfel de parametru pentru extinderea formularului de raport „UserSettings” de tip „UserDataCompositionSettings”, dar există o structură de obiect foarte complexă, nu a fost posibilă utilizarea acestuia.

O schemă cu adevărat funcțională:

1. Creați parametri în raport

  • Perioada de tip Perioada standard
  • Selectarea tipului ListValues \u200b\u200b(ar fi mai bine să aveți o structură, dar nu se află în lista tipurilor de parametri, precum și un tip arbitrar)

2. Treceți parametrii necesari la procedura GetForm:

period \u003d New StandardPeriod; period.Variant \u003d VariantStandardPeriod.ArbitenaryPeriod; period.StartDate \u003d currentDate; period.EndDate \u003d mâine'sDate;

selection \u003d Noua lista de valori; selection.Add (Testing.GetObject (stSituation, "BP1"), "BusinessProcess");

stParameters \u003d Nouă structură ("Variant Key, Period, Selection", "Main", period, selection); // OpenFormModally ("Report.Process Movement.Form.ReportForm", stParameters); form \u003d GetForm ("Report.Process Movement.Form.Report Form", stParameters);

3. În gestionarele de evenimente ale formularului, setați parametrii

Funcția & AtServer cnGet (listă, vizualizare) Export pentru fiecare articol Din listă Buclă listă Dacă item.View \u003d view Apoi Returnează item.Value; EndIf; Sfârșitul ciclului; Rambursare Nedefinit; EndFunction

& OnServer Procedure SetUserSettingsValue (Settings, Name, Value) Pentru fiecare element din Settings.Elements Loop IfTypeValue (element) \u003d Type ("DataCompositionSettingsParameterValue") Atunci If String (element.Parameter) \u003d Nume Then element.Value \u003d Value; element.Usage \u003d Adevărat; EndIf; EndIf; Sfârșitul ciclului; Sfârșitul procedurii

& OnServer Procedure SetValueCustomSelection (Setări, Nume, Valoare) pentru fiecare articol din Setting.Elements Loop IfTypeVal (item) \u003d Type ("DataCompositionFlection") Apoi pentru fiecare selecție din Item.Elements Loop If Row (pick.LeftValue) \u003d Nume Apoi Selecție .RightValue \u003d Valoare; selection.Use \u003d Adevărat; EndIf; Sfârșitul ciclului; EndIf; Sfârșitul ciclului; Sfârșitul procedurii

Procedura & AtServer la încărcarea opțiunii OnServer (Setări)

CurrentVariantName \u003d PresentCurrentVariant;

Setări \u003d Report.ConfigurationComposer.Settings; Settings.DataParameters.SetParameterValue ("InformationBase", Report.InformationBase);

Sfârșitul procedurii

& AtServer Procedură la încărcarea utilizatorului SettingsOnServer (Settings) Settings \u003d Report.Configuration Composer.UserSettings;

<> "00010101" Apoi Setări \u003d Report.ConfigurationComposer.UserSettings; SetUserSettingsValue (Setări, „Perioadă”, Parametri.Periodă); EndIf;

ssBusinessProcess \u003d spGet (Parameters.Selection, "BusinessProcess"); Dacă ssBusinessProcess<> Nedefinit Apoi SetCustomSelectionValue (Setări, „BusinessProcess”, ssBusinessProcess); EndIf;

Sfârșitul procedurii

Note:

  • Există parametri de date, adică ceea ce este setat în parametrii de solicitare ACS
  • Unele dintre ele sunt atribuite în setarea variantei în UserSettings (în proprietățile parametrului există un semn „Includeți în setările utilizatorului”
  • Chiar dacă, la încărcarea pe server, valorile necesare sunt încărcate în parametrii de date, atunci se deschide un formular în care sunt încărcate automat setările salvate ultima dată. Aceste setări, atunci când generează un raport, „întrerup” setările de date
  • În handlerul WhenLoadingUserSettingsOn Server, obiectul Setări transmise este o copie setări reale, deci pentru a modifica setările care apar pe formular, trebuie să completați obiectul Raport. Setări Composer. Setări utilizator.

Cum se fac mai mulți parametri de interogare (listă) în ACS?

Solicitarea trebuie să utilizeze expresia „În (& ParameterName)” (consultați expresii booleene în limbajul de interogare 1Cv8)

La configurarea aspectului circuitului ACS în fila „Parametri”, pentru acest parametru, bifați caseta „Lista valorilor disponibile”. În acest caz, când selectați un parametru, ACS afișează un formular de editare a listei, în care puteți adăuga orice valoare a parametrului.

Cum se fac parametrii cererii dezactivate în ACS?

Solicitarea ACS trebuie să utilizeze construcții înconjurate de acolade "{}" .

Dacă parametrul corespunzător este debifat în formularul de raport (panoul de setări rapide), atunci această construcție este eliminată din cerere.

Pentru mai multe detalii vezi Extinderea limbajului de interogare pentru sistemul de compunere a datelor (1Cv8)

Cum se face un raport cu un spread pe coloane?

Pentru a face acest lucru, în setarea variantei raportului (editarea aspectului compoziției datelor, fila „Setări”, câmpul din dreapta sus), trebuie să adăugați „Tabel” ca prima grupare.

După aceea, ramurile „Rânduri” și „Coloane” apar în nodul „Tabel”, unde sunt adăugate grupările necesare.

Cum se personalizează formatul de ieșire al câmpurilor?

În editorul de șabloane de compunere a datelor, în fila „Seturi de date”, în zona din dreapta sus există o listă de câmpuri de raport.

Există două posibilități:

  1. Personalizați valoarea coloanei „Vizualizați expresia”
    • aici puteți introduce o expresie de limbă care produce șirul dorit
    • nu funcționează cu câmpuri de resurse
  2. Ajustați valoarea coloanei „Aspect”
    • designul are proprietatea "Format" - aceasta este o valoare similară cu parametrul funcției de limbă "Format", puteți seta aspectul dorit
    • aici nu se face conversie de tip

Expresiile de calcul pot fi specificate pentru câmpurile de resurse (fila „Resurse”) - de exemplu,

Suma (timpul) / 3600.0

pentru a converti de la secunde la ore.

Precizia necesară poate fi setată prin câmpul „Proiectare” din fila „Seturi de date”.

Specificul setării parametrilor sistemului de compoziție a datelor

Există și necesită o prelucrare diferită a cel puțin TREI tipuri de parametri:

Parametrii de date

Parametrii de date sunt definiți în cererea (sursa de date) ACS.

Parametrii de date sunt trecuți la interogarea sursei de date și determină datele de recuperat.

Obiectul SettingsComposer are o proprietate specială pentru lucrul cu parametrii de date Setări Composer.Settings.Data Parameters

Poate fi setat apelând formularul

Setări \u003d Report.ConfigurationComposer.Settings; Settings.DataParameters.SetParameterValue ("InformationBase", Report.InformationBase);

Selecţie

Selecțiile sunt suprapuse peste datele primite după preluarea dintr-o sursă de date.

Obiectul SettingsComposer are o proprietate specială pentru lucrul cu selecții Preferințe Selecția preferințelor compozitorului.

De exemplu: Setări \u003d Report.ConfigurationComposer.Settings; Settings.DataParameters.SetParameterValue ("InformationBase", Report.InformationBase);

Pentru fiecare element din Parameters.Selecting CyclePickingElement \u003d Settings.Finding.Elements.Add (Type ("DataCompositionFindingElement")); SelectionElement.ComparisonType \u003d DataCompositionComparisonType.Equal; SelectionItem.LeftValue \u003d NewDataCompositionField (element.View); SelectionItem.RightValue \u003d element.Value; Sfârșitul ciclului;

Setari personalizate

Preferințele utilizatorului definesc datele pe care utilizatorul le poate personaliza pe formular.

Setările utilizatorului pot fi afișate pe formular într-un tabel special și pot fi apelate prin butonul „Setări” și din meniul „Toate acțiunile”.

Setari personalizate conectat cu parametrii și selecțiile de date într-un mod destul de complicat, această conexiune poate fi configurată vizual, dar este cumva foarte incomod să lucrezi cu ei programatic.

Până în prezent, nu s-a găsit nimic mai bun cum să setăm valorile unei colecții existente după index, care, prin el însuși, poate ieși la schimbarea aspectului ACS din editorul vizual.

În plus, dacă un anumit parametru de date este declarat definit de utilizator, atunci setarea programului parametrului de date (vezi mai sus) nu este suficientă, valoarea restaurată a setării personalizate anulează setarea parametrului de date. Prin urmare, pentru astfel de parametri, nu are sens să setați parametru de date, trebuie să instalați imediat setare personalizata.

Un loc convenabil pentru setarea valorilor necesare este gestionarul de evenimente „OnLoadingUserSettingsOnServer” al extensiei formularului de raport.

Procedura & AtServer la încărcarea setărilor utilizatorului OnServer (Setări)

Dacă Parametri.Periodă.Data sfârșit<> "00010101" Apoi Setări \u003d Report.ConfigurationComposer.UserSettings; Settings.Elements.Value \u003d Parametri.Periodă; EndIf;

Sfârșitul procedurii

Utilizarea unei surse de date obiect

Pentru a utiliza un set de date de tip obiect, trebuie să treceți o sursă de date externă la metoda Initialize a obiectului Procesor de compoziție a datelor.

DataDecryption \u003d Nedefinit;

Layout Composer \u003d New DataComposition Layout Composer; LayoutComposer \u003d LayoutComposer.Run (DataCompositionSchema, SettingsComposer.Settings, DecodeData);

Procesor de compoziție \u003d nou procesor de compunere a datelor; LayoutProcessor.Initialize (LayoutDetails, Structură nouă („Date”, GetExternalSourceData ()), DecryptionData);

Este atașat un exemplu simplu (pentru ca exemplul să funcționeze, trebuie să aveți cărțile de referință „Contractori” și „Contractele contractanților”).