Parametrii formularului gestionat 1s 8.3. Opțiuni de formular

Imprimare (Ctrl+P)

Opțiuni de formular

1. Informații generale

Parametrii formularului (fila Opțiuni) au două scopuri:
● Descrieți setul de date care vor influența deschiderea formularului (parametrizare formular). Pentru a face acest lucru, trebuie să enumerați toți parametrii necesari și să indicați tipurile acestora.
● Determinați parametrii care vor influența cheia de unicitate a formularului. Pentru a face acest lucru, trebuie să setați proprietatea Parametru cheie acei parametri care ar trebui să participe la formarea cheii de unicitate a formei. Când încercați să deschideți un formular, sistemul caută un formular existent utilizând cheia de unicitate a formularului generată. Dacă în sistem există un formular cu cheia primită
unicitatea, această formă este cea care revine; dacă nu, se creează o nouă formă.
La apelarea unui formular, valorile parametrilor creați de dezvoltator pot fi specificate în structura parametrilor împreună cu parametrii de sistem ai formularelor (dacă există).
Parametrii formularului pot fi transferați formularului în momentul creării acestuia. Analiza parametrilor trecuți poate fi efectuată în cadrul evenimentului WhenCreatingOnServer() (colecția Parameters este o proprietate a obiectului ManagedForm):

