Regn ut uttrykket skd. Eksempler på nyttige datasammensetningsskjemaer

Et eksempel på hvordan du kan få feltene til forrige post i en gruppering og ikke bare. Praktisk for å beregne forskjellen mellom verdiene til forrige pris og gjeldende.

Essensen av løsningen er å bruke funksjonen til uttrykksspråket SKD Beregn uttrykk() i det tillagte beregnede feltet som jeg ringte Delta. Funksjonen har følgende parametere:

Alternativer:

  • Uttrykk. Type av Linje;
  • gruppering. Type av Linje;
  • Beregningstype. Type av Linje;
  • Start
  • Slutt. En streng som inneholder ett av alternativene;
  • Sortering. Linje;
  • HierarkiskSort;
  • Håndtering av samme verdiordre

Vi er interessert i parameter 4 og 5 ( Start og Slutt). Uttrykket vil se slik ut:

isNULL((BEREGN UTTRYKK("Pris", "Forrige", "Forrige") - Pris), 0)

Her beregner vi den forrige verdien av feltet Pris og trekk gjeldende feltverdi fra den Pris. Naturligvis, for den første posten, vil den forrige verdien ikke beregnes, og resultatet av subtraksjon med verdien av det gjeldende feltet vil være Null, så for å gjøre alt "rent" bruker vi funksjonen isNULL(isNull) for å konvertere Null til null .

Plasser en verditabell i en dokumentcelle i et regneark

Noen ganger er det nødvendig å plassere tabelldelen av dokumentet eller dataene som er radene i tabelldelen i en celle i regnearkdokumentet, for eksempel slik:

For å gjøre dette, må du bruke funksjonen: ComputeExpressionGroupedValueTable() , som har parametere:

  • Uttrykk er uttrykket som skal vurderes. Skriv inn streng. En linje kan inneholde flere uttrykk atskilt med komma. Hvert uttrykk kan etterfølges av det valgfrie nøkkelordet AS og kolonnenavnet til verditabellen. For eksempel: "Entreprenør, Beløp (Beløp Omsetning) Som Salgsvolum".
  • Feltuttrykksgrupperinger- gruppering av feltuttrykk atskilt med komma. For eksempel "Entreprenør, Part";
  • Opptaksvalg er et uttrykk som brukes på detaljerte poster. For eksempel, "DeletionMark = False";
  • Grupperingsvalg- utvalg brukt på gruppeposter. For eksempel: "Beløp (Beløp Omsetning) > &Parameter1".

For å gjøre dette lager vi et beregnet felt der vi vil vise den resulterende tabellen, deretter plasserer vi dette feltet i ressursene med uttrykket CalculateExpressionGroupedValueTable("Nomenklatur, mengde")

Tallkolonner

Et eksempel på hvordan kolonner kan nummereres i SKD.

Essensen av løsningen:

  1. Vi lager en spørring der vi nummererer radene i søkeresultatet innenfor en viss underordning
  2. Viser resultatet i en krysstabell

VIKTIG!

Etter at linjene i spørringen er nummerert, må de plasseres i BT og deretter velges fra denne BT, ellers vil ACS gjøre alt på sin egen måte og feil felt faller inn i grupperingen

For å få resultatet må du lage et beregnet felt med uttrykket "Ansatt" + Format(NPP, "FH=3; FH=") og det beregnede feltnavnet, som det er enkelt å plassere den ansatte i, så plasserer vi feltet Fullt navn til en ressurs med et uttrykk Maksimum (fullt navn) eller rett og slett Fullt navn- ingen forskjell

Vekslende grupper med fargeutheving

Et sted på Mista eller på samme 1Cskd.ru var det et spørsmål om hvordan man skulle fremheve linjene som danner grupper med forskjellige farger

Dette oppnås ved å lage et beregnet felt:

Beregn uttrykk("Antall (forskjellige varer)","Første", "Forrige","Sammen") % 2

Vi teller antall forskjellige "grupperinger" i nomenklaturfeltet, grupperingene kan telles ved å sette verdien til ProcessingSameOrderValues-parameteren = "Together"

Resten av todelingen vil gjøre det klart om denne gruppen er jevn eller ikke, henholdsvis vi lager et betinget designelement med betingelsen Felt = 1

Forblir i sammenheng med egenskaper. Karakteristikk per linje med mengde i parentes

På samme 1CSkd.ru var det et slikt emne der forfatteren ber om hjelp til å lage en rapport, der det i en av kolonnene kreves en liste over egenskaper (skostørrelser) med nummeret deres. http://1cskd.ru/2013/05/podskazhite-novichku-v-skd/

Dette oppnås ved hjelp av samme funksjon Beregn ExpressionWith GroupingArray()

I dette eksemplet ser funksjonen slik ut:

