Izračunato polje u SKD 1s 8.3. Jezik izraza sistema sastava podataka (1Cv8). Izlaz tabličnih podataka u jednom redu

Prijavite se na stranicu kao student

Prijavite se kao učenik za pristup školskim materijalima

Sistem sastavljanja podataka 1C 8.3 za početnike: brojanje rezultata (resursi)

Svrha ove lekcije će biti:

  • Napišite izvještaj koji prikazuje listu proizvoda (imenik hrane), njihov kalorijski sadržaj i ukus.
  • Grupirajte proizvode po bojama.
  • Saznajte više o sumiranju (resursi) i izračunatim poljima.

Kreirajte novi izvještaj

Kao iu prethodnim lekcijama, otvaramo bazu podataka " Deli"u konfiguratoru i kreirajte novi izvještaj kroz meni" File"->"Novo...":

Vrsta dokumenta - eksterni izvještaj:

U obrazac za podešavanje izvještaja upišite naziv " Lekcija 3" i pritisnite dugme " Otvoreni dijagram sastava podataka":

Ostavite zadani naziv šeme i kliknite na " Spreman":

Dodavanje zahtjeva kroz konstruktor

Na kartici " Skup podataka" klik zeleno znak plus i odaberite " Dodaj skup podataka - upit":

Umjesto da ručno napišemo tekst zahtjeva, ponovo ga pokrećemo konstruktor upita:

na "tab" Stolovi"povucite sto" Hrana" iz prve kolone u drugu:

Odaberite iz tabele " Hrana"polja koja ćemo tražiti. Da biste to učinili, prevucite i ispustite polja" Ime", "Taste", "Boja" i " Sadržaj kalorija" iz druge kolone u treću:

Ispalo je ovako:

Pritisnite dugme " OK" - tekst zahtjeva je generiran automatski:

Kreiranje postavki prezentacije izvještaja

Idi na karticu " Postavke" i kliknite na magični štapić nazvati dizajner postavki:

Odaberite vrstu izvještaja " Lista..." i pritisnite dugme " Sledeći":

Prevucite sa lijeve kolone na desnu polja koja će se prikazati na listi i kliknite na " Sledeći":

Prevucite iz lijeve kolone u desno polje " Boja“ – desiće se grupisanje redova u izveštaju. kliknite na " OK":

A evo i rezultat rada dizajnera. Hijerarhija našeg izvještaja:

  • izvještaj u cjelini
  • grupisanje "Boja"
  • detaljni unosi - redovi sa nazivima hrane

Sačuvajte izvještaj (dugme disketa) I bez zatvaranja Odmah ćemo otvoriti konfigurator u korisničkom modu. Ispalo je ovako:

Promjena redoslijeda kolona

Ali hajde promenimo redosled kolone (strelice gore i dolje) tako da izgleda kao na slici ispod:

Sačuvajmo izvještaj i ponovo ga otvorimo u korisničkom modu:

Odlično, to je mnogo bolje.

Hajde da sumiramo sadržaj kalorija

Bilo bi lijepo sažeti sadržaj kalorija u hrani po grupama. Da vidite zbir kalorijskog sadržaja svih proizvoda, recimo, bijelih ili žutih. Ili saznajte ukupan sadržaj kalorija svih proizvoda u bazi podataka.

U tu svrhu postoji mehanizam za obračun sredstava.

Idi na karticu " Resursi"i povuci polje" Sadržaj kalorija"(sumiraćemo) od lijeve kolone prema desnoj.

U tom slučaju, u polju odaberite izraz sa padajuće liste " Količina (kalorija)", budući da će zbir biti zbir svih elemenata uključenih u zbir:

Spremamo i generišemo izveštaj:

Sada imamo rezultate za svaku od grupa i za izvještaj u cjelini.

Hajde da sumiramo (prosjek) u smislu kalorija

Sada neka se pojavi u drugoj koloni prosjek kalorijski sadržaj proizvoda po grupama iu izvještaju u cjelini.

Ne možete dodirnuti postojeću kolonu "Kalorije" - u njoj je već prikazan ukupan iznos, dakle napravimo još jedno polje, što će biti tačna kopija polja "Kalorija".

Da bismo kreirali takvo „virtuelno“ polje, koristićemo mehanizam izračunata polja.

Idi na karticu " Izračunata polja" i pritisnite zeleno plus znak:

U rubrici " Putanja podataka"pišemo ime novog polja ( neprimjetno, bez razmaka). neka se zove " Prosječni sadržaj kalorija", a u koloni " Izraz"pišemo naziv postojećeg polja na osnovu kojeg će se izračunati novo polje. Tu upisujemo " Sadržaj kalorija". Kolona" Naslov" će se popuniti automatski.

Dodali smo novo polje (" Prosječni sadržaj kalorija"), ali se neće pojaviti u izvještaju sam po sebi - potrebno je ili nazvati ponovo dizajner postavki("magični štapić") ili dodajte ovo polje ručno.

Hajde da to uradimo drugo način. Da biste to učinili, idite na karticu " Postavke", odaberite " Izvještaj"(na kraju krajeva, želimo dodati polje kao cjelinu u izvještaj), odaberite karticu na dnu" Odabrana polja"i povuci polje" Prosječni sadržaj kalorija"iz lijeve kolone na desno:

Ispalo je ovako:

Spremamo i generišemo izveštaj:

Polje se pojavilo i vidimo da su njegove vrijednosti vrijednosti polja "Kalorija". Odlično!

Da bismo to učinili, ponovo ćemo koristiti mehanizam koji nam je već poznat resurse(sažimanje). Idi na karticu " Resursi"i povuci polje" Prosječni sadržaj kalorija"iz lijeve kolone na desno:

Štaviše, u koloni " Izraz"odaberi" Prosjek (Prosjek kalorija)":

Spremamo i generišemo izveštaj:

