SKD izračunavanje po ne radi. Korišćenje resursa u sistemu kontrole pristupa na primeru kreiranja eksternog tabelarnog izveštaja. Kreirajte novi izvještaj

U sastavu podataka postavljanje zbroja izgleda malo drugačije nego u zahtjevima. Hajde da definišemo skup podataka „Upit“ u sistemu sastavljanja 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 grupacije 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 vidite, pri postavljanju opcije izvještaja, resursi su označeni zelenom ikonom kako bi se mogli brzo razlikovati od drugih polja.

Ako otvorimo naš izvještaj u načinu 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 shemi sastava podataka 1C

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 litrama 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 stavkama, 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 ugovornu stranu potrebno je znati postotak kupovine u prirodnim 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 u polje "Izraz" upišite sljedeći izraz:
Zbroj(Količina)/Izračunaj("Zbroj(Količina)", "UkupnoUkupno")*100

kao što se vidi, svi parametri funkcije "Izračunaj" su nizovi. Kako bi polje za količinu bilo lijepo prikazano u izvještaju, konfigurisaćemo ga na kartici „Skupovi podataka“. U redu 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 polja za raspored?
  • 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:

Članak opisuje primjer praktične upotrebe ponderiranog prosjeka u rezultatima izvještaja. Prikazane su neke tehnike za rad sa sistemima kontrole pristupa. Članak je namijenjen obučenom čitaocu sa barem osnovnim vještinama u radu sa sistemima kontrole pristupa i kreatorom upita.

Obračun ponderisanog prosjeka se aktivno koristi u zadacima vezanim za upravljačko računovodstvo i druge poslovne kalkulacije.

A-priorat, - PROSJEĆNA TEŽINA(ponderisani prosjek) je aritmetički prosjek koji uzima u obzir težinu svakog od pojmova za koje se ovaj prosjek izračunava.

U gotovo svim udžbenicima iz upravljačkog računovodstva, za ilustraciju ponderisanog prosjeka, navode primjer kupovine tri serije istog proizvoda - svaka serija robe ima drugačiju nabavnu cijenu i različitu količinu. Jasno je da ako u takvoj situaciji uzmemo aritmetički prosjek nabavnih cijena, dobićemo prosječnu temperaturu u bolnici – brojku koja nema praktično značenje. U takvoj situaciji, ponderisani prosek ima smisla.

Isti primjer iz udžbenika: roba je kupljena u tri lota, od kojih je jedna bila 100 tona za 70 funti. Art. po toni, drugi - 300 tona po 80 funti. Art. po toni i trećini - 50 tona na 95 lbs. Art. po toni, onda ukupno otkupljuje 450 tona robe; uobičajena prosječna kupovna cijena će biti (70 + 80 + 95): 3 = 81,7 funti. Art. Ponderisana prosečna cena, uzimajući u obzir količine svake serije, jednaka je (100 × 70) + (300 × 80) + (50 × 95): 450 = 79,4 funti. Art. po toni.

Formula:

Gdje su X vrijednosti čiji ponderisani prosjek želimo da dobijemo, a W su težine.

Tu se teorija završava.

S tim sam se morao pozabaviti kada sam u izvještaju prikazivao podatke o prodaji robe, grupisane po menadžerima, gdje je kao rezultat bilo potrebno dobiti profitabilnost. Redovi izvještaja su prikazivali profitabilnost za svaki prodati proizvod u rezultatima, bilo je potrebno vidjeti s kojom je profitabilnošću menadžer radio. Shodno tome, profitabilnost je “vrijednost”, a “težina” ove vrijednosti je prihod. Brojna pojašnjenja kako bi se slika upotpunila. Prihod (obim prodaje) je pomnožena prodajna cijena i količina proizvoda. Bruto dobit je prihod minus trošak (kako je tačno trošak izračunat u kontekstu ovog članka nije važno). I konačno, naša profitabilnost je odnos bruto dobiti i prihoda izražen u procentima.

