Rezultatele căutării după formularul de selecție. Constructorul schemei de compoziție a datelor - fila setări 1s opțiuni de editare skd

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

Conectați-vă ca student

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

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

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

Crearea unui nou raport

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

Tip document - „Raport extern”:

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

Lăsați numele implicit al schemei:

Adăugarea primului set de date

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

Numim constructorul de interogare:

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

Adăugarea unui al doilea set de date

Adăugarea unui al doilea set de date:

Selectați-l (DataSet2) și apelați din nou constructorul de interogări:

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

Acesta este textul cererii:

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

A face numele mai descriptive

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

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

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

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

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

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

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

Apelarea constructorului de setări

În cele din urmă, accesați fila „Setări” și apăsați pe bagheta magică pentru a afișa constructorul de setări:

Tipul raportului - „Lista...”:

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

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

Verificarea raportului

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

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

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

Conectarea a două seturi de date

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

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

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

O sa fac o explicatie.

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

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

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

În acest fel această legătură va lăsa din lista anterioară doar acele rânduri pentru care câmpul FavoriteColor al Clientului este egal cu câmpul FoodColor.

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

Amenda!

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

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

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

În generatorul de interogări, când este apelat din formularul de configurare a sursei de date, pentru schema de compunere a datelor. Există o filă „caracteristici”, a cărei utilizare nu este descrisă clar în documentație. În acest articol voi încerca să explic cum și de ce sunt utilizate caracteristicile în ACS.

În generatorul de interogări, când este apelat din formularul de configurare a sursei de date, pentru schema de compunere a datelor. Există o filă „caracteristici”, a cărei utilizare nu este descrisă clar în documentație. În acest articol voi încerca să explic cum și de ce sunt utilizate caracteristicile în ACS. V configurații tipice mecanismul proprietăților și valorilor proprietăților este utilizat în mod activ, care este disponibil pentru aproape orice obiect. În mod primitiv, în cărțile de referință, acest mecanism a fost implementat în configurații 7.7. Acum acest mecanism este implementat folosind un plan de tipuri de caracteristici și un registru de informații, dar ideea rămâne aceeași. Când am întâlnit prima dată nevoia de a folosi acest mecanism în schema ACS, am suferit foarte mult timp, am organizat interogări imbricate, atașate selecției principale și nedumerit cum să iau în considerare posibilitatea unor noi tipuri de proprietăți care nu există la momentul elaborării raportului. Întregul mecanism al proprietăților, fiind simplu și logic din punctul de vedere al utilizatorului, nu s-a pretat pentru nicio prelucrare normală până când nu mi-am dat seama de fila „Caracteristici”. Tabelul de pe filă este foarte capricios, fie introduceți corect întreaga linie, fie refuzați deloc să introduceți linia, sistemul nu vă va permite să lăsați „pentru mai târziu” o linie care nu este complet completată. Deci, să trecem la detalii. Prima coloană: Tip - aici selectăm tipul de obiect la care vor fi legate caracteristicile, de exemplu, „DirectoryReference.Nomenclature” Aceasta înseamnă că acum va fi posibil să obținem valori de proprietate pentru toate obiectele de tipul specificat. Apoi, în coloana următoare Sursă de vizualizări, trebuie să setăm parametrii sursei tipurilor de proprietate. Opțiunile de tabel și de interogare sunt posibile, de ce am nevoie de opțiunea de interogare voi spune mai târziu, acum vom selecta articolul din tabel. În coloana Tipuri de caracteristici, trebuie să selectăm tabelul infobase care stochează tipurile de caracteristici necesare, în exemplul nostru va fi „Plan de tipuri de caracteristici. Proprietăți ale obiectelor”. În plus, valorile disponibile pentru selecție în coloanele Câmp cheie, Câmp de nume și Câmp de tip valoare depind direct de câmpurile din tabelul pe care l-am selectat. În câmpul Key, selectăm Link, în câmpul Name - View (utilizatorul îl va vedea ca nume de atribut), iar în câmpul Type, respectiv ValueType. Acum să trecem la sursa valorilor. Sursa valorilor va fi registrul de informații „Valori ale valorilor proprietăților obiectelor”, așa că selectăm în coloana Sursa valorilor - tabel, iar în coloana Valori ale caracteristicilor - „Registrul informațiilor”. . Valorile proprietăților obiectelor”. În coloanele Object, Property, Value, selectați câmpurile corespunzătoare din registrul Object, Property, Value. S-ar părea că asta e tot. Intrăm în setările schemei, adăugăm o grupare după produse și adăugăm o grupare subordonată acesteia, de exemplu, după mărci, avem o astfel de proprietate. Extindem lista de atribute ale grupării Nomenclatură și... nu vedem nicio proprietate acolo: Cert este că suntem în configurator, de unde nu există acces la date. Cum se face setarea dorită? Cel mai convenabil mod de a face acest lucru este să utilizați consola de compoziție a datelor, cea de pe discul ITS sau cea care este inclusă în subsistemul „Instrumente pentru dezvoltatori”. Dar puteți, de asemenea, să deschideți configurarea raportului în modul Enterprise. Deci, să deschidem aceeași setare, dar în modul întreprindere: După cum puteți vedea, am adăugat noi „Detalii”, în timp ce...

Î: SKD, cum se deschide opțiunea forma dorită alegere?


O zi buna! Există un raport despre ACS, are parametrul Brand - tipul Directory.Nomenclature. Cum pot apela un formular de selecție specific pentru acest parametru? Am încercat-o în ACS din fila „Parametri”, m-am ridicat la parametrul dorit - faceți dublu clic pe coloana „Opțiuni de editare” - bifați caseta de selectare „Select Form” și introduceți valoarea Directory.Nomenclature.Form.VoiceFormNecessary . Când rulați raportul, formularul de selecție este încă utilizat în mod implicit, și nu cel care este specificat în „Formular de selectare”. Configurație UT, forme regulate. Spune-mi, pzhl, unde, ce sa întâmplat?

Răspuns: Fraza cheie Forme obișnuite, treceți la cele gestionate

Întrebare: Selectați o valoare din formularul de selecție


O zi buna!

Aplicare regulată.

Există un document. Are mai multe cerințe de tip referință, de exemplu „DirectoryLink.Banks”, cu valoarea „Bank1”.

Este necesar sub forma selectării directorului „Bănci”, SELECTAȚI programatic elementul „Bank1”, adică. tastați reselegeți această valoare „Bank1”.

Până acum am făcut următoarele:
Procedură Efectuați SelectionIn SelectionForm(Referință)
DirectorySelectionForm = Directories.Banks.GetChoiceForm(,Reference); //obține formularul pentru selectarea directorului Bănci prin parametrul transmis Link
//Am setat selecția în acest formular de selecție, conform linkului meu din recuzită
HandbookChoiceForm.Selection.Reference.Use = adevărat;
DirectoryChoiceForm.Selection.Link.Value = link;
CatalogSelectionForm.FormElements.CatalogList.HierarchicalView = Fals;
HandbookChoiceForm.Open();
//aici este codul care simuleaza apasarea butonului Select, cum????
EndProcedure

Ajutor, cine s-a confruntat sau are idei.

Mulțumesc.

Răspuns:

A facut asa:

Procedura ExecuteChoiceInChoiceForm(Link, rec) //parametrul „reference” este un link de valoare pe formularul de document; „rec” este elementul de formă curent, adică caseta de selectare
Dictionar Selection Form = Directories.Banks.Get SelectionForm(,Rec,Reference);
CatalogSelectionForm.FormElements.CatalogList.HierarchicalView = Fals;
OpenForm(FormChooseCatalog, râuri,);

IfCatalogSelectionForm.Open() Atunci
HandbookChoiceForm.Activate();
EndIf;

HandbookChoiceForm.CurrentItem.CurrentRow = referință;
ChoiceEl = FormCategoryChoice.CurrentItem.CurrentRow;

Dacă ChoiceEl = nedefinit sau NU este completată valoarea (ChoiceEl), atunci
Show(„Valoarea „+Referință+” nu a fost găsită în formularul de selecție de căutare”);
in caz contrar
Formular de selecție manual.NotifyOfChoice(ChoiceEmail);
EndIf;

EndProcedure

Întrebare: butonul „Selectați” din formularul de selecție sau cum să faceți clic pe butonul „Selectați”.


O zi buna!

Aplicare regulată.

Ce părere aveți despre cum să faceți clic pe butonul „Selectați” din formularul de selecție a documentului/directorului?

Făcând clic cu mouse-ul și COM nu oferă automatizare.

Lista de dorințe: în formularul de selecție, simulați apăsarea butonului „Selectați”.