Vidimo da je za grupe, odnosno za svaku boju, i za izvještaj u cjelini, prosječna vrijednost izračunata apsolutno ispravno. Ali oni su prisutni dodatni unosi za pojedinačne proizvode (ne grupe) koje želim ukloniti iz izvještaja.

Znate li zašto su se pojavili (vrijednosti ne po grupama)? Jer kada smo dodali polje " Prosječni sadržaj kalorija"u postavkama izvještaja, u drugom koraku smo odabrali ceo izveštaj i ovo novo polje je ušlo u element " Detaljno evidencije".

Ispravimo grešku. Da biste to učinili, vratite se na karticu " Postavke", odaberite " Detaljni unosi" prvo odozgo (korak 2), a zatim " Detaljni unosi"odozdo (korak 3), idite na bookmark" Odabrano polja" i vidjet ćemo u njegovom desnom stupcu element " Auto".

element " Auto" - ovo nije jedno polje. Ovo je nekoliko polja koja automatski padaju ovdje na osnovu postavki višeg nivoa.

Da vidite koja su to polja, kliknite na element " Auto" u pravu dugme i izaberite " Proširi":

element " Auto" prošireno na sljedeća polja:

A evo i našeg terena" Prosječni sadržaj kalorija"koji je došao sa tačke" Izvještaj" kada smo ga dovukli tamo. Samo uklonimo potvrdite okvir pored ovog polja da uklonite njegov izlaz.

U svetlu predstojećeg izdanja 8.2.14, pokušaću da opišem neke nove funkcije sistema za sastavljanje podataka.

Otvorite dijagram rasporeda podataka, po mogućnosti u vanjskom izvještaju, da olakšate uređivanje.

Dodamo skup podataka tipa upita i napišemo, bilo ručno ili pomoću dizajnera upita, jednostavan upit:

1. Postavite zahtjev u sistemu kontrole pristupa.

2. Podesite izračunata polja u sistemu kontrole pristupa

3. Konfigurirajte raspored podataka na kartici postavki

4. Pokrenite 1C Enterprise 8.2.14. Otvorite izvještaj. Formiramo, primamo.

Opis samih novih funkcija:

1. CurrentDate()

Vraća sistemski datum. Prilikom sastavljanja izgleda izgleda, u svim izrazima koji su prisutni u rasporedu, funkcija CurrentDate() se zamjenjuje vrijednošću trenutnog datuma.

2. COMPUTEEXPRESSION()

sintaksa:

IzračunajIzraz(,)

Opis:

Funkcija je dizajnirana da procijeni izraz u kontekstu nekog grupiranja.

Funkcija uzima u obzir odabir grupiranja, ali ne uzima u obzir hijerarhijske odabire.

Funkcija se ne može primijeniti na grupiranje u odabiru grupe te grupe. Na primjer, pri odabiru grupiranja po nomenklaturi, ne možete koristiti izraz CalculateExpression("Sum(SumTurnover)", "TotalTotal") > 1000. Ali takav izraz se može koristiti u hijerarhijskoj selekciji.

Ako završni zapis prethodi početnom, onda se smatra da ne postoje zapisi za izračunavanje detaljnih podataka i izračunavanje agregatnih funkcija.

Prilikom izračunavanja intervalnih izraza za ukupni zbroj (parametar Grupiranje je postavljen na GrandTotal), pretpostavlja se da ne postoje zapisi za izračunavanje detaljnih podataka i izračunavanje agregatnih funkcija.

Layout linker prilikom generiranja izraza funkcije CalculateExpression, ako izraz za naručivanje sadrži polja koja se ne mogu koristiti u grupiranju, zamjenjuje funkciju CalculateExpression on NULL.

Opcije

Vrsta: Linija. Izraz koji se vrednuje.

Vrsta: Linija. Sadrži naziv grupiranja u čijem kontekstu treba procijeniti izraz. Ako se kao ime grupisanja koristi prazan niz, proračun će se izvršiti u kontekstu trenutnog grupisanja. Ako se kao naziv grupe koristi string GeneralTotal, izračunavanje će se izvršiti u kontekstu ukupnog zbroja. U suprotnom, proračun će se izvršiti u kontekstu nadređene grupe s istim imenom.

na primjer:

Zbroj(Prodaja.Ukupan promet)/Izračunaj("Zbroj(Prodaja.Ukupan promet)", "Ukupno")

U ovom primjeru, rezultat će biti omjer zbroja po polju Sales.AmountTurnover grupisanje zapisa na zbir istog polja u cijelom izgledu;

Vrsta: Linija. Parametar može imati sljedeće vrijednosti:

· Ukupno ukupno— izraz će se izračunati za sve grupne zapise.

· Hijerarhija— izraz će se procijeniti za roditeljski hijerarhijski zapis, ako ga postoji, i za cijelo grupisanje, ako ne postoji roditeljski hijerarhijski zapis.

· Grupisanje— izraz će biti procijenjen za trenutni zapis grupnog grupisanja.

· GroupingNonResource— kada se izračunava funkcija za grupni zapis prema resursima, izraz će se izračunati za prvi grupni zapis originalnog grupiranja.

Prilikom izračunavanja funkcije IzračunajIzraz() sa značenjem GroupingNonResource za grupne zapise koji nisu grupirani prema resursima, funkcija se izračunava na isti način kao što bi se izračunala da je vrijednost parametra jednaka vrijednosti Grupisanje.

Kreator rasporeda sastava podataka, kada generira raspored sastava podataka prilikom izlaza polja resursa kojim se vrši grupisanje u izgled, postavlja izraz u izgled koji se izračunava pomoću funkcije IzračunajIzraz() , što označava parametar GroupingNonResource. Za druge resurse, uobičajeni izrazi resursa se stavljaju u grupiranje resursa.