Postavlja se pitanje: kakvu je profitabilnost ostvario menadžer u izvještajnom periodu? Da biste tačno odgovorili na ovo pitanje, morate izračunati ponderisanu prosječnu vrijednost profitabilnosti.

Da bismo dobili prosjek ponderisane profitabilnosti u SKD-u, u konstruktoru upita kreiramo pomoćno polje oblikaproizvoljan izraz, gdje bilježimo proizvod profitabilnosti i prihoda. Ovom polju dodjeljujemo pseudonim -AuxiliaryField. Pogledajte sliku ispod.

Nećemo prikazati ovo polje u izvještaju; podaci su nam potrebni za izračunavanje rezultata. Rezultate ćemo izračunati na kartici ACSResursi.

Druga tehnika za rad sa ACS-om na kartici „Resursi“, gde je naznačeno izračunavanje ukupnih iznosa, je mogućnost korišćenja izraza u polju „Izraz“ sa podacima iz polja „Dostupna polja“. Pogledajte sliku ispod.

Za kolonu izvještaja “Procenat profitabilnosti” upisujemo izraz Iznos (pomoćno polje)/iznos (prihod).

Da rezimiramo, pre svega, važno je razumeti šta je ponderisani prosek i gde treba da koristite samo aritmetički prosek, a gde treba da koristite ponderisani prosek. Sa tehničke tačke gledišta, dvije tačke mogu predstavljati određenu poteškoću - stvaranje pomoćnog polja u izvještaju i mogućnost korištenja proizvoljnog izraza u ACS resursima za izračunavanje rezultata koji su nam potrebni.

Nadam se da će ovaj članak nekome biti od koristi.

1. Izračunaj (Eval)- je namijenjen za procjenu izraza u kontekstu nekog grupisanja. Funkcija se koristi za kompatibilnost sa prethodnim verzijama platforme. Umjesto toga preporučuje se korištenje funkcije CalculateExpression.

sintaksa:
Izračunaj (izraz, grupisanje, vrsta izračuna)

Opcije:

  • Izraz(Linija). Sadrži izračunati izraz;
  • Grupisanje(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 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.Ukupni promet) / Izračunaj("Zbroj(Prodaja.Zbroj prometa)", "Ukupno").
    U ovom primjeru, rezultat će biti omjer iznosa za polje "Sales.AmountTurnover" zapisa grupisanja i iznosa istog polja u cijelom izgledu.
  • Vrsta kalkulacije(Linija). Ako je ovaj parametar postavljen na "TotalTotal", izraz će se izračunati za sve grupne zapise. Ako je vrijednost parametra "Grupiranje", vrijednosti će se izračunati za trenutni grupni zapis.
2. Procijenite izraz (EvalExpression) - je namijenjen za procjenu izraza u kontekstu nekog grupisanja. 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.

sintaksa:
CalculateExpression(Izraz, grupisanje, CalculationType, Početak, Kraj, Sortiranje, Hijerarhijski Sort, ProcessingIdenticalOrderValues)

