Biti u grupi prema hijerarhiji 1C 8 Operator „u hijerarhiji“ u zahtjevu. Dobivanje svih roditelja elementa

Ildarovich 6489 16.11.12 18:24 Trenutno na temu

() Vladimir! Drago mi je da ste obratili pažnju na članak, pogotovo jer ste među prvima vidjeli (i cijenili) ovu tehniku ​​u raspravi prije dvije godine „Realno je napisati škakljiv upit“. Nisam sam smislio zanimljivo pitanje, ali sam ga vidio na forumu. Autor pitanja je Stanislav Šeptalov. Sledeće - 24.10.2012. isti (upravo primetio, pošto je nadimak drugačiji) učesnik foruma postavio je slično pitanje, ali u primeni na hijerarhiju. Ispostavilo se da je PRAKTIČNI problem riješen. Nadalje, u skladu sa „naučnim“ pristupom, sagledao sam praktične probleme gdje bi se ova tehnika mogla primijeniti. Pronađeno još 7 problema. 5 - u ovom članku. Među njima je i problem oko ciklusa u specifikacijama, za koji sam prethodno obećao da ću riješiti Ish_2 jednim upitom. Mislim da će vas Ish_2 moći uvjeriti u relevantnost ovog zadatka - potrošio je dosta vremena na to. Rješenje je kratko - nekoliko redova, dakle krajnje jasnih, formuliranih u neproceduralnom stilu, kroz zahtjev za rezultatom. Pa, nailazili su se na druge probleme u člancima i na forumu i za njih su predložena glomaznija rješenja. Dakle, sačekajmo malo da vidimo koliko će se ovo često primjenjivati. Upravo takvu povratnu informaciju očekujem - od onih koji će pokušati.
Inače, da ova grana matematike nije daleko od prakse i da je potrebna računovođama, svjedoči i opći modul „Prilagodba troškova“ u BP2, s kojim trenutno petljamo (nestabilan rad standardnog zahtjeva). Tu govorimo o prekidu ciklusa grafa kretanja predmeta i izgradnji razapinjućeg stabla.
Sada o strukturi baze podataka „za određeni zadatak“. Postavljeno je pitanje o implementaciji zadatka u 1C i stoga je zadatak riješen u 1C. Kada bi vas pitali "kojim autobusom možete doći do biblioteke", a vi ste odgovorili da je bolje letjeti zračnim brodom, onda vas jednostavno ne bi razumjeli (možda osim onih koji su zaglavili u moskovskoj saobraćajnoj gužvi ). U početku je metoda funkcionirala na potpuno drugom jeziku.
Općenito, neću vas moći uvjeriti ako mislite da arhitektura 1C platforme nije dobra. Mogu samo da izrazim svoje mišljenje. Razvoj sheme baze podataka od nule za određeni zadatak je skup. Ako to uporedimo sa građevinarstvom: 1C su panelne visoke zgrade - jeftino stanovanje - sredstvo masovne automatizacije - u skučenim uslovima, ali bez uvrede. Pojedinačne organizacije mogu unajmiti Normana Fostera da precizno implementira svoje zahtjeve. Ostali moraju koristiti jeftine masovno proizvedene projekte - relacijske DBMS-ove sa krutim objektnim modelom. Osim toga, poznato mi je tužno iskustvo korištenja Cash-a u nekoliko projekata. U očima programera, sve ne izgleda tako ružičasto kao u teoriji. 1C objektni model izdržava test vremena – „ogromna područja su izgrađena i naseljena.” Štaviše, razvija se. Nedavno se pojavila tehnologija eksternih izvora podataka. A ako neki zadatak zahtijeva veću reaktivnost (na primjer, sistemi naplate), sada možete neprimjetno povezati 1C s drugim DBMS-om. Na primjer, ovako razmjenjujemo sa uvezenim ERP-om.
Ali ipak, ne bih želio skrenuti razgovor s glavne teme - rada predloženih tehnika u detaljnim PRAKTIČNIM zadacima.

