Eksempler på bruk av scd-funksjonen - beregn et uttrykk. Datasammensetning system uttrykk språk (1Cv8) Beregn SKD uttrykk 1s eksempler

I lys av den kommende utgivelsen av 8.2.14, vil jeg prøve å beskrive noen nye funksjoner i datasammensetningssystemet.

Åpne datalayoutdiagrammet, gjerne i en ekstern rapport, for å gjøre redigeringen enklere.

Vi legger til et sett med data av spørringstypen og skriver, enten manuelt eller ved hjelp av spørringsdesigneren, en enkel spørring:

1. Sett opp en forespørsel i tilgangskontrollsystemet.

2. Sett opp beregnede felt i adgangskontrollsystemet

3. Konfigurer dataoppsettet på innstillingsfanen

4. Start 1C Enterprise 8.2.14. Åpne rapporten. Vi former, vi mottar.

Beskrivelse av selve de nye funksjonene:

1. CurrentDate()

Returnerer systemdatoen. Når du komponerer et layoutoppsett, i alle uttrykk som finnes i oppsettet, erstattes CurrentDate()-funksjonen med verdien til gjeldende dato.

2. COMPUTEEXPRESSION()

Syntaks:

CalculateExpression(<Выражение>, <Группировка>, <ОбластьВычисления>, <Начало>, <Конец>, <Сортировка>, <ИерархическаяСортировка>, <ОбработкаОдинаковыхЗначенийПорядка>)

Beskrivelse:

Funksjonen er utformet for å evaluere et uttrykk i sammenheng med en 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. For eksempel, i utvalget av Nomenklaturgruppen kan du ikke bruke uttrykket CalculateExpression("Sum(SumOmsetning)", "TotalTotal") > 1000. Men et slikt uttrykk kan brukes i hierarkisk utvalg.

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 GrandTotal), 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 EvaluateExpression-funksjonen, erstatter layout-kompositoren, hvis bestillingsuttrykket inneholder felt som ikke kan brukes i gruppering, EvaluateExpression-funksjonen med NULL.

Alternativer

<Выражение>

Type: String. Uttrykket som skal vurderes.

<Группировка>

Type: String. 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)/Beregn(“Sum(Salg.SumOmsetning)”, “Totalt”)

I dette eksemplet vil resultatet være forholdet mellom beløpet for feltet Salg. SumOmsetning av grupperingsposten til beløpet for samme felt i hele oppsettet;

<ОбластьВычисления>

Type: String. Parameteren kan ha følgende verdier:

  • GeneralTotal - uttrykket vil bli beregnet for alle grupperingsposter.
  • Hierarki - Uttrykket vil bli evaluert for den overordnede hierarkiske posten hvis det er en, og for hele grupperingen hvis det ikke er noen overordnet hierarkisk post.
  • Gruppering - uttrykket vil bli evaluert for gjeldende grupperingspost.
  • Ikke-ressursgruppering - når man beregner en funksjon for en gruppepost for ressurs, vil uttrykket bli evaluert for den første gruppeposten i den opprinnelige grupperingen.

Når du beregner en funksjon CalculateExpression() med verdien Non-Resource Grouping for gruppeposter som ikke er ressursgrupperinger, beregnes funksjonen på samme måte som den ville blitt beregnet hvis parameterverdien var lik grupperingsverdien.

Layoutbyggeren for datasammensetning plasserer et uttrykk i oppsettet som beregnes ved hjelp av funksjonen når den genererer et datasammensetningsoppsett ved utdata av et ressursfelt som gruppering utføres til oppsettet. CalculateExpression(), som indikerer parameteren Ikke-ressursgruppering. For andre ressurser plasseres de vanlige ressursuttrykkene i ressursgrupperingen.

<Начало>

Type: String. 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. Verdien kan være en av følgende:

<Конец>

