1s SKD ne prikazuje ukupne rezultate. Primjeri korištenja scd funkcije - izračunajte izraz. Kreiranje postavki prezentacije izvještaja

Prilikom kreiranja izvještaja postoji niz zadataka koji, kada se direktno riješe, često dovode do pisanja teški upiti ili upiti u petlji ili ručni izlaz podataka u tablicu.

Evo primjera takvih zadataka:

  • Dobivanje povećanja obima prodaje po mjesecu, na primjer, za izlaz u obliku grafikona
  • Obračun razlike u prodaji tekućeg i prethodnog perioda - za sve linije izvještaja
  • Poređenje obima prodaje svakog menadžera sa referentnom vrednošću, koja se izračunava tokom generisanja ovog izveštaja
  • Dobivanje kumulativnih zbroja horizontalno i vertikalno u unakrsnim karticama

A svi ovi problemi se rješavaju jednostavnim korištenjem ACS funkcija - bukvalno za par minuta. Bez upita u petlji i krivog koda.

Danas ćemo pogledati upotrebu nekih ACS funkcija na konkretnim primjerima.

Video 1. Kako dobiti iznos u izvještaju kao zbir?

Slični problemi se često susreću u praksi. Najtipičniji primer je da izveštaj treba da prikazuje prodaju po periodima; potrebno je da znate ne samo iznos prodaje za tekući mesec, već i kumulativni ukupan iznos od početka generisanja izveštaja.

Zapravo, ovaj problem se može riješiti pomoću upita (bez ACS funkcija), ali postoje 2 problema:

  • Sam po sebi, takav zahtjev će biti složen - trebat će vremena da se razvije i otkloni greške.
  • Takav zahtjev će ozbiljno opteretiti sistem - a što više podataka, to će raditi sporije.

Koristeći ACS funkcije, ovaj zadatak se rješava jednom linijom koda, a izvještaj će raditi što je brže moguće, pogledajte:

Video 2. Kako dobiti vrijednost iz prethodnog reda izvještaja?

Ova funkcionalnost može biti korisna kada je potrebno pratiti trend određenog resursa - postoji smanjenje ili povećanje u odnosu na prethodno stanje, plus mora se izračunati delta.

Evo nekoliko primjera gdje bi ovo moglo biti korisno:

  • Analiza potraživanja po danima - izračunavamo trend i apsolutno povećanje ili smanjenje duga u odnosu na prethodni period
  • Analiza deviznih kurseva i procena dobiti ili gubitka od kursnih razlika - potrebno je da dobijete deltu između sadašnjeg i prethodnog kursa i pomnožite sa stanjem sredstava u valuti.

Takvi problemi su također radno intenzivni za rješavanje pomoću upita, ali u ACS-u se to radi u jednom redu:

Video 3. Kako uporediti ukupni iznos za trenutni red sa referentnom vrijednošću?

Primjer kada ova funkcionalnost može biti korisna:

  • Sistem vodi evidenciju o prodaji od strane menadžera
  • Šef odjela vodi ličnu prodaju zajedno sa menadžerima
  • Potrebno je prikazati izvještaj o prodaji od strane menadžera
  • Izveštaj takođe treba da prikaže deltu u odnosu na obim prodaje šefa odeljenja.

Odnosno, govorimo o potrebi da se uporedi svaka linija prodaje menadžera sa prodajom šefa odjela.

I ovi podaci se mogu, na primjer, koristiti za izračunavanje bonusa.

I opet, uz pomoć SKD-a, ovaj problem je riješen u jednom redu:

Video 4. Dobivanje kumulativnog ukupnog iznosa u unakrsnoj kartici

U izvještaju s unakrsnim karticama, tekući zbroj se može izračunati i vertikalno (po redovima) i horizontalno (po kolonama).

Pokazat ćemo kako kontrolirati smjer izračunavanja ukupnih vrijednosti koristeći jedan ACS parametar:

Video 5. Prikaz tabelarnog dijela u posebnoj ćeliji izvještaja