Răspuns: Se pare că a rezolvat problema... câteva teste.

Adăugat după 17 minute
Până acum funcționează așa:

1C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Procedură Efectuați SelectionIn SelectionForm(Reference , rec) //parametrul „link” este un link de valoare pe formularul de document; „rec” este elementul de formă curent, adică caseta de selectare DirectorySelectionForm = Directoare. Băncile. GetSelectionForm(, Req, Link) ; FormChoiceDirectory. ElementsForm. DirectoryList. HierarchicalView = Fals ; OpenForm(DirectoryChoiceForm, râuri, ); IfFormSelectionDirectory. Opened() Apoi HandbookChoiceForm. Activati() ; EndIf ; FormChoiceDirectory. CurrentElement. CurrentLine = link ; ChoiceEl = FormChoiceCatalog. CurrentElement. CurrentLine ; dacă ChoiceEmail = nedefinit sau NU este completat cu valoare (ChoiceEmail), atunci Raport („Valoare” + Referință + „nu a fost găsit în formularul de selecție de căutare”) ; în caz contrar, HandbookChoiceForm. Notifică despreChoice(ChoiceEl); EndIf ; EndProcedure

Întrebare: De ce nu mai este selectată valoarea din formularul de selecție?


Există un câmp pe formularul de document de tipul de referință DocumentLink.PaymentOrderOutgoing. Când este selectat, se deschide un formular pentru selectarea unui ordin de plată de ieșire. Odată selectată o valoare, aceasta nu este înlocuită în forma selectată. M-am gândit la început procesarea alegerii pe procesarea standard și programul a uitat să prescrie procesarea alegerii. Dar totul este tipic. Deschiderea formularului nu este programatică, pe domeniul în care aleg să nu desfășor niciun eveniment. Ce ar putea fi?
--- O asociere mesaje, 2 ianuarie 2018 ---

O altă aplicație pe formulare obișnuite. Formularul de selecție este gestionat, dar se deschide dintr-o fereastră obișnuită. Dacă reveniți la formularul normal de selecție, atunci totul este în regulă.

Răspuns:

În general înțeles. Util pentru a vedea ce vine la SelectedValue în procesul de selecție. S-a dovedit a fi o matrice. Am intrat în formularele de selecție, s-a dovedit că există un copacă cu alegere multiplă. L-am scos și totul a funcționat.

Întrebare: Vă rugăm să mă ajutați să setez selecția în formularul de selecție a directorului


Atunci când aleg o contraparte, trec în mod programatic primele caractere ale numelui în formularul de selecție. Cum să faci în mod programatic primul element care are aceleași primele caractere activate.

Răspuns:

elektron a spus:

Atunci când aleg o contraparte, trec în mod programatic primele caractere ale numelui în formularul de selecție. Cum să faci în mod programatic primul element care are aceleași primele caractere activate.

Faceți clic pentru a dezvălui...

S-a hotărât. Realizat o tastatură virtuală pe formularul de selecție al directorului „Contractanți”.
Când apăsați orice tastă, codul este declanșat
ResultSearchByAttribute = CurrentRequest.FindByName(N,False);
FormElements.CatalogList.CurrentLine=SearchResultByAttribute;
unde H este o variabilă care conține valoarea cheii

Întrebare: Formular de selecție cu selecție pentru o listă de valori


Buna ziua. Am nevoie de ajutorul tău pentru a rezolva o problemă simplă.

Config ZUP 2 .5 .113 .1 Există un raport extern, raportul are atributul „listă de baze”, tip listă de valori.
Există un formular de raportare. În formularul de raport, câmpul „input list of bases”, ValueType = „ValueList” și ListValueType = „ReferenceReference.ObjectPropertyValue”.

Cum se deschide un formular de selecție cu selecție de către proprietarul unei proprietăți?

Mulțumesc anticipat!

Răspuns: Pe fila Parametri există o coloană Editare parametri. acolo puteți încerca să configurați legăturile parametrilor de selecție sau parametrul de selecție

Întrebare: Deschideți în mod programatic formularul de selecție a documentului 1s 8.3


Cum să deschideți în mod programatic formularul de selecție a documentului 1s 8.3 și să salvați valoarea selectată într-o variabilă?

Google a dat un fel de soluții de cârje, aș dori să știu cum să o fac corect.

Răspuns:+ () PM are și o astfel de metodă magică - descărcare.

Secțiune tabelară
Sarcină
Sintaxă:

Descarca(<Таблица>)
Parametri:

<Таблица>(obligatoriu) Tip: ValueTable.
Tabel de valori de unde este încărcat parte tabulară. Coloanele din tabel sunt combinate după nume.
Descriere:

Încarcă o parte tabelară dintr-un tabel de valori. În acest caz, toate rândurile anterioare ale părții tabelare sunt șterse. La încărcare, valorile din coloanele părții tabelare sunt completate cu valori din coloanele tabelului de valori cu aceleași nume.

Disponibilitate:

Server, client gros, conexiune externă.
Notă:

Utilizarea metodei este permisă numai dacă partea tabelară este obținută din proprietatea obiectului. Dacă partea tabelară este obținută dintr-o proprietate de referință (sau selecție), atunci utilizarea acestei metode va provoca o eroare de rulare.
Exemplu:

Composition.Load(CompositionTable);

Întrebare: Trecerea parametrilor în formularul de selecție.


Cer indicii.
Din documentul „Vânzări de bunuri și servicii” se numește formularul de selecție a contractului (ERP). Se corecteaza conf, il compar cu cel standard. În ProcessingCreationOnServer al formularului de selecție, mă uit în depanator Parameters.Selection. Pur și simplu nu pot înțelege cum se formează lista de selecție - nu există un apel explicit la acest formular cu parametri, există un singur element de selecție în proprietatea „ChoiceParametersConnection” și există deja mai multe în Parameters.Filter. Poate cineva să-mi spună unde să caut.

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

Cum să alegi o opțiune?

  • Pe panoul de raport plasăm butonul „Selectați opțiunea”
  • Pe formular punem câmpul „OnDate”

Exemplu de cod: Formular Acțiune ProcedureOptionSelection(Button) layout = GetLayout("MainDataCompositionScheme"); spOptions = New ValueList; Pentru fiecare opțiune din Layout.OptionsSettings Loop spOptions.Add(Option.Settings, Option.View); EndCycle;

select = spOptions.SelectItem(); Dacă selectați = Nedefinit, apoi reveniți; EndIf;

SettingsComposer.LoadSettings(selection.Value);

Formă(); EndProcedure

Procedura OnDateOnChange(Element) Generate(); EndProcedure

Procedura Form() Form Elements.Result.Clear(); SettingsComposer.Settings.DataParameters.SetParameterValue(„Perioada”, OnDate); ComposeResult(FormElements.Result); EndProcedure

Procedura OnOpening() OnDate = CurrentDate(); Formă(); EndProcedure

Caracteristici de creare a rapoartelor prin ACS

Crearea raportului 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 compunere a datelor
  3. În proprietățile raportului, setați: Schema principală de compoziție a datelor = 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 de sus)
  5. Creați o interogare în Aspect (articol: Adăugați un set de date - Interogare)
  6. În fila Parametri a Aspectului, trebuie să debifați toate liniile din coloana Restricții de accesibilitate - adică. toți parametrii vor fi editabili de 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 set suplimentar marcaje, selectați suplimentar Fila Parametri - marcați toți parametrii cu o bifă și pe fiecare parametru faceți clic pe butonul Proprietăți ale elementului de setări utilizator, 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 în care este afișat un set suplimentar de marcaje, selectați suplimentar. marcați SelectedFields - acolo trebuie să adăugați coloane care vor fi afișate în raport
  10. Porniți Enterprise, deschideți raportul, setați valorile parametrilor, Generați (verificați dacă este selectată opțiunea de bază pentru generarea raportului)

Cum să adăugați un parametru care nu poate fi editat de utilizator?

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

  • În formularul de aspect, în fila Parametri, debifați marcajele „Includeți în câmpurile disponibile” și „Restricționați accesibilitatea” pentru parametrul necesar
  • În formularul de aspect, în fila Setări, în subfila (în partea de jos) Parametri, debifați parametrul dorit, deschideți proprietățile (buton cu o cheie), în acest formular:
    • Debifați „Includeți în setările utilizatorului”
    • Modul de editare setat la „Inaccesibil”


  • În modulul formular de raport, în handlerul de evenimente „On VariantLoadOnServer” (este posibil și OnOpening, dar NU OnCreatingOnServer, deoarece se realizează ÎNAINTE de încărcare a setărilor de raport și de suprascrie setările) setați programatic parametrul:

&OnServer Procedure When LoadingVariantOnServer (Setări)

//Setarea parametrului Settings = Report.Settings Composer.Settings; Settings.DataParameters.SetParameterValue("InfoBase", Report.InfoBase); EndProcedure

Cum să setați opțiunile de raportare?

  • În formularul de aspect din fila Setări din câmpul din stânga, puteți crea opțiunile de raport necesare

Cum se stabilesc grupările?

  • În formularul de layout din fila Setări din câmpul din dreapta sus, puteți crea grupările necesare

Cum să afișați un raport în mod programatic?

În modulul formular:

&În procedura client GenerateReportExecute()

ThisForm.ComposeResult();

EndProcedure

Cum se testează un raport?

Trebuie să faci:

  • Formarea unei situații într-un test client este cea mai convenabilă printr-un tabel de situații
  • obține formularul de raport - formular = GetForm("Raport.ProcessMovement.Form.ReportForm");
  • Descarca opțiunea dorită raport - setați parametrul de extensie a formularului de raport „VariantKey” (numele setării în aspectul compoziției datelor)
  • încărcați setările de raport necesare - ? completarea parametrului de extensie a formularului de raport „UserSettings” (tipul „DataCompositionUserSettings”) nu a funcționat așa, totul este complicat, vezi mai jos.
  • formular deschis - form.Open()
  • executa formarea - form.ComposeResult();
  • verifica conținutul document foaie de calcul form.Result - ar fi bine să aveți funcții de comparație cu referința mxl
  • închidere formă - form.Close(); - sau poate nu îl puteți deschide, trebuie să verificați

Vezi si

  • descriere: meniu Ajutor/Asistent pentru sintaxă/fila Conținut/Obiecte/Extensii ale interfeței aplicației gestionate formă gestionată/Extinderea formularului gestionat pentru raportul/Parametrii formularului

Cum să încărcați setările necesare pentru raport?

Documentația descrie că există un astfel de parametru al extensiei de formular de raport „UserSettings” de tipul „UserDataCompositionSettings”, dar există o structură de obiecte foarte complexă, nu a fost posibilă utilizarea acesteia.

Schema cu adevarat functionala:

1. Creați parametri în raport

  • Tipul perioadei StandardPeriod
  • Selectarea tipului ValueList (ar fi mai bine să existe o Structură, dar nu este în lista de tipuri de parametri, precum și un tip arbitrar)

2. Transmiteți parametrii necesari procedurii GetForm:

perioada = New StandardPeriod; period.Variant = VariantStandardPeriod.CustomPeriod; period.StartDate = currentDate; period.EndDate = tomorrowDate;

selecție = Listă nouă de valori; selectie.Add(Testing.GetObject(stSituation, "BP1"), "BusinessProcess");

stParameters = New Structure("OptionKey,Period,Filter", "Main", punct, filter); // OpenFormModally("Report.ProcessMovement.Form.ReportForm", stParameters); form = GetForm("Raport.ProcessMovement.Form.ReportForm", stParameters);

3. Setați parametrii în manevrele de evenimente de formular

Funcția &AtServer cGet(cList, View) Export pentru fiecare articol din ListList Buclă If item.View = view Then Return item.Value; EndIf; EndCycle; Returnare nedefinită; EndFunctions

Procedura &AtServer SetUserSettingValue(Settings, Name, Value) Pentru fiecare articol din Setting.Elements Loop If ValueType(element) = Type("DataCompositionSettingsParameterValue") Then If String(element.Parameter) = Name Then element.Value = Value; element.Utilizați = adevărat; EndIf; EndIf; EndCycle; EndProcedure

&AtServer Procedura SetCustomFilterValue(Settings, Name, Value) Pentru fiecare element din Settings.Elements Loop If ValueType(element) = Type("DataComposition Selection") Apoi pentru fiecare Element.Elements selection From Elements Loop If String(selection.LeftValue) = Name Apoi selectarea .RightValue = Value; selectie.Foloseste = adevarat; EndIf; EndCycle; EndIf; EndCycle; EndProcedure

&OnServer Procedure When LoadingVariantOnServer (Setări)

CurrentVariantName = CurrentVariantRepresentation;

Settings = Report.SettingsComposer.Settings; Settings.DataParameters.SetParameterValue("InfoBase", Report.InfoBase);

EndProcedure

Procedura &AtServer WhenLoadingCustomSettingsAtServer(Settings) Settings = Report.SettingsComposer.UserSettings;