Type: String. Angir til hvilken post fragmentet skal videreføres, der de aggregerte funksjonene til uttrykket skal beregnes. Verdien kan være en av følgende:

  • 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 går utover grupperingen (for eksempel, for den andre grupperingsposten må du få Previous(3), så oppnås den første grupperingsposten.

Ved henting av forrige post for en grupperingssum anses det at den første posten er hentet.

  • 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 poster og Next() mottas for den tredje posten, anses det som ingen poster.

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.

  • BoundaryValue. Behovet for å få en post med den angitte verdien. Etter ordet LimitingValues ​​i parentes, må du angi uttrykket med verdien du vil starte fragmentet av, det første bestillingsfeltet.

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.

<Сортировка>

Type: String. Viser uttrykk, atskilt med komma, som beskriver rekkefølgereglene. 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 søkeord Ascend (for rekkefølge i stigende rekkefølge), Synkende (for rekkefølge i synkende rekkefølge) og AutoOrder (for å sortere referansefelt etter feltene du vil sortere det refererte objektet etter). Ordet automatisk rekkefølge kan brukes med både ordet stigende og synkende.

<ИерархическаяСортировка>

Type: String. Samme som Sorter-alternativet. 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.

<ОбработкаОдинаковыхЗначенийПорядка>

Type: String. Angir regelen for å bestemme forrige eller neste post i tilfelle det er flere poster med samme rekkefølgeverdi:

  • Separat betyr at en sekvens av ordnede poster brukes til å bestemme forrige og neste post. Standardverdi.
  • Sammen betyr at forrige og neste post bestemmes basert på verdiene til ordensuttrykkene.

For eksempel, hvis den resulterende sekvensen er sortert etter dato:

Dato Fullt navn Betydning
1 1. januar 2001 Ivanov M. 10
2 2. januar 2001 Petrov S. 20
3 3. januar 2001 Sidorov R. 30
4 4. januar 2001 Petrov S. 40

Hvis parameterverdien er Separat, så:

§ forrige oppføring til oppføring 3 vil være oppføring 2.

§ hvis beregningsfragmentet er definert som Current, Current (henholdsvis parametrene Start og End), vil for post 2 dette fragmentet bestå av én post 2. Uttrykket CalculateExpression(“Sum (Value)”, Current, Current) vil være lik 20.

Hvis parameterverdien er Together, så:

§ forrige oppføring til oppføring 3 vil være oppføring 1.

§ hvis beregningsfragmentet er definert som Current, Current (henholdsvis parametrene Start og End), vil dette fragmentet for post 2 bestå av post 2 og 3. Uttrykket CalculateExpression(“Sum (Value)”, Current, Current) vil være lik 50.

Når du spesifiserer en parameterverdi lik Together, i Start- og Sluttparameterne kan du ikke spesifisere en forskyvning for posisjonene First, Last, Previous, Next.

CalculateExpression(“Sum(SumOmsetning)”, “Først”, “Gjeldende”)

Hvis du ønsker å få grupperingsverdien i forrige linje, kan du bruke følgende uttrykk:

CalculateExpression(“Rate”, “Previous”)

Liste ny funksjoner:

CalculateExpressionWithGroupArray(<Выражение>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

Funksjonen returnerer en matrise, hvor hvert element inneholder resultatet av å evaluere et uttrykk for gruppering etter det angitte feltet.

CalculateExpressionWithGroupValueTable(<Выражения>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

Funksjonen returnerer en tabell med verdier, der hver rad inneholder resultatet av å evaluere uttrykk for gruppering etter det angitte feltet

Verdifylt(<Выражение>) – Returnerer True hvis verdien er forskjellig fra verdien av denne typen standard, annet enn NULL, annet enn tom referanse, annet enn Udefinert. Boolske verdier er sjekket for NULL. Strenger sjekkes for fravær av tegn som ikke er mellomrom

Format(<Выражение>, <Форматная строка>) – Motta en formatert streng med den beståtte verdien. Formatstrengen er satt i samsvar med formatstrengen til 1C:Enterprise-systemet.

Understreng(<Выражение>, <Начальные символ>, <ДлинаПодстроки>) – Denne funksjonen er laget for å trekke ut en delstreng fra en streng.

Linjelengde(<Выражение>) – Funksjonen er laget for å bestemme lengden på en streng. Parameter - strenguttrykk

Linje(<Выражение>) – Hvis en matrise sendes som en parameter, returnerer funksjonen en streng som inneholder strengrepresentasjoner av alle matriseelementer, atskilt med tegnene "; ". Hvis en verditabell sendes som en parameter, returnerer funksjonen en streng som inneholder strengrepresentasjoner av alle rader i verditabellen, med cellerepresentasjonene til hver rad atskilt med tegnene "; “, og linjene er et linjematingssymbol. Hvis et element har en tom strengrepresentasjon, vises strengen i stedet for representasjonen<Пустое значение>.

Datalayoutdiagram (1C SKD)- praktisk konstruktør for å lage programvareprodukter 1C: Enterprise komplekse rapporter som bidrar til utvikling og sporing av produksjonsautomatisering, slik at de kan gjøres så fleksible og vakre som mulig på et minimum av tid. En ekstra fordel med Data Composition Scheme (1C SKD) er den automatiske genereringen av et kontrollert rapportskjema, og når videre utvikling denne retningen, er en viktig faktor ved valg av rapportutviklingsmetode. Men på grunn av kompleksiteten i strukturen til Data Composition Scheme (1C SKD) og det store antallet innstillinger, fører det ofte til lengre utvikling av rapporten enn gjennom "output form designer". Derfor må en 1C-programmerer forstå alle vanskelighetene ved Data Composition Scheme (1C DCS) for å fremskynde utviklingstiden for å generere rapporter ytterligere.

La oss se på de tre første fanene i Data Composition Scheme (1C SKD) - et datasett, datasettforbindelser og beregnede felt.

Datasett i 1C SKD

Datasettet inkluderer evnen opprettelse av tre objekter – spørring, objekt og forening, la oss se nærmere på hver av dem:

Det er en vanlig spørring som genereres ved hjelp av Query Builder-knappen. Hvis Autofyll-flagget er satt, vil alle valgte detaljer automatisk bli inkludert i feltene til datasettet. Det er også mulig å tilpasse utfyllingen av feltene i forespørselen på fanen Datasammensetning, der det er tre faner:

Tabeller, her velges tabellene som skal delta i genereringen av rapporten, vanligvis er standarddata valgt, siden vi på fanen Tabeller og felt allerede har valgt dokumentene, katalogene, registrene vi trenger...

Felter, her velger vi de objektene som skal inkluderes i rapporten, barneflagget indikerer om det vil være tilgjengelige underordnede elementer for objektet eller ikke, det er logisk at for streng, numerisk og lignende data vil det ikke være mulig å sette flagget til True.

Forhold, her velger vi de objektene som kan brukes under forhold i adgangskontrollsystemet.

Noe av arbeidet gjøres i datasammensetningsskjemaet, og noe av det gjøres programmatisk, la oss se på et enkelt eksempel:

La oss først lage et layoutdiagram for dataoppsettet til dokumentet og kalle det SKD (for eksempel: 1C SKD), i det lager vi et datasettobjekt, så fyller vi ut feltene, for eksempel vi har for dokumentet tabelldel varer med detaljer - nomenklatur, mengde og pris.

La oss legge til tre felt og fylle ut hver kolonne med navnet på detaljene, de resterende kolonnene fylles ut automatisk:

La oss lage en knapp på dokumentskjemaet, beskriv operasjonsmekanismen i kontrollerte former:

&OnClient

Prosedyre Print()

OurReport = PrintOnServer(); //kall funksjonen på serveren

OurReport.Show(); //viser den genererte rapporten

Slutt på prosedyre

&PåServer

Funksjon PrintOnServer()

DocumentObject = FormAttributeValue(“Objekt”);

//vi plasserer tabelldelen Produkter i en struktur med navnet ProductsSKD på samme måte som vi anga i SKD selve navnet på objektet som inneholder dataene

DataSet = ny struktur;

DataSet.Insert(“ProductsSKD”, DocumentObject.Products);

//vi får oppsettet vårt og setter standardinnstillingene slik at alle innstillingene for rapportutdata er hentet fra oppsettet vårt

OurLayout = DocumentObject.GetLayout(“SKD”);

Innstillinger = OurLayout.DefaultSettings;

//lage et dataoppsett med våre innstillinger

LayoutLinker = newDataLayoutLayoutLinker;

LayoutLayout = LayoutComposer.Execute(OurLayout, Settings);

//utføre datasammensetning med datasettet vårt

DataCompositionProcessor = newDataCompositionProcessor;

DataCompositionProcessor.Initialize(LayoutLayout, DataSet);

//Vi lager et regnearkdokument og viser rapporten vår i den

ReportDocument = Nytt tabelldokument;

OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument;

OutputProcessor.SetDocument(ReportDocument);

OutputProcessor.Output(DataCompositionProcessor);

Returner DokumentRapport;

EndFunction

Hvis du ønsker, kan du få områder med en hvilken som helst annen layout og også vise dem i denne rapporten, for eksempel har vi et standardoppsett for å generere en betalingsordre og overskriften er veldig godt laget i den, for ikke å gjøre unødvendig arbeid, vi får bare oppsettet først, viser overskriften, så vil vi generere og vise rapporten vår om adgangskontrollsystemet.

OM samling

Vi kan plassere spørringene og objektene våre i den, men i motsetning til en forbindelse, legger den ganske enkelt tabeller til hverandre, det vil si at hvis vi kobler to identiske tabeller, vil vi ende opp med en, og når den kombineres, vil den dobles, la oss se ved et enkelt eksempel:

Vi har bord:

Ved kommunikasjon vil vi motta:

Og kombinert:

La oss nå se på å fylle ut kolonner i datasett (vi hopper over noen, siden de er relatert til andre faner; vi kommer tilbake til dem i fremtidige artikler):

- felt, angi det generelle navnet på attributtet;

­­- sti, angi navnet på detaljene som vi vil kontakte det i tilgangskontrollsystemet, for eksempel i Beregnede felt;

- tittel, angi navnet på attributtet som skal vises i rapporten;

- feltbegrensning, angi tilgjengeligheten av dette kravet;

- begrensning av detaljer, vi indikerer tilgjengeligheten av underordnede elementer, er det viktig at hvis tilgjengeligheten av detaljer er indikert, så vil selve feltet være tilgjengelig, kanskje denne mekanikken vil bli endret i fremtidige utgivelser;

- uttrykk som feltrepresentasjonen beregnes med, det er praktisk å bruke når vi trenger å endre utdataene til detaljer litt, for eksempel trenger vi etter navnet nomenklatur ble vist lager, der den er plassert, fyll deretter inn følgende: Vare + "er på lageret" + Lager. Jeg gjentar at tilgang til detaljene utføres gjennom navnet angitt i kolonnen sti;

- uttrykksbestilling, en praktisk mekanisme for å sette opp rapportbestilling, hvor tilstanden kan stilles inn manuelt, i likhet med forrige punkt, men som praksis viser, fungerer denne mekanismen ofte ikke slik vi ønsker, og jeg anbefaler deg å bruke standard sortering;

- verditype, angir typen verdi av attributtet dette må fylles ut hvis du bruker følgende felt;

- tilgjengelige verdier, fungerer bare når den er full verditype, åpne skjemaet og i kolonnen Betydning vi angir elementet som må endres, i henhold til typen kan det være forhåndsdefinerte objekter eller numeriske, for eksempel detaljer har enkle verdier, i presentasjon Vi angir hva vi må endre til, et eksempel på en boolsk type:

- registrering– standard feltformatinnstillinger, som ligner på innstillinger i administrerte skjemaer, lar deg mer nøyaktig og vakkert tilpasse utdataene til visse detaljer.

Datasetttilkoblinger i 1C SKD

Her er den kun installert venstre bli med, på et prinsipp som ligner på forbindelser i forespørsler, i kilde til kommunikasjon spesifiser hovedtabellen for tilkoblingen, i mottaker ytterligere. I uttrykkskilde Og uttrykksmottaker Vi angir detaljene som kommunikasjonen vil finne sted. Vi skal se på de resterende kolonnene mer detaljert når vi ser på fanen. Alternativer. Hvis det ikke er noen ekstra tilkobling med parametere, anbefales det å gjøre tilkoblingen i forespørselen, dette vil fremskynde rapporten.

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

Syntaks:
Beregn (uttrykk, gruppering, kalkulasjonstype)

Parametere:

  • 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 av 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)

Parametere:

  • 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 offset 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 grupperingsoppføring. 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 er mottatt 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 kommaer, 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 bestillingsverdier. 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)

Parametere:

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


Når layoutbyggeren genererer uttrykk for å vise et tilpasset felt hvis uttrykk bare inneholder CalculateArrayWithGroup-funksjonen, genererer utdatauttrykket på en slik måte at visningsdataene og dataene er 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("Vis(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, GroupFieldExpressions, SelectRecords, SelectGroups)

Parametere:

  • 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;
  • Valg av grupperinger- 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.
Når layoutbyggeren genererer en layout, konverterer funksjonsparametere til datalayout-layoutfelt. 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 bestått verdi.

Syntaks:
Format(verdi, formatstreng)

Parametere:

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

9. BeginOfPeriod

Syntaks:
StartPeriod(Dato, PeriodeType)

Parametere:

  • 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 designet for å velge en bestemt dato fra en gitt dato.

Syntaks:
EndPeriod(dato, periodetype)

Parametere:

  • Dato(Dato). Oppgitt dato;
  • Periodetype(Linje). Inneholder en av følgende verdier: Minutt; Time; Dag; 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)

Parametere:

  • Uttrykk(Dato). Opprinnelig dato;
  • TypeForstørrelse(Linje). Inneholder en av følgende verdier: Minutt; Time; Dag; Uke; Måned; Fjerdedel; År; Tiår; Halvt år.
  • Størrelse(Tall). 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)

