SKD beregne etter fungerer ikke. Bruk av ressurser i tilgangskontrollsystemet ved å bruke eksemplet med å lage en ekstern tabellrapport. Opprett en ny rapport

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.

Den resulterende innstillingen var:

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 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 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 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...
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 detaljer om hva som er i de gratis videoleksjonene

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

Artikkelen beskriver et eksempel på praktisk bruk av et vektet gjennomsnitt i rapportresultater. Noen teknikker for arbeid med adgangskontrollsystemer er vist. Artikkelen er beregnet på en utdannet leser som minst har grunnleggende ferdigheter i arbeid med tilgangskontrollsystemer og spørringsdesigneren.

Beregningen av det vektede gjennomsnittet brukes aktivt i oppgaver knyttet til ledelsesregnskap og andre forretningskalkyler.

A-priory, - VEKTLAGT GJENNOMSNITT(vektet gjennomsnitt) er et aritmetisk gjennomsnitt som tar hensyn til vekten av hvert av leddene som dette gjennomsnittet er beregnet for.

I nesten alle lærebøker om ledelsesregnskap, for å illustrere det vektede gjennomsnittet, gir de et eksempel med kjøp av tre partier av samme produkt - hvert parti varer har en annen innkjøpspris og en annen mengde. Det er klart at dersom vi i en slik situasjon tar det aritmetiske gjennomsnittet av innkjøpsprisene, vil vi få gjennomsnittstemperaturen på sykehuset – et tall som ikke har noen praktisk betydning. I en slik situasjon er det det vektede gjennomsnittet som gir mening.

Det samme lærebokeksemplet: varer ble kjøpt i tre partier, hvorav ett var 100 tonn for 70 pund. Kunst. per tonn, den andre - 300 tonn ved 80 pund. Kunst. per tonn og tredjedel - 50 tonn ved 95 lbs. Kunst. per tonn, så kjøper han totalt 450 tonn varer; den vanlige gjennomsnittlige kjøpesummen vil være (70 + 80 + 95): 3 = 81,7 pund. Kunst. Den veide gjennomsnittsprisen, tatt i betraktning volumene til hver batch, er lik (100 × 70) + (300 × 80) + (50 × 95): 450 = 79,4 pund. Kunst. per tonn.

Formel:

Hvor X er verdiene hvis vektede gjennomsnitt vi ønsker å oppnå, og W er vektene.

Det er her teorien slutter.

Jeg måtte forholde meg til dette da jeg viste data om salg av varer i en rapport, gruppert etter ledere, der det var nødvendig for å oppnå lønnsomhet som et resultat. Linjene i rapporten viste lønnsomheten for hvert solgte produkt i resultatene, det var nødvendig å se hvilken lønnsomhet lederen jobbet med. Følgelig er lønnsomhet en "verdi", og "vekten" av denne verdien er inntekter. En rekke avklaringer for å komplettere bildet. Inntekt (salgsvolum) er produktets salgspris og mengde multiplisert. Bruttofortjeneste er inntekt minus kostnad (hvordan kostnaden ble beregnet nøyaktig i forbindelse med denne artikkelen er ikke viktig). Og til slutt, vår lønnsomhet er forholdet mellom bruttofortjeneste og omsetning uttrykt i prosent.

Spørsmålet oppstår: hvilken lønnsomhet utførte forvalteren i rapporteringsperioden? For å svare riktig på dette spørsmålet, må du beregne den vektede gjennomsnittlige lønnsomhetsverdien.

For å få det lønnsomhetsvektede gjennomsnittet i SKD, oppretter vi et hjelpefelt i skjemaet i spørringskonstruktørenvilkårlig uttrykk, hvor vi registrerer produktet av lønnsomhet og inntekter. Vi tildeler et alias til dette feltet -Hjelpefelt. Se bildet nedenfor.

Vi vil ikke vise dette feltet i rapporten, vi trenger dataene for å beregne resultatene. Vi vil beregne resultatene i ACS-fanenRessurser.

En annen teknikk for å jobbe med ACS på fanen "Ressurser", der beregningen av totaler er indikert, er muligheten til å bruke uttrykk i "Uttrykk"-feltet med data fra "Tilgjengelige felt". Se bildet nedenfor.

