Lån

Resultatene vises ikke i lagringssystemet. Eksempler på bruk av scd-funksjonen - beregn et uttrykk. Utdata tabelldata på én linje

Resultatene vises ikke i lagringssystemet.  Eksempler på bruk av scd-funksjonen - beregn et uttrykk.  Utdata tabelldata på én linje

La oss se på et eksempel:

Flere vareenheter sendes til kunden med forskjellige rabatter. Du må vise rabattverdiene for hvert produkt i en rapport og beregne gjennomsnittlig rabatt. La oss lage en rapport om tilgangskontrollsystemet.
For alle feltene vi trenger å vise totaler for, vil vi sette et uttrykk (metode) for deres beregning på fanen "Ressurser". For "Rabatt"-feltet angir du beregningsmetoden som "Gjennomsnitt".

Vi legger ut rapporten:

Som du kan se, beregnes totalen for «Rabatt»-feltet som det aritmetiske gjennomsnittet av feltverdiene, dvs. summen av alle verdier delt på antall verdier. Men fordi Siden varevolumene som sendes med ulike rabatter er forskjellige, kan den gjennomsnittlige rabatten beregnes på en annen måte: for eksempel som forholdet mellom den totale varemengden som sendes, tatt i betraktning rabatten, og den totale varemengden som sendes. Men her oppstår et spørsmål: hvis du kan skrive en formel for å beregne verdiene til feltene med detaljerte poster i ACS, beregnes totalsummene automatisk i henhold til uttrykket spesifisert på fanen "Ressurser", og der, som vi så tidligere, "Gjennomsnitt" beregnes som det aritmetiske gjennomsnittet av de viste verdiene, som i dette tilfellet, bør jeg beregne totalen i denne kolonnen ved å bruke min egen formel?
Det er faktisk ikke vanskelig. For å gjøre dette vil vi justere rapporten vår ved å legge til de nødvendige feltene som vil delta i beregningen, i vårt tilfelle er disse "AmountWithDiscount" og "AmountAtPrice".

For å "lære" ACS å vise resultatene våre, tar vi følgende trinn:
1. på "Innstillinger"-fanen, tilordne et navn til grupperingen "", for eksempel "ResultSKD", for å gjøre dette, kall opp kontekstmenyen for grupperingen og klikk "tildel et navn";

2. på "Layouts"-fanen, legg til et "grouping header layout", der vi velger det tidligere tildelte navnet "TotalSKD";

3. vi tegner en linje av oppsettet, hvor vi lar alle resultatene, hvis beregningen passer oss, som de er, og for å beregne den gjennomsnittlige rabattprosenten skriver vi en formel for beregning;

Hvis alt er riktig, vil to totale linjer vises under den når rapporten vises, først den som genereres automatisk, deretter den som er opprettet av deg.

For å la utgangen bare være den totale linjen din, må du på "Innstillinger"-fanen i "Andre innstillinger"-delen av layoututgangen deaktivere utgangen for "Horisontal totaloppsett" og "Vertikal totaloppsett"

I datasammensetning sette opp totaler ser litt annerledes ut enn i forespørsler. La oss definere «Query»-datasettet i datasammensetningssystemet.

I selve forespørselen konfigurerer vi ikke totalsummene, men går til fanen "Ressurser" i datasammensetningen. På datasammensetningsskjemanivå har vi bestemme ressurser. Dette er feltene som må telles på grupperingsnivå. Klikk på ">>"-knappen og systemet vil overføre alle de numeriske feltene og definere dem som ressurser.

Du kan også angi ikke-numeriske felt i ressurser. Hvis du for eksempel velger «Link»-attributtet, vil systemet telle antall dokumenter i gruppene våre. Denne informasjonen kan også være nyttig. Så, i layoutdiagrammet definerer vi kun ressurser, og selve grupperingene er konfigurert på rapportvariantnivå. Brukeren kan også opprette grupperingene han vil se i innstillingene for rapportalternativer.

La oss lage en standard innstilling for datasammensetning.
Klikk på "Åpne innstillingsdesigner"-knappen.

La oss velge rapporttype - liste. Klikk på "Neste"-knappen.

La oss velge alle feltene og flytte motpartsfeltet til toppposisjonen. Klikk på "Neste"-knappen.

La oss velge alle feltene og flytte motpartsfeltet til toppposisjonen. Klikk på "OK"-knappen.

