Transferul obiectelor obiectului de la formularul principal la formularul suplimentar și înapoi pe formularele gestionate

Probabil, mulți se confruntă cu o situație în care, la o parte din obiectul editat (document de referință, prelucrarea externă), altele decât forma principală de a face un cuplu mai mult pentru a completa detaliile din partea acestora, iar apoi returnați formularul completat la valorile principale în obiectul în sine. Și dacă ar fi vorba de forme obișnuite, atunci nu ar fi nici o problemă. Dar, în forme controlate, aceasta ridică o problemă, iar în caz de respingere a modalității devine puțin mai mare.







Prima parte a problemei este că obiectul în sine (DokumentObekt, ​​SpravochnikObekt, ​​ObrabotkaObekt) trăiește pe server și pe client este transmis numai o copie a structurii restaurat. Prin urmare, trebuie să recurgeți periodic la metode precum "Propsize Forms". În cazul formei principale a obiectului, nu există aproape nici o problemă. Se completează rechizitele de formulare, rechizitele obiectului.

Dar cea de-a doua parte a problemei vine atunci când trebuie să scoatem o formă suplimentară și să completați o parte din cerințele din ea. Apoi se dovedește că rechizitele de pe formularul suplimentar nu sunt completate și înapoi, de asemenea, nu sunt transferate. Deși forma nu este arbitrară, ci face parte din prelucrare, iar obiectul cerut este cel principal, iar structura obiectului pe acesta este recreată. Dar din anumite motive, nu există date. Pentru cei cu forme gestionate care nu funcționează foarte mult sau nu foarte strâns, devine o problemă, după cum am aflat, după ce am citit forumuri cu cereri similare. Și toată sarea este faptul că această formă suplimentară de recuzită obiect - propriile sale. Și nu are nimic de-a face cu Obiectul formei de bază. Numai structura obiectului este reconstruită, fără date. Aceasta este realitatea aspră a unui client subțire)))

Deci, recent am întâlnit această problemă și am petrecut câteva ore pe "fumatul" diverselor forumuri. A trebuit să fac procesarea externă, care are mai multe formulare suplimentare, în care sunt introduse date suplimentare, inclusiv date tabulare. În acest caz, toate rechizitele ar trebui să fie stocate în rechizitele și părțile de masă ale procesării și să fie afișate fragmentar sub diferite forme. Un fel de mini-sistem închis. Datele din procesare sunt apoi stocate într-o bază de date externă, dar aceasta este o poveste separată.







Practic, ceea ce am întâlnit în căutare, este o cerere de ajutor și o grămadă de banter fără sugestii practice.

Câteva soluții, este adevărat, au fost sugerate, dar toate păreau destul de greoaie. Practic, aceasta este fie metoda GetForm (), apoi completarea elementelor necesare formularului primit și deschiderea sa modală, apoi efectuarea operațiilor după ce este închis. Dar, în caz de respingere a modului 1C, aceasta blestemă constant acest lucru. O altă opțiune este crearea unei structuri, introducerea în ea a tuturor rechizitelor necesare din formularul principal, apoi transferarea acestei structuri ca parametru de intrare atunci când deschideți un formular suplimentar. Și când închideți formularul suplimentar, trebuie să creați din nou structura și să o transferați înapoi la formularul principal. În același timp, în ambele forme este necesar să se prescrie citirea acestor parametri și umplerea rechizitelor în recipient. Într-unul din forumurile în care a fost propusă o astfel de metodă, cineva a înțeles în mod corect că atunci când transferă sute de rechizite și zeci de mese, aceasta devine o problemă. În final, toată lumea consideră că decizia ar trebui să fie mai simplă, dar nimeni nu a exprimat-o. Un cod atât de inutil pentru mine de a înregistra foarte mult nu ar fi de dorit, prin urmare, am continuat să săpat în căutările deciziei ideale. Câteva gânduri exprimate mă făceau în ce direcție să săpat, și. Soluția a fost simplă, la fel de ingenioasă!

Deoarece structura obiectelor în ambele forme au identice, diferă doar o listă de detalii care sunt vizibile pe forma, nimic nu ne împiedică să transmită pe deplin întregul obiect și umple-l în sus, și apoi doar să dau înapoi. Principalul lucru este să faci asta corect.

Să presupunem că trebuie să deschidem un formular suplimentar cu o pereche de detalii și o parte tabelară a procesării, să o umplem și apoi să o întoarcem înapoi, în timp ce tabelul de pe formularul principal nu este afișat.

Pe partea principală a formularului scriem:

Pe partea laterală a formularului suplimentar scriem:

După aceasta, formularul suplimentar va fi completat. Apoi facem fraudul necesar cu rechizite și mese și vrem să transferăm rezultatul înapoi. pentru aceasta atribuim un eveniment unui formular suplimentar:

Și, în consecință, din nou, din partea formei de bază, trebuie să acceptăm rezultatul:

Poate că, pentru unii, această decizie va părea evidentă și a făcut-o mult timp, dar nu trebuia să fac asta înainte, dar când citesc forumurile, nu am găsit o astfel de soluție. Sper că cineva va găsi cercetarea mea utilă.

Apropo, numele complet al formei poate avea, de asemenea, unele dezavantaje, deoarece numele complet este dat ca „VneshnyayaObrabotka.ImyaObrabotki.Forma.ImyaFormy“. Și dacă procesarea este redenumită, atunci apelul este opțional. formularele trebuie, de asemenea, să fie corectate. Un lucru pe care nu îl schimbăm în acest caz este proprietatea NameForm. Astfel, dupa obtinerea numelui complet al celui principal si schimbarea ultimului fragment in numele add. forma, vom obține numele complet al add. formular. Și pentru aceasta puteți folosi această funcție mică:

Descărcați fișiere







Trimiteți-le prietenilor: