Deoarece lucrul cu Tree Value și Value Table în acest context este practic același, exemplul va folosi arborele de valori, toate acestea cu excepția ierarhiei fiind aplicabile tabelului de valori. După cum știți, în. Într-o aplicație gestionată de 1C 8.2, nu este la fel de simplă pe cât pare la prima vedere.
Vă atrag atenția că arborele de valori este disponibil numai pe server, în client gros și conexiune externă. În datele formei cele mai controlabile pentru modelarea copacilor, se utilizează tipul de date Forms Tree. Pentru a converti Valorile Arborelui <-> Formule de date Se utilizează metodele formularului controlat Formulele ValueVRequisit () și Formularele Propsys (). Pentru afișarea directă a unui arbore, se utilizează un element de formă de tip TableForms, care este conectat prin protocolul PathChannel cu forma necesară a tipului DataFormsType. Dacă nu sunteți foarte clar despre conexiunea descrisă mai sus a obiectelor, nu vă faceți griji, vom lua în considerare un exemplu practic mai jos și totul va intra în vigoare.
Sarcina: Există un arbore de valori, este necesar să îl afișați într-o formă controlată.
Creați o nouă prelucrare externă (), adăugați un formular gestionat și creați un handler pentru CreConsole (). Nu adăugăm niciun element sau element "manual", îl vom face programat.
Cod 1C v 8.2 UP
Mecanismul Drag and D_rop (sau pur și simplu drag and drop) pentru arborele de valori aflat într-o formă gestionată a unei aplicații gestionate
Principala dificultate în implementarea mecanismului drag and drop este că bara Tree of Values nu permite platformei să schimbe pur și simplu părintele, adică realocați o linie. Singura modalitate de a face acest lucru este crearea unei noi linii împreună cu toate liniile subordonate, adică copiați complet întreaga ramificație de arbore împreună cu întreaga ierarhie și subordonați-o șirului părinte necesar, apoi ștergeți ramura originală. Această sarcină este împărțită în două sub-sarcini:
1). Înainte de a trage este necesar să se verifice corectitudinea acestei operații, nodul de copac nu poate fi transferat la nodurile subordonate acestuia, adică Nodul părinte nu poate fi mutat în nodurile copilului. acest lucru va duce la "recursiune infinită" și "cădere" a platformei. Acest lucru este realizat folosind elementul Handler de evenimente ElementDrawing Drag and Drop (...)
2). Dacă este posibilă tragerea, funcția recursivă care inițiază noua ramificație de arbore, care este subordonată părintelui necesar, iar cea originală este ștearsă, este lansată utilizând instrumentul de trasare și decolare ElementDelete (...).
Acordăm o atenție deosebită faptului că în platforma 8.2 este implementat mecanismul selecției multiple a elementelor, prin urmare operațiunile de mai sus trebuie efectuate pentru toate elementele selectate de utilizator. ()
Cod 1C v 8.2 UP
Implementați o casetă de selectare în trei poziții din arborele Valoare într-un formular gestionat
care funcționează conform următorului algoritm:
* Dacă elementul ItemValue nu are elemente subordonate, caseta de selectare poate fi "on" sau "off".
* Dacă elementul are subordonați, caseta de selectare "on", dacă casetele de selectare pentru toate elementele subordonate sunt ON, este "OFF" dacă casetele de selectare pentru toate elementele subordonate sunt oprite.
Dacă unele elemente subordonate au casete de selectare activate și unele sunt dezactivate, atunci caseta de selectare a elementului părinte are valoarea "nedefinită".
* Când caseta de selectare a elementului părinte este activată, casetele de selectare ale TOȚIlor subordonați sunt activate, când caseta de selectare a elementului părinte este dezactivată, stegulețele tuturor subordonaților sunt dezactivate.
Scoateți primul articol construi un arbore de procedură valori și modificați-l, adăugând la coloana de copac mai una care conține control casetă de selectare, și să pună în aplicare o tratare a evenimentului pentru ea „PriIzmenenii“. Întregul algoritm se reduce la manipularea pavilion schimbare: toate sub-elemente trebuie să fie pornit / oprit steaguri în funcție de elementul curent al statului de pavilion, și toți părinții acestui element (care sunt situate pe nivelele superioare ale ierarhiei) pentru a pune în jos casetele de selectare în „on“ / „off“ / "Pe termen nelimitat" în conformitate cu algoritmul descris mai sus. ()
Cod 1C v 8.2 UP
Luați un răspuns la întrebare