// La locația apelului.
// Creați un parametru de formular.
Parametri = new Structure();
Opțiuni.Inserare("Importanţă", Valoare predefinită(„Enumerare.Importanță.Important”);
// Deschideți formularul cu parametri.
OpenForm („GeneralForm.ViewForm”, Parametri);

// În modulul formular.
&Pe server
Procedură WhenCreatingOnServer (Eșec, Procesare standard)
Dacă Parametri.Importanță = Enumerări.Importanță.Important o Atunci

endIf;
EndProcedure

ATENŢIE! După ce a apelat handlerul de evenimente Când CreatedOnServer toți parametrii formularului care nu sunt cheie sunt eliminați din colecția Parameters.
Sfat. Parametri de formular non-cheie necesari pentru munca in continuare, trebuie să îl salvați în datele din formular.

2. Parametrii formularului standard

Pentru a sprijini interacțiunea automată între formulare, sistemul oferă o serie de parametri standard care sunt utilizați pentru a controla formularele atunci când sunt deschise. Folosind acești parametri, sistemul implementează în câmpurile de formular selecția din formulare de selecție, deschiderea formularelor obiect, operarea comenzilor standard etc. Adică oferă diverse scenarii de operare a interfeței încorporate în sistem.
Dar dezvoltatorul poate folosi acești parametri și în limbajul încorporat, transmițându-i atunci când apelează metoda OpenForm().
O listă a parametrilor de formular standard în funcție de tipul de extensie de formular poate fi găsită în secțiuni Limbaj încorporat - Interfață
(gestionat) – Formular gestionat – Extindere... încorporat certificate

3. Exemplu de lucru cu parametri de formular

Pentru a demonstra cum funcționează parametrii formularului, luați în considerare implementarea selectării unui element într-un câmp de intrare. Esența exemplului va fi implementarea mecanismului de selectare a unui element dintr-o listă în limbajul încorporat.
Până când începeți să lucrați cu exemplul, trebuie să aveți o configurație cu următoarele proprietăți:
● există un director Produse cu o ierarhie de grupuri și elemente;
● există un director Analogs cu detaliile SelectedProduct type DirectoryLink.Produse;
● ambele directoare au forme de elemente.
Acum să implementăm în această configurație toate mecanismele pe care platforma le folosește pentru a selecta un element din listă în limbajul încorporat. În acest caz vom vedea:
● cum sunt utilizați parametrii de formular standard;
● modul în care sistemul însuși le folosește;
● cum le poate folosi un dezvoltator.
Să adăugăm un parametru suplimentar care va controla închiderea formularului de selecție după selectarea unui element. Să numim acest parametru CloseAfterSelection(tip boolean). Să-l adăugăm ca parametru de formular Formular pentru selectarea directorului Produse.
Pentru a deschide formularul de selecție a elementelor, trebuie să creați un handler de evenimente pentru evenimentul Start of Selection pentru elementul de formular SelectedProduct sub forma elementului de director Analogues.

&OnClient
Procedură SelectedProductStartSelection(Articol, Procesare standard)
Procesare standard= fals;
Opțiuni de selecție= Structură nouă;
Opțiuni de selecție.Insert(„SelectionMode”, True);
Opțiuni de selecție.Insert(„Selectarea grupurilor și elementelor”, Utilizarea GroupsAndElements.Elements);
Opțiuni de selecție.Insert(„AllowRootSelection”, False);
Opțiuni de selecție.Insert(„CurrentLine”, Object.SelectedProduct);
Opțiuni de selecție.Insert(„CloseAfterSelection”, False);
OpenForm(„Directory.Products.SelectionForm”, Opțiuni de selecție, Items.SelectedItem);
EndProcedure
Este necesar să ne oprim separat asupra celui de-al treilea parametru al metodei OpenForm(). Acest parametru determină cine va fi proprietarul formularului de selecție și cine va fi anunțat despre selecția efectuată. În acest caz, am specificat elementul de formular în sine ca proprietar al formularului de selecție, dar putem specifica și formularul în sine cu acest parametru. În acest caz, va fi necesară implementarea unui handler Procesarea selecției modul de formular și decideți în el ce atribut de formular să plasați datele selectate.
NOTĂ. Dacă nu implementăm handlerul de evenimente StartSelection, atunci sistemul însuși își va efectua acțiunile. Acest lucru este valabil pentru toți manipulatorii suplimentari care sunt utilizați în exemplu.
Acum trebuie să procesați parametrii trecuți în formularul de selecție. Să facem asta în handler Când CreatedOnServer() din modulul formular de selecție.

&Pe server
Procedură WhenCreatingOnServer(Eșec, StandardProcessing)
Procesare standard= fals;
Elements.List.SelectingGroupsAndElements = Parameters.SelectingGroupsAndElements;
Elements.List.AllowRootSelection = Parametri.AllowRootSelection;
Elements.List.CurrentRow = Parameters.CurrentRow;
CloseOnSelection = Options.CloseAfterSelection;
EndProcedure
Pentru a verifica funcționalitatea parametrilor de formular pe care i-am setat, folosind configuratorul, vom seta proprietatea List pentru tabelul formularului de selecție Selectarea grupurilor și a elementelor la valoarea Grupuri (fără a utiliza parametrul, selecția elementelor de director nu va fi disponibilă).
NOTĂ. Dacă tabelul Listă care afișează o listă de produse nu are proprietatea SelectionMode setată la True, atunci selecția de produse nu va fi disponibilă.
Acum trebuie să ne ocupăm de selecția elementului dorit în formularul de selecție. Pentru a face acest lucru, trebuie să definiți un handler pentru evenimentul SelectValue din tabelul formular.

&OnClient
Procedură ListSelectionValues(Element, StandardProcessing, Value)
Procesare standard= fals;
NotifyOfSelection(Valoare);
EndProcedure
Tot ce trebuie să facem este să implementăm procesarea de selecție a elementelor în câmpul de intrare în sine. Pentru a face acest lucru, trebuie să vă ocupați de eveniment Procesarea selecției câmpul nostru de introducere SelectedProduct.

&OnClient
Procedură SelectedItemSelectionProcessing(Articol, SelectedValue, StandardProcessing)
Procesare standard= fals;
Object.SelectedProduct = SelectedValue;
EndProcedure
Am implementat independent un mecanism de sistem pentru selectarea unei valori într-un câmp de intrare dintr-un formular.
ATENŢIE! Acest exemplu nu este terminat. Singurul său scop este de a demonstra mecanismele de lucru cu parametrii formularului.
Dacă la crearea parametrilor (handler SelectedProductStartSelection()) înlocuiți linia:

Opțiuni de selecție.Insert(„CloseAfterSelection”, True);
pe linie:
Opțiuni de selecție.Insert(„CloseAfterSelection”, False);
atunci formularul de selecție nu se va mai închide după ce se face selecția. Aceasta poate fi folosită, de exemplu, pentru a implementa un formular de selecție (selectând mai multe produse fără a închide formularul de selecție).

Pentru a sprijini interacțiunea automată între formulare, sistemul oferă o serie de parametri standard care sunt utilizați pentru a controla formularele atunci când sunt deschise. Folosind acești parametri, sistemul implementează în câmpurile de formular selecția din formulare de selecție, deschiderea formularelor obiect, operarea comenzilor standard etc. Adică oferă diverse scenarii de operare a interfeței încorporate în sistem. Dar dezvoltatorul poate folosi acești parametri și în limbajul încorporat, transmițându-i atunci când apelează metoda OpenForm().

Enumerăm parametrii furnizați de sistem și scopul lor:

  • Modul de selecție– formularul se deschide în modul de selecție. Furnizat de extensie formă controlată lista dinamica.
  • CurrentRow– un șir care va fi activat în listă când este deschis. Se transmite o valoare care identifică șirul. Furnizat de extensia de formular gestionată din lista dinamică.
  • Selectarea grupurilor și a elementelor– acest parametru setează proprietatea Selecție de Grupuri și Elemente din tabelul atributului principal al formularului. Furnizat de extensia de formular gestionată de listă dinamică.
  • AllowSelectRoot– definește capacitatea de a selecta o rădăcină într-o formă cu o listă dinamică afișată ca arbore. Furnizat de o extensie de formular gestionată pentru o listă dinamică afișată ca arbore.
  • Selecţie– selecția stabilită în lista dinamica. Reprezintă o structură. Numele elementelor corespund denumirilor câmpurilor prin care se face selecția, iar valorile conțin valorile selecției. Furnizat de extensia de formular gestionată de listă dinamică.
  • Cheie– o valoare care identifică obiectul care se editează în formular. Dacă valoarea lipsește sau este incorectă, se creează un nou obiect folosind parametrii rămași. Furnizat de extensii de formulare de obiect și manager de înregistrare a registrului de informații.
  • Copiați valoarea– o valoare care identifică obiectul care va fi folosit pentru copiere la crearea unui nou obiect. Furnizat de extensii de formulare de obiect și manager de înregistrare a registrului de informații.
  • Valori de umplere– valori pentru completarea detaliilor unui obiect nou. Reprezintă o structură. Numele elementelor corespund denumirilor detaliilor, iar valorile conțin datele care vor fi folosite pentru completarea detaliilor specificate. Furnizat de extensii de formulare de obiect și manager de înregistrare a registrului de informații.
  • Baza– o valoare care identifică obiectul care va fi folosit ca bază la crearea unui nou obiect prin introducere pe bază. Furnizat de extensii de formulare de obiect.
  • Acest grup– definește tipul de obiect nou: grup sau element. Furnizat de extensii de formulare de obiect.

Un exemplu de lucru cu parametrii formularului

Pentru a demonstra cum funcționează parametrii formularului, luați în considerare implementarea selectării unui element într-un câmp de intrare. Esența exemplului va fi implementarea mecanismului de selectare a unui element dintr-o listă în limbajul încorporat.

Până când începeți să lucrați cu exemplul, trebuie să aveți o configurație cu următoarele proprietăți:

  • Mod de lansare principal – Aplicație gestionată;
  • există un director Produse cu o ierarhie de grupuri și elemente;
  • există un director Analogis cu atributul SelectedProduct de tip DirectoryLink.Products;
  • ambele directoare au forme de elemente gestionate.

Acum să implementăm în această configurație toate mecanismele pe care platforma le folosește pentru a selecta un element din listă în limbajul încorporat. Procedând astfel, vom vedea cum sunt utilizați parametrii de formular standard; modul în care sistemul însuși le folosește; cum le poate folosi un dezvoltator.

Să adăugăm un steag suplimentar care va controla închiderea formularului de selecție după selectarea unui element. Să numim acest flag CloseAfterSelection (de tip boolean). Să-l adăugăm ca parametru de formular Formular pentru selectarea directorului Produse.

Pentru a deschide formularul de selecție a elementelor, trebuie să creați un handler de evenimente pentru evenimentul Începutul selecției pentru elementul de formular Produs selectat sub forma elementului de director Analogues:

&OnClient

Procedură SelectedProductStartSelection(Articol, Procesare standard)

StandardProcessing = Fals;

SelectionParameters = Noua Structura; SelectionParameters.Insert("SelectionMode", True); SelectionParameters.Insert("SelectingGroupsAndElements", UsingGroupsAndElements.Elements); SelectionParameters.Insert("AllowRootSelection", False); SelectionParameters.Insert("CurrentRow", Object.SelectedProduct); SelectionParameters.Insert("CloseAfterSelection", False); OpenForm("Directory.Products.SelectionForm", SelectionParameters, Elements.SelectedProduct);

EndProcedure

Este necesar să ne oprim separat asupra celui de-al treilea parametru al metodei OpenForm(). Acest parametru determină cine va fi proprietarul formularului de selecție și cine va fi anunțat despre selecția efectuată. În acest caz, am specificat elementul de formular în sine ca proprietar al formularului de selecție, dar putem specifica și formularul în sine cu acest parametru. În acest caz, va fi necesar să se implementeze handlerul de procesare a selecției modulului de formular și să se decidă în ce atribut de formular să plaseze datele selectate.

Avem procesare cu acest formular de bază:

Din acest formular trebuie să deschidem un formular suplimentar, iar textul din câmpul formularului trebuie să fie transferat în formularul deschis. Formularul suplimentar este următorul:

Astfel, când dai clic pe butonul „Run”, se deschide un formular suplimentar cu textul deja introdus în câmp:

Să luăm în considerare o modalitate de a rezolva o astfel de problemă.

Soluţie

Pentru a transfera parametri între formulare obișnuite, puteți fie să utilizați variabila globală de export a modulului de formular, fie să creați un atribut de formular. Să luăm în considerare ambele metode pentru sarcina noastră.

1. Folosind variabila globală de export a modulului formular.

Adăugați următoarele în formularul principal pentru procedura de gestionare a butonului „Run”: codul programului:

Procedură ButtonExecutePress(Button)Form = GetForm(" Formular suplimentar" ) ; // „Text” este o variabilă globală de export a modulului formular deschis Formă. Text = FormElements. Text. Sens; Formă. Deschis();

EndProcedure

Variabila text a fost adăugată la modulul formularului care se deschide împreună cu handlerul de evenimente „BeforeOpen”: Export de text variabil;// Variabilă căreia i se transmite valoarea dintr-un alt formular

Procedure BeforeOpen(Eșec, StandardProcessing)FormElements. Text transmis. Valoare = Text; EndProcedure

Problema este rezolvată, și pur și simplu!

2. Utilizarea elementelor de recuzită.

Pentru a doua metodă, nici măcar nu trebuie să rescriem manevrele de butoane „Run” și „BeforeOpen”. Tot ceea ce este necesar este să adăugați atributul „Text” cu tipul șirului la formularul deschis.

concluzii

În formularele gestionate, transmiterea parametrilor este mult mai ușoară. În formele convenționale, abordarea descrisă este utilizată în majoritatea cazurilor. Puteți procesa exemplul din articol.

descărcați de pe link

Acest articol descrie cum să folosiți mijloace standard pentru a trece o valoare ca parametru la deschiderea unui formular gestionat 8.2, în comparație cu modul în care o operație similară ar putea fi implementată în forme obișnuite.

Cum se transmit parametrii în forme obișnuite
În formele obișnuite, existau 2 posibilități pentru a trece un parametru:
1) o metodă mai puțin obișnuită: în forma obiectului din fila „Detalii”, au fost adăugate atribute și, dacă este necesar, accesul a fost determinat prin mijloace vizuale