For rapportkolonnen «Prosentandel av lønnsomhet» skriver vi uttrykket Beløp(Hjelpefelt)/Beløp(inntekt).

For å oppsummere, først av alt, er det viktig å forstå hva et vektet gjennomsnitt er, og hvor du trenger å bruke bare det aritmetiske gjennomsnittet, og hvor - det vektede gjennomsnittet. Fra et teknisk synspunkt kan to punkter by på noen vanskeligheter - opprettelsen av et hjelpefelt i rapporten, og muligheten til å bruke et vilkårlig uttrykk i ACS-ressursene for å beregne resultatene vi trenger.

Jeg håper at denne artikkelen vil være nyttig for noen.

1. Beregn (Eval)- er ment å vurdere et uttrykk i sammenheng med en eller annen gruppering. Funksjonen brukes for kompatibilitet med tidligere versjoner av plattformen. Det anbefales å bruke CalculateExpression-funksjonen i stedet.

Syntaks:
Beregn (uttrykk, gruppering, kalkulasjonstype)

Alternativer:

  • Uttrykk(Linje). Inneholder et beregnet uttrykk;
  • Gruppering(Linje). Inneholder navnet på grupperingen i konteksten som uttrykket skal evalueres i. Hvis en tom streng brukes som grupperingsnavn, vil beregningen utføres i sammenheng med gjeldende gruppering. Hvis GrandTotal-strengen brukes som gruppenavn, vil beregningen utføres i sammenheng med totalsummen. Ellers vil beregningen bli utført i sammenheng med overordnet gruppering med samme navn.
    For eksempel:
    Sum(Salg.SumOmsetning) / Calculate("Sum(Salg.SumOmsetning)", "Totalt").
    I dette eksemplet vil resultatet være forholdet mellom beløpet for feltet "Sales.AmountTurnover" i grupperingsposten og beløpet for det samme feltet i hele oppsettet.
  • Beregningstype(Linje). Hvis denne parameteren er satt til "TotalTotal", vil uttrykket bli beregnet for alle grupperingsposter. Hvis verdien til parameteren er "Gruppering", vil verdiene beregnes for gjeldende grupperingsgruppepost.
2. Evaluer uttrykk (EvalExpression) - er ment å vurdere et uttrykk i sammenheng med en eller annen gruppering. Funksjonen tar hensyn til utvalg av grupperinger, men tar ikke hensyn til hierarkiske utvalg. Funksjonen kan ikke brukes på en gruppering i gruppeutvalget til den gruppen.

Syntaks:
CalculateExpression(Uttrykk, gruppering, kalkulasjonstype, start, slutt, sortering, hierarkisk sortering, behandlingsidentiske rekkefølgeverdier)