Resultatet er følgende innstilling:

Som du kan se, når du konfigurerer et rapportalternativ, er ressurser uthevet med et grønt ikon slik at de raskt kan skilles fra andre felt.

Hvis vi åpner rapporten vår i 1C:Enterprise-modus og genererer den, vil vi se at endelige data genereres på grupperingsnivå. Resultater etter post og motparter.

Sette opp ressurser i 1C-datasammensetningsskjemaet

La oss nå rette oppmerksomheten mot innstillinger som finnes for ressurser. I «Uttrykk»-feltet kan vi spesifisere en aggregert funksjon som kan brukes for å få verdien av ressursen. I nedtrekkslisten kan du se en rekke standardfunksjoner, men ikke alle. For eksempel er det ingen funksjoner.

Her i «Uttrykk»-feltet kan vi skrive vårt eget uttrykk.

I feltet "Uttrykk" kan vi også få tilgang til funksjonene til vanlige moduler.

I tillegg kan du spesifisere i feltet "Beregn etter..." hvilke grupperinger ressursen skal beregnes etter. Hvis feltet "Beregn etter..." ikke er fylt ut, vil den endelige verdien av ressursen bli beregnet på alle grupperingsnivåer som er definert i innstillingene for rapportalternativet. I vårt tilfelle må vi fylle ut feltet "Beregn etter..." i ressursen "Kvantitet", siden vi kan selge varer med forskjellige måleenheter. For eksempel: olje i liter og hjul i stykker. Er det ikke sant at det ville være ulogisk å legge sammen mengdene av disse varene? Derfor må vi la summeringen av kvantum ligge på varenivå, og på motpartsnivå
La oss fjerne summeringen.

Hvis vi genererer en rapport, vil vi se at kvantumssummene beregnes kun per vare, og kvantumssummene for entreprenører er tomme.

Muligheter ved beskrivelse av ressurser i 1C datasammensetningsskjema

la oss vurdere en rekke ikke-opplagte trekk knyttet til beskrivelsen av ressurser.

  • Hver ressurs kan definere flere ganger. Men dette gir bare mening hvis
    ressursen vil bli beregnet på ulike nivåer av grupperinger. For eksempel hvis mengden, i ett tilfelle
    er summert for varen, og for motparter får vi minimumsverdien.

Hvis vi genererer en rapport, vil vi se at for motparten "Deriya" er minimumskjøpet fem enheter av produktutvalget "Selvklebende papir".

  • I «Uttrykk»-feltet, i tillegg til å skrive en formel, kan du bruke en spesiell datasammensetningsfunksjon kalt "Calculate". Denne funksjonen lar deg beregne en endelig verdi ved å bruke en bestemt formel. For hver motpart er det for eksempel nødvendig å vite prosentandelen av kjøp i fysiske enheter i forhold til det totale volumet. Men hvordan få det totale volumet av kjøp etter kvantitet? For å gjøre dette, bruk "Beregn"-funksjonen og skriv følgende uttrykk i "Uttrykk"-feltet:
Sum(Antall)/Beregn("Sum(Antall)", "TotalTotal")*100

Som sett, alle parametere til "Calculate"-funksjonen er strenger. For at mengdefeltet skal vises vakkert i rapporten, konfigurerer vi det på fanen "Datasett". I mengdelinjen finner vi feltet "Redigeringsalternativer". La oss åpne dialogen, finne "Format" -linjen og redigere formatlinjen i den, og sette verdien "Nøyaktighet" til to på "Nummer" -fanen.

La oss kjøre rapporten og se resultatet av å beregne prosentandelen av kjøp for motparten "AUPP KOS LLP" ift.
totalt volum:


På slutten av artikkelen vil jeg anbefale deg en gratis fra Anatoly Sotnikov. Dette er et kurs fra en erfaren programmerer. Den vil vise deg på eget grunnlag hvordan du bygger rapporter i tilgangskontrollsystemet. Du trenger bare å lytte nøye og huske! Du vil få svar på følgende spørsmål:
  • Hvordan lage en enkel listerapport?
  • Hva er felt-, bane- og tittelkolonnene på "Felter"-fanen for?
  • Hva er begrensningene for layoutfelt?
  • Hvordan konfigurere roller riktig?
  • Hva er rollene for layoutfelt?
  • Hvor finner jeg fanen for datasammensetning i en spørring?
  • Hvordan konfigurere parametere i tilgangskontrollsystemet?
  • Det blir enda mer interessant...