Šta je 1C imenik i zašto je potreban? Imenik pohranjuje uslovno trajne informacije, tj. informacije koje ostaju gotovo nepromijenjene tokom dužeg vremenskog perioda. Na primjer, imenik „Nomenklatura“ sadrži popis prodane ili proizvedene robe. Također, direktorij može sadržavati mnoga svojstva koja opisuju element direktorija.

Ako za poređenje uzmemo pol osobe, onda je lista ograničena i ne mijenja se, pa je nabrajanje bolje za to.

Nakon kreiranja novog direktorija, vidjet ćemo sljedeću sliku.

Pogledajmo sve njegove oznake.

Basic

Ovdje je naznačeno ime (identifikator u bazi podataka) i sinonim (korisničko ime direktorija). Opcijski komentar je onaj koji može objasniti svrhu direktorija ili opisati njegove karakteristike.

Hijerarhija

Na ovoj kartici možete konfigurirati dubinu ugniježđenja elemenata direktorija. Koristeći ovu postavku, zgodno je razlikovati i detaljizirati elemente prema nekim kriterijima. Na primjer, proizvodi “Ormari” su u jednoj grupi, a proizvodi “Stolovi” u drugoj. Po defaultu, kada kreirate direktorij, on predstavlja lista elemenata. Ako označite potvrdni okvir Hijerarhijski direktorij, tada svaki element može biti podređen drugom elementu (grupi). Ispod su opcije za prilagođavanje ove oznake i promjenu prikaza u prilagođenom načinu rada.

Tip hijerarhije:

Hijerarhija grupa i elemenata

Sa ovom postavkom, elementi mogu biti ugniježđeni samo u grupe (mape).

Ovdje, kao što vidite, svi elementi i grupe imaju iste ikone, a bilo koji element može biti ugniježđen.

Postavite grupe na vrh

Kada je ovo polje za potvrdu označeno, grupe će uvijek biti na vrhu, inače će biti raspoređene po redoslijedu sortiranja, na primjer, ovako:

Ograničavanje broja nivoa hijerarhije

Ako polje za potvrdu nije označeno ovdje, ugniježđenje je neograničeno.

Ako je polje za potvrdu označeno, možete odrediti broj nivoa ispod.

Vlasnici

Na obeleživaču vlasnici mogu se naznačiti drugi imenici u odnosu na koje je ovaj podređen. Dijagram odnosa podređenih direktorija sličan je dijagramu odnosa hijerarhijskog direktorija, samo što se ovdje drugi direktorij ponaša kao roditelj i naziva se vlasnik. U tipičnim konfiguracijama, dobar primjer je podređivanje imenika "Sporazumi" imeniku "Counterparties", jer Ne može postojati sporazum koji ne pripada nijednoj suprotnoj strani.

Polje "Lista vlasnika direktorija" specificira listu direktorija koji posjeduju elemente ovog direktorija.

Ispod u polju „Upotreba subordinacije“ je naznačeno čemu će biti podređeni elementi ovog imenika.

Kako programski saznati da li je direktorij hijerarhijski ili ne

Da biste to učinili, trebate se obratiti na metapodatke

Ovo je HierarchicalDirectory = Metadata.Directories.Counterparties.Hierarchical;

Nastavlja se...

1C direktoriji su specijalizirani objekt stabla metapodataka koji služi za pohranjivanje statičkih referentnih informacija. Na primjer, u tipičnim konfiguracijama možete vidjeti sljedeće prikaze: , Nomenklatura, Zaposleni, Osnovna sredstva, itd. Informacije u imenicima se po pravilu ne mijenjaju često. Imenici se naknadno koriste u gotovo svim računovodstvenim objektima kao računovodstveni odjeljak ili referentna informacija.

U nastavku ćemo pogledati postavljanje i dizajniranje direktorija iz konfiguratora koristeći direktorij „Nomenklatura“ kao primjer.

Basic Tab

Kartica „Osnovno“ navodi naziv, sinonim, prikaz objekta i opis svrhe.

Kartica “Hijerarhija imenika”.