Parametere:

  • 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 ment å trekke ut en delstreng fra en streng.

Syntaks:
Delstreng (streng, posisjon, lengde)

Parametere:

  • Linje(Linje). Strengen som delstrengen er hentet fra;
  • Posisjon(Tall). Posisjonen til tegnet som delstrengen som skal trekkes ut fra strengen begynner;
  • Lengde(Tall). 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 utformet for å trekke ut året fra en datotypeverdi.

Syntaks:
År (dato)

Parameter:

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

16. Kvartal - denne funksjonen er utformet for å 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(Utgiftskonto.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 (Utgift.Dato)

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. For det 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 kompositt type. Hvis uttrykket inneholder en annen type enn den nødvendige typen, vil NULL bli returnert.

Syntaks:
Express(Uttrykk, Typeindikasjon)

Parametere:

  • Uttrykk- uttrykk som skal konverteres;
  • Type indikasjon(Linje). Inneholder en typestreng. For eksempel "Nummer", "String" osv. Foruten primitive typer gitt linje kan inneholde tabellnavnet. 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)

Parametere:

  • 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(Tall). Cosinusverdien (i området -1 ... 1) som vinkelen bestemmes av.
28.ASin- beregner arcsine i radianer.

Syntaks:
ASin (uttrykk)

Parameter:

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