Vrsta: Linija. Označava od kojeg zapisa treba početi fragment, u kojem se agregatne izrazne funkcije treba izračunati i iz kojeg zapisa treba dobiti vrijednosti polja izvan agregatnih funkcija. Vrijednost može biti jedna od sljedećih:

· Prvo

· Posljednji (Posljednji)

· Prethodno

· Sljedeće (Sljedeće)

· Current

· LimitingValue(granična vrijednost) LimitingValue

Vrsta: Linija. Označava na koji zapis treba nastaviti fragment, u kojem treba izračunati agregatne funkcije izraza. Vrijednost može biti jedna od sljedećih:

· Prvo. Potrebno je pribaviti prvi zapis grupisanja. Nakon riječi u zagradama možete odrediti izraz čiji će se rezultat koristiti kao pomak od početka grupiranja. Rezultirajuća vrijednost mora biti cijeli broj veći od nule. Na primjer, First(3) - primanje trećeg zapisa od početka grupisanja.

Ako je prvi zapis izvan grupisanja, onda se smatra da nema zapisa. Na primjer, ako postoje 3 zapisa, a želite da dobijete First(4), onda se smatra da nema zapisa.

· Posljednji (Posljednji). Morate dobiti posljednji zapis o grupisanju. Nakon riječi u zagradama možete odrediti izraz čiji će se rezultat koristiti kao pomak od kraja grupisanja. Rezultirajuća vrijednost mora biti cijeli broj veći od nule. Na primjer, Last(3) - primanje trećeg zapisa sa kraja grupe.

Ako je posljednji zapis izvan grupisanja, smatra se da nema zapisa. Na primjer, ako postoje 3 zapisa, a želite da dobijete Last(4), onda se smatra da nema zapisa.

· Prethodno. Morate dobiti prethodni zapis o grupisanju. Nakon riječi u zagradama, možete odrediti izraz čiji će se rezultat koristiti kao pomak u odnosu na trenutni grupni zapis. Na primjer, Previous(2) - dobijanje prethodnog iz prethodnog zapisa.

Ako prethodni zapis ide dalje od grupisanja (na primjer, za drugi zapis grupisanja morate dobiti Previous(3)), tada se dobija prvi zapis grupisanja.

Prilikom preuzimanja prethodnog zapisa za zbroj grupiranja, smatra se da je dobijen prvi zapis.

· Sljedeće (Sljedeće). Morate dobiti sljedeći zapis grupisanja. Nakon riječi u zagradama, možete odrediti izraz čiji će se rezultat koristiti kao pomak naprijed od trenutnog grupnog zapisa. Na primjer, Next(2) - dobivanje sljedećeg iz sljedećeg zapisa.

Ako sljedeći zapis ide dalje od grupiranja, smatra se da zapisa nema. Na primjer, ako postoje 3 unosa, a treći unos prima Next() , tada se smatra da nema unosa.

Kada se primi sljedeći zapis za ukupno grupisanje, smatra se da zapisa nema.

· Current. Morate dobiti trenutni rekord.

Prilikom preuzimanja za zbir grupiranja, dobiva se prvi zapis.

· LimitingValue(granična vrijednost). Potreba da se dobije zapis po navedenoj vrijednosti. Posle reči LimitingValue u zagradama treba da naznačite izraz sa čijom vrednošću želite da pokrenete fragment, prvo polje za redosled.

Prvi zapis čija je vrijednost polja za redoslijed veća ili jednaka navedenoj vrijednosti će biti vraćena kao zapis. Na primjer, ako se polje Period koristi kao polje za naručivanje, a ima vrijednosti 01.01.2010., 01.02.2010., 03.01.2010., a želite da dobijete LimitingValue(DatumVrijeme(2010, 1, 15)), tada će biti primljen zapisnik sa datumom 02.01.2010.

Vrsta: Linija. Navodi izraze, odvojene zarezima, koji opisuju pravila uređenja. Ako nije navedeno, tada se poredak izvodi na isti način kao i za grupisanje za koje se izraz procjenjuje. Nakon svakog izraza možete odrediti ključnu riječ Starost(za naručivanje uzlaznim redoslijedom), Silazno(za redoslijed u opadajućem redoslijedu) i Auto-order(za redoslijed referentnih polja prema poljima po kojima želite poredati referentni objekt). Riječ Auto-order može se koristiti kao sa riječju Starost, tako i sa riječju Silazno.

Vrsta: Linija. Isto kao parametar Sortiranje. Koristi se za organiziranje hijerarhijskih zapisa. Ako nije navedeno, graditelj izgleda generira redoslijed prema redoslijedu navedenom u parametru Sortiranje.

Vrsta: Linija. Određuje pravilo za određivanje prethodnog ili sljedećeg zapisa u slučaju da postoji nekoliko zapisa s istom vrijednošću:

· Odvojeno označava da se niz uređenih zapisa koristi za određivanje prethodnog i sljedećeg zapisa. Zadana vrijednost.

· Zajedno označava da su prethodni i sljedeći zapisi određeni na osnovu vrijednosti izraza za narudžbu.

Na primjer, ako je rezultirajući niz poredan po datumu:

Datum Puno ime Značenje
1 1. januara 2001

Ivanov M.

10
2 2. januara 2001 Petrov S. 20
3 3. januara 2001 Sidorov R. 30
4 4. januara 2001 Petrov S. 40

Odvojeno, To:

§ prethodni unos za unos 3 će biti unos 2.

Current, Current(prema tome, parametri Počni I Kraj), tada će se za zapis 2 ovaj fragment sastojati od jednog zapisa 2. Izraz će biti jednak 20.

Ako je vrijednost parametra Zajedno, To:

§ prethodni unos za unos 3 će biti unos 1.

§ ako je fragment proračuna definisan kao Current, Current(prema tome, parametri Počni I Kraj), tada će se za zapis 2 ovaj fragment sastojati od zapisa 2 i 3. Izraz CalculateExpression("Sum(Value)", Current, Current) biće jednako 50.