Ovdje je uspostavljena hijerarhija direktorija.

Hijerarhija u 1C 8.3 je dva tipa - “ grupe i elementi" i " elementi". Razlikuje se po tome što u prvom slučaju samo folder (grupa) može biti roditelj (folder), au drugom slučaju element može biti i roditelj.

“Postavite grupe na vrh” - zastavica je odgovorna za prikaz grupa u obliku liste.

Također u postavkama možete ograničiti broj grupa u hijerarhiji direktorija koristeći odgovarajuću postavku.

Vlasnici Tab

Direktorij može biti podređen drugom direktoriju. Sa stanovišta konfiguracije 1C 8.3, to znači da atribut "Vlasnik" postaje obavezan za podređeni element. Primjer takve veze između imenika u standardnim konfiguracijama "Nomenklatura - mjerne jedinice", "Suradne strane - Ugovori ugovarača".

Vlasnik direktorija također može biti sljedeći objekti metapodataka: , .

Data Tab

Nabavite 267 video lekcija na 1C besplatno:

Najvažnija kartica sa tačke gledišta programera. Sadrži detalje direktorija.

Direktorij ima skup standardnih detalja koje programator 1C 8.2 ne uređuje, a njihova lista se može vidjeti klikom na dugme „Standardni detalji“:

Zadržat ću se na svakom detaljnije:

  • Ova grupa— atribut s Booleovim tipom, koji pokazuje da li je grupa ili element. Dostupno samo u hijerarhijskom direktoriju. Bilješka, vrijednost ovog atributa ne može se promijeniti u 1C: Enterprise modu.
  • Kod— rekviziti, broj tipa ili string (obično niz). Broj koji sistem automatski dodeljuje. Obično se izračunava kao (prethodni kod + 1). Preporučujem korištenje tipa stringa, jer sortiranje numeričkih vrijednosti ne radi kako se očekuje. Može se koristiti kao prezentacija direktorija na listi i u poljima za unos. Obično se koristi za traženje elementa prilikom unosa niza. Ako trebate ukloniti polje koda, unesite nulu u dužinu reda.
  • Ime— obavezni detalji, vrsta stringa. Maksimalna dužina reda je 150 znakova. Može se koristiti kao prezentacija direktorija na listi i u poljima za unos. Obično se koristi za traženje elementa prilikom unosa niza. Ako trebate ukloniti polje Ime, unesite nulu u dužinu reda.
  • Roditelj— atribut tipa DirectoryLink.<ИмяТекущегоСправочника>. Dostupno samo u hijerarhijskom direktoriju. Pokazuje na nadređenog roditelja u hijerarhiji. Ako je element ili grupa u korijenu direktorija, specificira se vrijednost Direktorij.<ИмяТекущегоСправочника>.EmptyLink.
  • Vlasnik— veza do elementa vlasnika trenutnog elementa direktorija (grupe). Dostupan samo u podređenom imeniku 1C.
  • FlagDeletion— rekviziti sa tipom Boolean. Odgovoran za prikazivanje “oznake za brisanje” u sistemu. Element označen za brisanje smatra se neupotrebljivim, ali na njemu mogu ostati stari pokreti dokumenta.
  • Veza— polje tipa string. Ovaj atribut pohranjuje jedinstveni identifikator objekta - GUID. Ono što vidimo u sistemu u vizuelnom prikazu zvanom „link” je samo reprezentacija objekta. Ne može se promijeniti.
  • Unaprijed— boolean tip, prikazuje da li je element unapred definisan, više o tome kasnije. Ne može se promijeniti.

Kartica „Podaci“ takođe označava predstavljanje direktorijuma u sistemu pre verzije 8.2.16, predstavljanje je moglo biti samo kod ili imena. U novijim verzijama platforme (počevši od 8.3), pogled se može opisati nezavisno u modulu menadžera pomoću rukovaoca “ViewReceivingProcessing”.

Kartica numeracije