Syntaks:
ATan (uttrykk)

Parameter:

  • Uttrykk(Tall). 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(Tall). 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(Tall). Det opprinnelige tallet er større enn 0.
34. Pow- eksponentiering.

Syntaks:
Pow (base, indikator)

Parametere:

  • Base(Tall). Grunnlaget for operasjonen av eksponentiering.
  • Indikator(Tall). Eksponent.
35. Synd- beregner sinus.

Syntaks:
Synd (uttrykk)

Parameter:

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

Syntaks:
Sqrt(Uttrykk)

Parameter:

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

Syntaks:
Tan (uttrykk)

Parameter:

  • Uttrykk(Tall). 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)

Parametere:

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

Syntaks:
Objekt (uttrykk)

Parameter:

  • Uttrykk(Tall). Brøktal.
40. Funksjoner vanlige moduler

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 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.

I lys av den kommende utgivelsen av 8.2.14, vil jeg prøve å beskrive noen nye funksjoner i datasammensetningssystemet.

Åpne datalayoutdiagrammet, gjerne i en ekstern rapport, for å gjøre redigeringen enklere.

Vi legger til et sett med data av spørringstypen og skriver, enten manuelt eller ved hjelp av spørringsdesigneren, en enkel spørring:

1. Sett opp en forespørsel i tilgangskontrollsystemet.