Alternativer:

  • Uttrykk(Linje). Inneholder et beregnet uttrykk;
  • Gruppering(Linje). Inneholder navnet på grupperingen i konteksten som uttrykket skal evalueres i. Hvis en tom streng brukes som grupperingsnavn, vil beregningen utføres i sammenheng med gjeldende gruppering. Hvis GrandTotal-strengen brukes som gruppenavn, vil beregningen utføres i sammenheng med totalsummen. Ellers vil beregningen bli utført i sammenheng med den overordnede grupperingen med det navnet;
  • Beregningstype(Linje). Hvis denne parameteren er satt til "TotalTotal", vil uttrykket bli beregnet for alle grupperingsposter. Hvis verdien av parameteren er "Gruppering", vil verdiene beregnes for gjeldende grupperingsgruppepost. Hvis parameteren er satt til "Non-Resource Grouping", vil uttrykket evalueres for den første gruppeposten i den opprinnelige grupperingen, når funksjonen beregnes for en gruppepost for ressurs. Når du evaluerer CalculateExpression-funksjonen med verdien "GroupingNonResource" for gruppeposter som ikke er grupperinger etter ressurs, evalueres funksjonen på samme måte som den ville blitt evaluert med verdien til parameteren "Groupering". Layoutbyggeren for datasammensetning, når den genererer et datakomposisjonsoppsett ved utdata av et felt - en ressurs som gruppering utføres med, til oppsettet, sender ut til oppsettet et uttrykk beregnet ved hjelp av CalculateExpression-funksjonen med den spesifiserte "GroupingNon-Resource"-parameteren. For andre ressurser gruppert etter ressurs, returneres normale ressursuttrykk. Hvis parameteren er satt til "Hierarki", må uttrykket evalueres for den overordnede hierarkiske posten, hvis det er en, og for hele grupperingen, hvis det ikke er noen overordnet hierarkisk post. Layoutbyggeren, når den genererer et uttrykk for % i Hierarchy Group-feltet, genererer et uttrykk som inneholder forholdet mellom ressursuttrykket og CalculateExpression-funksjonen for ressursuttrykket som beregnes for gjeldende gruppering med beregningstypen Hierarki.
  • Start. Angir fra hvilken post fragmentet skal begynne, i hvilke aggregerte uttrykksfunksjoner som skal beregnes, og fra hvilken post det skal hentes feltverdier utenfor aggregerte funksjoner. En streng som inneholder en av:
    • "Først" Det er nødvendig å skaffe den første grupperingsposten. Etter ordet i parentes kan du spesifisere et uttrykk, hvis resultat vil bli brukt som en forskyvning fra begynnelsen av grupperingen. Den resulterende verdien må være et heltall større enn null. For eksempel First(3) – mottar den tredje posten fra begynnelsen av grupperingen. Hvis den første posten er utenfor grupperingen, anses det som ingen poster. For eksempel, hvis det er 3 poster, og du ønsker å få First(4), så anses det at det ikke er noen poster.
    • "Siste" Du må få den siste grupperingsposten. Etter ordet i parentes kan du spesifisere et uttrykk, hvis resultat vil bli brukt som en forskyvning fra slutten av grupperingen. Den resulterende verdien må være et heltall større enn null. For eksempel Last(3) – mottar den tredje posten fra slutten av gruppen. Hvis den siste posten er utenfor grupperingen, anses det som ingen poster. For eksempel, hvis det er 3 poster, og du ønsker å få Last(4), så anses det at det ikke er noen poster.
    • "Tidligere" Du må få den forrige grupperingsposten. Etter ordet i parentes kan du spesifisere et uttrykk, hvis resultat vil bli brukt som en forskyvning tilbake fra gjeldende grupperingspost. For eksempel Previous(2) – henter forrige fra forrige post. Hvis den forrige posten er utenfor grupperingen (for eksempel krever den andre grupperingsposten å hente Previous(3)), så oppnås den første grupperingsposten. Når du mottar forrige post for grupperingssummen, oppnås den første posten.
    • "Neste" Du må få den neste grupperingsposten. Etter ordet i parentes kan du spesifisere et uttrykk, hvis resultat vil bli brukt som en forskyvning fremover fra gjeldende grupperingspost. For eksempel, Next(2) – får den neste fra neste post. Hvis neste post går utover grupperingen, anses det som ingen poster. For eksempel, hvis det er 3 oppføringer og den tredje oppføringen mottar Neste, anses det at det ikke er noen oppføringer. Når neste post mottas for grupperingssummen, anses det som ingen post.
    • "Nåværende". Du må få den gjeldende posten. Ved henting for en grupperingssum hentes den første posten.
    • "Grenseverdi". Behovet for å få en post med den angitte verdien. Etter ordet LimitingValue i parentes, må du angi uttrykket med verdien du vil starte fragmentet av, det første rekkefølgefeltet. Den første posten hvis bestillingsfeltverdi er større enn eller lik den angitte verdien vil bli returnert som posten. For eksempel, hvis Periode-feltet brukes som bestillingsfeltet, og det har verdiene 01/01/2010, 02/01/2010, 03/01/2010, og du ønsker å få LimitingValue(DateTime(2010) , 1, 15)), vil en post med datoen 02/01 bli innhentet.
  • Slutt. Angir til hvilken post fragmentet skal videreføres, der det aggregerte uttrykket skal beregnes. En streng som inneholder en av:
    • "Først"
    • "Siste"
    • "Tidligere"
    • "Neste"
    • "Nåværende".
    • "Grenseverdi".
  • Sortering. En streng som viser uttrykkene, atskilt med komma, i retningen som sekvensen skal sorteres i. Hvis ikke spesifisert, utføres rekkefølgen på samme måte som for grupperingen som uttrykket er evaluert for. Etter hvert uttrykk kan du spesifisere nøkkelordet Stigende, for rekkefølge i stigende rekkefølge, Synkende, for rekkefølge i synkende rekkefølge, Auto-Ordering, for å sortere referansefeltene etter feltene du vil sortere objektet det refereres til. Ordet automatisk rekkefølge kan brukes med både ordet stigende og synkende.
  • Hierarkisk sortering. Ligner på sortering. Brukes til å organisere hierarkiske poster. Hvis det ikke er spesifisert, genererer layoutkompositøren bestillingen i henhold til rekkefølgen som er spesifisert i Sort-parameteren.
  • Behandler samme ordreverdier. En streng som inneholder en av:
    • "Together" betyr at en sekvens av ordnede poster brukes til å bestemme forrige og neste post;
    • "Separat" betyr at forrige og neste post bestemmes basert på verdiene til bestillingsuttrykkene;
    For eksempel, hvis den resulterende sekvensen er sortert etter dato:
    1. 1. januar 2001 Ivanov M. 10
    2. 2. januar 2001 Petrov S. 20
    3. 2. januar 2001 Sidorov R. 30
    4. 3. januar 2001 Petrov S. 40
    Når du bruker behandling av identiske verdier av rekkefølgen "Separat", vil den forrige for post 3 være post 2, og når du bruker "Together" - post 1. Og fragmentet for gjeldende post for post 2 for "Separat" vil være post 2, og for "Together" - post 2 og 3. Dermed vil summen for gjeldende post for "Separat" være 20, og for "Together" - 50. Når "Together" er spesifisert i Start- og Sluttparametere, du kan ikke spesifisere en offset for posisjonene "Først", "Siste", "Forrige", "Neste". Standardverdien er "Separat".