Ovdje možete odrediti postavke imenika u pogledu numeriranja. Preporučuje se korištenje autonumeracije. Kontrola jedinstvenosti je oznaka koja pomaže, ako je potrebno, da se kod učini jedinstvenim. Ako, sa postavljenom zastavicom, pokušate napisati element direktorija s nejedinstvenim kodom, u 1C ćete dobiti poruku "Kôd direktorija je postao nejedinstven."

Serija kodova - određuje kako numerirati imenik možete unijeti numeraciju imenika po vlasniku. Na primjer, ugovorna strana "Rogovi i kopita" imat će vlastitu numeraciju ugovora - "1, 2, 3" itd.

Forms Tab

Ovdje su opisani obrasci za imenik. Ako se konfiguracija pokrene u normalnom i upravljanom načinu rada, tada će postojati dvije kartice s obrascima prema zadanim postavkama: “glavni” i “napredni” - različiti za normalne i upravljane aplikacije.

Ova stranica ima važnu karakteristiku imenika - ““. Ovo je vrlo zgodna funkcija 1C 8, koja vam omogućava da prilikom popunjavanja podataka u polju za unos ne ulazite u direktorij, već upisujete njegovo ime, kod itd. i odaberite željeni element sa padajuće liste. izgleda ovako:

Ostalo Tab

Na kartici možete brzo pristupiti glavnim modulima direktorija - modulu objekata i modulu menadžera.

Također možete definirati listu unaprijed definiranih elemenata direktorija na stranici. Ovo su stavke koje se ne mogu izbrisati u Enterprise modu. Predefiniranim elementima se može pristupiti direktno u konfiguratoru po imenu, na primjer: Directories.Nomenclature.Service.

Ova kartica također određuje način blokiranja - automatski ili kontrolirani. Upotreba pretraživanja punog teksta, kao i referentnih informacija o direktoriju, dostupnih u 1C: Enterprise modu.

Dizajn “IN HIJERARHIJA” u 1C:Enterprise 8.x upitima omogućava vam da dobijete podređene elemente hijerarhijskog konfiguracionog objekta prema datom odabiru. Danas ćemo u članku pogledati primjer njegove upotrebe, kao i djelovanje platforme na strani DBMS-a i njen utjecaj na performanse.

Upotreba

Pogledajmo jednostavan primjer korištenja konstrukcije "IN HIERARCHY". Prilikom izvršavanja sljedećeg zahtjeva, podređeni elementi hijerarhijskog direktorija "Proizvodi" će se dobiti za proslijeđenu vrijednost varijable "Link".

Tekst upita = " SELECT | Proizvodi . Veza,| Roba . šifra dobavljača |OD| Imenik . Proizvodi AS Proizvodi|GDJE | Roba . Veza U HIJERARHIJI (& Veza)"

U bazi podataka testova, direktorij "Proizvodi" ima sljedeće testne podatke:

Naravno, slika ne prikazuje sve unose direktorija. Snimak ekrana prikazuje samo strukturu skladištenja podataka u hijerarhijskom direktoriju. Tabela direktorija pohranjuje 10 grupa najvišeg nivoa, od kojih svaka sadrži 5 ugniježđenih grupa sa po 200 elemenata.

Vratimo se na zahtjev za testiranje. Prosledimo vezu do grupe "Grupa - 1" do parametra "&Link" (pogledajte snimak ekrana iznad). Tada će rezultat upita izgledati ovako:

Kao što vidimo, zahtjev je vratio vezu na samu gornju grupu (proslijeđenu kao parametar), kao i na ugniježđene grupe sa elementima u njima. Dakle, upotreba konstrukcije “IN HIERARCHY” vam omogućava da lako dobijete hijerarhijski podređene podatke.

Sintaksa jezika upita 1C:Enterprise klasični SQL vrlo slični u nekim aspektima. Ali za izraz “IN HIJERARHIJA” nema analoga u SQL upitnom jeziku kao što, na primjer, za izraz jezika upita platforme “B” postoji sličan SQL operator “IN”. Stoga je interesantan rad platforme sa DBMS-om pri korištenju ovog operatora.