Opcije:

  • Izraz(Linija). Sadrži izračunati izraz;
  • Grupisanje(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 GrandTotal, izračunavanje će se izvršiti u kontekstu ukupnog zbroja. U suprotnom, proračun će se izvršiti u kontekstu roditeljskog grupiranja s tim imenom;
  • Vrsta kalkulacije(Linija). Ako je ovaj parametar postavljen na "TotalTotal", izraz će se izračunati za sve grupne zapise. Ako je vrijednost parametra "Grupiranje", vrijednosti će se izračunati za trenutni grupni zapis. Ako je parametar postavljen na "Non-Resource Grouping", tada će se prilikom izračunavanja funkcije za grupni zapis po resursu, izraz procijeniti za prvi grupni zapis originalnog grupiranja. Prilikom evaluacije funkcije CalculateExpression s vrijednošću "GroupingNonResource" za grupne zapise koji nisu grupirani prema resursu, funkcija se procjenjuje na isti način kao što bi bila procijenjena s vrijednošću parametra "Grouping". Graditelj izgleda sastava podataka, kada generira izgled sastava podataka prilikom izlaza polja - resursa pomoću kojeg se vrši grupisanje, u izgled, ispisuje u izgled izraz izračunat pomoću funkcije CalculateExpression sa navedenim parametrom "GroupingNon-Resource". Za druge resurse grupirane po resursu, vraćaju se normalni izrazi resursa. Ako je parametar postavljen na "Hijerarhija", tada se izraz mora procijeniti za roditeljski hijerarhijski zapis, ako ga postoji, i za cijelo grupisanje, ako ne postoji roditeljski hijerarhijski zapis. Graditelj rasporeda, kada generira izraz za % u polju Grupa hijerarhije, generira izraz koji sadrži odnos izraza resursa prema funkciji CalculateExpression za izraz resursa koji se izračunava za trenutno grupisanje s tipom izračuna Hijerarhija.
  • Počni. 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. Niz koji sadrži jedno od:
    • "prvi" 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 dobiti First(4), onda se smatra da nema zapisa.
    • "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 s kraja grupe. Ako je posljednji zapis izvan grupisanja, smatra se da nema zapisa. Na primjer, ako postoje 3 zapisa, a želite dobiti Last(4), onda se smatra da nema zapisa.
    • "Prethodni" 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 je prethodni zapis izvan grupisanja (na primjer, drugi zapis grupisanja zahtijeva preuzimanje Prethodno(3)), tada se dobija prvi zapis grupisanja. Prilikom prijema prethodnog zapisa za zbroj grupiranja dobija se prvi zapis.
    • "Sljedeć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 unosa, a treći unos dobije Next, onda se smatra da nema unosa. Kada se primi sljedeći zapis za ukupno grupisanje, smatra se da nema zapisa.
    • "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 LimitingValue u zagradi, potrebno je naznačiti izraz sa č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.
  • Kraj. Označava na koji zapis treba nastaviti fragment, u kojem treba izračunati agregatni izraz. Niz koji sadrži jedno od:
    • "prvi"
    • "Posljednji"
    • "Prethodni"
    • "Sljedeći"
    • "trenutni"
    • "BoundaryValue".
  • Sortiranje. Niz koji navodi izraze, odvojene zarezima, u čijem smjeru treba poredati niz. 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 specificirati ključnu riječ Uzlazno, za redoslijed rastućim redoslijedom, Silazno, za redoslijed opadajućem, Auto-ordering, za redoslijed referentnih polja prema poljima po kojima želite poredati objekt na koji se upućuje. Riječ Auto Order može se koristiti i sa riječju Uzlazno i ​​Opadajuće.
  • HierarchicalSorting. Slično sortiranju. Koristi se za organiziranje hijerarhijskih zapisa. Ako nije navedeno, sastavljač izgleda generira redoslijed prema redoslijedu navedenom u parametru Sort.
  • Obrada istih vrijednosti narudžbe. Niz koji sadrži jedno od:
    • "Zajedno" znači da se niz uređenih zapisa koristi za određivanje prethodnog i sljedećeg zapisa;
    • "Odvojeno" 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:
    1. 1. januara 2001. Ivanov M. 10
    2. 2. januara 2001. Petrov S. 20
    3. 2. januara 2001. Sidorov R. 30
    4. 3. januara 2001. Petrov S. 40
    Kada se koristi obrada identičnih vrijednosti reda "Odvojeno", prethodni za zapis 3 će biti zapis 2, a kada se koristi "Zajedno" - zapis 1. I fragment za trenutni zapis za zapis 2 za "Odvojeno" će biti zapis 2, a za "Zajedno" - zapisi 2 i 3. Dakle, ukupan broj za trenutni zapis za "Odvojeno" će biti 20, a za "Zajedno" - 50. Kada je "Zajedno" navedeno u Start i Krajnji parametri, ne možete odrediti pomak za pozicije “Prva”, “Posljednja”, “Prethodna”, “Sljedeća”. Zadana vrijednost je "Odvojeno".
primjer:
Dobivanje omjera iznosa za polje "Sales.AmountTurnover" zapisa grupiranja prema iznosu istog polja u cijelom izgledu:
Sum(Sales.SumTurnover) / CalculateExpression("Sum(Sales.SumTurnover)", "Ukupno").

Ovaj primjer izračunava vrijednost trenutne hijerarhije:
Izbor
Kada je Level() > 0
Zatim EvaluateExpression("Referenca", "Hijerarhija")
Inače Null
Kraj

napomene:
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 "GrossTotal"), 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.