Recimo da trebate razviti izvještaj koji prikazuje informacije o dokumentima. U tom slučaju, posebna ćelija mora sadržavati tabelarni dio dokumenta.

Da biste riješili sličan problem pomoću običnog upita, morat ćete ručno napisati rezultat u dokument proračunske tablice.

Pogledajmo primjer:

Nekoliko jedinica robe se isporučuje klijentu uz različite popuste. Trebate prikazati vrijednosti popusta za svaki proizvod u izvještaju i izračunati prosječan popust. Napravimo izvještaj o sistemu kontrole pristupa.
Za sva polja za koja trebamo prikazati ukupne iznose, na kartici „Resursi“ ćemo postaviti izraz (metod) za njihovo izračunavanje. Za polje "Popust" postavite metodu obračuna kao "Prosjek".

Iznosimo izvještaj:

Kao što vidite, zbir za polje „Popust“ se izračunava kao aritmetički prosjek vrijednosti polja, tj. zbir svih vrijednosti podijeljen sa brojem vrijednosti. Ali zato Budući da su količine isporučene robe s različitim popustima različite, prosječni popust se može izračunati na drugi način: na primjer, kao omjer ukupne količine isporučene robe, uzimajući u obzir popust, prema ukupnoj količini isporučene robe. Ali ovdje se postavlja pitanje: ako možete napisati formulu za izračunavanje vrijednosti polja detaljnih zapisa u ACS-u, onda se zbrojevi automatski izračunavaju prema izrazu navedenom na kartici "Resursi", a tamo, kao vidjeli smo ranije, “Prosjek” se izračunava kao aritmetička sredina prikazanih vrijednosti, kao U ovom slučaju, da li da izračunam ukupan iznos u ovoj koloni koristeći svoju vlastitu formulu?
Zapravo nije teško. Da bismo to učinili, prilagodit ćemo naš izvještaj tako što ćemo mu dodati potrebna polja koja će učestvovati u obračunu, u našem slučaju to su “AmountWithDiscount” i “AmountAtPrice”.

Kako bismo „naučili“ ACS da prikaže naše rezultate, poduzimamo sljedeće korake:
1. na kartici “Postavke” dodijelite naziv grupi “”, na primjer, “ResultSKD”, da biste to učinili, pozovite kontekstni meni za grupisanje i kliknite “dodijeli ime”;

2. na kartici “Rasporedi” dodati “izgled zaglavlja grupisanja”, gdje biramo prethodno dodijeljeno ime “TotalSKD”;

3. nacrtamo liniju layout-a, gdje ostavimo sve rezultate, čiji nam proračun odgovara, takvi kakvi jesu, a za izračunavanje prosječnog procenta popusta napišemo formulu za obračun;

Ako je sve ispravno, onda kada se izvještaj prikaže, ispod njega će se prikazati dvije ukupne linije, prvo onaj koji se automatski generira, a zatim onaj koji ste kreirali.

Da biste ostavili izlaz samo vaše ukupne linije, morate na kartici "Postavke" u odjeljku "Ostala podešavanja" izlaza izgleda, onemogućiti izlaz za "Horizontalni ukupni izgled" i "Vertikalni ukupni izgled"

U ovoj kratkoj napomeni želim da pokažem kako možete sumirati vrednosti na različitim nivoima grupisanja u izveštaju koristeći sistem sastavljanja podataka.
Kao što je prikazano na slici, samo na nivou grupisanja „Grupe artikala“ izračunava se resurs „Narudžba“, koji prikazuje koliko je potrebno naručiti za trenutnu grupu artikala na osnovu određenih uslova:


Ova vrijednost se može izračunati samo na ovom nivou grupisanja, jer nema vrijednosti iznad ili ispod za izračunavanje. Na primjer, na nivou detaljne evidencije nema podataka o maksimalnoj količini u grupi, jer ti podaci vrijede samo za grupu u cjelini, a ne i za njene pojedinačne komponente.