Kada specificirate vrijednost parametra jednaku Zajedno, u parametrima Počni I Kraj ne možete specificirati pomak za pozicije Prvi, posljednji, prethodni, sljedeći.

CalculateExpression("Sum(SumTurnover)", "Prvi", "Trenutni")

Ako želite da dobijete vrednost grupisanja u prethodnom redu, možete koristiti sledeći izraz:

CalculateExpression("Ocijena", "Prethodno")

Lista novo funkcije:

CalculateExpressionWithGroupArray(,) -

Funkcija vraća niz, čiji svaki element sadrži rezultat evaluacije izraza za grupisanje prema navedenom polju.

CalculateExpressionWithGroupValueTable(,) -

Funkcija vraća tablicu vrijednosti, čiji svaki red sadrži rezultat evaluacije izraza za grupisanje prema navedenom polju

ValueFilled() - Vraća True ako je vrijednost drugačija od zadane vrijednosti ovog tipa, osim NULL, osim prazne reference, osim Undefined. Booleove vrijednosti se provjeravaju za NULL vrijednosti. Stringovi se provjeravaju na odsustvo znakova koji nisu razmak

Format(, ) - Primite formatirani niz proslijeđene vrijednosti. Niz formata je postavljen u skladu sa nizom formata sistema 1C:Enterprise.

Podniz(, , ) - Ova funkcija je dizajnirana da izdvoji podniz iz niza.

Dužina linije() - Funkcija je dizajnirana da odredi dužinu niza. Parametar je string izraz

Linija() - Ako je niz proslijeđen kao parametar, funkcija vraća string koji sadrži string reprezentacije svih elemenata niza, odvojene znakovima ";". Ako je tabela vrijednosti proslijeđena kao parametar, funkcija vraća niz koji sadrži nizove svih redova tablice vrijednosti, s prikazima ćelija svakog reda odvojenim znakovima ";" i redovima novim redom karakter. Ako je string reprezentacija elementa prazna, tada se prikazuje string umjesto njegovog prikaza.

Detaljnije smo ispitali postavke izvještaja implementiranih na osnovu sistema kontrole pristupa. Pogledajmo sada suptilnije i detaljnije postavke za opcije izvještaja. Prozor za “napredne” postavke opcije izvještaja se poziva naredbom “Više” - “Ostalo” – “Promijeni opciju izvještaja”.

Prozor za promjenu verzije izvještaja podijeljen je u dva dijela:

1. Struktura izvještaja.

2. Postavke izvještaja.


Odjeljak strukture opcije izvještaja sličan je kartici „Struktura“ u standardnim postavkama izvještaja. Svrha i konfiguracija grupisanja detaljno su obrađeni u prvom dijelu članka.

Tablica strukture varijante izvještaja, pored stvarne kolone sa grupiranjima, sadrži nekoliko dodatnih kolona:

Odeljak podešavanja opcija izveštaja daje korisniku široke mogućnosti da konfiguriše izveštaj tako da odgovara njihovim potrebama. Gotovo se u potpunosti poklapa sa standardnim postavkama izvještaja o kojima se govori u 1. dijelu. Pogledajmo sve kartice ovog odjeljka i uočimo razlike.

Odjeljak postavki sastoji se od sljedećih kartica:

1. Parametri. Sadrži ACS parametre dostupne korisniku.

SKD parametar je vrijednost koja se koristi za dobivanje podataka izvještaja. Ovo može biti vrijednost uvjeta za odabir ili provjeru podataka, kao i pomoćna vrijednost.


Tabela parametara je predstavljena u formatu “Parametar” - “Vrijednost”. Ako je potrebno, možete promijeniti vrijednosti parametara. Klikom na dugme „Svojstva stavke prilagođenih postavki“ otvaraju se prilagođena podešavanja elementa.


U ovom prozoru možete odabrati hoće li element biti uključen u korisnička podešavanja (odnosno vidljiv korisniku prilikom postavljanja izvještaja), postaviti način prezentacije i uređivanja elementa (brzi pristup u zaglavlju izvještaja, normalan u postavke izvještaja i nedostupan).

Svojstva stavke prilagođenih postavki također imaju polja koja se mogu grupirati, margine, odabire i elemente uslovnog izgleda.

2. Prilagođena polja. Sadrži polja koja generira sam korisnik na osnovu podataka odabranih u izvještaju.


Korisnik može dodati dvije vrste polja:

  • Novo polje za odabir...
  • Novo polje izraza...

Polja za odabir vam omogućavaju da izračunate vrijednost na osnovu datog uslova. Prozor za uređivanje polja za izbor sadrži naslov polja i tabelu u kojoj su specificirani izbor, vrijednost i prikaz polja. Odabir je uvjet u zavisnosti od kojeg će se željena vrijednost zamijeniti.


Na primjer, izračunajmo procjenu broja prodaja. Pretpostavićemo da ako se proda manje od 10 jedinica proizvoda, malo smo prodali, a ako je više od 10 prodali smo mnogo. Da bismo to uradili, postavićemo 2 vrednosti za izračunato polje: prva će biti sa izborom „Broj robe manji od ili jednaka „10”, druga sa izborom „Broj robe veći od „10 ””.

Polja izraza vam omogućavaju da izračunate vrijednost pomoću proizvoljnih algoritama. Mogu koristiti funkcije jezika upita i ugrađenog 1C programskog jezika. Prozor za uređivanje polja izraza sadrži dva polja za izraze detaljnih i zbirnih zapisa. Ukupni zapisi su grupacije konfigurisane u oblasti „Struktura izveštaja“ i moraju koristiti agregatne funkcije („Zbroj“, „Minimum“, „Maksimalni“, „Količina“).

Na primjer, izračunajmo prosječan postotak popusta. Prosječni postotak popusta se izračunava pomoću formule: [Iznos prodaje bez popusta] - [Iznos prodaje sa popustom] / [Iznos prodaje bez popusta]. Važno je zapamtiti da iznos prodaje bez popusta može biti nula, pa koristimo SELECT operator za provjeru. Dobijamo sljedeće izraze:

· Za detaljne unose:

Izbor

Kada je [Iznos prodaje bez popusta] = 0

Zatim 0

Inače [Iznos prodaje bez popusta] - [Iznos prodaje sa popustom] / [Iznos prodaje bez popusta]

Kraj

· Za sažete zapise:

Izbor

Kada je iznos([Iznos prodaje bez popusta]) = 0

Zatim 0

Inače Suma([Iznos prodaje bez popusta]) - Suma([Iznos prodaje sa popustom]) / Suma([Iznos prodaje bez popusta])

Kraj

Kao što je ranije spomenuto, u izražavanju ukupnih zapisa koristimo agregatnu funkciju “Sum”.

3. Polja koja se mogu grupirati. Sadrži polja po kojima će se grupirati rezultati varijante izvještaja. Grupisana polja se konfigurišu zasebno za svako grupisanje, ali možete postaviti opšta grupisana polja za opciju izveštaja ako izaberete koren „Izveštaj“ u stablu strukture. Možete dodati polje iz rezultata izvještaja, prilagođeno polje ili odabrati automatsko polje, tada će sistem automatski odabrati polja. Ova kartica vam takođe omogućava da promenite redosled grupisanih polja.


4. Polja. Sadrži polja koja će biti ispisana kao rezultat varijante izvještaja. Polja se konfigurišu zasebno za svako grupisanje, ali možete postaviti zajednička polja za opciju izvještaja ako odaberete korijenski “Izvještaj” u stablu strukture. Možete dodati polje iz rezultata izvještaja, prilagođeno polje ili odabrati automatsko polje, tada će sistem automatski odabrati polja. Ova kartica vam takođe omogućava da promenite redosled polja.

Polja se mogu grupirati da bi logički istakli bilo koji dio izvještaja ili da bi se specificirao poseban raspored kolona. Kada dodajete grupu, stupac "Lokacija" postaje aktivan i omogućava vam da odaberete jednu od opcija lokacije:

  • Auto - sistem automatski postavlja polja;
  • Horizontalno - polja su pozicionirana horizontalno;
  • Vertikalno - polja su raspoređena okomito;
  • U posebnoj koloni - polja se nalaze u različitim kolonama;
  • Zajedno - polja se nalaze u jednoj koloni.


5. Odabir. Sadrži odabire korištene u varijanti izvještaja. Postavljanje odabira je detaljno razmotreno u prvom dijelu ovog članka. Filteri se konfigurišu zasebno za svako grupisanje, ali možete postaviti opće filtere za opciju izvještaja ako odaberete korijenski “Izvještaj” u stablu strukture.


6. Sortiranje. Sadrži polja za sortiranje koja se koriste u varijanti izvještaja. Postavljanje polja za sortiranje detaljno je razmotreno u prvom dijelu ovog članka. Sortiranje se konfiguriše zasebno za svako grupisanje, ali možete postaviti opšta polja za sortiranje za opciju izveštaja ako izaberete osnovni „Izveštaj“ u stablu strukture.


7. Uslovna registracija. Sadrži uslovne elemente dizajna koji se koriste u varijanti izvještaja. Postavljanje uvjetnog izgleda detaljno je razmotreno u 1. dijelu ovog članka. Uslovni izgled se konfiguriše zasebno za svako grupisanje, ali možete postaviti opšte elemente uslovnog izgleda za opciju izveštaja ako izaberete osnovni „Izveštaj“ u stablu strukture.


8. Dodatne postavke. Sadrži dodatne postavke dizajna izvještaja. Omogućava vam da odaberete opći izgled izvještaja, lokaciju polja, grupiranja, detalja, resursa, totala, postavite postavke grafikona, kontrolišete prikaz naslova, parametara i odabira, odredite poziciju resursa i popravite zaglavlje i grupiranje kolone verzije izvještaja.


U zaključku, želio bih napomenuti da se postavke izvještaja ne mogu samo sačuvati kao opcija izvještaja, već i prenijeti u datoteku (meni “Više” - “Sačuvaj postavke”). Za preuzimanje morate odabrati “Učitaj postavke” i odabrati sačuvani fajl. Tako možemo prenijeti postavke varijante izvještaja između različitih baza podataka koje imaju istu konfiguraciju.


Na osnovu ovoga možemo rezimirati da korisnik može ne samo samostalno prilagoditi izvještaj svojim potrebama, već i sačuvati svoja podešavanja i koristiti ih u budućnosti ako je potrebno.

Jedan od najprikladnijih i najjedinstvenijih razvojnih alata u 1C je sistem sastava podataka (DCS). Malo informacionih sistema dozvoljava programerima da kreiraju izveštaje bez pisanja koda. Ovaj mehanizam je razvijen da pojednostavi i ubrza razvoj obrazaca za izvještavanje i pruži više mogućnosti korisnicima u radu sa izlaznim podacima. Potonje je vrlo visoko cijenjeno od strane naprednih korisnika, koji zahvaljujući tome mogu samostalno prilagoditi izvještaj svojim potrebama, bez čekanja na radnje programera.

Kreiranje izvještaja u 1C putem SKD-a

Proces izrade izvještaja pomoću ACS-a može se podijeliti u sljedeće faze:

  1. Kreiranje zahtjeva. Zahtjev možete napisati ručno ili bez koda koristeći pogodan interfejs;
  2. Postavljanje izvještaja. Odaberite polja, ukupne vrijednosti, grupisanja, parametre, dizajn izvještaja;
  3. Nakon ovoga, sve što treba da uradimo je da povežemo rezultirajući izveštaj sa konfiguracijom na bilo koji raspoloživi način.

Uprkos mogućnosti korisnika da prilagode izvještaje o sistemu kontrole pristupa, oni moraju biti kreirani putem konfiguratora.

Pogledajmo primjer kreiranja eksternog izvještaja o sistemu kontrole pristupa:


Sada idemo na 1C, otvaramo naš izvještaj kako bismo bili sigurni da su poduzete radnje ispravne. Svi podaci se reflektuju, grupe se mogu sažimati i proširivati. Kao što vidite, sistem kontrole pristupa vam omogućava da primate potpune izvještaje bez pisanja koda, s izuzetkom nestandardnih zahtjeva. S obzirom da većina izvještaja ima sličnu strukturu, poznavanje sistema kontrole pristupa značajno će smanjiti vrijeme za razvoj ovih objekata.

Ovaj mehanizam je postao veoma popularan zbog svoje podrške za opsežne mogućnosti izvještavanja. Štoviše, mogu ih koristiti ne samo programeri, već i obični korisnici.

ACS mogućnosti

Postoje situacije kada smo napravili izvještaj, a onda dođe korisnik i zatraži malu izmjenu. Na primjer, umjesto naziva proizvoda, prikažite brojeve artikala. SKD omogućava korisnicima da samostalno izvrše takve modifikacije koristeći dugme “Više” - “Promeni opciju...”.


Prozor koji se otvara je sličan prozoru postavki u izvještaju u konfiguratoru, a ima i slične funkcije. Da bi riješio zadatak, korisnik mora otići na karticu “Polja” i promijeniti polje “Nomenklatura”. Ovo polje za uređivanje otvara se dvostrukim klikom i dugme “Odaberi...” postaje dostupno.


Prozor koji se otvori daje nam mogućnost da odaberemo bilo koju vrijednost koja će se pojaviti u polju „Nomenklatura“. Neka polja imaju znak plus na lijevoj strani - programer je postavio veze u ova polja, što znači da možemo vidjeti njihove detalje. Otvaramo “Nomenklaturu” i vidimo članak koji nam je potreban. Odaberite ga i odaberite.


Prozor za promjenu opcija izvještaja sadrži mnoge korisne funkcije sistema sastavljanja podataka. Na primjer, korisnik može samostalno promijeniti redoslijed grupiranja, dodati odabir ili primijeniti uvjetni dizajn. Završavamo uređivanje i generiramo izvještaj - kao što vidite, cijeli asortiman proizvoda je sada prikazan u obliku članaka.


Mehanizam SKD 1C:Enterprise 8.3 također ima proširenu funkcionalnost za programere. Prilikom izrade izvještaja koristili smo samo 2 kartice - “Skupovi podataka” i “Postavke”, ali ih u ACS-u ima mnogo više. Da biste koristili sve funkcije sistema za sastavljanje podataka, morate razumjeti čemu služi svaka od kartica:

  1. Skupovi podataka – ovdje su navedeni svi upiti uključeni u generiranje izvještaja;
  2. Veze skupa podataka – koriste se za izgradnju veza između različitih upita sa prve kartice;
  3. Izračunata polja – lista dodatih polja koja nisu iz upita. Najčešće se koristi u slučajevima kada, na osnovu vrijednosti nekoliko polja, trebate dobiti 1 vrijednost iz zahtjeva;
  4. Resursi. U 1C, ovo je naziv za polja za koja trebate znati rezultate. Resursi podržavaju različite aritmetičke operacije - zbir, količina, maksimum i druge;
  5. Opcije. Koriste se ako je za generiranje izvještaja potrebno da korisnik unese određene podatke - na primjer datum, podjele ili nomenklaturu;
  6. Izgledi. Dizajniran za slučajeve u kojima korisnici žele vidjeti jedinstveno dizajniran izvještaj. Možete kreirati posebno mjesto za potpise ili novi gornji dio izvještaja - sve to možete učiniti ovdje;
  7. Ugniježđeni dijagrami. Potrebni su kada vaš izvještaj mora sadržavati podatke iz drugih izvještaja;
  8. Postavke. Odjeljak deklarira polja za prikaz, grupisanje i konfiguriše izgled izvještaja.


Broj mogućnosti koje programeri uključuju u ACS mehanizam je velik, ali mnoge od njih se koriste izuzetno rijetko. Čak i iskusni 1C programeri možda neće koristiti neke funkcije nakon godina rada. Za uspješan rad u sistemu kontrole pristupa dovoljno je poznavati osnovne koncepte i često korištena podešavanja. U rijetkim slučajevima, dokumentacija će priskočiti u pomoć.

U svetlu predstojećeg izdanja 8.2.14, pokušaću da opišem neke nove funkcije sistema za sastavljanje podataka.

Otvorite dijagram rasporeda podataka, po mogućnosti u vanjskom izvještaju, da olakšate uređivanje.

Dodamo skup podataka tipa upita i napišemo, bilo ručno ili pomoću dizajnera upita, jednostavan upit:

1. Postavite zahtjev u sistemu kontrole pristupa.

2. Podesite izračunata polja u sistemu kontrole pristupa

3. Konfigurirajte raspored podataka na kartici postavki

4. Pokrenite 1C Enterprise 8.2.14. Otvorite izvještaj. Formiramo, primamo.

Opis samih novih funkcija:

1. CurrentDate()

Vraća sistemski datum. Prilikom sastavljanja izgleda izgleda, u svim izrazima koji su prisutni u rasporedu, funkcija CurrentDate() se zamjenjuje vrijednošću trenutnog datuma.

2. COMPUTEEXPRESSION()

sintaksa:

IzračunajIzraz(<Выражение>, <Группировка>, <ОбластьВычисления>, <Начало>, <Конец>, <Сортировка>, <ИерархическаяСортировка>, <ОбработкаОдинаковыхЗначенийПорядка>)