Calculate ExpressionWith GroupingArray("Karakteristisk for Nomenclature.Description +
""("" + Format(Antall gjenværende,""CH=0"") + "")""",
,
"ValueFilled(FeatureNomenclature)")

Den tredje parameteren er et utvalg, den lar deg unngå presentasjonen av en tom streng "" - følgelig vil du ikke se rester uten egenskaper

Slå sammen to tabeller med nøkkelen String = Number

Eller en variant av hvordan du konverterer en talltypeverdi til en streng i SKD

Med jevne mellomrom på forumene ser jeg et emne som "Hvordan konvertere et tall til en streng i en spørring." Hvis du skriver en rapport om ACS og du trenger å utføre en slik transformasjon, trenger du ikke å skrive noen triks i forespørselen.

For å konvertere et tall til en streng, bruk ganske enkelt uttrykksspråkfunksjonen til SKD-datasammensetningssystemet Linje() eller Format()

For å konvertere en streng til et tall, kan du bruke funksjonen Compute()

Sorter etter streng som etter nummer

I mitt eksempel vil jeg ganske enkelt vise ansattkatalogen, sortere den etter personalnummer (kode)

Resultatet vil se slik ut:

Dette oppnås ved å lage et beregnet felt og bruke uttrykksspråkfunksjonen SKD Compute()

  1. Lag et beregnet felt TabNumberNumber, med uttrykket: Beregn (ansatt.kode)
  2. Sorter etter dette feltet

faktisk er dette konverteringen av en streng til et tall ved å bruke funksjonen til uttrykksspråket SKD Compute()

Jeg anbefaler deg også å se på "Videoopplæringer på skd" (lett søkt i Google)

Ved utvikling bruker jeg en konvertert .

I lys av den kommende utgivelsen av 8.2.14, skal jeg prøve å beskrive noen av de nye funksjonene i datasammensetningssystemet.

Åpne datasammensetningsskjemaet, gjerne i en ekstern rapport, for å gjøre det enklere å redigere.

Vi legger til et spørringsdatasett og skriver, enten manuelt eller ved hjelp av spørringsbyggeren, den enkleste spørringen:

1. Sett opp en forespørsel i ACS.

2. Sett opp beregnede felt i ACS

3. Vi konfigurerer dataoppsettet på innstillingsfanen

4. Vi lanserer 1C Enterprise 8.2.14. Vi åpner rapporten. Vi former, vi mottar.

Beskrivelse av selve de nye funksjonene:

1. Gjeldende dato()

Returnerer systemdatoen. Når du legger ut layouten til layouten, i alle uttrykk som finnes i layouten, erstattes CurrentDate()-funksjonen med verdien til gjeldende dato.

2. REGN UTTRYKK()

Syntaks:

Beregn uttrykk(,)

Beskrivelse:

Funksjonen er designet 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 valget av nomenklaturgrupperingen kan du ikke bruke uttrykket Beregn uttrykk ("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 ), vurderes det at det ikke finnes noen poster for beregning av detaljerte data og beregning av aggregerte funksjoner.

Layoutbygger ved generering av et funksjonsuttrykk Beregn uttrykk, hvis bestillingsuttrykket inneholder felt som ikke kan brukes i grupperingen, erstatter funksjonen Beregn uttrykkNULL.

Alternativer

Type: Linje. Uttrykket som skal vurderes.

Type: Linje. Inneholder navnet på gruppen i hvis kontekst uttrykket skal evalueres. Hvis en tom streng brukes som et grupperingsnavn, vil beregningen utføres i sammenheng med gjeldende gruppering. Hvis strengen GrandTotal brukes som grupperingsnavn, vil beregningen utføres i sammenheng med totalsummen. Ellers vil beregningen bli utført i sammenheng med den overordnede grupperingen med det navnet.

For eksempel:

Sum(Salg.SumOmsetning)/Beregn("Sum(Salg.SumOmsetning)", "TotalTotal")

I dette eksemplet vil resultatet være forholdet mellom beløpet etter felt Salg.BeløpOmsetning gruppering av oppføringer til summen av samme felt i hele oppsettet;

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

· Det samlede resultatet— uttrykket vil bli evaluert for alle grupperingsposter.

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

· gruppering— uttrykket vil bli evaluert for den gjeldende gruppeposten for grupperingen.

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

Ved beregning av funksjonen Beregn uttrykk() med mening GroupingNotResource for gruppeposter som ikke er grupperinger etter ressurser, beregnes funksjonen på samme måte som den ville blitt beregnet hvis parameterverdien var lik verdien gruppering.

Layoutbyggeren for datasammensetning, når den genererer en layout-layout for datasammensetning, når den viser ressursfeltet som grupperingen utføres med, plasserer et uttrykk i oppsettet som beregnes ved hjelp av funksjonen Beregn uttrykk() , som spesifiserer parameteren GroupingNotResource. For andre ressurser gruppert etter ressurs, plasseres vanlige ressursuttrykk.

Type: Linje. Spesifiserer hvilken post som skal starte fragmentet der de aggregerte funksjonene til uttrykket skal beregnes, og fra hvilken post som skal hente verdiene til feltene utenfor de aggregerte funksjonene. Verdien kan være en av følgende:

· Først (først)

· Siste (Siste)

· Forrige (Forrige )

· Neste (Neste)

· Gjeldende (Gjeldende)

· LimitingValue(BoundaryValue) LimitingValue

Type: Linje. Indikerer til hvilken post som skal fortsette fragmentet der de aggregerte funksjonene til uttrykket skal beregnes. Verdien kan være en av følgende:

· Først (først). Du må få 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) - får den tredje posten fra starten av grupperingen.

Hvis den første oppføringen er utenfor grupperingen, anses det at det ikke er noen oppføringer. 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 grupperingsoppføringen. 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) - få den tredje posten fra slutten av grupperingen.

Hvis den siste oppføringen er utenfor grupperingen, anses det at det ikke er noen oppføringer. For eksempel, hvis det er 3 poster, og du ønsker å få Last(4) , så anses det at det ikke er noen poster.

· Forrige (Forrige ). Du må hente den forrige grupperingsoppføringen. Etter ordet i parentes kan du spesifisere et uttrykk, hvis resultat vil bli brukt som et skifte tilbake fra gjeldende grupperingspost. For eksempel Previous(2) - få forrige fra forrige post.

Hvis den forrige posten er utenfor grupperingen (for eksempel krever den andre grupperingsposten Previous(3) , så hentes den første grupperingsposten.

Når man henter den forrige posten for grupperingssummen, anses det at den første posten er oppnådd.

· Neste (Neste). Du må få neste grupperingsoppføring. Etter ordet i parentes kan du spesifisere et uttrykk, hvis resultat vil bli brukt som et foroverskift fra gjeldende grupperingspost. For eksempel, Next(2) - få 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 den tredje posten får Next() , anses det som ingen poster.

Når neste post er mottatt for grupperingssummen, anses det som ingen post.

· Gjeldende (Gjeldende). Du må få gjeldende oppføring.

Når den hentes for en grupperingssum, hentes den første posten.

· LimitingValue(BoundaryValue). Behovet for å få posten med den angitte verdien. Etter ordet LimitingValue i parentes må du spesifisere uttrykket med verdien du vil starte fragmentet av, det første rekkefølgefeltet.

Posten vil være den første posten hvis bestillingsfeltverdi er større enn eller lik den angitte verdien. For eksempel, hvis du bruker Periode-feltet som bestillingsfelt, og det har verdiene 01/01/2010 , 02/01/2010 , 03/01/2010 , og du ønsker å få LimitValue(DatoTime(2010, 1, 15)), da vil en post med datoen 02/01/2010 bli mottatt.

Type: Linje. Kommaseparerte uttrykk som beskriver bestillingsreglene er oppført. Hvis ikke spesifisert, utføres bestilling på samme måte som for grupperingen som uttrykket er evaluert for. Hvert uttrykk kan følges av et nøkkelord Asc(for stigende rekkefølge), Synkende(for synkende rekkefølge) og Auto-arrangering(for å sortere referansefelt etter feltene du vil sortere objektet som refereres til). Ord Auto-arrangering kan brukes som med ordet Asc, og med ordet Synkende.

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

Type: Linje. Angir en regel for å bestemme forrige eller neste post hvis det er flere poster med samme rekkefølgeverdi:

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

· Sammen (Together) indikerer 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

Hver for seg, deretter:

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

aktuelt, aktuelt(henholdsvis parametrene 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, deretter:

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

§ hvis det beregnede fragmentet er definert som aktuelt, aktuelt(henholdsvis parametrene Start og Slutt), så for post 2 vil dette fragmentet bestå av post 2 og 3. Uttrykket 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("Beløp(Beløp Omsetning)", "Første", "Gjeldende")

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

CalculateExpression("Kurs", "Forrige")

Liste ny funksjoner:

ComputeExpressionGroupedArray(,) -

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

ComputeExpressionGroupedValueTable(,) -

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 nullreferanse, annet enn Undefined . Boolske verdier er testet mot NULL. Strenger sjekkes for tegn som ikke er mellomrom.

Format(, ) – Hent den formaterte strengen til den beståtte verdien. Formatstrengen er satt i samsvar med formatstrengen til 1C:Enterprise-systemet.

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

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

Linje() - Hvis en matrise sendes som en parameter, returnerer funksjonen en streng som inneholder strengrepresentasjoner av alle elementene i matrisen, atskilt med tegnene "; ". Hvis en verditabell sendes som en parameter, returnerer funksjonen en streng som inneholder strengrepresentasjoner av alle rader i verditabellen, og cellerepresentasjonene til hver linje er atskilt med tegnene "; ", og linjene er atskilt med nylinjetegnet. Hvis et element har en tom strengrepresentasjon, vises en streng i stedet for dens representasjon.

  • 1C-Bitrix
  • Et av de viktigste områdene innen forretningsprogramvare er rapportering. Hvor enkelt det er å tilpasse en eksisterende rapport til endrede behov i virksomheten (og lovverket) eller lage en ny kan avhenge (og ikke i overført betydning!) Virksomhetens skjebne, om det er en rapport for skattekontoret. eller et diagram over etterspørselens avhengighet av sesongen og andre faktorer. Et kraftig og fleksibelt rapporteringssystem som lar deg enkelt trekke ut de riktige dataene fra systemet, presentere dem i en forståelig form, slik at sluttbrukeren kan rekonfigurere standardrapporten for å se dataene i et nytt lys - dette er det ideelle som alle forretningssystemet bør strebe etter.

    I 1C:Enterprise-plattformen er en mekanisme kalt Data Composition System (forkortet ACS) ansvarlig for å generere rapporter. I denne artikkelen vil vi prøve å gi en kort beskrivelse av ideen og arkitekturen til ACS-mekanismen og dens evner.


    ACS er en mekanisme basert på den deklarative beskrivelsen av rapporter. ACS er designet for å bygge rapporter og vise informasjon som har en kompleks struktur. For øvrig, i tillegg til å utvikle rapporter, brukes ACS-mekanismen også i 1C:Enterprise i en dynamisk liste, et verktøy for å vise listeinformasjon med rik funksjonalitet (visning av flate og hierarkiske lister, betinget radformatering, gruppering, etc.) .

    Litt historie

    I den aller første versjonen av 1C:Enterprise 8-plattformen, versjon 8.0, ble det laget rapporter som følger:
    1. Ett eller flere spørringer ble skrevet i 1C spørringsspråk (SQL-lignende språk, mer om det nedenfor).
    2. Kode ble skrevet som overførte resultatene av utførte spørringer til et regnearkdokument eller diagram. Koden kan også gjøre arbeid som ikke kan gjøres i en spørring - for eksempel beregnet den verdier ved å bruke det innebygde 1C-språket.
    Tilnærmingen er grei, men ikke den mest praktiske - det er et minimum av visuelle innstillinger, alt må programmeres hånd-til-hånd. Og et av trumfkortene på den tiden av den helt nye 1C:Enterprise 8-plattformen var minimeringen av kodemengden i applikasjonsløsningen som må skrives manuelt, spesielt på grunn av visuell design. Det vil være logisk å følge samme vei i rapporteringsmekanismen. Dette ble gjort ved å utvikle en ny mekanisme - Data Composition System.

    En av ideene som dannet grunnlaget for ACS var fleksibilitet og tilpasning av rapporter, som er tilgjengelig for både utvikler og sluttbruker. Ideelt sett ønsker vi å gi sluttbrukeren tilgang til samme sett med rapportdesignverktøy som utvikleren. Det ville være logisk å gjøre et enkelt sett med verktøy tilgjengelig for alle. Vel, siden verktøyene involverer sluttbrukerens deltakelse, betyr det at bruken av programmering i dem bør fjernes til et minimum (best av alt, fullstendig eliminert), og visuelle innstillinger bør brukes maksimalt.

    Formulering av problemet

    Oppgaven før utviklingsteamet var dette - å lage et rapporteringssystem basert ikke på en algoritme (dvs. gjennom å skrive kode), men på en deklarativ tilnærming til å lage rapporter. Og vi tror at problemet har blitt løst. Vår erfaring er at omtrent 80 % av den nødvendige rapporteringen kan implementeres ved hjelp av ACS uten en eneste kodelinje (bortsett fra å skrive formler for beregnede felt), for det meste - gjennom visuelle innstillinger.
    Utviklingen av den første versjonen av ACS tok rundt 5 årsverk.

    To språk

    To språk er involvert i å lage rapporter. Det ene er spørringsspråket som brukes til å hente dataene. Det andre er datakomposisjonsuttrykksspråket, designet for å skrive uttrykk som brukes i ulike deler av systemet, for eksempel i datasammensetningsinnstillinger, for å beskrive tilpassede feltuttrykk.

    Spørrespråk

    Spørringsspråket er basert på SQL og mestres enkelt av de som kan SQL. Eksempel på forespørsel:

    Det er lett å se analoger til standard SQL-spørringsseksjoner - SELECT, FROM, GROUP BY, ORDER BY.

    Samtidig inneholder spørringsspråket et betydelig antall utvidelser som tar sikte på å gjenspeile spesifikasjonene til finansielle og økonomiske oppgaver og maksimalt redusere innsatsen for å utvikle anvendte løsninger:

    • Referer til felt gjennom en prikk. Hvis feltene i en tabell er av en referansetype (de lagrer lenker til objekter i en annen tabell), kan utvikleren referere til dem i spørringsteksten gjennom ".", mens antallet nestenivåer for slike koblinger ikke er begrenset av systemet (for eksempel Kundeordre.Avtale.Organisasjon. Telefon).
    • Multidimensjonal og multilevel dannelse av resultater. Totaler og delsummer dannes under hensyntagen til gruppering og hierarki, nivåer kan omgås i en vilkårlig rekkefølge med summering av delsummer, korrekt konstruksjon av totaler etter tidsdimensjoner er sikret.
    • Støtte for virtuelle tabeller. De virtuelle tabellene som leveres av systemet lar deg få nesten ferdige data for de fleste applikasjonsoppgaver uten å måtte skrive komplekse spørringer. Dermed kan en virtuell tabell gi data om varebalansen i sammenheng med perioder på et bestemt tidspunkt. Samtidig får virtuelle tabeller mest mulig ut av den lagrede informasjonen, for eksempel tidligere beregnede totaler osv.
    • Midlertidige bord. Spørringsspråket lar deg bruke midlertidige tabeller i spørringer. Med deres hjelp kan du forbedre ytelsen til spørringer, i noen tilfeller redusere antall låser og gjøre spørringsteksten lettere å lese.
    • batchforespørsler. For mer praktisk arbeid med midlertidige tabeller, støtter spørringsspråket arbeid med batch-spørringer - dermed blir opprettelsen av en midlertidig tabell og bruken av den plassert i én spørring. En batchforespørsel er en sekvens av forespørsler atskilt med semikolon (";"). Forespørslene i partiet utføres etter hverandre. Resultatet av å utføre en batch-forespørsel, avhengig av metoden som brukes, vil enten være resultatet som returneres av den siste spørringen i batchen, eller en rekke med resultatene av alle batch-forespørslene i rekkefølgen som forespørslene i batchen følger. .
    • Henter referansefeltvisninger. Hver objekttabell (der en katalog eller et dokument er lagret) har et virtuelt felt - "Representasjon". Dette feltet inneholder en tekstlig representasjon av objektet og gjør arbeidet til reporteren enklere. Så for et dokument inneholder dette feltet all nøkkelinformasjon - navnet på dokumenttypen, nummeret og datoen (for eksempel "Salg 000000003 fra 07/06/2017 17:49:14"), og lagrer utvikleren fra skrive et beregnet felt.
    • og så videre.
    Spørringsmotoren endrer automatisk spørringen, og tar hensyn til rollene til brukeren på hvis vegne spørringen utføres (dvs. brukeren vil bare se dataene han har rett til å se) og funksjonelle alternativer (dvs. i samsvar med den som er konfigurert i applikasjonsløsningens funksjonalitet).

    Det finnes også spesielle spørringsspråkutvidelser for SKD. Utvidelsen utføres ved hjelp av spesielle syntaksinstruksjoner omsluttet av krøllete klammeparenteser og plassert direkte i forespørselsteksten. Ved hjelp av utvidelser bestemmer utvikleren hvilke operasjoner sluttbrukeren skal kunne utføre ved å tilpasse rapporten.

    For eksempel:

    • VELGE. Denne setningen beskriver feltene som brukeren vil kunne velge for utdata. Etter dette nøkkelordet er aliaser for felt fra hovedsøkevalglisten, som vil være tilgjengelig for tilpasning, oppført atskilt med komma. Eksempel: (SELECT Nomenclature, Warehouse)
    • HVOR. Beskriver feltene som brukeren kan bruke utvalg på. Dette forslaget bruker tabellfelt. Bruk av utvalgte listefeltaliaser er ikke tillatt. Hver fagforeningsdel kan inneholde sitt eget WHERE-element. Eksempler: (WHERE Nomenclature.*, Warehouse ), (WHERE Document.Date >= &StartDate, Document.Date<= &ДатаКонца}
    • og så videre.
    Et eksempel på bruk av utvidelser:

    Datakomposisjonsuttrykksspråk

    Datasammensetningsuttrykksspråket er designet for å skrive uttrykk som brukes, spesielt for å beskrive tilpassede feltuttrykk. ACS lar deg definere egendefinerte felt i en rapport ved å bruke enten dine egne uttrykk eller sett med alternativer med betingelser for valg (analogt med CASE i SQL). Egendefinerte felt er analoge med beregnede felt. De kan settes både i konfiguratoren og i 1C:Enterprise-modus, men funksjoner til vanlige moduler kan ikke brukes i tilpassede feltuttrykk. Derfor er tilpassede felt mer for brukeren enn for utvikleren.

    Eksempel:

    Prosessen med å lage en rapport om ACS

    Når vi lager en rapport, må vi lage et oppsett som definerer hvordan dataene skal vises i rapporten. Du kan lage et oppsett basert på et datasammensetningsskjema. Datasammensetningsskjemaet beskriver essensen av dataene som leveres til rapporten (hvor dataene skal hentes fra og hvordan du kan kontrollere sammensetningen). Datasammensetningsskjemaet er grunnlaget som alle typer rapporter kan genereres på. Datasammensetningsskjemaet kan inneholde:
    • be om tekst med instruksjoner for datasammensetningssystem;
    • beskrivelse av flere datasett;
    • en detaljert beskrivelse av de tilgjengelige feltene;
    • beskrivelse av sammenhenger mellom flere datasett;
    • beskrivelse av datainnsamlingsparametere;
    • beskrivelse av feltoppsett og grupperinger;
    • og så videre.

    Du kan for eksempel legge til en spørring i datasammensetningsskjemaet som et datasett, og kalle spørringskonstruktøren, som lar deg grafisk komponere en spørring med vilkårlig kompleksitet:

    Resultatet av å kjøre spørringsbyggeren vil være teksten til spørringen (på spørringsspråket 1C:Enterprise). Denne teksten kan justeres manuelt om nødvendig:

    Det kan være flere datasett i et datasammensetningsskjema, datasett kan kobles sammen i et oppsett på en vilkårlig måte, beregnede felt kan legges til, rapportparametere kan settes osv. Det er verdt å nevne et interessant trekk ved spørringsmekanismen i 1C:Enterprise. Spørringene blir til slutt oversatt til en SQL-dialekt som er spesifikk for DBMS-en som applikasjonen jobber direkte med. Generelt prøver vi å bruke mulighetene til DBMS-tjenere maksimalt (vi er begrenset av det faktum at vi bare bruker de egenskapene som samtidig er tilgjengelige i alle DBMS som støttes av 1C:Enterprise-plattformen - MS SQL, Oracle, IBM DB2 , PostgreSQL). På spørringsnivå i beregnede felt kan vi derfor bare bruke de funksjonene som er oversatt til SQL.

    Men på datasammensetningsskjemanivået kan vi allerede legge til tilpassede felt og bruke funksjoner i dem i det innebygde 1C-utviklingsspråket (inkludert de som er skrevet av oss), noe som i stor grad utvider mulighetene til rapporter. Teknisk ser det slik ut - alt som kan oversettes til SQL blir oversatt til SQL, spørringen utføres på DBMS-nivå, spørringsresultatene plasseres i minnet til 1C-applikasjonsserveren, og ACS beregner verdiene av beregnede felt for hver post, hvis formler er skrevet på 1C-språk.


    Legge til egendefinerte felt

    Du kan legge til et hvilket som helst antall tabeller og diagrammer i rapporten:


    Rapportdesigner


    Rapporter ved kjøretid

    Ved hjelp av ACS kan brukeren legge til komplekse utvalg i rapporten (som vil bli lagt til spørringen på de riktige stedene), betinget design (som lar deg formatere annerledes - font, farge osv. - utdatafelt avhengig av deres verdier) og mye mer.

    Beskriv kort prosessen med å bygge og generere en rapport som følger:

    • Utvikleren ved designtidspunkt med hjelp av designeren (eller ved kjøretid ved hjelp av kode) definerer datalayoutskjemaet:
      • Tekst på forespørsel/forespørsler
      • Beskrivelse av beregnede felt
      • Forhold mellom søk (hvis det er flere enn ett)
      • Rapportalternativer
      • Standard instillinger
      • Etc.
    • Innstillingene ovenfor lagres i oppsettet
    • Bruker åpner en rapport
      • Gjør muligens ytterligere innstillinger (for eksempel endrer parameterverdier)
      • Trykker på "Generer"-knappen
    • Brukerinnstillinger gjelder for datasammensetningsskjemaet definert av utvikleren.
    • Det dannes et mellomoppsett av datasammensetningen, som inneholder instruksjoner om hvor dataene skal hentes fra. Spesielt blir spørsmål spesifisert i oppsettet korrigert. Så felt som ikke brukes i rapporten fjernes fra forespørselen (dette gjøres for å minimere mengden data som mottas). Alle felt som brukes i beregnede feltformler legges til spørringen.
    • Datasammensetningsbehandleren er inkludert i saken. Layoutprosessoren utfører spørringer, kobler sammen datasett, beregner verdiene til beregnede felt og ressurser, utfører gruppering. Med et ord, den gjør alle beregningene som ikke ble utført på DBMS-nivå.
    • Datautdataprosessoren starter en spørring for utførelse og sender de mottatte dataene til et regnearkdokument, diagram, etc.


    Prosessen med å generere en rapport ved hjelp av ACS-mekanismen

    Vi prøver å minimere mengden rapporteringsdata som overføres fra serveren til klientapplikasjonen. Når vi viser data i et regnearkdokument, når vi åpner et regnearkdokument, overfører vi fra serveren kun de linjene som brukeren ser i begynnelsen av dokumentet. Når brukeren beveger seg langs linjene i dokumentet, lastes de manglende dataene ned fra serveren til klienten.

    Brukerinstillinger

    Alle ACS-verktøy er tilgjengelige for både utvikleren og sluttbrukeren. Men praksis har vist at sluttbrukeren ofte blir skremt av overfloden av verktøyfunksjoner. Dessuten, i de fleste tilfeller trenger ikke sluttbrukeren all kraften til innstillinger - det er nok for ham å ha rask tilgang til å angi en eller to rapportparametere (for eksempel periode og motpart). Fra og med en bestemt versjon av plattformen har rapportutvikleren mulighet til å markere hvilke rapportinnstillinger som er tilgjengelige for brukeren. Dette gjøres ved å bruke avmerkingsboksen "Inkluder i brukerinnstillinger". I tillegg har rapportinnstillingene nå et "Visningsmodus"-flagg som har en av tre verdier:
    • Rask tilgang. Innstillingen vil vises direkte øverst i rapportvinduet.
    • Vanlig. Innstillingen vil være tilgjengelig via "Innstillinger"-knappen.
    • Ikke tilgjengelig. Innstillingen vil ikke være tilgjengelig for sluttbrukeren.


    Stille inn visningsmodus i designtid


    Vis innstillingen i hurtigtilgangsmodus under kjøring (under Generer-knappen)

    Utviklingsplaner

    En av prioriteringene i utviklingen av ACS for oss er forenkling av brukerinnstillinger. Vår erfaring viser at for noen sluttbrukere er det fortsatt en seriøs jobb å jobbe med brukerinnstillinger. Vi tar hensyn til dette og jobber i denne retningen. Følgelig vil det også bli lettere for utviklere å jobbe med ACS, fordi vi, som før, ønsker å tilby et enkelt verktøysett for å sette opp rapporter for både utvikleren og sluttbrukeren.

    I lys av den kommende utgivelsen av 8.2.14, skal jeg prøve å beskrive noen av de nye funksjonene i datasammensetningssystemet.

    Åpne datasammensetningsskjemaet, gjerne i en ekstern rapport, for å gjøre det enklere å redigere.

    Vi legger til et spørringsdatasett og skriver, enten manuelt eller ved hjelp av spørringsbyggeren, den enkleste spørringen:

    1. Sett opp en forespørsel i ACS.

    2. Sett opp beregnede felt i ACS

    3. Vi konfigurerer dataoppsettet på innstillingsfanen

    4. Vi lanserer 1C Enterprise 8.2.14. Vi åpner rapporten. Vi former, vi mottar.

    Beskrivelse av selve de nye funksjonene:

    1. Gjeldende dato()

    Returnerer systemdatoen. Når du legger ut layouten til layouten, i alle uttrykk som finnes i layouten, erstattes CurrentDate()-funksjonen med verdien til gjeldende dato.

    2. REGN UTTRYKK()

    Syntaks:

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

    Beskrivelse:

    Funksjonen er designet 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 nomenklaturgrupperingen kan du ikke bruke uttrykket Calculate Expression ("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 totalsummen (Grupperingsparameteren er satt til GrandTotal), vurderes det at det ikke finnes noen poster for beregning av detaljerte data og beregning av aggregerte funksjoner.

    Når layoutbyggeren genererer uttrykket for funksjonen Calculate Expression, hvis bestillingsuttrykket inneholder felt som ikke kan brukes i gruppering, erstatter funksjonen Calculate Expression med NULL.

    Alternativer

    <Выражение>

    Type: String. Uttrykket som skal vurderes.

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

    Type: String. Inneholder navnet på gruppen i hvis kontekst uttrykket skal evalueres. Hvis en tom streng brukes som et grupperingsnavn, vil beregningen utføres i sammenheng med gjeldende gruppering. Hvis strengen GrandTotal brukes som grupperingsnavn, vil beregningen utføres i sammenheng med totalsummen. Ellers vil beregningen bli utført i sammenheng med den overordnede grupperingen med det navnet.

    For eksempel:

    Sum(Salg.SumOmsetning)/Calculate(“Sum(Salg.SumOmsetning)”, “TotalTotal”)

    I dette eksemplet vil resultatet være forholdet mellom beløpet for feltet Sales.AmountVolum for grupperingsposten og mengden av samme felt i hele layouten;

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

    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 oppføringen, hvis det er en, og for hele grupperingen, hvis det ikke er noen overordnet hierarkisk oppføring.
    • Gruppering - uttrykket vil bli evaluert for gjeldende grupperingspost.
    • GroupingNotResource - når man beregner en funksjon for en gruppepost etter ressurser, vil uttrykket beregnes for den første gruppeposten i den opprinnelige grupperingen.

    Ved beregning av funksjonen Beregn uttrykk() med verdien GroupingNotResource for gruppeposter som ikke er grupperinger etter ressurser, blir funksjonen evaluert på samme måte som den ville blitt beregnet hvis verdien til parameteren var lik grupperingsverdien.

    Layoutbyggeren for datasammensetning, når den genererer en layout-layout for datasammensetning, når den viser ressursfeltet som grupperingen utføres med, plasserer et uttrykk i oppsettet som beregnes ved hjelp av funksjonen Beregn uttrykk(), som spesifiserer GroupingNotResource-parameteren. For andre ressurser gruppert etter ressurs, plasseres vanlige ressursuttrykk.

    <Начало>

    Type: String. Spesifiserer hvilken post som skal starte fragmentet der de aggregerte funksjonene til uttrykket skal beregnes, og fra hvilken post som skal hente verdiene til feltene utenfor de aggregerte funksjonene. Verdien kan være en av følgende:

    <Конец>

    Type: String. Indikerer til hvilken post som skal fortsette fragmentet der de aggregerte funksjonene til uttrykket skal beregnes. Verdien kan være en av følgende:

    • Først (først). Du må få 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) - får den tredje posten fra starten av grupperingen.

    Hvis den første oppføringen er utenfor grupperingen, anses det at det ikke er noen oppføringer. For eksempel, hvis det er 3 poster, og du ønsker å getFirst(4), så anses det at det ikke er noen poster.

    • Siste (Siste). Du må få den siste grupperingsoppføringen. 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) - Henter den tredje posten fra slutten av grupperingen.

    Hvis den siste oppføringen er utenfor grupperingen, anses det at det ikke er noen oppføringer. 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å hente den forrige grupperingsoppføringen. Etter ordet i parentes kan du spesifisere et uttrykk, hvis resultat vil bli brukt som et skifte tilbake fra gjeldende grupperingspost. For eksempel Previous(2) - få forrige fra forrige post.

    Hvis den forrige posten er utenfor grupperingen (for eksempel må den andre grupperingsposten få Previous(3), så er den første grupperingsposten hentet.

    Når man henter den forrige posten for grupperingssummen, anses det at den første posten er oppnådd.

    • Neste (Neste). Du må få neste grupperingsoppføring. Etter ordet i parentes kan du spesifisere et uttrykk, hvis resultat vil bli brukt som et foroverskift fra gjeldende grupperingspost. For eksempel, Next(2) - få 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 den tredje posten får Next(), så anses det at det ikke er noen poster.

    Når neste post er mottatt for grupperingssummen, anses det som ingen post.

    • Gjeldende (Gjeldende). Du må få gjeldende oppføring.

    Når den hentes for en grupperingssum, hentes den første posten.

    • BoundaryValue. Behovet for å få posten med den angitte verdien. Etter ordet RestrictingValue i parentes, må du spesifisere uttrykket med verdien du vil starte fragmentet av, det første bestillingsfeltet.

    Posten vil være den første posten hvis bestillingsfeltverdi er større enn eller lik den angitte verdien. 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å LimitValue(DateTime(2010) , 1, 15)), vil en post med datoen 02/01 bli mottatt. 2010.

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

    Type: String. Kommaseparerte uttrykk som beskriver bestillingsreglene er oppført. Hvis ikke spesifisert, utføres bestilling på samme måte som for grupperingen som uttrykket er evaluert for. Etter hvert uttrykk kan du spesifisere nøkkelordene Asc (for å sortere i stigende rekkefølge), Synkende (for å sortere i synkende rekkefølge) og AutoOrder (for å sortere refererte felt etter feltene du vil sortere det refererte objektet etter). AutoOrder-ordet kan brukes med både stigende og synkende ord.

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

    Type: String. Ligner på Sorter-alternativet. Brukes til å ordne hierarkiske poster. Hvis det ikke er spesifisert, genererer layoutbyggeren en bestilling i henhold til rekkefølgen spesifisert i Sort-parameteren.

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

    Type: String. Angir en regel for å bestemme forrige eller neste post hvis det er flere poster med samme rekkefølgeverdi:

    • Separat betyr at en sekvens av ordnede poster brukes til å bestemme forrige og neste post. Standardverdi.
    • Together (Together) 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 start- og sluttparameterne), vil dette fragmentet for post 2 bestå av én post 2. Uttrykket Calculate Expression ("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 start- og sluttparameterne), vil dette fragmentet for post 2 bestå av post 2 og 3. Uttrykk CalculateExpression(“Sum(Value)”, Current, Current) vil være lik 50.

    Når du spesifiserer verdien av parameteren lik Together, i parametrene Start og End, kan du ikke spesifisere en offset for posisjonene First, Last, Previous, Next.

    CalculateExpression("Beløp(Beløp Omsetning)", "Første", "Gjeldende")

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

    CalculateExpression("Kurs", "Forrige")

    Liste ny funksjoner:

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

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

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

    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 for den gitte typen, annet enn NULL, annet enn en nullreferanse, annet enn Udefinert. Boolske verdier er testet for NULL. Strenger sjekkes for tegn som ikke er mellomrom.

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

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

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

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

    Hei kjære leser! Vi har en annen leksjon om det grunnleggende i layoutsystemet. I ble du kjent med funksjonene til SKD-uttrykksspråket, så funksjonene til layoutsystemet og fant også ut de grunnleggende innstillingene for layoutfeltene. Og nå vil vi vurdere et nytt materiale. Gå!

    Ytterligere innstillinger for ACS-feltene.

    Kolonne "verditype" lar deg spesifisere datatypen for layoutfeltet. Hvorfor spesifisere typen, for eksempel for "Nomenklatur"-feltet, hvis du allerede vet hvilken type det er? Dette kreves hvis layoutfeltet er av en sammensatt type. Du kan velge en spesifikk type, og når du filtrerer etter dette feltet, vil verdier av denne typen bli valgt.

    Kolonne "Tilgjengelige verdier" lar deg spesifisere verdiene som er tilgjengelige for valg og begrense brukerens valg til visse grenser.

    Kolonne "Dekor" lar deg angi utseendet til layoutfeltet uten å bruke oppsett. Du kan spesifisere skriftfarge, rammefarge, tekstretning og så videre.

    Kolonne "Redigeringsalternativer" lar deg spesifisere hvordan du skal redigere layoutfeltet. Du kan for eksempel spesifisere et raskt utvalg av elementer fra en liste i et utvalg. Som standard arver layoutfeltet alle redigeringsalternativer fra metadataobjektet.

    Beregnede felt

    Du kan lage dine egne beregnede felt i kategorien Kalkulerte felt i datasammensetningen.

    Hvorfor trenger vi beregnede felt når vi kan opprette dem på spørringsnivå? Ikke alle felt kan beskrives med en spørring. Hvis du trenger å komponere et komplekst felt fra forskjellige datasett, for eksempel spørrings- og objekttyper, er beregnede felt uunnværlige. Du kan ikke legge til et datasammensetningsfelt hvis datakilden er et søk og autofullføring, men du kan legge til så mange felt du vil ved å bruke beregnede felt.

    I kolonnen i det beregnede feltet "Uttrykk" må du skrive et vilkårlig uttrykk som bruker feltene til datasammensetningen, med henvisning til deres bane ("Bi"-kolonnen på fanen "Datasett"). Enten kan du bruke de matematiske transformasjonsfunksjonene, eller du kan referere til funksjonene til de generelle modulene. La oss for eksempel skrive navnet på det beregnede feltet "Avvik" i kolonnen "Bi til data", og følgende i "Uttrykk"-feltet:

    Beløp - Pris* Antall

    Sjekk ut en annen, og du kan også laste ned ved hjelp av disse funksjonene.

    I hovedsak er beregnede felt satt til de samme innstillingene som layoutfelt. Bare Hierarkigruppe-kolonnen mangler her. Når du skriver beregnede felt, kan du ikke referere til andre beregnede felt.

    Hvordan overføre parametere og valg til en rapport bygget på ACS uten å lage et rapportskjema?

    &AtClient // Sende parametere til ACS-rapporten Prosedyre Kommandobehandling(Kommandoparameter, Kommandoutførelsesparametere) Valg = Ny struktur("Nomenklatur", Kommandoparameter) ; FixedSettings = GetFixedSettings() ; FormParameters = New Structure( "ShapeOnOpen, Utvalg, variantnøkkel, faste innstillinger", Sannhet , Utvalg, "Salgsrapportvariant", FixedSettings) ; OpenForm( "Report.SalesReport.Form", FormParameters); EndProcedure &AtServer-funksjon GetFixedSettings() Salgsrapport = Rapporter. Salgsrapport. Skape() ; SKD = ​​Salgsrapport. DataCompositionScheme; Innstillinger = SKD. Standard instillinger; StartPeriod = Innstillinger. Parameter Data. FindParameterValue( NewDataCompositionParameter("PeriodStart") ); Begynnelsen av perioden. Verdi = MonthStart(CurrentDate()) ; Begynnelsen av perioden. Bruk = sant; StartPeriod = Innstillinger. Parameter Data. FindParameterValue( NewDataCompositionParameter("EndPeriod") ); Sluttperiode. Verdi = EndMonth(CurrentDate() ) ; Sluttperiode. Bruk = sant; Returner innstillinger; EndFunctions // GetFixedSettings()

    Hvordan justere kolonneoverskrifter til midten i en SKD-rapport?

    Du må angi to parametere i "Design"-feltet på fanen "Datasett":

    Horisontal posisjon: Senter Vertikal posisjon: Senter

    Også på fanen "Innstillinger" nederst finner du en annen fane: "Betinget utseende". Der for hver gruppering, parameter osv. du kan angi oppsettet du ønsker.

    Ser ut som han har fortalt alt! Som du husker har du mulighet til å stille spørsmål, hvis noen. Jeg skal prøve å svare. I fremtiden planlegger jeg å skrive flere artikler om dette emnet, så ikke glem å abonnere på oppdateringer av nettstedet vårt for ikke å gå glipp av det! Sørg også for å ta en test for å konsolidere materialet fra denne leksjonen.

    På slutten av artikkelen vil jeg råde deg fri fra Anatoly Sotnikov. Dette er et kurs fra en erfaren programmerer. Han vil vise deg på eget grunnlag hvordan du bygger rapporter i ACS. Du trenger bare å lytte nøye og huske! Du vil få svar på spørsmål som:
    • Hvordan lage en enkel listerapport?
    • Hva er felt-, bane- og tittelkolonnene på Felt-fanen for?
    • Hva er begrensningene for layoutfelt?
    • Hvordan sette opp roller riktig?
    • Hva er rollene for layoutfelt?
    • Hvor finner jeg datalayout-fanen i en spørring?
    • Hvordan konfigurere parametere i SKD?
    • Mer interessant...
    Kanskje du ikke bør prøve å surfe på Internett selv på jakt etter nødvendig informasjon? Dessuten er alt klart til bruk. Bare sett i gang! Alle detaljene om hva som er i de gratis videoopplæringene