U skladu s tim, sada je potrebno izračunati ukupne iznose za gore navedene grupe (“Skladišta”, “Vrste skladišta”) i ukupni zbroj.
Da biste to učinili, koristite funkciju CalculateExpressionWithGroupArray:
EVALUACIJA EXPRESSIONWITHGROUPARRAY (EVALEXPRESSIONWITHGROUPARRAY)
sintaksa:
EvaluateExpressionWithGroupArray(,)
Opis:
Funkcija vraća niz, čiji svaki element sadrži rezultat evaluacije izraza za grupisanje prema navedenom polju.
Graditelj rasporeda, kada generira izgled, pretvara parametre funkcije u termine polja rasporeda podataka. Na primjer, polje Račun će biti konvertirano u DataSet.Account.
Graditelj izgleda, kada generira izraze za izlaz prilagođenog polja čiji izraz sadrži samo funkciju CalculateArrayWithGroupArray(), generira izlazni izraz tako da su izlazne informacije poređane. Na primjer, za prilagođeno polje s izrazom:

CalculateExpressionWithGroupArray("Iznos(iznosPromet)", "Counterparty")
Graditelj izgleda će generirati sljedeći izraz za izlaz:

ConnectRows(Niz(Red(CalculateExpressionWithGroupingValueTable("Pregled(Sum(DataSet.AmountTurnover)),Sum(DataSet.AmountTurnover)",,"DataSet.Account"),"2")))

Opcije:

Vrsta: String. Izraz koji se vrednuje. String, na primjer, iznos (iznos obrta).

Vrsta: String. Izrazi polja za grupisanje – izrazi za grupisanje polja, odvojeni zarezima. Na primjer, Izvođač, Strana.

Vrsta: String. Izraz koji opisuje odabir primijenjen na zapise detalja. Izraz ne podržava upotrebu agregatnih funkcija. Na primjer, DeletionFlag = False.

Vrsta: String. Izraz koji opisuje odabir primijenjen na grupne zapise. Na primjer, iznos (iznos obrta) > &Parametar1.
primjer:

Maximum(CalculateExpressionWithGroupArray("Iznos(IznosPromet)", "Counterparty"));

Detaljan opis sintakse funkcije može se naći na http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Sada, za izračun, dupliramo polje "Narudžba" sa različitim vrijednostima "Izračunaj po...", koristeći sljedeće izraze, imajte na umu da se na svakom višem nivou koriste vrijednosti nivoa ispod grupiranja .

Kao rezultat, dobijamo sljedeću konstrukciju:

CalculateExpression je prilično teška ACS funkcija za razumijevanje, a primjeri primjene u referentnim informacijama su prilično rijetki. Ovaj članak govori o primjerima koji će sigurno biti korisni svakom programeru:

  1. kumulativno u grupisanju;
  2. kumulativni zbroj u unakrsnoj tablici;
  3. dobijanje prethodne vrednosti;
  4. PM izlaz u jednom redu.

1. Dobijanje indikatora na obračunskoj osnovi

Uzmimo količinu robe kao kumulativni zbir na nivou grupisanja. Da biste to učinili, kreirajte izračunato polje (pogledajte sliku 1).
Na kartici "Resursi" postavite funkciju za izračunato polje:
CalculateExpression("Zbroj(Obrt količine)", "Prvi", "Trenutni")
koji će zbrojiti broj proizvoda od prvog zapisa do trenutnog (vidi sliku 2).

Ako je potrebno dobiti kumulativnu ukupnu količinu stavke na nivou detaljnih zapisa, tada na kartici „Izračunata polja“ postavljamo funkciju CalculateExpression za izračunato polje (vidi sliku 3).
U zavisnosti od nivoa dobijanja kumulativnog totala, kreiramo grupisanje (vidi sliku 4): na nivou resursa - grupisanje po robi, na nivou daljinskog upravljanja - grupisanje detaljnih zapisa.
Slika 4. Grupacije izvještaja s kumulativnim ukupnim iznosima

2. Dobivanje vrijednosti indikatora iz prethodnog reda