2. Sett opp beregnede felt i adgangskontrollsystemet

3. Konfigurer dataoppsettet på innstillingsfanen

4. Start 1C Enterprise 8.2.14. Åpne rapporten. Vi former, vi mottar.

Beskrivelse av selve de nye funksjonene:

1. CurrentDate()

Returnerer systemdatoen. Når du komponerer et layoutoppsett, i alle uttrykk som finnes i oppsettet, erstattes CurrentDate()-funksjonen med verdien til gjeldende dato.

2. COMPUTEEXPRESSION()

Syntaks:

CalculateExpression(,)

Beskrivelse:

Funksjonen er utformet for å evaluere et uttrykk i sammenheng med en 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. For eksempel, når du 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 GrandTotal), antas det at det ikke finnes noen poster for beregning av detaljerte data og beregning av aggregerte funksjoner.

Layoutlinker når du genererer et funksjonsuttrykk BeregnUttrykk, hvis bestillingsuttrykket inneholder felt som ikke kan brukes i gruppering, erstatter funksjonen BeregnUttrykkNULL.

Alternativer

Type: Linje. Uttrykket som skal vurderes.

Type: 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 GeneralTotal-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)/Beregn("Sum(Salg.SumOmsetning)", "Totalt")

I dette eksemplet vil resultatet være forholdet mellom summen etter felt Salg.BeløpOmsetning gruppering av poster til summen av det samme feltet i hele oppsettet;