Eksempel:
Innhenting av forholdet mellom beløpet for "Sales.AmountTurnover"-feltet i en grupperingspost og beløpet for det samme feltet i hele oppsettet:
Sum(Salg.SumOmsetning) / CalculateExpression("Sum(Salg.SumOmsetning)", "Totalt").

Dette eksemplet beregner verdien av det gjeldende hierarkiet:
Valg
Når Level() > 0
Deretter EvaluateExpression("Referanse", "Hierarki")
Ellers Null
Slutt

Merknader:
Funksjonen tar hensyn til utvalg av grupperinger, men tar ikke hensyn til hierarkiske utvalg. Funksjonen kan ikke brukes på en gruppering i gruppeutvalget til den gruppen. Når du for eksempel velger nomenklaturgruppering, kan du ikke bruke uttrykket CalculateExpression("Sum(SumOmsetning)", "TotalTotal") > 1000 . Men et slikt uttrykk kan brukes i hierarkisk seleksjon. Hvis sluttposten går foran startposten, anses det at det ikke finnes noen poster for beregning av detaljerte data og beregning av aggregerte funksjoner. Ved beregning av intervalluttrykk for en totalsum (Grupperingsparameteren er satt til "Bruttototal"), antas det at det ikke finnes noen poster for beregning av detaljerte data og beregning av aggregerte funksjoner. Når du genererer et uttrykk for CalculateExpression-funksjonen, erstatter layout-kompositoren, hvis bestillingsuttrykket inneholder felt som ikke kan brukes i gruppering, CalculateExpression-funksjonen med NULL.

3. Evaluer uttrykk med gruppematrise (EvalExpression med gruppematrise) - funksjonen returnerer en matrise, hvor hvert element inneholder resultatet av å beregne et uttrykk for gruppering etter det angitte feltet.

Syntaks:
CalculateExpressionWithGroupArray (Expression, GroupFieldExpressions, SelectRecords, SelectGroups)

Alternativer:

  • Uttrykk(String) - uttrykket som skal evalueres. For eksempel, "Amount(AmountTurnover)";
  • FieldExpressionsGroups
  • Utvalg av poster
  • Utvalg av grupper- utvalg brukt på gruppeposter. For eksempel: "Beløp (Beløp Omsetning) > &Parameter1".