Opis:

Funkcija je dizajnirana da procijeni izraz u kontekstu nekog grupiranja.

Funkcija uzima u obzir odabir grupiranja, ali ne uzima u obzir hijerarhijske odabire.

Funkcija se ne može primijeniti na grupiranje u odabiru grupe te grupe. Na primjer, u odabiru grupe Nomenklatura, ne možete koristiti izraz CalculateExpression("Sum(SumTurnover)", "TotalTotal") > 1000. Ali takav izraz se može koristiti u hijerarhijskom odabiru.

Ako završni zapis prethodi početnom, onda se smatra da ne postoje zapisi za izračunavanje detaljnih podataka i izračunavanje agregatnih funkcija.

Prilikom izračunavanja intervalnih izraza za ukupni zbroj (parametar Grupiranje je postavljen na GrandTotal), pretpostavlja se da ne postoje zapisi za izračunavanje detaljnih podataka i izračunavanje agregatnih funkcija.

Prilikom generiranja izraza za funkciju CalculateExpression, sastavljač izgleda, ako izraz za naručivanje sadrži polja koja se ne mogu koristiti u grupisanju, zamjenjuje funkciju CalculateExpression sa NULL.

Opcije

<Выражение>

Vrsta: String. Izraz koji se vrednuje.

<Группировка>

Vrsta: String. Sadrži naziv grupiranja u čijem kontekstu treba procijeniti izraz. Ako se kao ime grupisanja koristi prazan niz, proračun će se izvršiti u kontekstu trenutnog grupisanja. Ako se kao naziv grupe koristi string GrandTotal, izračunavanje će se izvršiti u kontekstu ukupnog zbroja. U suprotnom, proračun će se izvršiti u kontekstu nadređene grupe s istim imenom.

na primjer:

Zbroj (Prodaja.Ukupan promet)/Izračunaj(“Zbroj(Prodaja.Ukupan promet)”, “Ukupno”)

U ovom primjeru, rezultat će biti omjer iznosa za polje Sales.SumTurnover zapisa grupisanja prema iznosu istog polja u cijelom izgledu;

<ОбластьВычисления>

Vrsta: String. Parametar može imati sljedeće vrijednosti:

  • GeneralTotal - izraz će se izračunati za sve grupne zapise.
  • Hijerarhija - Izraz će biti procijenjen za roditeljski hijerarhijski zapis ako ga postoji, a za cijelo grupisanje ako ne postoji roditeljski hijerarhijski zapis.
  • Grupisanje - izraz će biti procijenjen za trenutni zapis grupisanja.
  • Grupiranje bez resursa - kada se izračunava funkcija za grupni zapis po resursu, izraz će se procijeniti za prvi grupni zapis originalnog grupiranja.

Prilikom izračunavanja funkcije IzračunajIzraz() sa vrijednošću Non-Resource Grouping za grupne zapise koji nisu grupiranje resursa, funkcija se izračunava na isti način kao što bi se izračunala da je vrijednost parametra jednaka vrijednosti grupiranja.

Kreator rasporeda sastava podataka, kada generira raspored sastava podataka prilikom izlaza polja resursa kojim se vrši grupisanje u izgled, postavlja izraz u izgled koji se izračunava pomoću funkcije IzračunajIzraz(), što označava parametar Grupiranje bez resursa. Za druge resurse, uobičajeni izrazi resursa se stavljaju u grupiranje resursa.

<Начало>

Vrsta: String. Označava od kojeg zapisa treba početi fragment, u kojem se agregatne izrazne funkcije treba izračunati i iz kojeg zapisa treba dobiti vrijednosti polja izvan agregatnih funkcija. Vrijednost može biti jedna od sljedećih:

<Конец>

Vrsta: String. Označava na koji zapis treba nastaviti fragment, u kojem treba izračunati agregatne funkcije izraza. Vrijednost može biti jedna od sljedećih:

  • Prvo. Potrebno je pribaviti prvi zapis grupisanja. Nakon riječi u zagradama možete odrediti izraz čiji će se rezultat koristiti kao pomak od početka grupiranja. Rezultirajuća vrijednost mora biti cijeli broj veći od nule. Na primjer, First(3) – primanje trećeg zapisa od početka grupisanja.

Ako je prvi zapis izvan grupisanja, onda se smatra da nema zapisa. Na primjer, ako postoje 3 zapisa, a želite da dobijete First(4), onda se smatra da nema zapisa.

  • Last. Morate dobiti posljednji zapis o grupisanju. Nakon riječi u zagradama možete odrediti izraz čiji će se rezultat koristiti kao pomak od kraja grupisanja. Rezultirajuća vrijednost mora biti cijeli broj veći od nule. Na primjer, Last(3) – primanje trećeg zapisa sa kraja grupe.

Ako je posljednji zapis izvan grupisanja, smatra se da nema zapisa. Na primjer, ako postoje 3 zapisa, a želite da dobijete Last(4), onda se smatra da nema zapisa.

  • Prethodno. Morate dobiti prethodni zapis o grupisanju. Nakon riječi u zagradama, možete odrediti izraz čiji će se rezultat koristiti kao pomak u odnosu na trenutni grupni zapis. Na primjer, Prethodno(2) – dobijanje prethodnog iz prethodnog zapisa.