Iza scene

Pa počnimo. Na primjer, koristit ćemo prethodno napisani upit za direktorij “Proizvodi”. Mi ćemo analizirati radnje platforme za dvije situacije:

  1. Grupu najviše razine “Grupa 1” ćemo proslijediti kao parametar “&Link” (kao što smo to učinili ranije).
  2. U parametru ćemo proslediti vezu na grupu "Grupa 1 - 1", ugnežđenu u grupu najvišeg nivoa "Grupa 1".

Sada, redom. U prvom slučaju, platforma će izvršiti sljedeće radnje na SQL serveru:

1. Prvo se izvršava SQL upit za dobivanje veze na grupu direktorija koja je proslijeđena kao parametar i sve njene podređene grupe. Rezultat se stavlja u privremenu tabelu "#tt1".

2. U drugoj fazi, isti upit se izvršava dva puta:

Snimak ekrana sadrži detaljne komentare na tekst SQL upita. Ukratko, upit vam omogućava da odaberete podređene elemente za grupe koje su referencirane u privremenoj tabeli. Ostaje pitanje: "Zašto se upit izvršava dvaput?" Odgovor je jednostavan: prvo, upit prima podređene elemente za grupe prvog nivoa koji su već sadržani u privremenoj tabeli (vidi tačku 1). Drugi upit zatim dohvaća podelemente za podgrupe drugog nivoa. Budući da na trećem nivou hijerarhije nije prisutna grupa direktorija, ovaj se upit više ne izvršava.

U našem slučaju, drugi upit će vratiti prazan rezultat, jer ne postoje podređeni elementi za zapise koji se nalaze na 3. nivou hijerarhije (tamo nema grupa).

3. Da bi dobila konačni rezultat upita, platforma generiše sljedeći SQL upit:

Rezultat ovog konkretnog zahtjeva može se dalje obraditi algoritmima na ugrađenom jeziku platforme. Stoga se unosi u privremenu tablicu "#tt1" koriste za postavljanje uvjeta uzorkovanja iz referentne tablice "_Reference41".

4. U posljednjem koraku, platforma 1C:Enterprise 8.x briše privremenu tablicu "#tt1", budući da se više neće koristiti u budućnosti.

Ovo završava proces izvršavanja operatora “IN HIJERARHIJA”. Da vas podsjetim da je razmatrani slijed radnji na SQL serveru izveden kada smo na zahtjev na strani platforme proslijedili vezu na grupu najvišeg nivoa „Grupa - 1“. Ali kako će se platforma ponašati ako kao parametar „&Link“ prosledimo vezu na grupu drugog nivoa „Grupa - 1 - 1“? Sve će se desiti na isti način, osim sledeće tačke: gore, u drugoj fazi izvršavanja SQL upita od strane platforme, pisalo je da je upit za dobijanje podređenih elemenata izvršen dva puta - u slučaju dobijanja podređenih elemenata za grupa "Grupa - 1 - 1" to nije slučaj. Zahtjev će biti izvršen samo jednom.

Činjenica je da broj zahtjeva za dobijanje podređenih elemenata zavisi od broja grupa u hijerarhiji. Drugim riječima, ako nivo hijerarhije elemenata sadrži barem jednu grupu, onda zahtjev iz tačke 2.

Performance Impact

Nepravilna upotreba bilo kojeg operatora u upitu može rezultirati neoptimalnim performansama sistema. Operator “IN HIJERARHIJA” koji se razmatra nije izuzetak. Mora se koristiti s oprezom, jer uvelike komplikuje algoritam za izvršavanje SQL upita bazi podataka i time povećava opterećenje na DBMS serveru.

Dozvolite mi da vam dam primjer neoptimalnog upita koji može dovesti do gore navedenih tužnih posljedica:

SELECT Products. Link IZ imenika. Proizvodi KAO Proizvodi GDJE (Proizvodi. Veza U HIJERARHIJI (& Veza) ILI Proizvodi. Veza U HIJERARHIJAMA (& Link1) ILI Proizvodi. Veza U HIJERARHIJI (& Link2) )