3. Procijenite izraz s grupnim nizom (EvalExpression s grupnim nizom) - funkcija vraća niz, čiji svaki element sadrži rezultat izračunavanja izraza za grupisanje prema navedenom polju.

sintaksa:
CalculateExpressionWithGroupArray (Izraz, GroupFieldExpressions, SelectRecords, SelectGroups)

Opcije:

  • Izraz(String) - izraz koji treba procijeniti. Na primjer, "Iznos(IznosPromet)";
  • FieldExpressionsGroups
  • Izbor zapisa
  • Izbor grupa- odabir primijenjen na grupne zapise. Na primjer: "Iznos(IznosPromet) > &Parametar1".
primjer:
Maximum(CalculateExpressionWithGroupArray("Iznos(IznosPromet)", "Counterparty"));


Kreator rasporeda, kada generira izraze za prikaz prilagođenog polja čiji izraz sadrži samo funkciju CalculateArrayWithGroup, generiše izraz prikaza tako da su podaci prikazani pogledima i podaci poređani.
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)), Amount(DataSet.AmountTurnover)", "DataSet.Account"), "2")))

4. Izračunajte izraz s GroupValueTable (EvalExpressionWithGroupValueTable) - funkcija vraća tablicu vrijednosti, čiji svaki element sadrži rezultat izračunavanja izraza za grupisanje prema navedenom polju.

sintaksa:
CalculateExpressionWithGroupValueTable (izraz, izrazi grupnog polja, odabir zapisa, odabir grupe)

Opcije:

  • Izraz(String) - izraz koji treba procijeniti. Red može sadržavati više izraza odvojenih zarezima. Nakon svakog izraza može postojati opciona ključna riječ AS i ime kolone tablice vrijednosti. Na primjer: "Counterparty, iznos (iznos prometa) kao obim prodaje."
  • FieldExpressionsGroups- izrazi grupisanja polja, odvojeni zarezima. Na primjer, "Counterparty, Party";
  • Izbor zapisa- izraz koji se primjenjuje na detaljne zapise. Na primjer, "Zastavica za brisanje = False." Ako ovaj parametar koristi agregatnu funkciju, doći će do greške prilikom sastavljanja podataka;
  • Izbor grupa- odabir primijenjen na grupne zapise. Na primjer: "Iznos(IznosPromet) > &Parametar1".
primjer:
CalculateExpressionWithGroupValueTable("Račun AS Counterparty, Iznos(IznosPromet) ASSalesVolume", "Račun")

