Ca valori 1c pentru a construi un arbore de structura de directoare, fără rânduri suplimentare
Evaluare: 0/5

Nu știu cât de mult este clar din titlu, ce se va discuta. Problema este următoarea: avem referire la ierarhia elementelor, ierarhia orice adâncime. Alegeți orice element de ghidare și este necesar să se obțină valori ale unui copac, în care rădăcina un rând cu elementul selectat, și toate elementele ramuri subordonate, care stau în ierarhia celulei selectate în conformitate cu structura de directoare.
Este necesar poate fi pentru a afișa pe forma unui copac, sau de ieșire raportul, cazuri de viață sunt diferite.
Sarcina sună banal, deoarece 1C Totul este proiectat pentru a afișa ierarhia de directoare: liste dinamice, control acces, anchete - oriunde există toate pentru a lucra cu ierarhia, dar există câteva, dar că vreau să elimine. Aici este o listă de „NU“:
1. 1C ne dă un copac, în cazul în care elementul rădăcină nu este selectată, iar partea de sus.
2. În cazul elementelor din ierarhia de copac evacuate din duplicatele de interogare de urcare. Fiecare element este înregistrarea finală și un cont detaliat.
Se pare un moft, ci pentru a vedea pe ecran nu doresc liniile suplimentare. Ecranul trebuie să fie eliberat numai de informații cu privire la caz.
Deci, trebuie să înțelegem exemple, cu ceea ce de fapt, am fost de gând să lupte, deoarece Am prilyudii sigur de faptul, că ați înțeles. Pentru testele pot fi luate orice probă konfu cu o unitate manuală sau schița lor una singura referire la ierarhia de articole.
Am creat o bază de date cu directorul „stages“ cu o ierarhie a elementelor.

și a condus la următoarea structură:

Ei bine, o astfel de fantezie am :)
Și astfel, să spunem că avem nevoie de măsuri pentru punerea în aplicare a 1C în OOO „RIK“. Ie Asta e ceea ce aș vrea să văd în copac:

Nici elementele cele mai radicale, nici duplicate, ci pur și simplu ramura ierarhiei, pe care l-am ales.
În primul rând, în consola interogări scrie diferite interogări simple și uita-te la rezultate:
Nu voi arăta chiar rezultatul, este clar că vor exista doar elementele necesare, dar fără nici o ierarhie care nu ne convine
deprimant rezultat, nu poate fi afișat utilizatorului

3. Faceți rezultatele ierarhiei și a elementelor
Acest lucru este similar cu rezultatul dorit, există o ierarhie, dar somtret încă speriat:

4. Faceți rezultatele numai în ierarhia
Hopa, cel puțin gunoi, dar încă mai există camere duble și există elemente rădăcină suplimentare

Deci, prin descărcarea №4 rezultatele interogării într-un copac de valori, vom obține ceva foarte similar cu tinta, dar nimic altceva.
Primul gând de a rula cod pe copac și scoate din ea prea mult.
Al doilea gând să se uite în direcția de ACS, pentru că există o astfel urâțenia cu dublu în rapoarte, nu pare.
Noi încercăm să prezinte un raport privind CDS.
Crearea unui raport cu un set de date „cerere“, cu întrebări simple, în care trageți toate domeniile care au:
În setările avem aici, precum și cererea, există opțiuni:
rezultatul este super, au dubleaza ca o simpla cerere

Rezultatul este bun, nici duplicate, și numai frunzele de copac acolo :)

Din nou, douăzeci și cinci :(

Deci concluzie: CDS are aceeași glaf ca și cererea - intrarea directorului este afișat ca o înregistrare detaliată de două ori și, ca rezultat pentru subordonati. Da, și cum să se taie elementele nivelul selectat de mai sus - nu este clar.
În plus față de control al accesului bazat pe hardware (înseamnă, că nici raportul, nici structura ACS în baza de date nu au) pentru a obține un copac de valori, este necesar să se creeze o mulțime de entități de cod. Simpla creare a software aspect care ne va costa. Lizibilității codului va tinde la 0.
Face cod noi, rămâne de a alege o abordare. Aș dori să ia cererea №4, descarcă-l în copac și apoi procesul, dar nu e copacul minus valoarea:
1. Nu se poate schimba ramura mamă. Și ne-ar ajuta să găsească în lizieră la elementul selectat și aruncați-l în rădăcină. Dar aceste metode nu. „Mamă“ în rândul copac este read-only.
2. Cum de a elimina duplicatele? Punct de vedere tehnic rânduri duplicate sunt identice. Ce să eliminați? Și în cazul în care pentru a pune subordonații în linie sunt eliminate, iar ei au uneori.
Am luat o decizie: cererea №1, fără nici un rezultat. pentru că Fig un copac va trebui să construiască de la zero, este mai ușor de a construi pe baza TK liniar deoarece este mai ușor pentru a sorta. Toate sucursalele vor fi create în cache conformitate. Fiecare element de bază se obține imediat o cerere pentru a evita accese la baza de date în cadrul buclei. Build va recursiv. Linia se adaugă la revenirea recursivitatii la ramura-mamă a fost deja în copac.
// punctul de intrare este procedura de bază pentru formarea unui copac
// 1. Creați un copac cu o singură linie de la rădăcină
Copac = new DerevoZnacheny;
// pas - formă variabilă, care a fost aleasă în câmpul de intrare
// 2. Gaseste toate etapele subordonatilor