Kao što možete pretpostaviti, zahtjev će dovesti do generiranja mnogih SQL upita, što će rezultirati smanjenjem performansi informacionog sistema.

Izvucite svoje zaključke!

Na vama je da donesete zaključke. Samo da kažem da se operator “IN HIJERARHIJA” koristi od strane platforme za sistem sastavljanja podataka kada su uslovi odabira “U GRUPI”, “U GRUPI SA LISTE” i drugi. Mislim da nema potrebe objašnjavati da uz pogrešne manipulacije korisnici mogu postaviti vrlo složene odabire i povećati opterećenje 1C servera i DBMS-a nekoliko puta. Promijenimo postavke samo za iskusne korisnike.

I naravno, kada pišete sopstvene mehanizme, obratite pažnju na operator “IN HIERARCHY”. Vrlo zgodno s jedne strane, a opasno s druge strane.

Ovaj odjeljak prikazuje primjere rješavanja tipičnih problema pri radu s hijerarhijskim direktorijima.

Dobivanje elemenata hijerarhijskog direktorija koji su podređeni datoj grupi

Za dobivanje podređenih elemenata hijerarhijskog direktorija, jezik upita obezbjeđuje IN HIERARCHY konstrukciju. Primjer upotrebe U HIJERARHIJI:


ODABIRATI
Nomenklatura.Šifra,
Nomenklatura.PurchasePrice
OD

U ovom primjeru će se dobiti svi zapisi imenika Nomenklature koji se nalazi u grupi &Grupa, uključujući sebe, njegove podređene grupe i elemente koji pripadaju podređenim grupama.

Ako nas zanimaju samo elementi i grupe koje se nalaze direktno u datoj grupi, onda takve elemente možemo dobiti postavljanjem uslova u polje Parent. primjer:


ODABIRATI
Nomenklatura.Šifra,
Nomenklatura.Naziv AS Naziv,
Nomenklatura.PurchasePrice
OD
Imenik.Nomenklatura AS Nomenklatura

GDJE
Nomenklatura.Roditelj = &Grupa

Ovaj upit će odabrati grupe i elemente koji su podređeni grupi sa vezom &Grupa.

Provjera prisutnosti podređenih elemenata elementa direktorija

Da biste provjerili prisustvo podređenih zapisa elementa direktorija, možete koristiti upit sličan predstavljenom:

U ovom primjeru, referenca na element za koji želite provjeriti ima li djece zapisana je u parametar upita Roditelj. Nakon izvršenja takvog upita, morate provjeriti da li je rezultat prazan. Ako rezultat nije prazan, postoje podređeni zapisi. Inače - ne. primjer:


Ako Request.Execute().Empty() Onda
Izvještaj("Nema unosa");
Inače
Izvještaj("Dostupni zapisi");
endIf;

Dobivanje svih roditelja elementa

Jezik upita ne pruža nikakva posebna sredstva za dohvaćanje svih roditelja elementa. Možete koristiti hijerarhijske zbrojeve da biste dovršili zadatak, ali dobijanje hijerarhijskih zbroja optimizirano je za građenje ukupnih vrijednosti za veliki broj zapisa i nije u potpunosti učinkovito za dobivanje roditelja jednog elementa. Da biste efikasnije dohvatili sve roditeljske zapise elementa, preporučljivo je proći kroz njegove roditelje u malim dijelovima. primjer:


CurrentItemItem = ItemItem;