<>„00010101” Then Settings = Report.SettingsComposer.UserSettings; SetUserSettingValue(Setări, „Perioad”, Parameters.Period); EndIf;

ssBusinessProcess = spGet(Parameters.Filter, "BusinessProcess"); Dacă ssBusinessProcess<>Nedefinit Apoi SetCustomFilterValue(Setări, „BusinessProcess”, sBusinessProcess); EndIf;

EndProcedure

Note:

  • Există parametri de date, adică ceea ce este setat în parametrii de interogare ai ACS
  • Unele dintre ele sunt alocate în setarea variantei din UserSettings (în proprietățile parametrilor există un steag „Include î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 se încarcă automat setările salvate ultima dată. Aceste setări „înlocuiesc” setările de date atunci când se generează un raport
  • În handlerul OnLoadingUserSettingsOnServer, obiectul Setări transmis este copie setări reale, deci pentru a modifica setările care vor apărea pe formular, trebuie să completați obiectul Report.SettingsComposer.UserSettings

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

Interogarea trebuie să utilizeze expresia „În (&NumeParametru)”(vezi expresii booleene în limbajul de interogare 1Cv8)

În configurarea aspectului schemei ACS în fila „Parametri” pentru acest parametru, bifați caseta „Lista de valori disponibilă”. În acest caz, la selectarea unui parametru, ACS afișează un formular de editare a listei în care puteți adăuga orice valoare a parametrului.

Cum să dezactivați parametrii de interogare în SKD?

În interogarea SKD, trebuie să utilizați construcții înconjurate de acolade "{}" .

Dacă caseta de selectare din formularul de raport (panoul instalare rapida) este șters pentru parametrul corespunzător, apoi acest construct este eliminat din interogare.

Pentru mai multe detalii, vezi Extensie limbaj de interogare pentru sistemul de compunere a datelor (1Cv8)

Cum se face un raport cu o distribuție pe coloane?

Pentru a face acest lucru, în setările variantei de raport (editarea aspectului de aspect al datelor, fila „Setări”, câmpul din dreapta sus), trebuie să adăugați „Tabel” ca primă grupare.

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

Cum să personalizați formatul de ieșire al câmpurilor?

În Data Composition Layout Editor, în fila Data Sets din zona din dreapta sus, există o listă de câmpuri de raport.

Există două posibilități:

  1. Setați valoarea coloanei „Vizualizare expresie”
    • aici puteți introduce o expresie de limbă care produce șirul dorit
    • nu funcționează cu câmpurile de resurse
  2. Setați valoarea coloanei „Design”.
    • în design există o proprietate „Format” - această valoare este similară cu parametrul funcției de limbă „Format”, puteți seta aspectul dorit
    • conversia tipului nu se face aici

Pentru câmpurile de resurse, puteți seta expresii de calcul (fila „Resurse”) - de exemplu,

Sumă (Timp)/3600,0

pentru a converti de la secunde la ore.

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

Caracteristici de setare a parametrilor sistemului de compunere a datelor

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

ParametriDate

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

Parametrii de date sunt transferați la interogarea sursei de date și determină datele care trebuie preluate.

Obiectul SettingsComposer are o proprietate specială pentru lucrul cu parametrii de date SettingsComposer.Settings.ParametersData

Poate fi setat apelând vizualizarea

Settings = Report.SettingsComposer.Settings; Settings.DataParameters.SetParameterValue("InfoBase", Report.InfoBase);

Selecţie

Selecțiile sunt suprapuse pe datele primite după extragerea din sursa de date.

Obiectul SettingsComposer are o proprietate specială pentru lucrul cu selecțiile ComposerSettings.Settings.Selection.

De exemplu: Settings = Report.SettingsComposer.Settings; Settings.DataParameters.SetParameterValue("InfoBase", Report.InfoBase);

Pentru fiecare element Din Parameters.Filter LoopFilterElement = Settings.Filter.Elements.Add(Type("DataCompositionSelectionItem")); Selecție Element.ComparisonType = DataCompositionComparisonType.Equal; SelectionItem.LeftValue = New DataCompositionField(element.View); FilterElement.RightValue = element.Value; EndCycle;

Setari personalizate

Preferințele utilizatorului definesc datele pe care utilizatorul le poate personaliza în 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”.

Setarile utilizatorului conectat cu parametrii de date și selecțiile într-un mod destul de complicat, această conexiune poate fi configurată vizual, dar lucrul cu ei în mod programatic este oarecum foarte incomod.

Până acum, nu s-a găsit nimic mai bun, cum să setați valorile unei colecții existente prin index, care de la sine se poate deplasa atunci când se schimbă aspectul ACS în editorul vizual.

În plus, dacă un parametru de date este declarat definit de utilizator, atunci instalarea software-ului parametrul de date (vezi mai sus) nu este suficient, valoare recuperabilă personalizare suprascrie setarea parametrului de date. Prin urmare, pentru astfel de parametri nu are sens să setați parametru de date trebuie instalat imediat setare personalizata.

Un loc convenabil pentru a seta valorile necesare este handlerul de evenimente „OnLoadingUserSettingsOnServer” al extensiei formularului de raport.

&OnServer Procedura la încărcareaUserSettingsOnServer(Setări)

Dacă Parameters.Period.EndDate<>„00010101” Then Settings = Report.SettingsComposer.UserSettings; Settings.Items.Value = Parameters.Period; EndIf;

EndProcedure

Utilizarea unei surse de date ca obiect

Pentru a utiliza un set de date de tip obiect, trebuie să treceți sursă externă metoda de date Inițializați obiectul Data Composition Processor.

DecryptData = nedefinit;

Layout Layout Builder = Noua versiune de date Layout Layout Builder; LayoutLayout = LayoutComposer.Run(DataCompositionScheme, SettingsComposer.Settings, DecodeData);

CompositionProcessor = NewDataCompositionProcessor; Layout Processor.Initialize(LayoutLayout, New Structure("Date", GetExternalSourceData()), DecodeData);

Se atașează un exemplu simplu (pentru ca exemplul să funcționeze, trebuie să fie prezente cărțile de referință „Contrapărți” și „Acorduri ale contrapărților”).

Bună dragă cititor! Avem o altă lecție despre elementele de bază ale sistemului de layout. Ați făcut cunoștință cu funcțiile limbajului de expresie SKD, ați văzut caracteristicile sistemului de aspect și, de asemenea, v-ați dat seama de setările de bază pentru câmpurile de aspect. Și acum vom lua în considerare un material nou. Merge!

Setări suplimentare pentru câmpurile ACS.

Difuzor "tipul valorii" vă permite să specificați tipul de date pentru câmpul de aspect. De ce să specificați tipul, de exemplu, pentru câmpul „Nomenclatură”, dacă știți deja ce tip este? Acest lucru este necesar dacă câmpul aspect tip compozit. Puteți selecta un anumit tip, apoi, la filtrarea după acest câmp, vor fi selectate valori de acest tip.

Difuzor „Valori disponibile” vă permite să specificați valorile disponibile pentru selecție și să limitați alegerea utilizatorului la anumite limite.

Difuzor "Înregistrare" vă permite să setați aspectul câmpului de aspect fără a utiliza machete. Puteți specifica culoarea fontului, culoarea cadrului, orientarea textului și așa mai departe.

Difuzor „Opțiuni de editare” vă permite să specificați cum să editați câmpul de aspect. De exemplu, puteți specifica alegere rapida elemente din lista din selecție. În mod implicit, câmpul de aspect moștenește toate opțiunile de editare din obiectul de metadate.

Câmpuri calculate

Puteți crea propriile câmpuri calculate în fila Câmpuri calculate din compoziția datelor.

De ce avem nevoie de câmpuri calculate când le putem crea la nivel de interogare? Nu toate câmpurile pot fi descrise cu o interogare. Dacă trebuie să compuneți un câmp complex din diferite seturi de date, de exemplu, interogări și tipuri de obiecte, atunci câmpurile calculate sunt indispensabile. Nu puteți adăuga un câmp de compunere a datelor dacă sursa de date este o interogare și completare automată, dar puteți adăuga oricâte câmpuri doriți folosind câmpuri calculate.

În coloana câmpului calculat „Expresie” trebuie să scrieți o expresie arbitrară care utilizează câmpurile compoziției datelor, făcând referire la calea acestora (coloana „Calea” din fila „Seturi de date”). Fie poți folosi funcțiile de transformare matematică, fie te poți referi la funcții module comune. De exemplu, să scriem numele câmpului calculat „Abatere” în coloana „Calea către date” și următoarele în câmpul „Expresie”.