Rezultat ove funkcije bit će tablica vrijednosti sa stupcima Counterparty i Sales Volume, koja će sadržavati druge strane sa njihovim obimom prodaje.
Kompozitor rasporeda, kada generira raspored, pretvara parametre funkcije u termine polja rasporeda sastava podataka. Na primjer, polje Račun će biti konvertirano u DataSet.Account.
Na primjer, prilagođeno polje s izrazom:
CalculateExpressionWithGroupValueTable("Račun, iznos (iznos obrta)", "račun")
Graditelj izgleda će generirati sljedeći izraz za izlaz:
ConnectRows(GetPart(Order(CalculateExpressionWithGroupingValueTable("DataSet.Account, DataSet.AccountRepresentation, Sum(DataSet.AmountTurnover), View(DataSet.AmountTurnover), DataSet.OrderingField), "CDataSet.SorderingField.", "CDataSet.SerderingField.") ), "2, 4"))

5. Nivo - funkcija je dizajnirana da dobije trenutni nivo snimanja.

sintaksa:
Nivo()

primjer:
Nivo()

6. SequenceNumber - dobiti sljedeći serijski broj.

sintaksa:
BrojByOrder()

primjer:
BrojByOrder()

7. SequenceNumberInGrouping - vraća sljedeći redni broj u trenutnoj grupi.

primjer:
BrojByOrderInGroup()

8. Format - dobiti formatirani niz proslijeđene vrijednosti.

sintaksa:
Format (Vrijednost, Niz formata)

Opcije:

  • Značenje- izraz koji treba formatirati;
  • FormatString- niz formata je postavljen u skladu sa nizom formata 1C:Enterprise.
primjer:
Format (fakture potrošnog materijala. Iznos dokumenta, "NPV=2")

9. BeginOfPeriod

sintaksa:
Početni period (datum, vrsta perioda)

Opcije:

  • datum(Datum). Navedeni datum;
  • Tip perioda
primjer:
Početni period(DatumVrijeme(2002, 10, 12, 10, 15, 34), "Mjesec")
Rezultat: 10/01/2002 0:00:00

10. EndOfPeriod - funkcija je dizajnirana za odabir određenog datuma od datog datuma.

sintaksa:
EndPeriod(Datum, PeriodType)

Opcije:

  • datum(Datum). Navedeni datum;
  • Tip perioda(Linija). Sadrži jednu od sljedećih vrijednosti: Minute; Sat; Dan; Sedmica; Mjesec; Quarter; Godina; Decenija; Pola godine.
primjer:
EndPeriod(DatumTime(2002, 10, 12, 10, 15, 34), "Sedmica")
Rezultat: 13.10.2002 23:59:59

11. AddKDate (DateAdd) - funkcija je dizajnirana da doda određenu vrijednost datumu.

sintaksa:
AddToDate(izraz, vrsta inkrementa, veličina)

Opcije:

  • Izraz(Datum). Originalni datum;
  • TypeMagnification(Linija). Sadrži jednu od sljedećih vrijednosti: Minute; Sat; Dan; Sedmica; Mjesec; Quarter; Godina; Decenija; Pola godine.
  • Magnituda(Broj). Za koliko treba povećati datum, razlomak se zanemaruje.
primjer:
AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Mjesec", 1)
Rezultat: 12.11.2002 10:15:34

12. DateDifference - funkcija je dizajnirana da dobije razliku između dva datuma.

sintaksa:
DifferenceDate(Izraz1, Izraz2, Vrsta razlike)

Opcije:

  • Izraz1(Datum). Oduzeti datum;
  • Izraz2(Datum). Originalni datum;
  • TypeDifference(Linija). Sadrži jednu od vrijednosti: Second; Minute; Sat; Dan; Mjesec; Quarter; Godina.
primjer:
DATEDIFERENCE(DATETIME(2002, 10, 12, 10, 15, 34),
DATETIME(2002, 10, 14, 9, 18, 06), "DAN")
Rezultat: 2

13. Podniz - ova funkcija je dizajnirana da izdvoji podniz iz niza.

sintaksa:
Podniz (niz, pozicija, dužina)

Opcije:

  • Linija(Linija). Niz iz kojeg se izdvaja podniz;
  • Pozicija(Broj). Pozicija znaka iz koje počinje podniz koji se izdvaja iz niza;
  • Dužina(Broj). Dužina dodijeljenog podniza.
primjer:
SUBSTRING(Računi.Adresa, 1, 4)

14. StringLength - funkcija je dizajnirana da odredi dužinu niza.

sintaksa:
StringLength(String)

Parametar:

  • Linija(Linija). String čija je dužina specificirana.
primjer:
Linija (Counterparties.Adresa)

15. God- ova funkcija je dizajnirana da izdvoji godinu iz vrijednosti tipa datuma.

sintaksa:
godina (datum)

Parametar:

  • datum(Datum). Datum do kojeg je određena godina.
primjer:
GODINA (Trošak.Datum)

16. Kvart - ova funkcija je dizajnirana da izdvoji broj kvartala iz vrijednosti tipa datuma. Broj četvrtine se obično kreće od 1 do 4.

sintaksa:
Kvart (datum)

Parametar:

  • datum(Datum). Datum do kojeg se utvrđuje tromjesečje
primjer:
KVARTAL(Trošak.Datum)

17. Mjesec - ova funkcija je dizajnirana da izdvoji broj mjeseca iz vrijednosti tipa datuma. Broj mjeseca se obično kreće od 1 do 12.

sintaksa:
mjesec (datum)

Parametar:

  • datum(Datum). Datum do kojeg se određuje mjesec.
primjer:
MJESEC (Trošak.Datum)

18. Dan u godini (DayOfYear) - ova funkcija je dizajnirana da dobije dan u godini iz vrijednosti tipa Datum. Dan u godini se obično kreće od 1 do 365 (366).

sintaksa:
Dan u godini (datum)

Parametar:

  • datum(Datum). Datum do kojeg je određen dan u godini.
primjer:
DAYYEAR(Trošak.Datum)

19. Dan- ova funkcija je dizajnirana da dobije dan u mjesecu iz vrijednosti tipa Datum. Dan u mjesecu se obično kreće od 1 do 31.

sintaksa:
dan (datum)

Parametar:

  • datum(Datum). Datum do kojeg je određen dan u mjesecu.
primjer:
DAY (Trošak.Datum)

20. Sedmica - ova funkcija je dizajnirana da dobije broj sedmice u godini iz vrijednosti tipa datuma. Sedmice u godini se numerišu počevši od 1.

sintaksa:
sedmica (datum)

Parametar:

  • datum(Datum). Datum do kojeg se određuju brojevi sedmica.
primjer:
SEDMICA(Trošak.Datum)

21. WeekDay - ova funkcija je dizajnirana da dobije dan u sedmici iz vrijednosti tipa Datum. Uobičajeni dan u sedmici kreće se od 1 (ponedjeljak) do 7 (nedjelja).

sintaksa:
Dan u sedmici (datum)

Parametar:

  • datum(Datum). Datum do kojeg se određuje dan u sedmici.
primjer:
DAN U SJEDICI (Datum fakture troškova)

22. Sat- ova funkcija je dizajnirana da dobije sat u danu iz vrijednosti tipa datuma. Sat u danu kreće se od 0 do 23.

sintaksa:
sat (datum)

Parametar:

  • datum(Datum). Datum do kojeg se određuje sat u danu.
primjer:
HOUR (Trošak.Datum)

23. Minuta - ova funkcija je dizajnirana da dobije minute u satu iz vrijednosti tipa datuma. Minuta u satu kreće se od 0 do 59.

sintaksa:
minuta (datum)

Parametar:

  • datum(Datum). Datum do kojeg se određuje minuta u satu.
primjer:
MINUTE(Trošak.Datum)

24. Drugo - ova funkcija je dizajnirana da dobije sekundu minute iz vrijednosti tipa datuma. Sekunda u minuti se kreće od 0 do 59.

sintaksa:
Drugi (datum)

Parametar:

  • datum(Datum). Datum do kojeg se određuju sekunde minuta.
primjer:
SECOND (Datum isteka)

25. Cast - ova funkcija je dizajnirana da izdvoji tip iz izraza koji može sadržavati složeni tip. Ako izraz sadrži tip koji nije potreban, bit će vraćeno NULL.

sintaksa:
Express (izraz, indikacija vrste)

Opcije:

  • Izraz- izraz koji se konvertuje;
  • Indikacija tipa(Linija). Sadrži niz tipa. Na primjer, "Broj", "String" itd. Pored primitivnih tipova, ovaj red može sadržavati naziv tabele. U ovom slučaju, pokušat će se izraziti referenca na navedenu tablicu.
primjer:
Express(Podaci.Props1, "Broj(10,3)")

26. IsNull (IsNull) - ova funkcija vraća vrijednost drugog parametra ako je vrijednost prvog parametra NULL. U suprotnom će biti vraćena vrijednost prvog parametra.

sintaksa:
IsNull(izraz1, izraz2)

Opcije:

  • Izraz1- vrijednost koju treba provjeriti;
  • Izraz2- vraća vrijednost ako je Izraz1 NULL.
primjer:
DaNULL(Iznos(Prodaja.IznosPromet), 0)

27.ACos- izračunava arc kosinus u radijanima.

sintaksa:
Acos (izraz)

Parametar:

  • Izraz(Broj). Vrijednost kosinusa (u rasponu -1 ... 1) po kojoj je kut određen.
28.ASin- izračunava arcsin u radijanima.

sintaksa:
ASin (izraz)

Parametar:

  • Izraz(Broj). Vrijednost sinusa (u rasponu -1 ... 1) po kojoj se kut određuje.
29. ATan- izračunava arktangens u radijanima.

sintaksa:
ATan (izraz)

Parametar:

  • Izraz(Broj). Vrijednost tangente kojom je određen kut.
30.Cos- izračunava kosinus.

sintaksa:
Cos (izraz)

Parametar:

  • Izraz
31. Exp- podizanje broja e na stepen.

sintaksa:
Exp(Izraz)

Parametar:

  • Izraz(Broj). Značenje stepena.
32.Log- izračunava prirodni logaritam.

sintaksa:
Dnevnik (izraz)

Parametar:

  • Izraz
33.Log10- izračunava logaritam od X na osnovu 10.

sintaksa:
Log10 (izraz)

Parametar:

  • Izraz(Broj). Originalni broj je veći od 0.
34. Pow- eksponencijaliranje.

sintaksa:
Pow (baza, indikator)

Opcije:

  • Baza(Broj). Osnove operacije eksponencijacije.
  • Indeks(Broj). Eksponent.
35. Sin- izračunava sinus.

sintaksa:
grijeh (izraz)

Parametar:

  • Izraz(Broj). Navedeno u radijanima.
36. Sqrt- izračunava kvadratni korijen.

sintaksa:
Sqrt (izraz)

Parametar:

  • Izraz(Broj). Nenegativan broj.
37. Tan- izračunava tangentu.

sintaksa:
Tan (izraz)

Parametar:

  • Izraz(Broj). Vrijednost sinusa po kojoj je ugao određen.
38. Round- zaokružuje originalni broj na potrebnu dubinu bita. Režim zaokruživanja je standardni (1,5 kao 2).

sintaksa:
Env (izraz, dubina bita)

Opcije:

  • Izraz(Broj). Originalni broj;
  • Dubina bita(Broj). Broj decimalnih mjesta na koje treba zaokružiti.
39. Int- odsijeca razlomak broja.

sintaksa:
Objekt (izraz)

Parametar:

  • Izraz(Broj). Razlomak broj.
40. Funkcije zajedničkih modula

Izraz mašine za sastav podataka može sadržavati pozive funkcijama globalnih zajedničkih konfiguracijskih modula. Za pozivanje takvih funkcija nije potrebna dodatna sintaksa.

primjer:
SkraćenoNaziv(Dokumenti.Veza, Dokumenti.Datum, Dokumenti.Broj)

U ovom primjeru, funkcija "AbbreviatedName" će biti pozvana iz modula opće konfiguracije.
Imajte na umu da je korištenje zajedničkih funkcija modula dopušteno samo ako je specificiran odgovarajući parametar procesora sastava podataka.
Dodatno, funkcije zajedničkih modula ne mogu se koristiti u prilagođenim izrazima polja.

41. Zamjeranje - ova funkcija vraća string prikaz proslijeđene vrijednosti neprimitivnog tipa. Za vrijednosti primitivnog tipa, vraća samu vrijednost.

<Пустое значение>".

primjer:
Prezentacija (Counterparty)

42. String - ova funkcija pretvara proslijeđenu vrijednost u string.

Ako se kao parametar koristi niz ili tablica vrijednosti, funkcija vraća string koji sadrži string prikaz svih elemenata niza, odvojenih znakovima ";". Ako bilo koji element ima praznu reprezentaciju niza, tada string "<Пустое значение>".

primjer:
Red (Datum prodaje)

43. ValueIsFilled

Za NULL vrijednosti, Undefined uvijek vraća False.
Za Booleove vrijednosti, uvijek vraća True.
Za druge tipove, vraća True ako se vrijednost razlikuje od zadane vrijednosti za dati tip.

primjer:
ValueFilled (Datum isporuke)

44. LevelInGroup - ova funkcija dobija trenutni nivo snimanja u odnosu na grupisanje.

Može se koristiti za dobijanje nivoa ugniježđenja zapisa u hijerarhijskom grupisanju.

primjer:
LevelInGroup()

45. ValueType

sintaksa:
Vrsta vrijednosti (izraz)

Parametar:

  • Izraz(Linija). Vrsta vrijednosti niza.
Vraća vrijednost tipa Type koja sadrži tip vrijednosti parametra funkcije.

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 " uredu" - tekst zahtjeva je generiran automatski:

Kreiranje postavki prezentacije izvještaja

Idi na karticu " Postavke" i kliknite na čarobni štapić, nazvati dizajner postavki:

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

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

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

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 ga 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 koloni" 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 sekunda 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širiti":

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.

Postoji registar informacija “Stajanja duž rute” koji pohranjuje podatke o udaljenosti od početka do krajnjeg stajališta.

Rice. 1. Registar informacija "Stajanja duž trase"

Potrebno je izraditi izvještaj o sistemu kontrole pristupa koji će pokazati udaljenost između bilo koja dva stajališta na trasi.

Rješenje

U bilo kojoj konfiguraciji koja podržava upravljane obrasce, kreirat ćemo neperiodični registar informacija „Stajanja duž rute“. Dodajmo mu dimenzije Route i Stop sa tipom niza dužine 4 i 50, respektivno, kao i Distance resurs sa tipom broja dužine 10,2. Sačuvajmo promjene u novoj konfiguraciji. Da kreirate eksterni izveštaj, u Meni-->Datoteka-->Novo, izaberite „Spoljni izveštaj”, postavite njegovo ime i otvorite dijagram rasporeda podataka:

Rice. 2. Kreiranje eksternog izvještaja o sistemu kontrole pristupa

U prozoru koji se otvori kliknite na dugme "Dodaj skup podataka" i odaberite redak "Dodaj skup podataka - upit":

Rice. 3. Dodavanje skupa podataka - upit

Kreirajmo novi zahtjev. Da bismo riješili problem, u upitu će nam trebati registar informacija “Stajališta duž rute” i, budući da izvještaj treba jasno pokazati udaljenost između bilo koja dva stajališta, kreirat ćemo upit za tabelarni prikaz duž X i Y osa , koristeći potpuno vanjsko spajanje tablice registra sa sobom:

Rice. 5. Specificiranje resursa za sisteme kontrole pristupa

Idemo sada na karticu "Postavke" i kliknite na dugme "Otvori dizajner postavki", odaberite tip izvještaja Tabela:

Rice. 7. Odabir polja izvještaja

Fig.8. Odabir polja za grupisanje

Rice. 9. Odabir polja za sortiranje

Ostaje samo da koristite dugme "Svojstva elemenata korisničkih postavki" da kreirate ove postavke, a takođe i na kartici "Ostala podešavanja" da naznačite kako će se resursi nalaziti i odbacite ukupne (ovde nisu potrebni):

Rice. 10 Korisnička i druga podešavanja.

Izvještaj je spreman. Sada idemo sa konfiguracije na Enterprise i ispunimo registar informacija (ako već nije popunjen):

Rice. 11. Popunjavanje registra informacija

I na kraju, iz Menu-->File pozivamo naš izvještaj sa mjesta gdje smo ga sačuvali u konfiguratoru, kliknemo na dugme “Generiraj” i vidimo rješenje problema:

Rice. 12. Izvještaj "Razdaljina između stanica"

Publikacija me je navela da napišem članak