Funksjoner til uttrykksspråket til datasammensetningssystemet. Bruke ressurser i SKD ved å bruke eksemplet med å lage en ekstern tabellrapport Beregn beløpet ved horisontal gruppering av SKD 1s

Det er et informasjonsregister "Stopp langs ruten", som lagrer informasjon om avstanden fra start til endestopp.

Ris. 1. Informasjonsregister "Stopp langs ruten"

Det er påkrevd å utarbeide en rapport om adgangskontrollsystemet som viser avstanden mellom to stopp langs ruten.

Løsning

I enhver konfigurasjon som støtter administrerte skjemaer, vil vi opprette et ikke-periodisk register med informasjon "Stopp langs ruten". La oss legge til dimensjonene Rute og Stopp med en strengtype på henholdsvis lengde 4 og 50, samt en Avstandsressurs med talltype med lengde 10,2. La oss lagre endringene i den nye konfigurasjonen. For å lage en ekstern rapport, i Meny-->Fil-->Ny, velg "Ekstern rapport", angi navnet og åpne datalayoutdiagrammet:

Ris. 2. Opprette en ekstern rapport om adgangskontrollsystemet

I vinduet som åpnes, klikk på "Legg til datasett"-knappen og velg linjen "Legg til datasett - spørring":

Ris. 3. Legge til et datasett - spørring

La oss lage en ny forespørsel. For å løse problemet trenger vi i spørringen informasjonsregisteret "Stopp langs ruten", og siden rapporten tydelig skal vise avstanden mellom to stopp, vil vi lage en spørring for en tabellrepresentasjon langs X- og Y-aksene , ved å bruke en fullstendig ekstern sammenføyning av registertabellen med seg selv:

Ris. 5. Spesifisere ressurser for tilgangskontrollsystemer

La oss nå gå til "Innstillinger"-fanen og klikk på "Åpne innstillingsdesigner", velg rapporttypen Tabell:

Ris. 7. Velge rapportfelt

Fig.8. Velge gruppering av felt

Ris. 9. Velge sorteringsfelt

Alt som gjenstår er å bruke knappen "Egenskaper for brukerinnstillingselementer" for å opprette disse innstillingene, og også på fanen "Andre innstillinger" for å indikere hvordan ressursene vil bli lokalisert og forkaste summene (de er ikke nødvendige her):

Ris. 10 Bruker- og andre innstillinger.

Rapporten er klar. La oss nå gå fra konfigurasjonen til Enterprise og fylle ut informasjonsregisteret (hvis det ikke allerede er fylt ut):

Ris. 11. Utfylling av informasjonsregisteret

Og til slutt, fra Meny-->Fil kaller vi rapporten vår fra stedet der vi lagret den i konfiguratoren, klikk på "Generer"-knappen og se løsningen på problemet:

Ris. 12. Rapporter "Avstand mellom holdeplasser"

Publikasjonen fikk meg til å skrive en artikkel

I dette korte notatet vil jeg vise hvordan du kan oppsummere verdier på ulike grupperingsnivåer 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", "Lagertyper") 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:

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 vare og etter 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
    ressurs vil bli beregnet iht ulike nivåer grupper. 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 naturlige 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 prosentandel av kjøp for motparten "AUPP KOS TOO" 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...
Kanskje du ikke burde 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:

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"

Del med venner eller spar selv:

Laster inn...