Cum deschid forma unui obiect existent?
La deschiderea formei unui obiect existent, este necesar, pe lângă numele formularului, să se indice obiectul, a cărui formă ar trebui deschisă. Pentru aceasta, se utilizează parametrul de formular Cheie și un link către obiectul de interes pentru noi.
De exemplu, dacă din forma listei de organizații trebuie să deschideți formularul organizației pe care se află cursorul, puteți face acest lucru în felul următor:
Trecem parametrii formularului sub forma unei structuri, unde numele elementului de structură corespunde numelui parametrului formularului, iar valoarea este valoarea la care dorim să setăm parametrul formularului.
Dacă trebuie să deschideți nu forma principală, ci o formă arbitrară a unui obiect creat în configurator, în loc de numele standard al formei principale (ObjectForm), este indicat cuvântul Form și, printr-un punct după acesta, numele de formularul creat în configurator.
De exemplu:
ReferenceItemRef = Items.List.CurrentString; Parametri de formular = Structură nouă („Cheie”, ReferenceElementRef); OpenForm („Directory.Organizations.Form.UniversalFormObject”, Parametri formular);
Trebuie remarcat faptul că în cazul în care, în afară de o referire la un obiect, nu trebuie să se treacă parametri în formularul care urmează să fie deschis și este necesară forma principală a obiectului existent, puteți utiliza o metodă mai simplă. - deschideți formularul folosind procedura OpenValue ():
OpenValue (Items.List.CurrentLine);
Această metodă este mai puțin versatilă, dar în unele cazuri economisește timp și efort. De exemplu, în cazul considerat, o astfel de linie poate înlocui întreaga procedură de trei linii pe care am scris-o mai devreme.
Cu toate acestea, trebuie să aveți grijă când utilizați această procedură. În unele cazuri, poate provoca apeluri suplimentare către server, de exemplu, atunci când trebuie să deschideți un formular pentru un articol dintr-un catalog ierarhic. Când se utilizează această procedură, platforma va efectua un apel suplimentar către server pentru a determina dacă elementul este un grup sau nu, deoarece trebuie deschise diferite formulare pentru element și pentru grup.
În același timp, această informație poate fi cunoscută în avans de către dezvoltator în interiorul algoritmului său, iar folosind funcția OpenForm (), dezvoltatorul poate deschide formularul necesar fără apeluri suplimentare către server, specificând imediat numele standard al formularului principal. .
Deschiderea de formulare în mod programatic într-o aplicație gestionată 1C este semnificativ diferită de deschiderea lor într-o aplicație obișnuită. Să începem cu vechea metodă. Constă în primirea unui formular și apoi deschiderea lui în mod normal sau modal (când este deschis în mod modal, formularul blochează funcționarea programului).
GetForm (). Deschis()
Aceasta este cea mai lentă metodă de deschidere a formularelor. Cu toate acestea, vă permite să procesați în mod programatic formularul înainte de a-l deschide. Pentru a procesa codul, trebuie să modificați puțin:
Formular = GetForm ( „Document. Recepția mărfurilorServicii. Formular document”)
;
// Aici efectuăm acțiuni cu formularul
Formă. Deschis ();
Trebuie avut în vedere că la primirea formularului se va executa o altă procedură eveniment OnCreateAtServer.
Să luăm în considerare și alte metode care vă permit să deschideți formulare într-o aplicație gestionată 1C mai rapid și mai convenabil. Pot fi utilizate diferite metode în funcție de situația specifică.
1. Cum se deschide un formular de obiect într-o aplicație gestionată, dacă există un link către acesta.
În acest caz, totul este extrem de simplu.
RefLink = Directoare. Nomenclatură. FindByCode ("000000001");
OpenValue (RefLink);
2. Cum se deschide formularul de selecție și apoi se obține valoarea selectată.
Pentru aceasta există o funcție Introduceți valoarea (). Funcția are 3 parametri:
- Variabila în care se va scrie valoarea selectată;
- Un indiciu care va fi afișat în fereastra de selecție;
- Descrierea tipurilor de valori de selectat. Pot exista mai multe tipuri, apoi, înainte de a alege o anumită valoare, vi se va solicita să selectați un tip.
Ca urmare a executării funcției, se va deschide formularul de selecție implicit pentru obiectul de tipul specificat.
Valoare Var;
Array = matrice nouă;
Matrice. Adăugați (Tastați ( „DirectoryLink.Nomenclatura”)
)
;
Matrice. Adăugați (Tastați ( „DirectoryLink. Contractori”)
)
;
TypeDescription = nou TypeDescription (Matrice);
Res = EnterValue (Valoare, „Sugestie”, Descrierea tipurilor);
Metodele anterioare permiteau deschiderea doar a formularelor setate pentru obiecte în mod implicit (formular obiect sau formular de selecție). Dacă trebuie să deschideți o formă arbitrară, puteți utiliza funcția OpenForm ().
Această funcție are destul de mulți parametri. Să luăm în considerare câteva dintre ele:
- Numele formularului- aici puteți alege oricare dintre formele standard de obiect, de exemplu, Formular de selecție sau Formularul de listă... Sau un formular specific creat de dezvoltatori.
- Parametrii- vă permite să vă transferați la formularul din formular structurilor câțiva parametri înainte de a-l deschide, definind astfel datele de ieșire. Parametrii pot fi orice date care pot fi transferate de la client la server. Parametrii trecuți la deschiderea formularului pot fi procesați în procedură OnCreateAtServer () la forma deschisă.
- Modul deschidere formular- are 3 opțiuni: independent, blocați întreaga interfață, blocați formularul proprietarului.
Să vedem cum se aplică funcția OpenForm () in diferite situatii.
3. Cum se deschide forma unui obiect existent
Fiecare formular are o recuzită cheie. Este evidențiat cu aldine în lista de atribute de formular și este de obicei numit Un obiect la forme de elemente de directoare, documente. Alte obiecte pot avea un nume diferit. Pentru a deschide forma unui obiect existent, trebuie să treceți parametrul în formularul deschis Cheie cu o valoare sub forma unei referințe la obiect.
& OnClient
Procedură Comanda 1 (Comandă)
Parametru = structura noua;
Parametru. Insert ("Cheie", FindS ());
OpenForm (, Parametru);
Sfârșitul procedurii
&Pe server
Funcția FindC ();
Retur Directoare. Antreprenori. Căutați după cerințe ("INN", "745107734623")
EndFunction
4. Cum se deschide forma unui obiect nou
Doar o funcție va funcționa aici OpenForm () fara nici un parametru.
& OnClient
Procedură Comanda 1 (Comandă)
OpenForm ( "Director. Antreprenori. Formular obiect")
;
Sfârșitul procedurii
5. Cum să deschideți un formular de obiect nou și să îl completați în funcție de ceva
Trebuie să treceți un parametru Baza, a cărui valoare va fi o referință la obiectul de bază de umplere. Aceasta va începe procedura. ProcessingFill ().
& OnClient
Procedură Comanda 1 (Comandă)
Parametru = structura noua;
Parametru. Inserare („Baza”, Link de cont către Cumpărător);
OpenForm ( „Document.RealizationGoodsServices.ObjectForm”, Parametru) ;
Sfârșitul procedurii
Acest exemplu va crea un document Vanzare de bunuri si servicii si completata pe baza facturii de plata catre cumparator, link-ul catre care a fost transmis.
6. Cum să deschideți un formular și să setați o selecție pe acesta
Selecția pe formularele 1C poate fi simplă sau complexă. Selecția simplă oferă expresii precum Organizație = SRL „Horns and Hooves”. Selecția complicată implică alte tipuri de comparații, de exemplu, În listă... În acest articol, vom lua în considerare organizarea unei selecții simple, iar un articol separat va fi dedicat celei complexe.
Pentru a organiza o selecție simplă, trebuie să treceți un parametru cu o cheie la formularul deschis Selecţie, valoarea va fi o structură în care cheia este numele câmpului de listă dinamică, iar valoarea este datele necesare.
De exemplu, să deschidem forma listei de directoare numere GTDși faceți o selecție acolo de către proprietar - un element de director Nomenclatură.
& OnClient
Procedură Comanda 1 (Comandă)
Parametru = structura noua;
Selecție = Structură nouă;
Selecţie. Inserare („Proprietar”, ReferenceNoNomenclature);
Parametru. Inserare („Selectare”, Selecție);
OpenForm ( „Formular Directory.NumbersGTD.List”, Parametru) ;
Sfârșitul procedurii
7. Cum se deschide formularul de înregistrare a registrului de informații
Pentru a face acest lucru, aveți nevoie de o cheie de scriere a registrului de informații.
Cheie de înregistrare- acestea sunt valorile tuturor măsurătorilor și ale perioadei (dacă registrul este periodic). Adică, cheia de înregistrare reprezintă parametrii prin care înregistrarea poate fi identificată în mod unic.
Algoritmul de deschidere este următorul:
- Introducem în structură datele cheii de înregistrare cu valorile necesare.
- Am pus structura rezultată într-o matrice.
- Creați o cheie de înregistrare din matrice.
- Trecem parametrul în formularul deschis Cheie cu cheia de înregistrare de la articolul 3 ca valoare.
& OnClient
Procedură Comanda 1 (Comandă)
Parametru = structura noua;
KeyParameters = Structură nouă;
Parametri cheie. Inserare („Nomenclatură”, ReferenceNomenclature);
Parametri cheie. Inserare („PriceType”, LinkPriceType);
Parametri cheie. Inserare („Perioada”, Data);
KeyArray = matrice nouă;
ArrayKey. Adăugați (KeyParameters);
KeyRecord = Nou ( „Prețuri DataRecordRecordKey.Nomenclatură”, ArrayKey);
Parametru. Inserare („Cheie”, KeyRecord);
OpenForm ( "Registrul de informații. Nomenclatură prețuri. Formular de înregistrare", Parametru) ;
Sfârșitul procedurii