Eksempel:
Maximum(CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Motpart"));


Når layoutbyggeren genererer uttrykk for visning av et tilpasset felt hvis uttrykk bare inneholder CalculateArrayWithGroup-funksjonen, genererer visningsuttrykket slik at dataene som vises av visningene og dataene 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)), Amount(DataSet.AmountTurnover)", "DataSet.Account"), "2")))

4. Beregn uttrykk med GroupValueTable (EvalExpressionWithGroupValueTable) - funksjonen returnerer en tabell med verdier, hvor hvert element inneholder resultatet av å beregne et uttrykk for gruppering etter det angitte feltet.

Syntaks:
CalculateExpressionWithGroupValueTable (Uttrykk, gruppefeltuttrykk, postvalg, gruppeutvalg)

Alternativer:

  • Uttrykk(String) - uttrykket som skal evalueres. En linje kan inneholde flere uttrykk atskilt med komma. Etter hvert uttrykk kan det være et valgfritt nøkkelord AS og navnet på verditabellkolonnen. For eksempel: "Motpart, Beløp (Beløp Omsetning) Som Salgsvolum."
  • FieldExpressionsGroups- uttrykk for grupperingsfelt, atskilt med komma. For eksempel "Motpart, Part";
  • Utvalg av poster- et uttrykk brukt på detaljposter. For eksempel, "Slettingsflagg = False." Hvis denne parameteren bruker en aggregert funksjon, vil det oppstå en feil når dataene komponeres;
  • Utvalg av grupper- utvalg brukt på gruppeposter. For eksempel: "Beløp (Beløp Omsetning) > &Parameter1".
Eksempel:
CalculateExpressionWithGroupValueTable("Konto AS Motpart, Beløp(Beløp Omsetning) AS Salgsvolum", "Konto")