Uzmimo kurs za datum i prethodni datum. Da biste to učinili, kreirajte izračunato polje i upišite sljedeći izraz u polje izraza (pogledajte sliku 5):
CalculateExpression("Ocijena", "Prethodno", "Prethodno")
koji će uzeti prethodnu vrijednost kursa za trenutni red, posljednji parametar funkcije ograničava prijem podataka.
Pošto radimo na nivou detaljnih zapisa, odmah idemo na karticu „Podešavanja“ i kreiramo grupisanje – detaljni zapisi.

3. Dobivanje indikatora kao kumulativnog totala u unakrsnoj tablici

Uzmimo količinu robe na obračunskoj osnovi po periodima. Da biste to učinili, kreirajte izračunato polje (pogledajte sliku 1). Na kartici “Resources” navodimo sljedeći izraz za izračunato polje (vidi sliku 6):
CalculateExpression("Zbroj(Promet količine)", "Period", "Prvi", "Trenutni")
koji će na nivou grupisanja izračunati količinu robe u intervalu od prvog reda do tekućeg u kontekstu perioda za svaku stavku.
Na kartici „Postavke“ kreirajte tabelu sa grupisanjem po stavci u redu i grupisanjem po periodu u koloni (pogledajte sliku 7).

4. Izlaz tabelarnih podataka u jednom redu

Metode za prikaz tabelarnih podataka u jednom redu, uključujući metodu pomoću funkcije CalculateExpression, razmatraju se u članku

U sastavu podataka postavljanje zbroja izgleda malo drugačije nego u zahtjevima. Hajde da definišemo skup podataka „Upit“ u sistemu za sastavljanje podataka.

U samom zahtjevu ne konfigurišemo zbrojeve, već idemo na karticu „Resursi“ sastava podataka. Na nivou sheme sastava podataka, mi odrediti resurse. Ovo su polja koja se moraju računati na nivou grupisanja. Kliknite na dugme “>>” i sistem će sam prenijeti sva numerička polja i definirati ih kao resurse.

Također možete specificirati nenumerička polja u resursima. Na primjer, ako odaberete atribut “Link”, sistem će prebrojati broj dokumenata u našim grupama. Ove informacije također mogu biti korisne. dakle, u dijagramu izgleda samo definiramo resurse, a sama grupisanja su konfigurirana na razini varijante izvještaja. Korisnik također može kreirati grupe koje želi vidjeti u svojim postavkama opcija izvještaja.

Kreirajmo standardnu ​​postavku sastava podataka.
Kliknite na dugme "Otvori dizajner postavki".

Odaberimo tip izvještaja - lista. Kliknite na dugme „Dalje“.

Odaberimo sva polja i pomjerimo polje druge strane na gornju poziciju. Kliknite na dugme „Dalje“.

Odaberimo sva polja i pomjerimo polje druge strane na gornju poziciju. Kliknite na dugme “OK”.

Rezultat je sljedeća postavka:

Kao što možete vidjeti, pri postavljanju opcije izvještaja, resursi su istaknuti zelenom ikonom tako da se mogu brzo razlikovati od drugih polja.

Ako otvorimo naš izvještaj u načinu rada 1C:Enterprise i generiramo ga, vidjet ćemo da se konačni podaci generiraju na nivou grupisanja. Rezultati po stavkama i po ugovornim stranama.

Postavljanje resursa u 1C shemu sastava podataka

A sada da skrenemo pažnju na postavke koje postoje za resurse. U polju “Izraz” možemo specificirati agregatnu funkciju koja se može koristiti za dobivanje vrijednosti resursa. U padajućoj listi možete vidjeti brojne standardne funkcije, ali ne sve. Na primjer, nema funkcija.

Ovdje u polju “Izraz” možemo napisati svoj vlastiti izraz.

U polju "Izraz" možemo pristupiti i funkcijama zajedničkih modula.