Upit = Novi upit("SELECT
| Nomenklatura. Roditelj,
| Nomenklatura.Roditelj.Roditelj,
| Nomenklatura.Roditelj.Roditelj.Roditelj,
| Nomenklatura.Parent.Parent.Parent.Parent,
| Nomenklatura.Parent.Parent.Parent.Parent.Parent
|OD
| Imenik.Nomenklatura AS Nomenklatura
|WHERE
| Nomenclature.Link = &CurrentNomenclatureElement";

Dok je ciklus istine
Request.SetParameter("CurrentItemItem", CurrentItemItem);
Rezultat = Query.Run();
Ako Result.Empty() Onda
Prekini;
endIf;
Odabir = Result.Select();
Selection.Next();
Za ColumnNumber = 0 Po Result.Columns.Quantity() - 1 petlja
CurrentItemItem = Izbor[Broj kolone];
Prekini;
Inače
Izvještaj(TrenutniItem);
endIf;
EndCycle;

Ako je CurrentItemItem = Directories.Nomenclature.EmptyLink() Onda
Prekini;
endIf;
EndCycle;

U ovom primjeru, svi roditelji za vezu snimljenu u varijablu Nomenklature elemenata su prikazani u prozoru servisne poruke. U ciklusu se bira 5 roditelja veza.

Ako je broj nivoa u imeniku ograničen i mali, tada je moguće dobiti sve roditelje sa jednim zahtjevom bez petlje.

Prikaz hijerarhijskog direktorija u izvještaju

Da biste prikazali hijerarhijski direktorij u izvještaju uz očuvanje hijerarhije, morate koristiti upit sličan sljedećem:


ODABIRATI
Nomenklatura.Šifra,
Nomenklatura.Naziv AS Naziv,
Nomenklatura.PurchasePrice
OD
Imenik.Nomenklatura AS Nomenklatura
SORT BY
Ime HIERARCHY

Ovaj upit odabire sve zapise iz direktorija i raspoređuje ih u hijerarhiju. Rezultat će biti poređan po imenu, uzimajući u obzir hijerarhiju.

Da bi grupe imenika bile postavljene iznad elemenata, potrebno je klauzulu ORDER BY u ovom zahtjevu zamijeniti sljedećim:


SORT BY
Nomenklatura. Ovo je HIJERARHIJA Grupe,
Ime

Rezultat će i dalje biti hijerarhijski poredani, ali će se grupe pojaviti iznad elemenata.

Ponudu ORDER BY moguće je zamijeniti i opcijom AUTO ORDER. U tom slučaju, rezultat će biti poređan u skladu sa postavkama imenika, tj. ako imenik navodi da grupe treba da budu locirane iznad elemenata, onda će se one nalaziti iznad.

Također je moguće dobiti hijerarhijsku strukturu direktorija koristeći rezultate.


ODABIRATI
Nomenklatura.Šifra,
Nomenklatura.Naziv AS Naziv,
Nomenklatura.PurchasePrice

FROM Directory.Nomenklatura AS Nomenklatura

GDJE
(Nomenklatura.OvaGrupa = FALSE)

ORDER BY Name

Dobivanje ukupnih vrijednosti po hijerarhiji

Da biste dobili zbrojeve po hijerarhiji u upitu, morate navesti ključnu riječ HIERARCHY u klauzuli SOFTWARE TOTAL nakon što navedete polje po kojem će se ukupni iznosi izračunati. Primjer izvještaja "Promet artikala" sa dobivanjem ukupnih vrijednosti po hijerarhiji:


ODABIRATI

OD

HIJERARHIJA Nomenklature

Kao rezultat ovog zahtjeva, ukupni će biti izračunati ne samo za svaku stavku, već i za grupe kojima pripada ovaj ili onaj artikal.

U slučaju kada nam ne trebaju zbrojevi za elemente, već su nam potrebni samo zbroji za grupe, trebamo koristiti konstrukciju SAMO HIJERARHIJA u zbrojima. primjer:


ODABIRATI
Računovodstvo nomenklaturePromet.Nomenklatura AS Nomenklatura,
Računovodstvo nomenklaturePromet.Nomenklatura.Prezentacija,
Računovodstvo za NomenklaturuPromet.KoličinaPromet AS Količina Promet
OD
Registar akumulacije.Nomenklaturno računovodstvo.Promet KAKO Računovodstvo nomenklaturePromet
REZULTATI IZNOS (Količina prometa) PO
SAMO HIJERARHIJA nomenklature

Rezultat ovog upita će biti ukupni zapisi samo za grupe stavki.