2) o metodă mai comună: o variabilă de export a fost declarată în modulul formular și valoarea a fost procesată în handlerul „Înainte de deschidere”

în ambele cazuri, apelul de formular arăta cam așa:
Form = Object.GetForm("SelectionForm",FormOwner, UniquenessKey);
Form.Parameter = ParameterValue;

Form.Open();

Formularele gestionate au acum capacitatea de a transmite imediat parametri atunci când formularul este primit. Parametrii sunt transmiși ca o structură:

Parametri = New Structure("CurrentValue", LastElement);
SelectionForm = GetForm("Director. Nomenclature.SelectionForm", Parametri);
FoundItem = SelectionForm.OpenModal();

De asemenea, formularul gestionat are acum „extensii de formular” (obiect, carte de referință, document, raport). În funcție de tipul de obiect, se determină compoziția parametrilor disponibili. De exemplu, dacă în formularul de selecție a directorului trebuie să vă poziționați pe un anumit element, atunci este utilizat parametrul „CurrentValue”. Marele avantaj este că formularul în sine nu necesită handlere de scriere pentru parametri predefiniți, ceea ce reduce cantitatea de cod.

Dezvoltatorul are și posibilitatea de a-și defini propriii parametri (în designerul de formulare gestionate, fila „Parametri”). Durata de viață a parametrilor este limitată de handlerul OnCreationOnServer, ceea ce este logic deoarece parametrii sunt necesari numai la crearea unui formular, dar dacă acest parametru determină unicitatea formularului (steagul „parametru cheie” este setat în proprietățile parametrilor), acesta va fi disponibil în alți handlere.

Pentru a trece un anumit parametru de manipulare, trebuie să faceți puțin mai mult:

1) Definiți parametrul într-o formă controlată.
În handlerul OnCreationOnServer, definiți procesarea acestui parametru (accesul la parametrii trecuți prin proprietatea „Parameters”, care are tipul FormDataStructure)
2) Descrieți primirea formularului și transmiteți valoarea noului parametru în parametrii funcției GetForm.
Astfel, codul va arăta astfel:
- La locul unde primiți formularul

Parametri = New Structure("NewParameter", LastElement);
SelectionForm = GetForm("Director. Nomenclature.SelectionForm", Parametri);

Într-un modul de formular gestionat

&Pe server
Procedură când este creat pe server (Eșec, procesare standard)
Dacă Parameters.Property("NewParameter") Atunci
// aici este codul de procesare a parametrilor
endIf;
EndProcedure

Concluzie

Poate că acest articol va fi util cuiva, va economisi timp și vă va scuti de codurile inutile. Pentru mai mult informatii detaliate O lista plina Pentru parametrii formularului gestionat, se recomandă să consultați ajutorul „Interfață gestionată\Formular gestionat”.

[trebuie să vă înregistrați pentru a vedea linkul]

Acțiune