Osim toga, možete odrediti u polju “Izračunaj po...” po kojim grupama treba izračunati resurs. Ako polje „Izračunaj po...“ nije popunjeno, tada će se konačna vrijednost resursa izračunati na svim nivoima grupisanja koji su definirani u postavkama opcije izvještaja. U našem slučaju, potrebno je da popunimo polje „Izračunaj po...“ resursa „Količina“, jer možemo prodati robu sa različitim mernim jedinicama. Na primjer: ulje u litrima i kotači u komadima. Nije li tačno da bi bilo nelogično zbrajati količine ove robe? Stoga, moramo ostaviti zbir količine na nivou stavke, a na nivou druge ugovorne strane
Uklonimo zbrajanje.

Ako generiramo izvještaj, vidjet ćemo da se zbrojevi količine obračunavaju samo po artiklima, a ukupni količine za izvođače su prazni.

Mogućnosti pri opisivanju resursa u 1C shemi sastava podataka

hajde da razmotrimo niz neočiglednih karakteristika koje se odnose na opis resursa.

  • Svaki resurs može definisati nekoliko puta. Ali ovo ima smisla samo ako
    resurs će se izračunavati na različitim nivoima grupisanja. Na primjer, ako je količina, u jednom slučaju
    se sumira za stavku, a za druge strane dobijamo minimalnu vrijednost.

Ako napravimo izvještaj, vidjet ćemo da je za drugu stranu “Deriya” minimalna kupovina pet jedinica iz asortimana “Samoljepljivi papir”.

  • U polju „Izraz“, osim pisanja formule, možete koristiti posebna funkcija sastava podataka pod nazivom "Izračunaj". Ova funkcija vam omogućava da izračunate neku konačnu vrijednost koristeći određenu formulu. Na primjer, za svaku drugu stranu potrebno je znati postotak kupovine u fizičkim jedinicama u odnosu na ukupan obim. Ali kako dobiti ukupan obim kupovina po količini? Da biste to učinili, koristite funkciju "Izračunaj" i napišite sljedeći izraz u polje "Izraz":
Zbroj(Količina)/Izračunaj("Zbroj(Količina)", "UkupnoUkupno")*100

kao što se vidi, svi parametri funkcije "Izračunaj" su stringovi. Kako bi polje za količinu bilo lijepo prikazano u izvještaju, konfigurisaćemo ga na kartici „Skupovi podataka“. U liniji za količinu naći ćemo polje „Opcije uređivanja“. Otvorimo dijalog, pronađimo liniju "Format" i uredimo liniju formata u njoj, postavljajući vrijednost "Točnost" na dva na kartici "Broj".

Pokrenimo izvještaj i vidimo rezultat izračunavanja procenta kupovina za drugu stranu "AUPP KOS DOO" u odnosu na
ukupna zapremina:


Na kraju članka želim vam preporučiti jedan besplatni od Anatolija Sotnikova. Ovo je kurs iskusnog programera. Na posebnoj osnovi će vam pokazati kako da napravite izvještaje u sistemu kontrole pristupa. Samo treba pažljivo slušati i zapamtiti! Dobićete odgovore na sledeća pitanja:
  • Kako napraviti jednostavan izvještaj o listi?
  • Čemu služe kolone Polje, Putanja i Naslov na kartici „Polja“?
  • Koja su ograničenja za polja rasporeda?
  • Kako pravilno konfigurirati uloge?
  • Koje su uloge za polja rasporeda?
  • Gdje mogu pronaći karticu sastava podataka u upitu?
  • Kako konfigurirati parametre u sistemu kontrole pristupa?
  • Postaje još zanimljivije...
Možda ne biste trebali sami da pretražujete internet u potrazi za potrebnim informacijama? Štaviše, sve je spremno za upotrebu. Samo počnite! Svi detalji o tome šta se nalazi u besplatnim video lekcijama

Evo jedne od lekcija o označavanju sastava podataka u upitu:

KATEGORIJE

POPULAR ARTICLES

2024 “kuroku.ru” - Gnojivo i hranjenje. Povrće u plastenicima. Izgradnja. Bolesti i štetočine