Ako prethodni zapis ide dalje od grupisanja (na primjer, za drugi zapis grupisanja morate dobiti Previous(3), tada se dobija prvi zapis grupisanja.

Prilikom preuzimanja prethodnog zapisa za zbroj grupiranja, smatra se da je dobijen prvi zapis.

  • Sledeći. Morate dobiti sljedeći zapis grupisanja. Nakon riječi u zagradama, možete odrediti izraz čiji će se rezultat koristiti kao pomak naprijed od trenutnog grupnog zapisa. Na primjer, Next(2) – dobivanje sljedećeg iz sljedećeg zapisa.

Ako sljedeći zapis ide dalje od grupiranja, smatra se da zapisa nema. Na primjer, ako postoje 3 zapisa i Next() je primljen za treći zapis, onda se smatra da nema zapisa.

Kada se primi sljedeći zapis za ukupno grupisanje, smatra se da zapisa nema.

  • Current. Morate dobiti trenutni rekord.

Prilikom preuzimanja za zbir grupiranja, dobiva se prvi zapis.

  • BoundaryValue. Potreba da se dobije zapis po navedenoj vrijednosti. Nakon riječi LimitingValues ​​u zagradama, morate naznačiti izraz s čijom vrijednošću želite započeti fragment, prvo polje za redoslijed.

Prvi zapis čija je vrijednost polja za redoslijed veća ili jednaka navedenoj vrijednosti će biti vraćena kao zapis. Na primjer, ako se polje Period koristi kao polje za naručivanje i ima vrijednosti 01/01/2010, 02/01/2010, 03/01/2010 i želite da dobijete LimitingValue(DateTime(2010 , 1, 15)), tada će se dobiti zapisnik sa datumom 02/01.

<Сортировка>

Vrsta: String. Navodi izraze, odvojene zarezima, koji opisuju pravila uređenja. Ako nije navedeno, tada se poredak izvodi na isti način kao i za grupisanje za koje se izraz procjenjuje. Nakon svakog izraza, možete odrediti ključne riječi Uzlazno (za redoslijed u rastućem redoslijedu), Descending (za redoslijed u opadajućem redoslijedu) i AutoOrder (za redoslijed referentnih polja prema poljima po kojima želite poredati referencirani objekt). Riječ Auto Order može se koristiti i sa riječju Uzlazno i ​​Opadajuće.

<ИерархическаяСортировка>

Vrsta: String. Isto kao i opcija Sortiraj. Koristi se za organiziranje hijerarhijskih zapisa. Ako nije navedeno, sastavljač izgleda generira redoslijed prema redoslijedu navedenom u parametru Sort.

<ОбработкаОдинаковыхЗначенийПорядка>

Vrsta: String. Određuje pravilo za određivanje prethodnog ili sljedećeg zapisa u slučaju da postoji nekoliko zapisa s istom vrijednošću:

  • Odvojeno znači da se niz uređenih zapisa koristi za određivanje prethodnog i sljedećeg zapisa. Zadana vrijednost.
  • Zajedno znači da se prethodni i sljedeći zapis određuju na osnovu vrijednosti izraza za narudžbu.

Na primjer, ako je rezultirajući niz poredan po datumu:

Datum Puno ime Značenje
1 1. januara 2001 Ivanov M. 10
2 2. januara 2001 Petrov S. 20
3 3. januara 2001 Sidorov R. 30
4 4. januara 2001 Petrov S. 40

Ako je vrijednost parametra odvojeno, tada:

§ prethodni unos za unos 3 će biti unos 2.

§ ako je fragment proračuna definisan kao Current, Current (respektivno, parametri Start i End), tada će se za zapis 2 ovaj fragment sastojati od jednog zapisa 2. Izraz CalculateExpression(“Sum (Value)”, Current, Current) će biti jednako 20.

Ako je vrijednost parametra Zajedno, tada:

§ prethodni unos za unos 3 će biti unos 1.

§ ako je fragment proračuna definisan kao Current, Current (respektivno, parametri Početak i Kraj), tada će se za zapis 2 ovaj fragment sastojati od zapisa 2 i 3. Izraz CalculateExpression(“Sum (Value)”, Current, Current) biće jednako 50.

Kada specificirate vrijednost parametra jednaku Zajedno, u parametrima Start i End ne možete specificirati pomak za pozicije First, Last, Previous, Next.

CalculateExpression("Sum(SumTurnover)", "Prvi", "Trenutni")

Ako želite da dobijete vrednost grupisanja u prethodnom redu, možete koristiti sledeći izraz:

CalculateExpression(“Ocijeni”, “Prethodno”)

Lista novo funkcije:

CalculateExpressionWithGroupArray(<Выражение>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

Funkcija vraća niz, čiji svaki element sadrži rezultat evaluacije izraza za grupisanje prema navedenom polju.

CalculateExpressionWithGroupValueTable(<Выражения>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

Funkcija vraća tablicu vrijednosti, čiji svaki red sadrži rezultat evaluacije izraza za grupisanje prema navedenom polju

ValueFilled(<Выражение>) – Vraća True ako je vrijednost drugačija od zadane vrijednosti ovog tipa, osim NULL, osim prazne reference, osim Undefined. Booleove vrijednosti se provjeravaju na NULL. Stringovi se provjeravaju na odsustvo znakova koji nisu razmak

Format(<Выражение>, <Форматная строка>) – Primite formatirani niz proslijeđene vrijednosti. Niz formata je postavljen u skladu sa nizom formata sistema 1C:Enterprise.

Podniz(<Выражение>, <Начальные символ>, <ДлинаПодстроки>) – Ova funkcija je dizajnirana da izdvoji podniz iz niza.

Dužina linije(<Выражение>) – Funkcija je dizajnirana da odredi dužinu niza. Parametar - string izraz

Linija(<Выражение>) – Ako je niz proslijeđen kao parametar, funkcija vraća string koji sadrži nizove reprezentacije svih elemenata niza, odvojene znakovima “; “. Ako je tablica vrijednosti proslijeđena kao parametar, funkcija vraća string koji sadrži nizove reprezentacija svih redova tablice vrijednosti, s prikazom ćelija svakog reda odvojenim znakovima “; “, a linije su simbol za pomicanje reda. Ako bilo koji element ima praznu reprezentaciju niza, tada se string prikazuje umjesto njegovog prikaza<Пустое значение>.

Recenzije