Resultatet av denne funksjonen vil være en verditabell med kolonnene Motpart og Salgsvolum, som vil inneholde motparter med deres salgsvolum.
Layoutsammensetningen, når den genererer en layout, konverterer funksjonsparametere til datasammensetningslayoutfelt. For eksempel vil Konto-feltet bli konvertert til DataSet.Account.
For eksempel et egendefinert felt med uttrykket:
CalculateExpressionWithGroupValueTable("Konto, Beløp(Beløp Omsetning)", "Konto")
Layoutbyggeren vil generere følgende uttrykk for utdata:
ConnectRows(GetPart(Order(CalculateExpressionWithGroupingValueTable("DataSet.Account, DataSet.AccountRepresentation, Sum(DataSet.AmountTurnover), View(DataSet.AmountTurnover), DataSet.OrderingField", "DataSet".Account"), "3". ), "2, 4"))

5. Nivå - funksjonen er utformet for å oppnå gjeldende opptaksnivå.

Syntaks:
Nivå()

Eksempel:
Nivå()

6. Sekvensnummer - få neste serienummer.

Syntaks:
NumberByOrder()

Eksempel:
NumberByOrder()

7. SequenceNumberInGrouping - returnerer neste sekvensnummer i gjeldende gruppering.

Eksempel:
NumberByOrderInGroup()

8. Format - få en formatert streng med den beståtte verdien.

Syntaks:
Format(verdi, formatstreng)

Alternativer:

  • Betydning- uttrykket som må formateres;
  • FormatString- formatstrengen er satt i samsvar med 1C:Enterprise-formatstrengen.
Eksempel:
Format(fakturaer.dok.beløp, "NPV=2")

9. BeginOfPeriod

Syntaks:
StartPeriod(Dato, PeriodeType)

Alternativer:

  • Dato(Dato). Oppgitt dato;
  • Periodetype
Eksempel:
StartPeriod(DatoTid(2002, 10, 12, 10, 15, 34), "Måned")
Resultat: 10/01/2002 0:00:00

10. EndOfPeriod - funksjonen er laget for å velge en bestemt dato fra en gitt dato.

Syntaks:
EndPeriod(dato, periodetype)

Alternativer:

  • Dato(Dato). Oppgitt dato;
  • Periodetype(Linje). Inneholder en av følgende verdier: Minutt; Time; Dag; En uke; Måned; Fjerdedel; År; Tiår; Halvt år.
Eksempel:
EndPeriod(DatoTid(2002, 10, 12, 10, 15, 34), "Uke")
Resultat: 13.10.2002 23:59:59

11. AddKDate (DateAdd) - funksjonen er designet for å legge til en viss verdi til datoen.

Syntaks:
AddToDate(Uttrykk, IncrementType, Magnitude)

Alternativer:

  • Uttrykk(Dato). Opprinnelig dato;
  • TypeForstørrelse(Linje). Inneholder en av følgende verdier: Minutt; Time; Dag; En uke; Måned; Fjerdedel; År; Tiår; Halvt år.
  • Omfanget(Antall). Med hvor mye datoen må økes, ignoreres brøkdelen.
Eksempel:
AddToDate(DatoTid(2002, 10, 12, 10, 15, 34), "Måned", 1)
Resultat: 11/12/2002 10:15:34

12. DatoDifference - funksjonen er designet for å få forskjellen mellom to datoer.

Syntaks:
DifferenceDate(Expression1, Expression2, DifferenceType)

Alternativer:

  • Uttrykk 1(Dato). Fratrukket dato;
  • Uttrykk 2(Dato). Opprinnelig dato;
  • Typeforskjell(Linje). Inneholder en av verdiene: Second; Minutt; Time; Dag; Måned; Fjerdedel; År.
Eksempel:
DATODIFFERENCE(DATETIME(2002; 10; 12; 10; 15; 34),
DATOTIME(2002; 10; 14; 9; 18; 06); "DAG")
Resultat: 2

13. Understreng - Denne funksjonen er designet for å trekke ut en delstreng fra en streng.

Syntaks:
Delstreng (streng, posisjon, lengde)

Alternativer:

  • Linje(Linje). Strengen som delstrengen er hentet fra;
  • Posisjon(Antall). Posisjonen til tegnet som delstrengen som skal trekkes ut fra strengen begynner;
  • Lengde(Antall). Lengden på den tildelte delstrengen.
Eksempel:
SUBSTRING(Konto.adresse, 1, 4)

14. StringLength - funksjonen er laget for å bestemme lengden på en streng.

Syntaks:
StringLength(String)

Parameter :

  • Linje(Linje). En streng hvis lengde er spesifisert.
Eksempel:
Linje(motparter.adresse)

15. År- denne funksjonen er designet for å trekke ut året fra en datotypeverdi.

Syntaks:
År (dato)

Parameter :

  • Dato(Dato). Datoen som året fastsettes for.
Eksempel:
ÅR(Utgift.dato)

16. Kvartal - Denne funksjonen er ment å trekke ut kvartalsnummeret fra en datotypeverdi. Kvartalstallet varierer vanligvis fra 1 til 4.

Syntaks:
Kvartal (dato)

Parameter :

  • Dato(Dato). Datoen som kvartalet fastsettes for
Eksempel:
KVARTAL(Utgift.dato)

17. Måned - denne funksjonen er laget for å trekke ut månedsnummeret fra en datotypeverdi. Månedstallet varierer vanligvis fra 1 til 12.

Syntaks:
Måned (dato)

Parameter :

  • Dato(Dato). Datoen måneden fastsettes for.
Eksempel:
MONTH(Utgift.Dato)

18. Årets dag (DayOfYear) - denne funksjonen er utformet for å hente dagen i året fra en datotypeverdi. Dagen i året varierer normalt fra 1 til 365 (366).

Syntaks:
Årets dag (dato)

Parameter :

  • Dato(Dato). Datoen da årets dag fastsettes.
Eksempel:
DAGÅR(Utgift.dato)

19. Dag- denne funksjonen er utformet for å hente dagen i måneden fra en datotypeverdi. Dagen i måneden varierer vanligvis fra 1 til 31.

Syntaks:
Dag (dato)

Parameter :

  • Dato(Dato). Datoen da månedsdagen fastsettes.
Eksempel:
DAG(Utgift.dato)

20. Uke - denne funksjonen er utformet for å få årets ukenummer fra en datotypeverdi. Ukene i året er nummerert fra 1.

Syntaks:
Uke (dato)

Parameter :

  • Dato(Dato). Datoen for når ukenummer fastsettes.
Eksempel:
UKE(Utgift.dato)

21. Ukedag - denne funksjonen er utformet for å hente ukedagen fra en datotypeverdi. Vanlig ukedag varierer fra 1 (mandag) til 7 (søndag).

Syntaks:
Ukedag (dato)

Parameter :

  • Dato(Dato). Datoen da ukedagen bestemmes.
Eksempel:
UKEDAG (Dato for utgiftsfaktura)

22. Time- denne funksjonen er utformet for å hente time på dagen fra en datotypeverdi. Klokken på døgnet varierer fra 0 til 23.

Syntaks:
Time (dato)

Parameter :

  • Dato(Dato). Datoen da klokkeslettet fastsettes.
Eksempel:
HOUR(Utgift.Dato)

23. Minutt - denne funksjonen er utformet for å hente minuttet i timen fra en datotypeverdi. Minuttet i timen varierer fra 0 til 59.

Syntaks:
Minutt (dato)

Parameter :

  • Dato(Dato). Datoen når minuttet i timen fastsettes.
Eksempel:
MINUTT(Utgift.dato)

24. Andre - denne funksjonen er utformet for å hente sekundet av et minutt fra en datotypeverdi. Det andre av et minutt varierer fra 0 til 59.

Syntaks:
Andre (dato)

Parameter :

  • Dato(Dato). Datoen når sekundene i minuttet bestemmes.
Eksempel:
SEKUND(Utløpsdato)

25. Cast - denne funksjonen er laget for å trekke ut en type fra et uttrykk som kan inneholde en sammensatt type. Hvis uttrykket inneholder en annen type enn den nødvendige typen, vil NULL bli returnert.

Syntaks:
Express(Uttrykk, Typeindikasjon)

Alternativer:

  • Uttrykk- uttrykk som skal konverteres;
  • Type indikasjon(Linje). Inneholder en typestreng. For eksempel "Nummer", "String" osv. I tillegg til primitive typer kan denne linjen inneholde navnet på tabellen. I dette tilfellet vil det bli gjort et forsøk på å uttrykke en referanse til den angitte tabellen.
Eksempel:
Express(Data.Props1, "Tall(10,3)")

26. IsNull (IsNull) - denne funksjonen returnerer verdien til den andre parameteren hvis verdien til den første parameteren er NULL. Ellers vil verdien av den første parameteren bli returnert.

Syntaks:
IsNull(Uttrykk1, Uttrykk2)

Alternativer:

  • Uttrykk 1- verdi som skal kontrolleres;
  • Uttrykk 2- returner verdi hvis uttrykk1 er NULL.
Eksempel:
JaNULL(Beløp(Salg.BeløpOmsetning), 0)

27.ACos- beregner buecosinus i radianer.

Syntaks:
ACos (uttrykk)

Parameter :

  • Uttrykk(Antall). Cosinusverdien (i området -1 ... 1) som vinkelen bestemmes av.
28.ASin- beregner arcsine i radianer.

Syntaks:
ASin (uttrykk)

Parameter :

  • Uttrykk(Antall). Sinusverdien (i området -1 ... 1) som vinkelen bestemmes av.
29.ATan- beregner arctangens i radianer.

Syntaks:
ATan (uttrykk)

Parameter :

  • Uttrykk(Antall). Tangentverdien som vinkelen bestemmes med.
30.Cos- beregner cosinus.

Syntaks:
Cos (uttrykk)

Parameter :

  • Uttrykk
31. Exp- heve tallet e til en potens.

Syntaks:
Exp(Expression)

Parameter :

  • Uttrykk(Antall). Betydningen av graden.
32. Logg- beregner den naturlige logaritmen.

Syntaks:
Logg (uttrykk)

Parameter :

  • Uttrykk
33.Logg10- beregner logaritmen av X til grunntallet 10.

Syntaks:
Log10(Uttrykk)

Parameter :

  • Uttrykk(Antall). Det opprinnelige tallet er større enn 0.
34. Pow- eksponentiering.

Syntaks:
Pow (base, indikator)

Alternativer:

  • Utgangspunkt(Antall). Grunnlaget for operasjonen av eksponentiering.
  • Indeks(Antall). Eksponent.
35. Synd- beregner sinus.

Syntaks:
Synd (uttrykk)

Parameter :

  • Uttrykk(Antall). Spesifisert i radianer.
36. Sqrt- beregner kvadratroten.

Syntaks:
Sqrt(Uttrykk)

Parameter :

  • Uttrykk(Antall). Ikke-negativt tall.
37. Tan- beregner tangenten.

Syntaks:
Tan (uttrykk)

Parameter :

  • Uttrykk(Antall). Sinusverdien som vinkelen bestemmes med.
38. Runde- runder det opprinnelige tallet til ønsket bitdybde. Avrundingsmodusen er standard (1,5 som 2).

Syntaks:
Env (uttrykk, bitdybde)

Alternativer:

  • Uttrykk(Antall). Opprinnelig nummer;
  • Litt dybde(Antall). Antall desimaler å avrunde til.
39. Int- kutter av brøkdelen av et tall.

Syntaks:
Objekt (uttrykk)

Parameter :

  • Uttrykk(Antall). Et brøktall.
40. Funksjoner til fellesmoduler

Et datasammensetningsmotoruttrykk kan inneholde kall til funksjoner til globale vanlige konfigurasjonsmoduler. Ingen ekstra syntaks er nødvendig for å kalle opp slike funksjoner.

Eksempel:
AbbreviatedName(Documents.Link, Documents.Date, Documents.Number)

I dette eksemplet vil funksjonen "AbbreviatedName" kalles opp fra den generelle konfigurasjonsmodulen.
Merk at bruk av felles modulfunksjoner kun er tillatt hvis den aktuelle datasaer spesifisert.
I tillegg kan ikke funksjoner til vanlige moduler brukes i tilpassede feltuttrykk.

41. Harme - denne funksjonen returnerer en strengrepresentasjon av den beståtte verdien av en ikke-primitiv type. For verdier av en primitiv type, returnerer verdien i seg selv.

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

Eksempel:
Presentasjon (motpart)

42. Snøre - denne funksjonen konverterer den beståtte verdien til en streng.

Hvis en matrise eller en verditabell brukes som en parameter, returnerer funksjonen en streng som inneholder en strengrepresentasjon av alle elementene i matrisen, atskilt med tegnene "; ". Hvis et element har en tom strengrepresentasjon, vil strengen "<Пустое значение>".

Eksempel:
Rad (salgsdato)

43. ValueIsFilled

For NULL-verdier returnerer Undefined alltid False.
For boolske verdier returnerer den alltid True.
For andre typer returnerer True hvis verdien er forskjellig fra standardverdien for den gitte typen.

Eksempel:
ValueFilled (Leveringsdato)

44. LevelInGroup - denne funksjonen får gjeldende opptaksnivå i forhold til grupperingen.

Kan brukes til å oppnå neste nivå for en post i en hierarkisk gruppering.

Eksempel:
LevelInGroup()

45. Verditype

Syntaks:
Verditype (uttrykk)

Parameter :

  • Uttrykk(Linje). Type strengverdi.
Returnerer en verdi av typen Type som inneholder verditypen til funksjonsparameteren.

Logg inn på siden som student

Logg inn 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 standardskjemanavnet stå og klikk på "-knappen Klar":

Legger til en forespørsel gjennom konstruktøren

På fanen " Datasett" klikk grønn plusstegn 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 type rapport " 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 (gjennomsnittlig) 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 kalori", 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 kalori"), 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 kalori"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 kalori"fra venstre kolonne til høyre:

Dessuten, i kolonnen " Uttrykk"velge" Gjennomsnittlig (AverageCalorie)":

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 kalori"i rapportinnstillingene, i det andre trinnet vi valgte hele rapporten og dette nye feltet kom inn 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 kalori"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.

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"-knappen, 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. Fylle ut informasjonsregisteret

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

Ris. 12. Rapporter "Avstand mellom holdeplasser"

Publikasjonen fikk meg til å skrive en artikkel