Sannsynligvis bør du ikke prøve å surfe på Internett selv på jakt etter nødvendig informasjon? Dessuten er alt klart til bruk. Bare sett i gang! Alle detaljene om hva som er i de gratis videoleksjonene

Her er en av leksjonene om å bokmerke datasammensetningen i en spørring:

I dette korte notatet vil jeg vise hvordan du kan summere verdiene på ulike nivåer grupperinger i en rapport ved hjelp av et datasammensetningssystem.
Som vist på bildet, bare på "Varegrupper"-grupperingsnivået, beregnes "Ordre"-ressursen, den viser hvor mye som må bestilles for gjeldende varegruppe basert på visse forhold:


Denne verdien kan kun beregnes på dette grupperingsnivået, siden det ikke er noen verdier over eller under å beregne. For eksempel, på nivået for detaljerte poster, er det ingen data om maksimalt antall i en gruppe, fordi disse dataene bare er gyldige for gruppen som helhet, og ikke for dens individuelle komponenter.

Følgelig er det nå nødvendig å beregne totalsummene for grupperingene ovenfor ("Lagre", "Lagerhustyper") og totalsummen.
For å gjøre dette, bruk funksjonen CalculateExpressionWithGroupArray:
EVALUATE EXPRESSIONWITHGROUPARRAY (EVALEXPRESSIONWITHGROUPARRAY)
Syntaks:
EvaluateExpressionWithGroupArray(,)
Beskrivelse:
Funksjonen returnerer en matrise, hvor hvert element inneholder resultatet av å evaluere et uttrykk for gruppering etter det angitte feltet.
Layoutsammensetningen, når den genererer en layout, konverterer funksjonsparametere til datasammensetningslayoutfelt. For eksempel vil Konto-feltet bli konvertert til DataSet.Account.
Når layoutbyggeren genererer uttrykk for utdata fra et tilpasset felt hvis uttrykk bare inneholder CalculateArrayWithGroupArray()-funksjonen, genererer utdatauttrykket slik at utdatainformasjonen blir ordnet. For eksempel, for et tilpasset felt med uttrykket:

CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Motpart")
Layoutbyggeren vil generere følgende uttrykk for utdata:

ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover)),Sum(DataSet.AmountTurnover)",,"DataSet.Account"),"2")))

Alternativer:

Type: String. Uttrykket som skal vurderes. String, for eksempel Amount(AmountTurnover).

Type: String. Grupperingsfeltuttrykk – uttrykk for grupperingsfelt, atskilt med komma. For eksempel entreprenør, part.

Type: String. Et uttrykk som beskriver utvalget brukt på detaljposter. Uttrykket støtter ikke bruk av aggregerte funksjoner. For eksempel, DeletionFlag = False.

Type: String. Et uttrykk som beskriver utvalget brukt på gruppeposter. For eksempel, Amount(AmountTurnover) > &Parameter1.
Eksempel:

Maximum(CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Motpart"));

En detaljert beskrivelse av funksjonssyntaksen finner du på http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Nå, for beregningen, dupliserer vi "Ordre"-feltet, med forskjellige verdier "Beregn etter...", ved å bruke følgende uttrykk, merk at på hvert høyere nivå brukes verdiene til nivåene under grupperingene .

Som et resultat får vi følgende konstruksjon:

BeregnUttrykk er en ganske vanskelig ACS-funksjon å forstå, og eksempler på anvendelse i referanseinformasjonen er ganske knappe. Denne artikkelen diskuterer eksempler som garantert vil være nyttige for alle utviklere:

  1. kumulativ total i gruppering;
  2. kumulativ total i en krysstabell;
  3. får den forrige verdien;
  4. PM-utgang på én linje.

1. Innhenting av en indikator på periodiseringsbasis

La oss få varemengden som en kumulativ total på grupperingsnivå. For å gjøre dette, lag et beregnet felt (se figur 1).
På fanen "Ressurser" angir du funksjonen for det beregnede feltet:
CalculateExpression("Sum(Quantity Turnover)", "First", "Current")
som vil summere antall produkter fra den første posten til den nåværende (se figur 2).

Hvis den kumulative totale mengden av en vare må innhentes på nivået av detaljerte poster, så setter vi CalculateExpression-funksjonen for det beregnede feltet på fanen "Kalkulerte felt" (se figur 3).
Avhengig av nivået for å oppnå den kumulative totalen, oppretter vi en gruppering (se figur 4): på ressursnivå - gruppering etter varer, på fjernkontrollnivå - gruppering av detaljerte poster.
Figur 4. Rapportgrupperinger med kumulative totaler

2. Henter indikatorverdien fra forrige rad

La oss få valutakursen for datoen og forrige dato. For å gjøre dette, lag et beregnet felt og skriv følgende uttrykk i uttrykksfeltet (se figur 5):
CalculateExpression("Pris", "Forrige", "Forrige")
som vil ta den forrige verdien av valutakursen for gjeldende rad, begrenser den siste parameteren til funksjonen mottaket av data.
Siden vi jobber på nivå med detaljerte poster, går vi umiddelbart til fanen "Innstillinger" og oppretter en gruppering - detaljerte poster.

3. Innhenting av en indikator som en kumulativ total i en krysstabell

La oss få varemengden på periodiseringsbasis etter periode. For å gjøre dette, lag et beregnet felt (se figur 1). På fanen "Ressurser" spesifiserer vi følgende uttrykk for det beregnede feltet (se figur 6):
CalculateExpression("Sum(Quantity Turnover)", "Period", "First", "Current")
som på grupperingsnivå vil beregne varemengden i intervallet fra første linje til gjeldende i sammenheng med perioden for hver vare.
På fanen "Innstillinger" oppretter du en tabell med gruppering etter element i en rad og gruppering etter periode i en kolonne (se figur 7).

4. Utgang av tabelldata på én linje

Metoder for å vise tabelldata på én linje, inkludert metoden som bruker CalculateExpression-funksjonen, er diskutert i artikkelen

Logg inn på siden som student

Logg på som elev for å få tilgang til skolemateriell

Datasammensetningssystem 1C 8.3 for nybegynnere: telling av resultatene (ressurser)

Hensikten med denne leksjonen vil være:

  • Skriv en rapport som viser en liste over produkter (matkatalog), deres kaloriinnhold og smak.
  • Grupper produkter etter farge.
  • Lær om å oppsummere (ressurser) og beregnede felt.

Opprett en ny rapport

Som i tidligere leksjoner åpner vi databasen " Deli"i konfiguratoren og lag en ny rapport gjennom menyen" Fil"->"Ny...":

Dokumenttype - ekstern rapport:

I rapportoppsettskjemaet skriver du navnet " Leksjon 3"og trykk på knappen" Åpne datasammensetningsdiagram":

La standard skjemanavn og klikk på " Klar":

Legger til en forespørsel gjennom konstruktøren

På fanen " Datasett" klikk grønn plusstegnet og velg " Legg til datasett - spørring":

I stedet for å skrive forespørselsteksten manuelt, kjører vi den på nytt spørringskonstruktør:

På "fanen" Tabeller"dra bordet" Mat" fra den første kolonnen til den andre:

Velg fra tabellen " Mat"felt som vi vil be om. For å gjøre dette, dra og slipp feltene" Navn", "Smak", "Farge"Og" Kaloriinnhold" fra den andre kolonnen til den tredje:

Det ble slik:

Trykk på knappen " OK" - forespørselsteksten ble generert automatisk:

Oppretter

Gå til fanen " Innstillinger" og klikk på tryllestav, å ringe innstillingsdesigner:

Velg rapporttype " Liste..." og trykk på knappen " Lengre":

Dra fra venstre kolonne til høyre feltene som vil vises i listen og klikk på " Lengre":

Dra fra venstre kolonne til høyre felt " Farge" - det vil skje gruppering linjer i rapporten. Klikk " OK":

Og her er resultatet av designerens arbeid. Hierarki i rapporten vår:

  • rapporten som helhet
  • gruppering "Farge"
  • detaljerte oppføringer - linjer med matnavn

Lagre rapporten (knapp diskett) Og uten å lukke Vi vil umiddelbart åpne konfiguratoren i brukermodus. Det ble slik:

Endre rekkefølgen på kolonnene

Men la oss la oss endre rekkefølgen kolonner (pil opp og ned) slik at det ser ut som figuren nedenfor:

La oss lagre rapporten og åpne den igjen i brukermodus:

Flott, det er mye bedre.

La oss oppsummere kaloriinnholdet

Det ville være fint å oppsummere kaloriinnholdet i matvarer etter gruppe. For å se summen av kaloriinnholdet i alle produkter, for eksempel hvit eller gul. Eller finn ut det totale kaloriinnholdet til alle produktene i databasen.

For dette formålet er det en mekanisme for beregning av ressurser.

Gå til fanen " Ressurser"og dra feltet" Kaloriinnhold"(vi skal oppsummere det) fra venstre kolonne til høyre.

I dette tilfellet, i feltet, velg uttrykket fra rullegardinlisten " Mengde (kalori)", siden totalen vil være summen av alle elementene som er inkludert i totalen:

Vi lagrer og genererer en rapport:

Vi har nå resultater for hver av gruppene og for rapporten som helhet.

La oss summere det opp (gjennomsnitt) i form av kalorier

La oss nå få det til å vises i en annen kolonne gjennomsnitt kaloriinnhold i produkter etter grupper og i rapporten som helhet.

Du kan ikke berøre den eksisterende "Kalori"-kolonnen - totalen er allerede vist i den, så la oss lage et annet felt, som vil være en nøyaktig kopi av "Calorie"-feltet.

For å lage et slikt "virtuelt" felt, vil vi bruke mekanismen beregnede felt.

Gå til fanen " Beregnede felt" og trykk grønn plusstegn:

I en kolonne" Databane"vi skriver navnet på det nye feltet ( sømløst, uten mellomrom). La det hete " Gjennomsnittlig kaloriinnhold", og i kolonnen" Uttrykk"vi skriver navnet på et eksisterende felt som det nye feltet skal beregnes på grunnlag av. Vi skriver der " Kaloriinnhold". Kolonne " Overskrift" fylles ut automatisk.

Vi har lagt til et nytt felt (" Gjennomsnittlig kaloriinnhold"), men det vil ikke vises i rapporten av seg selv - du må enten ringe igjen innstillingsdesigner ("tryllestav") eller legg til dette feltet manuelt.

La oss gjøre det sekund vei. For å gjøre dette, gå til fanen " Innstillinger", plukke ut " Rapportere"(Vi ønsker tross alt å legge til feltet som en helhet i rapporten), velg fanen nederst" Valgte felt"og dra feltet" Gjennomsnittlig kaloriinnhold"fra venstre kolonne til høyre:

Det ble slik:

Vi lagrer og genererer en rapport:

Feltet har dukket opp, og vi ser at verdiene er verdiene til "Calorie"-feltet. Flott!

For å gjøre dette vil vi igjen bruke mekanismen som allerede er kjent for oss ressurser(oppsummerer). Gå til fanen " Ressurser"og dra feltet" Gjennomsnittlig kaloriinnhold"fra venstre kolonne til høyre:

Dessuten, i kolonnen " Uttrykk"velge" Gjennomsnittlig (gjennomsnittlig kalori)":

Vi lagrer og genererer en rapport:

Vi ser at for gruppene, det vil si for hver farge, og for rapporten som helhet, ble gjennomsnittsverdien beregnet helt riktig. Men de er tilstede ekstra oppføringer for individuelle produkter (ikke grupper) som jeg ønsker å fjerne fra rapporten.

Vet du hvorfor de dukket opp (verdier ikke etter gruppe)? Fordi når vi la til feltet " Gjennomsnittlig kaloriinnhold"i rapportinnstillingene, i det andre trinnet vi valgte hele rapporten og dette nye feltet havnet i elementet " Detaljert poster".

La oss fikse feilen. For å gjøre dette, gå tilbake til fanen " Innstillinger", plukke ut " Detaljerte oppføringer" først ovenfra (trinn 2) og deretter " Detaljerte oppføringer"nedenfra (trinn 3), gå til bokmerket" Valgt Enger" og vi vil se elementet i høyre kolonne " Auto".

Element " Auto" - dette er ikke ett felt. Dette er flere felt som faller her automatisk basert på innstillinger på høyere nivå.

For å se hva disse feltene er, klikk på elementet " Auto" Ikke sant knappen og velg " Utvide":

Element " Auto" utvidet til følgende felt:

Og her er feltet vårt" Gjennomsnittlig kaloriinnhold"som kom hit fra punktet" Rapportere" da vi dro ham dit. Bare la oss fjerne merk av i boksen ved siden av dette feltet for å fjerne utdataene.