Type: Linje. Parameteren kan ha følgende verdier:

· Totalsum— uttrykket vil bli beregnet for alle grupperingsposter.

· Hierarki— uttrykket vil bli evaluert for den overordnede hierarkiske posten, hvis det er en, og for hele grupperingen, hvis det ikke er noen overordnet hierarkisk post.

· Gruppering— uttrykket vil bli evaluert for gjeldende gruppegrupperingspost.

· GroupingNonResource— ved beregning av en funksjon for en gruppepost etter ressurser, vil uttrykket beregnes for den første gruppeposten i den opprinnelige grupperingen.

Når du beregner en funksjon CalculateExpression() med mening GroupingNonResource for gruppeposter som ikke er gruppert etter ressurser, beregnes funksjonen på samme måte som den ville blitt beregnet hvis parameterverdien var lik verdien Gruppering.

Layoutbyggeren for datasammensetning plasserer et uttrykk i oppsettet som beregnes ved hjelp av funksjonen når den genererer et datasammensetningsoppsett ved utdata av et ressursfelt som gruppering utføres til oppsettet. CalculateExpression() , som indikerer parameteren GroupingNonResource. For andre ressurser plasseres de vanlige ressursuttrykkene i ressursgrupperingen.

Type: Linje. 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. Verdien kan være en av følgende:

· Først

· Siste (Siste)

· Tidligere

· Neste (Neste)

· Nåværende

· Limiting Value(BoundaryValue) Limiting Value

Type: Linje. Angir til hvilken post fragmentet skal videreføres, der de aggregerte funksjonene til uttrykket skal beregnes. Verdien kan være en av følgende:

· 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 (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 offset tilbake fra gjeldende grupperingspost. For eksempel Previous(2) - henter forrige fra forrige post.

Hvis den forrige posten går utover grupperingen (for eksempel, for den andre grupperingsposten må du få Previous(3)), så oppnås den første grupperingsposten.

Ved henting av forrige post for en grupperingssum anses det at den første posten er hentet.

· Neste (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 grupperingsoppføring. For eksempel, Next(2) - får 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 Next() , 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.

· Limiting Value(BoundaryValue). Behovet for å få en post med den angitte verdien. Etter ordet Limiting Value 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 bestillingsfelt, og det har verdiene 01/01/2010, 02/01/2010, 03/01/2010, og du ønsker å få Limiting Value(DatoTime(2010, 1, 15)), da vil en post med datoen 02/01/2010 bli mottatt.

Type: Linje. Viser uttrykk, atskilt med komma, som beskriver rekkefølgereglene. Hvis ikke spesifisert, utføres rekkefølgen på samme måte som for grupperingen som uttrykket er evaluert for. Etter hvert uttrykk kan du angi et nøkkelord Alder(for bestilling i stigende rekkefølge), Synkende(for bestilling i synkende rekkefølge) og Autobestilling(for å sortere referansefelt etter feltene du vil sortere det refererte objektet etter). Ord Autobestilling kan brukes som med ordet Alder, så med ordet Synkende.

Type: Linje. Samme som parameter Sortering. Brukes til å organisere hierarkiske poster. Hvis det ikke er spesifisert, genererer layoutbyggeren bestillingen i henhold til rekkefølgen spesifisert i parameteren Sortering.

Type: Linje. Angir regelen for å bestemme forrige eller neste post i tilfelle det er flere poster med samme rekkefølgeverdi:

· Separat indikerer at en sekvens med ordnede poster brukes til å bestemme forrige og neste post. Standardverdi.

· Sammen indikerer at forrige og neste post bestemmes basert på verdiene til bestillingsuttrykkene.

For eksempel, hvis den resulterende sekvensen er sortert etter dato:

Dato Fullt navn Betydning
1 1. januar 2001

Ivanov M.

10
2 2. januar 2001 Petrov S. 20
3 3. januar 2001 Sidorov R. 30
4 4. januar 2001 Petrov S. 40

Separat, Det:

§ forrige oppføring til oppføring 3 vil være oppføring 2.

Gjeldende, Gjeldende(følgelig parametere Start Og Slutt), så for post 2 vil dette fragmentet bestå av én post 2. Uttrykket vil være lik 20.

Hvis parameterverdien er Sammen, Det:

§ forrige oppføring til oppføring 3 vil være oppføring 1.

§ dersom beregningsfragmentet er definert som Gjeldende, Gjeldende(følgelig parametere Start Og Slutt), så for post 2 vil dette fragmentet bestå av post 2 og 3. Uttrykk CalculateExpression("Sum(Verdi)", Current, Current) vil være lik 50.

Når du spesifiserer en parameterverdi lik Sammen, i parametere Start Og Slutt du kan ikke spesifisere en offset for posisjoner Først, siste, forrige, neste.

CalculateExpression("Sum(SumOmsetning)", "Først", "Gjeldende")

Hvis du ønsker å få grupperingsverdien i forrige linje, kan du bruke følgende uttrykk:

CalculateExpression("Pris", "Forrige")

Liste ny funksjoner:

CalculateExpressionWithGroupArray(,) -

Funksjonen returnerer en matrise, hvor hvert element inneholder resultatet av å evaluere et uttrykk for gruppering etter det angitte feltet.

CalculateExpressionWithGroupValueTable(,) -

Funksjonen returnerer en tabell med verdier, der hver rad inneholder resultatet av å evaluere uttrykk for gruppering etter det angitte feltet

Verdifylt() - Returnerer True hvis verdien er en annen enn standardverdien av denne typen, annet enn NULL, annet enn en tom referanse, annet enn Udefinert. Boolske verdier sjekkes for NULL-verdier. Strenger sjekkes for fravær av tegn som ikke er mellomrom

Format(, ) - Motta en formatert streng med den beståtte verdien. Formatstrengen er satt i samsvar med formatstrengen til 1C:Enterprise-systemet.

Understreng(, , ) - Denne funksjonen er laget for å trekke ut en delstreng fra en streng.

Linjelengde() - Funksjonen er laget for å bestemme lengden på en streng. Parameter er et strenguttrykk

Linje() - Hvis en matrise sendes som en parameter, returnerer funksjonen en streng som inneholder strengrepresentasjoner av alle matriseelementer, atskilt med "; "-tegn. Hvis en verditabell sendes som en parameter, returnerer funksjonen en streng som inneholder strengrepresentasjoner av alle rader i verditabellen, med cellerepresentasjonene til hver rad atskilt med ";"-tegn, og radene med en ny linje karakter. Hvis et elements strengrepresentasjon er tom, vises en streng i stedet for representasjonen.

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", "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.
Når layoutbyggeren genererer en layout, konverterer funksjonsparametere til datalayout-layoutfelt. 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.SumTurnover)),Sum(DataSet.SumTurnover)",,"DataSet.Account"),"2")))

Parametere:

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:

Problemer