Beregn udtrykket skd. Eksempler på nyttige datasammensætningsskemaer

Et eksempel på, hvordan du kan få felterne fra den tidligere post i en gruppering og ikke kun. Praktisk til at beregne forskellen mellem værdierne af den tidligere pris og den nuværende.

Essensen af ​​løsningen er at bruge funktionen af ​​udtrykssproget SKD Beregn udtryk() i det tilføjede beregnede felt, som jeg kaldte Delta. Funktionen har følgende parametre:

Muligheder:

  • Udtryk. Type Linje;
  • gruppering. Type Linje;
  • Beregningstype. Type Linje;
  • Start
  • Ende. En streng, der indeholder en af ​​mulighederne;
  • Sortering. linje;
  • HierarkiskSortering;
  • Håndtering af samme værdiordre

Vi er interesserede i parameter 4 og 5 ( Start og Ende). Udtrykket vil se således ud:

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

Her beregner vi den tidligere værdi af feltet Pris og trække den aktuelle feltværdi fra den Pris. For den første post vil den tidligere værdi naturligvis ikke blive beregnet, og resultatet af subtraktion med værdien af ​​det aktuelle felt vil være Null, så at alt er "rent", bruger vi isNULL-funktionen (isNull) til at konvertere Null til nul .

Placer en tabel med værdier i et regnearks dokumentcelle

Nogle gange er det nødvendigt at placere den tabelformede del af dokumentet eller de data, der er rækkerne af den tabelformede del, i en celle i regnearksdokumentet, for eksempel sådan:

For at gøre dette skal du bruge funktionen: ComputeExpressionGroupedValueTable() , som har parametre:

  • Udtryk er det udtryk, der skal vurderes. Skriv streng. En linje kan indeholde flere udtryk adskilt af kommaer. Hvert udtryk kan efterfølges af det valgfri nøgleord AS og kolonnenavnet på værditabellen. For eksempel: "Entreprenør, Beløb (Beløb Omsætning) Som Salgsvolumen".
  • Feltudtryk Grupperinger- gruppering af feltudtryk adskilt af kommaer. For eksempel "Entreprenør, Part";
  • Optagelsesvalg er et udtryk anvendt på detaljerede optegnelser. For eksempel, "DeletionMark = False";
  • Grupperingsvalg- valg anvendt på gruppeposter. For eksempel: "Beløb (Beløb Omsætning) > &Parameter1".

For at gøre dette opretter vi et beregnet felt, hvor vi viser den resulterende tabel, og derefter placerer vi dette felt i ressourcerne med udtrykket CalculateExpressionGroupedValueTable("Nomenklatur, mængde")

Nummerkolonner

Et eksempel på hvordan kolonner kan nummereres i SKD.

Essensen af ​​løsningen:

  1. Vi opretter en forespørgsel, hvor vi nummererer rækkerne af forespørgselsresultatet inden for en bestemt underordning
  2. Viser resultatet i en krydstabel

VIGTIG!

Efter at linjerne i forespørgslen er nummereret, skal de placeres i BT'en og derefter vælges fra denne BT, ellers vil ACS'en gøre alt på sin egen måde, og de forkerte felter falder ind i grupperingen

For at få resultatet skal du oprette et beregnet felt med udtrykket "Medarbejder" + Format(NPP, "FH=3; FH=") og det beregnede feltnavn, hvori det er nemt at placere Medarbejderen, så placerer vi feltet Fulde navn til en ressource med et udtryk Maksimum (fulde navn) eller simpelthen Fulde navn- ingen forskel

Skiftende grupper med farvefremhævning

Et eller andet sted på Mista eller på den samme 1Cskd.ru var der et spørgsmål om, hvordan man fremhævede de linjer, der danner grupper med forskellige farver

Dette opnås ved at oprette et beregnet felt:

Beregn udtryk("Mængde (forskellige varer)","Første", "Forrige","Sammen") % 2

Vi tæller antallet af forskellige "grupperinger" i Nomenklaturfeltet, grupperingerne kan tælles ved at indstille værdien af ​​ProcessingSameOrderValues-parameteren = "Together"

Resten af ​​opdelingen med to vil gøre det klart, om denne gruppe er lige eller ej, henholdsvis vi skaber et betinget designelement med betingelsen Mark = 1

Forbliver i sammenhæng med karakteristika. Karakteristika pr. linje med antal i parentes

På samme 1CSkd.ru var der et sådant emne, hvor forfatteren beder om hjælp til at lave en rapport, hvor der i en af ​​kolonnerne kræves en liste over egenskaber (skostørrelser) med deres nummer. http://1cskd.ru/2013/05/podskazhite-novichku-v-skd/

Dette opnås ved hjælp af samme funktion Beregn ExpressionWith GroupingArray()

I dette eksempel ser funktionen således ud:

Calculate ExpressionWith GroupingArray("Karakteristisk for Nomenklatur.Description +
""("" + Format(Antal resterende,""CH=0"") + "")""",
,
"ValueFilled(FeatureNomenclature)")

Den tredje parameter er et valg, det giver dig mulighed for at undgå præsentationen af ​​en tom streng "" - derfor vil du ikke se rester uden karakteristika

Sammenføj to tabeller med nøglestreng = tal

Eller en variant af, hvordan man konverterer en taltypeværdi til en streng i SKD

Med jævne mellemrum på foraerne ser jeg et emne som "Sådan konverteres et tal til en streng i en forespørgsel." Hvis du skriver en rapport om ACS, og du skal udføre en sådan transformation, behøver du ikke skrive nogen tricks i anmodningen.

For at konvertere et tal til en streng skal du blot bruge udtrykssprogfunktionen i SKD-datasammensætningssystemet Linje() eller Format()

For at konvertere en streng til et tal kan du bruge funktionen Beregn()

Sorter efter streng som efter nummer

I mit eksempel vil jeg blot vise medarbejderkartoteket, sortere det efter personalenummer (kode)

Resultatet vil se således ud:

Dette opnås ved at oprette et beregnet felt og bruge udtrykssprogfunktionen SKD Beregn()

  1. Opret et beregnet felt FaneNumberNumber, med udtrykket: Beregn (medarbejder.kode)
  2. Sorter efter dette felt

faktisk er dette konverteringen af ​​en streng til et tal ved hjælp af funktionen af ​​udtrykssproget SKD Beregn()

Jeg råder dig også til at se på "Video tutorials på skd" (let at søge i Google)

Når jeg udvikler, bruger jeg en konverteret .

I lyset af den kommende udgivelse af 8.2.14 vil jeg prøve at beskrive nogle af de nye funktioner i datasammensætningssystemet.

Åbn datasammensætningsskemaet, gerne i en ekstern rapport, for at gøre det nemmere at redigere.

Vi tilføjer et forespørgselsdatasæt og skriver, enten manuelt eller ved hjælp af forespørgselsbyggeren, den enkleste forespørgsel:

1. Opret en anmodning i ACS.

2. Opsæt beregnede felter i ACS

3. Vi konfigurerer datalayoutet på fanen Indstillinger

4. Vi lancerer 1C Enterprise 8.2.14. Vi åbner rapporten. Vi danner, vi modtager.

Beskrivelse af selve de nye funktioner:

1. Den aktuelle dato()

Returnerer systemdatoen. Når layoutet af layoutet lægges ud, i alle udtryk, der er til stede i layoutet, erstattes CurrentDate()-funktionen med værdien af ​​den aktuelle dato.

2. COMPUTE EXPRESSION()

Syntaks:

Beregn udtryk(,)

Beskrivelse:

Funktionen er designet til at evaluere et udtryk i sammenhæng med en eller anden gruppering.

Funktionen tager højde for valg af grupperinger, men tager ikke højde for hierarkiske valg.

Funktionen kan ikke anvendes på en gruppering i gruppevalget for den gruppering. For eksempel kan du ikke bruge udtrykket i valget af nomenklaturgrupperingen Beregn udtryk ("Sum(SumOmsætning)", "TotalTotal") > 1000. Men et sådant udtryk kan bruges i hierarkisk udvælgelse.

Hvis slutposten går forud for startposten, anses det for, at der ikke er nogen poster til beregning af detaljerede data og beregning af aggregerede funktioner.

Ved beregning af intervaludtryk for en totaltotal (Grupperingsparameteren er sat til GrandTotal ), anses det for, at der ikke er nogen poster til beregning af detaljerede data og beregning af aggregerede funktioner.

Layoutbygger ved generering af et funktionsudtryk Beregne udtryk, hvis bestillingsudtrykket indeholder felter, der ikke kan bruges i grupperingen, erstatter funktionen Beregne udtryk på den NUL.

Muligheder

Type: Linje. Udtrykket, der skal vurderes.

Type: Linje. Indeholder navnet på den gruppering, i hvis kontekst udtrykket skal evalueres. Hvis en tom streng bruges som et grupperingsnavn, vil beregningen blive udført i sammenhæng med den aktuelle gruppering. Hvis strengen GrandTotal bruges som gruppenavn, vil beregningen blive udført i sammenhæng med den samlede total. Ellers vil beregningen blive udført i sammenhæng med den overordnede gruppering med det navn.

For eksempel:

Sum(Salg.SumOmsætning)/Calculate("Sum(Salg.SumOmsætning)", "TotalTotal")

I dette eksempel vil resultatet være forholdet mellem beløbet efter felt Salg.BeløbOmsætning gruppering af poster til summen af ​​det samme felt i hele layoutet;

Type: Linje. Parameteren kan have følgende værdier:

· Det samlede resultat— udtrykket vil blive evalueret for alle grupperingsposter.

· Hierarki— udtrykket vil blive evalueret for den overordnede hierarkiske post, hvis der er en, og for hele grupperingen, hvis der ikke er nogen overordnet hierarkisk post.

· gruppering— udtrykket vil blive evalueret for den aktuelle gruppepost for grupperingen.

· GroupingNotResource— ved beregning af en funktion for en gruppepost efter ressourcer, vil udtrykket blive beregnet for den første gruppepost i den indledende gruppering.

Ved beregning af funktionen Beregn udtryk() med mening GroupingNotResource for gruppeposter, der ikke er grupperinger efter ressourcer, beregnes funktionen på samme måde, som den ville blive beregnet, hvis parameterværdien var lig med værdien gruppering.

Layoutbyggeren for datasammensætningslayout sætter ved generering af datasammensætningslayoutet, ved visning af det ressourcefelt, som grupperingen udføres på, et udtryk i layoutet, der beregnes ved hjælp af funktionen Beregn udtryk() , med angivelse af parameteren GroupingNotResource. For andre ressourcer grupperet efter ressource placeres regulære ressourceudtryk.

Type: Linje. Angiver, hvilken post der skal starte fragmentet, hvori udtrykkets aggregerede funktioner skal beregnes, og fra hvilken post der skal hentes værdierne af felterne uden for de aggregerede funktioner. Værdien kan være en af ​​følgende:

· Først (først)

· Sidste (sidste)

· Forrige (Forrige )

· Næste (Næste)

· Aktuel (aktuel)

· LimitingValue(BoundaryValue) LimitingValue

Type: Linje. Angiver, til hvilken post der skal fortsættes fragmentet, hvori udtrykkets aggregerede funktioner skal beregnes. Værdien kan være en af ​​følgende:

· Først (først). Du skal have den første grupperingspost. Efter ordet i parentes kan du angive et udtryk, hvis resultat vil blive brugt som en offset fra begyndelsen af ​​grupperingen. Den resulterende værdi skal være et heltal større end nul. For eksempel First(3) - at få den tredje post fra starten af ​​grupperingen.

Hvis den første post er uden for grupperingen, anses det for, at der ikke er nogen poster. For eksempel, hvis der er 3 poster, og du ønsker at få First(4) , så anses det for, at der ikke er nogen poster.

· Sidste (sidste). Du skal have den seneste grupperingspost. Efter ordet i parentes kan du angive et udtryk, hvis resultat vil blive brugt som en offset fra slutningen af ​​grupperingen. Den resulterende værdi skal være et heltal større end nul. For eksempel Last(3) - få den tredje post fra slutningen af ​​grupperingen.

Hvis den sidste post er uden for grupperingen, anses det for, at der ikke er nogen poster. For eksempel, hvis der er 3 poster, og du ønsker at få Last(4) , så anses det for, at der ikke er nogen poster.

· Forrige (Forrige ). Du skal hente den forrige grupperingsindgang. Efter ordet i parentes kan du angive et udtryk, hvis resultat vil blive brugt som et skift tilbage fra den aktuelle grupperingspost. For eksempel Previous(2) - få den forrige fra den forrige post.

Hvis den forrige post er uden for grupperingen (for eksempel kræver den anden grupperingspost Previous(3) , så opnås den første grupperingspost.

Når man henter den tidligere rekord for grupperingstotalen, anses det for, at den første post er opnået.

· Næste (Næste). Du skal have den næste grupperingspost. Efter ordet i parentes kan du angive et udtryk, hvis resultat vil blive brugt som et fremadgående skift fra den aktuelle grupperingspost. For eksempel, Next(2) - få den næste fra den næste post.

Hvis den næste post går ud over grupperingen, anses det for, at der ikke er nogen poster. For eksempel, hvis der er 3 poster, og den tredje post får Next() , så anses det for, at der ikke er nogen poster.

Når den næste post modtages for grupperingstotalen, anses det for, at der ikke er nogen post.

· Aktuel (aktuel). Du skal have den aktuelle post.

Når den hentes for en grupperingstotal, hentes den første post.

· LimitingValue(BoundaryValue). Behovet for at få posten med den angivne værdi. Efter ordet LimitingValue i parentes skal du angive udtrykket med den værdi, som du vil starte fragmentet af, det første rækkefølgefelt.

Posten vil være den første post, hvis bestillingsfeltværdi er større end eller lig med den angivne værdi. For eksempel, hvis du bruger feltet Periode som bestillingsfelt, og det har værdierne 01/01/2010 , 02/01/2010 , 03/01/2010 , og du ønsker at få LimitValue(DatoTime(2010, 1, 15)), så modtages en registrering med datoen 02/01/2010.

Type: Linje. Kommaseparerede udtryk, der beskriver bestillingsreglerne, er angivet. Hvis det ikke er angivet, udføres bestilling på samme måde som for den gruppering, som udtrykket evalueres for. Hvert udtryk kan efterfølges af et nøgleord Asc(for stigende rækkefølge), Aftagende(for faldende rækkefølge) og Auto-arrangering(for at sortere referencefelter efter de felter, som du vil sortere det objekt, der henvises til). Ord Auto-arrangering kan bruges som med ordet Asc, og med ordet Aftagende.

Type: Linje. Samme som parameter Sortering. Bruges til at arrangere hierarkiske poster. Hvis det ikke er angivet, genererer layoutbyggeren en bestilling i henhold til den bestilling, der er angivet i parameteren Sortering.

Type: Linje. Angiver en regel til at bestemme den forrige eller næste post, hvis der er flere poster med samme rækkefølgeværdi:

· Separat angiver, at en sekvens af ordnede poster bruges til at bestemme de forrige og næste poster. Standard værdi.

· Sammen (Together) angiver, at de forrige og næste poster bestemmes ud fra værdierne af ordensudtrykkene.

For eksempel, hvis den resulterende sekvens er sorteret efter dato:

datoen Fulde navn Betyder
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, derefter:

§ den forrige post til post 3 vil være post 2.

aktuel, aktuel(henholdsvis parametrene Start og Ende), så for post 2 vil dette fragment bestå af én post 2. Udtrykket vil være lig med 20.

Hvis parameterværdien er Sammen, derefter:

§ den forrige post til post 3 vil være post 1.

§ hvis det beregnede fragment er defineret som aktuel, aktuel(henholdsvis parametrene Start og Ende), så vil dette fragment for post 2 bestå af post 2 og 3. Udtrykket CalculateExpression("Sum(Værdi)", Aktuel, Aktuel) vil være lig med 50.

Når du angiver en parameterværdi lig med Sammen, i parametre Start og Ende du kan ikke angive en offset for positioner Første, Sidste, Forrige, Næste.

CalculateExpression("Beløb (Beløb Omsætning)", "Første", "Nuværende")

Hvis du vil have grupperingsværdien i den forrige linje, kan du bruge følgende udtryk:

CalculateExpression("Kursus", "Forrige")

Liste ny funktioner:

ComputeExpressionGroupedArray(,) -

Funktionen returnerer et array, hvis hvert element indeholder resultatet af evaluering af udtrykket til gruppering efter det angivne felt.

ComputeExpressionGroupedValueTable(,) -

Funktionen returnerer en tabel med værdier, hvor hver række indeholder resultatet af evaluering af udtryk til gruppering efter det angivne felt

Værdifyldt() - Returnerer True, hvis værdien er en anden end standardværdien af ​​denne type, bortset fra NULL , bortset fra en nul-reference, bortset fra Undefined . Booleske værdier testes mod NULL. Strenge kontrolleres for ikke-mellemrumstegn.

Format(, ) - Hent den formaterede streng af den beståede værdi. Formatstrengen indstilles i overensstemmelse med formatstrengen i 1C:Enterprise-systemet.

Understreng(, , ) - Denne funktion er designet til at vælge en understreng fra en streng.

Strengelængde() - Funktionen er designet til at bestemme længden af ​​en streng. Parameter er et strengtypeudtryk

Linje() - Hvis et array sendes som en parameter, returnerer funktionen en streng, der indeholder strengrepræsentationer af alle elementer i arrayet, adskilt af tegnene "; ". Hvis en værditabel sendes som en parameter, returnerer funktionen en streng, der indeholder strengrepræsentationer af alle rækker i værditabellen, og cellerepræsentationerne for hver linje er adskilt af tegnene "; " og linjerne er adskilt af nylinjetegnet. Hvis et element har en tom strengrepræsentation, vises en streng i stedet for dens repræsentation.

  • 1C-Bitrix
  • Et af de vigtigste områder inden for forretningssoftware er rapportering. Hvor let det er at tilpasse en eksisterende rapport til virksomhedens (og lovgivningens) skiftende behov eller lave en ny kan afhænge (og ikke i overført betydning!) Virksomhedens skæbne, om det er en indberetning til skattekontoret eller et diagram over efterspørgslens afhængighed af sæsonen og andre faktorer. Et kraftfuldt og fleksibelt rapporteringssystem, der gør det nemt at udtrække de rigtige data fra systemet, præsentere dem i en forståelig form, så slutbrugeren kan omkonfigurere en standardrapport for at se dataene i et nyt lys - dette er det ideelle, som hver forretningssystemet skal stræbe efter.

    I 1C:Enterprise-platformen er en mekanisme kaldet Data Composition System (forkortet ACS) ansvarlig for at generere rapporter. I denne artikel vil vi forsøge at give en kort beskrivelse af ideen og arkitekturen af ​​ACS-mekanismen og dens muligheder.


    ACS er en mekanisme baseret på den deklarative beskrivelse af rapporter. ACS er designet til at bygge rapporter og vise information, der har en kompleks struktur. Udover at udvikle rapporter bruges ACS-mekanismen også i 1C:Enterprise i en dynamisk liste, et værktøj til at vise listeoplysninger med rig funktionalitet (visning af flade og hierarkiske lister, betinget rækkeformatering, gruppering osv.) .

    Lidt historie

    I den allerførste version af 1C:Enterprise 8-platformen, version 8.0, blev rapporteret som følger:
    1. En eller flere forespørgsler blev skrevet i 1C-forespørgselssproget (SQL-lignende sprog, mere om det nedenfor).
    2. Der blev skrevet kode, der overførte resultaterne af udførte forespørgsler til et regnearksdokument eller diagram. Koden kunne også udføre arbejde, der ikke kan udføres i en forespørgsel - for eksempel beregnede den værdier ved hjælp af det indbyggede 1C-sprog.
    Fremgangsmåden er ligetil, men ikke den mest bekvemme - der er et minimum af visuelle indstillinger, alt skal programmeres hånd-til-hånd. Og et af trumfkortene på det tidspunkt på den helt nye 1C:Enterprise 8 platform var minimeringen af ​​mængden af ​​kode i applikationsløsningen, der skal skrives manuelt, især på grund af visuelt design. Det ville være logisk at følge samme vej i rapporteringsmekanismen. Dette blev gjort ved at udvikle en ny mekanisme - Data Composition System.

    En af ideerne, der dannede grundlaget for ACS, var fleksibiliteten og tilpasningen af ​​rapporter, som er tilgængelig for både udvikleren og slutbrugeren. Ideelt set vil vi gerne give slutbrugeren adgang til det samme sæt af rapportdesignværktøjer som udvikleren. Det ville være logisk at gøre et enkelt sæt værktøjer tilgængeligt for alle. Nå, da værktøjerne involverer slutbrugerens deltagelse, betyder det, at brugen af ​​programmering i dem skal fjernes til et minimum (bedst af alt, helt elimineret), og visuelle indstillinger skal bruges maksimalt.

    Formulering af problemet

    Opgaven før udviklingsteamet var denne - at lave et rapporteringssystem baseret ikke på en algoritme (dvs. ved at skrive kode), men på en deklarativ tilgang til oprettelse af rapporter. Og vi mener, at problemet er blevet løst med succes. Det er vores erfaring, at omkring 80% af den påkrævede rapportering kan implementeres ved hjælp af ACS uden en enkelt kodelinje (bortset fra skrivning af formler til beregnede felter), for det meste - gennem visuelle indstillinger.
    Udviklingen af ​​den første version af ACS tog omkring 5 mandår.

    To sprog

    To sprog er involveret i oprettelsen af ​​rapporter. Det ene er det forespørgselssprog, der bruges til at hente dataene. Det andet er datasammensætningsudtrykssproget, designet til at skrive udtryk, der bruges i forskellige dele af systemet, for eksempel i datasammensætningsindstillinger, for at beskrive brugerdefinerede feltudtryk.

    Forespørgselssprog

    Forespørgselssproget er baseret på SQL og er let at mestre af dem, der kender SQL. Eksempel på anmodning:

    Det er nemt at se analoger af standard SQL-forespørgselssektioner - SELECT, FROM, GROUP BY, ORDER BY.

    Samtidig indeholder forespørgselssproget et betydeligt antal udvidelser, der fokuserer på at afspejle de specifikke finansielle og økonomiske opgaver og på den maksimale reduktion af indsatsen for at udvikle anvendte løsninger:

    • Henvisning til felter gennem en prik. Hvis felterne i en tabel har en referencetype (de gemmer links til objekter i en anden tabel), kan udvikleren henvise til dem i forespørgselsteksten gennem ".", mens antallet af indlejrede niveauer af sådanne links ikke er begrænset af system (f.eks. Kundeordre.Aftale.Organisation. Telefon).
    • Multidimensionel og multilevel dannelse af resultater. Totaler og subtotaler dannes under hensyntagen til gruppering og hierarki, niveauer kan omgås i en vilkårlig rækkefølge med opsummering af subtotaler, den korrekte konstruktion af totaler efter tidsdimensioner er sikret.
    • Understøttelse af virtuelle borde. De virtuelle tabeller, der leveres af systemet, giver dig mulighed for at få næsten færdige data til de fleste applikationsopgaver uden at skulle skrive komplekse forespørgsler. En virtuel tabel kan således give data om varebalancen i sammenhæng med perioder på et bestemt tidspunkt. Samtidig udnytter virtuelle tabeller de lagrede informationer bedst muligt, for eksempel tidligere beregnede totaler mv.
    • Midlertidige borde. Forespørgselssproget giver dig mulighed for at bruge midlertidige tabeller i forespørgsler. Med deres hjælp kan du forbedre ydelsen af ​​forespørgsler, i nogle tilfælde reducere antallet af låse og gøre forespørgselsteksten lettere at læse.
    • batch anmodninger. For mere bekvemt arbejde med midlertidige tabeller understøtter forespørgselssproget arbejde med batchforespørgsler - således er oprettelsen af ​​en midlertidig tabel og dens brug placeret i én forespørgsel. En batch-anmodning er en sekvens af anmodninger adskilt af et semikolon (";"). Anmodningerne i partiet udføres efter hinanden. Resultatet af at udføre en batch-forespørgsel, afhængigt af den anvendte metode, vil enten være resultatet af den sidste forespørgsel i batchen eller en række af resultaterne af alle batch-anmodninger i den rækkefølge, som anmodningerne i batchen følger.
    • Få referencefeltvisninger. Hver objekttabel (hvori en mappe eller et dokument er gemt) har et virtuelt felt - "Repræsentation". Dette felt indeholder en tekstlig repræsentation af objektet og gør arbejdet for reporteren lettere. Så for et dokument indeholder dette felt alle nøgleoplysninger - navnet på dokumenttypen, dens nummer og dato (for eksempel "Salg 000000003 fra 07/06/2017 17:49:14"), hvilket gemmer udvikleren fra at skrive et beregnet felt.
    • og osv.
    Forespørgselsmotoren ændrer automatisk forespørgslen under hensyntagen til rollerne for den bruger, på hvis vegne forespørgslen udføres (dvs. brugeren vil kun se de data, som han har ret til at se) og funktionelle muligheder (dvs. i overensstemmelse med den, der er konfigureret i applikationsløsningens funktionalitet).

    Der er også specielle forespørgselssprogudvidelser til SKD. Udvidelsen udføres ved hjælp af specielle syntaksinstruktioner omsluttet af krøllede seler og placeret direkte i anmodningsteksten. Ved hjælp af udvidelser bestemmer udvikleren, hvilke operationer slutbrugeren vil være i stand til at udføre ved at tilpasse rapporten.

    For eksempel:

    • VÆLGE. Denne sætning beskriver de felter, som brugeren vil være i stand til at vælge til output. Efter dette nøgleord er aliaser af felter fra hovedforespørgselsvalglisten, som vil være tilgængelige for tilpasning, opført adskilt af kommaer. Eksempel: (VÆLG nomenklatur, lager)
    • HVOR. Beskriver de felter, som brugeren kan anvende valg på. Dette forslag bruger tabelfelter. Brugen af ​​marklistefeltaliasser er ikke tilladt. Hver fagforeningsdel kan indeholde sit eget WHERE-element. Eksempler: (WHERE Nomenclature.*, Warehouse ), (WHERE Document.Date >= &StartDate, Document.Date<= &ДатаКонца}
    • og osv.
    Et eksempel på brug af udvidelser:

    Datasammensætning udtrykssprog

    Datasammensætningsudtrykssproget er designet til at skrive udtryk, der især bruges til at beskrive brugerdefinerede feltudtryk. ACS giver dig mulighed for at definere brugerdefinerede felter i en rapport ved at bruge enten dine egne udtryk eller sæt af muligheder med betingelser for deres valg (analogt med CASE i SQL). Brugerdefinerede felter er analoge med beregnede felter. De kan indstilles både i konfiguratoren og i 1C:Enterprise-tilstand, men funktioner i almindelige moduler kan ikke bruges i brugerdefinerede feltudtryk. Derfor er brugerdefinerede felter mere for brugeren end for udvikleren.

    Eksempel:

    Processen med at oprette en rapport om ACS

    Når vi opretter en rapport, skal vi lave et layout, der definerer, hvordan dataene vil blive vist i rapporten. Du kan oprette et layout baseret på et datasammensætningsskema. Datasammensætningsskemaet beskriver essensen af ​​de data, der leveres til rapporten (hvor du kan hente dataene fra, og hvordan du kan kontrollere deres sammensætning). Datasammensætningsskemaet er grundlaget for, at alle former for rapporter kan genereres. Datasammensætningsskemaet kan indeholde:
    • anmode om tekst med instruktioner til datasammensætningssystem;
    • beskrivelse af flere datasæt;
    • en detaljeret beskrivelse af de tilgængelige felter;
    • beskrivelse af sammenhænge mellem flere datasæt;
    • beskrivelse af dataindsamlingsparametre;
    • beskrivelse af feltlayouts og grupperinger;
    • og osv.

    For eksempel kan du tilføje en forespørgsel til datasammensætningsskemaet som et datasæt og kalde forespørgselskonstruktøren, som giver dig mulighed for grafisk at sammensætte en forespørgsel af vilkårlig kompleksitet:

    Resultatet af at køre forespørgselsbyggeren vil være teksten i forespørgslen (på 1C:Enterprise-forespørgselssproget). Denne tekst kan justeres manuelt, hvis det er nødvendigt:

    Der kan være flere datasæt i et datasammensætningsskema, datasæt kan sammenkædes i et layout på en vilkårlig måde, beregnede felter kan tilføjes, rapportparametre kan indstilles mv. Det er værd at nævne et interessant træk ved forespørgselsmekanismen i 1C:Enterprise. Forespørgslerne bliver til sidst oversat til en SQL-dialekt, der er specifik for det DBMS, som applikationen arbejder direkte med. Generelt forsøger vi at bruge mulighederne på DBMS-servere maksimalt (vi er begrænset af det faktum, at vi kun bruger de muligheder, der samtidigt er tilgængelige i alle DBMS understøttet af 1C:Enterprise-platformen - MS SQL, Oracle, IBM DB2 , PostgreSQL). På forespørgselsniveauet i beregnede felter kan vi således kun bruge de funktioner, der er oversat til SQL.

    Men på datasammensætningsskemaniveauet kan vi allerede tilføje brugerdefinerede felter og bruge funktioner i dem i det indbyggede 1C-udviklingssprog (inklusive dem, der er skrevet af os), hvilket i høj grad udvider rapporternes muligheder. Teknisk ser det sådan ud - alt, der kan oversættes til SQL, oversættes til SQL, forespørgslen udføres på DBMS-niveau, forespørgselsresultaterne placeres i hukommelsen på 1C-applikationsserveren, og ACS beregner værdierne af beregnede felter for hver post, hvis formler er skrevet på 1C-sprog.


    Tilføjelse af brugerdefinerede felter

    Du kan tilføje et hvilket som helst antal tabeller og diagrammer til rapporten:


    Rapportdesigner


    Rapportér på køretid

    Ved hjælp af ACS kan brugeren tilføje komplekse markeringer til rapporten (som vil blive tilføjet til forespørgslen på de rigtige steder), betinget design (der giver dig mulighed for at formatere outputfelter på forskellige måder - i skrifttype, farve osv., afhængigt af deres værdier) og meget mere.

    Beskriv kort processen med at opbygge og generere en rapport som følger:

    • Udvikleren ved designtidspunktet med hjælp fra designeren (eller ved runtime ved hjælp af kode) definerer datalayoutskemaet:
      • Tekst til anmodning/anmodninger
      • Beskrivelse af beregnede felter
      • Relationer mellem forespørgsler (hvis der er mere end én)
      • Rapportindstillinger
      • Standardindstillinger
      • Etc.
    • Ovenstående indstillinger gemmes i layoutet
    • Bruger åbner en rapport
      • Foretager muligvis yderligere indstillinger (for eksempel ændrer parameterværdier)
      • Tryk på knappen "Generer".
    • Brugerindstillinger gælder for datasammensætningsskemaet defineret af udvikleren.
    • Der dannes et mellemlayout af datasammensætningen, som indeholder instruktioner om, hvor dataene skal hentes fra. Især forespørgsler angivet i layoutet rettes. Så felter, der ikke bruges i rapporten, fjernes fra anmodningen (dette gøres for at minimere mængden af ​​modtaget data). Alle felter, der bruges i beregnede feltformler, føjes til forespørgslen.
    • Datasammensætningsbehandleren indgår i sagen. Layoutprocessoren udfører forespørgsler, sammenkæder datasæt, beregner værdierne af beregnede felter og ressourcer, udfører gruppering. Med et ord, den udfører alle de beregninger, der ikke blev udført på DBMS-niveau.
    • Dataoutputprocessoren starter en forespørgsel til udførelse og udsender de modtagne data til et regnearksdokument, diagram osv.


    Processen med at generere en rapport ved hjælp af ACS-mekanismen

    Vi forsøger at minimere mængden af ​​rapporteringsdata, der overføres fra serveren til klientapplikationen. Ved visning af data i et regnearksdokument, når vi åbner et regnearksdokument, overfører vi kun de linjer fra serveren, som brugeren ser i begyndelsen af ​​dokumentet. Når brugeren bevæger sig langs dokumentets linjer, downloades de manglende data fra serveren til klienten.

    Brugerindstillinger

    Alle ACS-værktøjer er tilgængelige for både udvikleren og slutbrugeren. Men praksis har vist, at slutbrugeren ofte er bange for overfloden af ​​værktøjsmuligheder. Desuden har slutbrugeren i de fleste tilfælde ikke brug for alle indstillinger - det er nok for ham at have hurtig adgang til at indstille en eller to rapportparametre (for eksempel periode og modpart). Fra en bestemt version af platformen har rapportudvikleren mulighed for at markere, hvilke rapportindstillinger der er tilgængelige for brugeren. Dette gøres ved at bruge afkrydsningsfeltet "Medtag i brugerindstillinger". Desuden har rapportindstillingerne nu et "Visningstilstand"-flag, der har en af ​​tre værdier:
    • Hurtig adgang. Indstillingen vil blive vist direkte øverst i rapportvinduet.
    • Normal. Indstillingen vil være tilgængelig via knappen "Indstillinger".
    • Ikke tilgængelig. Indstillingen vil ikke være tilgængelig for slutbrugeren.


    Indstilling af visningstilstand i designtid


    Vis indstillingen i tilstanden Hurtig adgang under kørsel (under knappen Generer)

    Udviklingsplaner

    En af prioriteterne i udviklingen af ​​ACS for os er forenklingen af ​​brugerindstillinger. Vores erfaring viser, at det for nogle slutbrugere stadig er et seriøst arbejde at arbejde med brugerindstillinger. Det tager vi højde for og arbejder i denne retning. Derfor bliver det også lettere for udviklere at arbejde med ACS, fordi vi ønsker som tidligere at levere et enkelt værktøjssæt til opsætning af rapporter til både udvikleren og slutbrugeren.

    I lyset af den kommende udgivelse af 8.2.14 vil jeg prøve at beskrive nogle af de nye funktioner i datasammensætningssystemet.

    Åbn datasammensætningsskemaet, gerne i en ekstern rapport, for at gøre det nemmere at redigere.

    Vi tilføjer et forespørgselsdatasæt og skriver, enten manuelt eller ved hjælp af forespørgselsbyggeren, den enkleste forespørgsel:

    1. Opret en anmodning i ACS.

    2. Opsæt beregnede felter i ACS

    3. Vi konfigurerer datalayoutet på fanen Indstillinger

    4. Vi lancerer 1C Enterprise 8.2.14. Vi åbner rapporten. Vi danner, vi modtager.

    Beskrivelse af selve de nye funktioner:

    1. Den aktuelle dato()

    Returnerer systemdatoen. Når layoutet af layoutet lægges ud, i alle udtryk, der er til stede i layoutet, erstattes CurrentDate()-funktionen med værdien af ​​den aktuelle dato.

    2. COMPUTE EXPRESSION()

    Syntaks:

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

    Beskrivelse:

    Funktionen er designet til at evaluere et udtryk i sammenhæng med en eller anden gruppering.

    Funktionen tager højde for valg af grupperinger, men tager ikke højde for hierarkiske valg.

    Funktionen kan ikke anvendes på en gruppering i gruppevalget for den gruppering. I udvælgelsen af ​​nomenklaturgrupperingen kan du for eksempel ikke bruge udtrykket Calculate Expression ("Sum(SumOmsætning)", "TotalTotal") > 1000. Men et sådant udtryk kan bruges i hierarkisk udvælgelse.

    Hvis slutposten går forud for startposten, anses det for, at der ikke er nogen poster til beregning af detaljerede data og beregning af aggregerede funktioner.

    Ved beregning af intervaludtryk for en totaltotal (Grupperingsparameteren er sat til GrandTotal), anses det for, at der ikke er nogen poster til beregning af detaljerede data og beregning af aggregerede funktioner.

    Layoutbyggeren, når den genererer udtrykket af funktionen Beregn udtryk, hvis bestillingsudtrykket indeholder felter, der ikke kan bruges i gruppering, erstatter funktionen Beregn udtryk med NULL.

    Muligheder

    <Выражение>

    Type: String. Udtrykket, der skal vurderes.

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

    Type: String. Indeholder navnet på den gruppering, i hvis kontekst udtrykket skal evalueres. Hvis en tom streng bruges som et grupperingsnavn, vil beregningen blive udført i sammenhæng med den aktuelle gruppering. Hvis strengen GrandTotal bruges som gruppenavn, vil beregningen blive udført i sammenhæng med den samlede total. Ellers vil beregningen blive udført i sammenhæng med den overordnede gruppering med det navn.

    For eksempel:

    Sum(Salg.SumOmsætning)/Beregn(“Sum(Salg.SumOmsætning)”, “TotalTotal”)

    I dette eksempel vil resultatet være forholdet mellem beløbet for feltet Sales.AmountVolume af grupperingsposten og mængden af ​​det samme felt i hele layoutet;

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

    Type: String. Parameteren kan have følgende værdier:

    • GeneralTotal - udtrykket vil blive beregnet for alle grupperingsposter.
    • Hierarki - udtrykket vil blive evalueret for den overordnede hierarkiske post, hvis der er en, og for hele grupperingen, hvis der ikke er nogen overordnet hierarkisk post.
    • Gruppering - udtrykket vil blive evalueret for den aktuelle grupperingspost.
    • GroupingNotResource - når man beregner en funktion for en gruppepost efter ressourcer, vil udtrykket blive beregnet for den første gruppepost i den oprindelige gruppering.

    Ved beregning af funktionen Beregn udtryk() med GroupingNotResource-værdien for gruppeposter, der ikke er grupperinger efter ressourcer, evalueres funktionen på samme måde, som den ville blive beregnet, hvis værdien af ​​parameteren var lig med grupperingsværdien.

    Layoutbyggeren for datasammensætningslayout sætter ved generering af datasammensætningslayoutet, ved visning af det ressourcefelt, som grupperingen udføres på, et udtryk i layoutet, der beregnes ved hjælp af funktionen Beregn udtryk(), med angivelse af parameteren GroupingNotResource. For andre ressourcer grupperet efter ressource placeres regulære ressourceudtryk.

    <Начало>

    Type: String. Angiver, hvilken post der skal starte fragmentet, hvori udtrykkets aggregerede funktioner skal beregnes, og fra hvilken post der skal hentes værdierne af felterne uden for de aggregerede funktioner. Værdien kan være en af ​​følgende:

    <Конец>

    Type: String. Angiver, til hvilken post der skal fortsættes fragmentet, hvori udtrykkets aggregerede funktioner skal beregnes. Værdien kan være en af ​​følgende:

    • Først (først). Du skal have den første grupperingspost. Efter ordet i parentes kan du angive et udtryk, hvis resultat vil blive brugt som en offset fra begyndelsen af ​​grupperingen. Den resulterende værdi skal være et heltal større end nul. For eksempel First(3) - at få den tredje post fra starten af ​​grupperingen.

    Hvis den første post er uden for grupperingen, anses det for, at der ikke er nogen poster. For eksempel, hvis der er 3 poster, og du ønsker at få First(4), så anses det for, at der ikke er nogen poster.

    • Sidste (Sidste). Du skal have den seneste grupperingspost. Efter ordet i parentes kan du angive et udtryk, hvis resultat vil blive brugt som en offset fra slutningen af ​​grupperingen. Den resulterende værdi skal være et heltal større end nul. For eksempel Last(3) - Henter den tredje post fra slutningen af ​​grupperingen.

    Hvis den sidste post er uden for grupperingen, anses det for, at der ikke er nogen poster. For eksempel, hvis der er 3 poster, og du ønsker at fåLast(4), så anses det for, at der ikke er nogen poster.

    • Tidligere. Du skal hente den forrige grupperingsindgang. Efter ordet i parentes kan du angive et udtryk, hvis resultat vil blive brugt som et skift tilbage fra den aktuelle grupperingspost. For eksempel Previous(2) - få den forrige fra den forrige post.

    Hvis den forrige post er uden for grupperingen (for eksempel kræver den anden grupperingspost Previous(3), så opnås den første grupperingspost.

    Når man henter den tidligere rekord for grupperingstotalen, anses det for, at den første post er opnået.

    • Næste (Næste). Du skal have den næste grupperingspost. Efter ordet i parentes kan du angive et udtryk, hvis resultat vil blive brugt som et fremadgående skift fra den aktuelle grupperingspost. For eksempel, Next(2) - få den næste fra den næste post.

    Hvis den næste post går ud over grupperingen, anses det for, at der ikke er nogen poster. For eksempel, hvis der er 3 poster, og den tredje post får Next(), så anses det for, at der ikke er nogen poster.

    Når den næste post modtages for grupperingstotalen, anses det for, at der ikke er nogen post.

    • Aktuel (Nuværende). Du skal have den aktuelle post.

    Når den hentes for en grupperingstotal, hentes den første post.

    • BoundaryValue. Behovet for at få posten med den angivne værdi. Efter ordet RestrictingValue i parentes skal du angive udtrykket med den værdi, som du vil starte fragmentet af, det første bestillingsfelt.

    Posten vil være den første post, hvis bestillingsfeltværdi er større end eller lig med den angivne værdi. For eksempel, hvis feltet Periode bruges som bestillingsfelt, og det har værdierne 01/01/2010, 02/01/2010, 03/01/2010, og du ønsker at få LimitValue(DateTime(2010) , 1, 15)), så modtages en registrering med datoen 02/01. 2010.

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

    Type: String. Kommaseparerede udtryk, der beskriver bestillingsreglerne, er angivet. Hvis det ikke er angivet, udføres bestilling på samme måde som for den gruppering, som udtrykket evalueres for. Efter hvert udtryk kan du angive nøgleordene Asc (for at sortere i stigende rækkefølge), Descending (for at sortere i faldende rækkefølge) og AutoOrder (for at sortere refererede felter efter de felter, som du vil sortere det refererede objekt efter). Ordet AutoOrder kan bruges med både stigende og faldende ord.

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

    Type: String. Svarende til indstillingen Sorter. Bruges til at arrangere hierarkiske poster. Hvis det ikke er angivet, genererer layoutbyggeren en bestilling i henhold til den bestilling, der er angivet i Sort-parameteren.

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

    Type: String. Angiver en regel til at bestemme den forrige eller næste post, hvis der er flere poster med samme rækkefølgeværdi:

    • Separat betyder, at en sekvens af ordnede poster bruges til at bestemme de forrige og næste poster. Standard værdi.
    • Together (Together) betyder, at de forrige og næste poster bestemmes ud fra værdierne af ordensudtrykkene.

    For eksempel, hvis den resulterende sekvens er sorteret efter dato:

    datoen Fulde navn Betyder
    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 parameterværdien er Separat, så:

    § den forrige post til post 3 vil være post 2.

    § hvis beregningsfragmentet er defineret som Current, Current (henholdsvis start- og slutparametrene), så vil dette fragment for record 2 bestå af én record 2. Udtrykket Calculate Expression ("Sum (Value)", Current, Current) vil være lig med 20.

    Hvis parameterværdien er Together, så:

    § den forrige post til post 3 vil være post 1.

    § hvis beregningsfragmentet er defineret som Current, Current (henholdsvis start- og slutparametrene), vil dette fragment for record 2 bestå af record 2 og 3. Udtryk CalculateExpression(“Sum(Value)”, Current, Current) vil være lig med 50.

    Når du angiver værdien af ​​parameteren lig med Together i parametrene Start og End, kan du ikke angive en offset for positionerne First, Last, Previous, Next.

    CalculateExpression("Beløb (Beløb Omsætning)", "Første", "Nuværende")

    Hvis du vil have grupperingsværdien i den forrige linje, kan du bruge følgende udtryk:

    CalculateExpression("Kursus", "Forrige")

    Liste ny funktioner:

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

    Funktionen returnerer et array, hvis hvert element indeholder resultatet af evaluering af udtrykket til gruppering efter det angivne felt.

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

    Funktionen returnerer en tabel med værdier, hvor hver række indeholder resultatet af evaluering af udtryk til gruppering efter det angivne felt

    Værdifyldt(<Выражение>) – Returnerer True, hvis værdien er en anden end standardværdien for den givne type, bortset fra NULL, bortset fra en nul-reference, bortset fra Udefineret. Booleske værdier testes for NULL. Strenge kontrolleres for ikke-mellemrumstegn.

    Format(<Выражение>, <Форматная строка>) – Hent den formaterede streng af den beståede værdi. Formatstrengen indstilles i overensstemmelse med formatstrengen i 1C:Enterprise-systemet.

    Understreng(<Выражение>, <Начальные символ>, <ДлинаПодстроки>) - Denne funktion er designet til at vælge en understreng fra en streng.

    Strengelængde(<Выражение>) – Funktionen er designet til at bestemme længden af ​​en streng. Parameter - strengtypeudtryk

    Linje(<Выражение>) – Hvis et array sendes som en parameter, returnerer funktionen en streng, der indeholder strengrepræsentationer af alle elementer i arrayet, adskilt af tegnene "; “. Hvis en værditabel sendes som en parameter, returnerer funktionen en streng, der indeholder strengrepræsentationer af alle rækker i værditabellen, og cellerepræsentationerne for hver linje er adskilt af tegnene "; “, og strenge med et nylinjetegn. Hvis et element har en tom strengrepræsentation, vises en streng i stedet for dens repræsentation<Пустое значение>.

    Hej kære læser! Vi har endnu en lektion om det grundlæggende i layoutsystemet. I blev bekendt med funktionerne i SKD-udtrykssproget, så funktionerne i layoutsystemet og fandt også ud af de grundlæggende indstillinger for layoutfelterne. Og nu vil vi overveje et nyt materiale. Gå!

    Yderligere indstillinger for ACS-felterne.

    Højttaler "værditype" giver dig mulighed for at angive datatypen for layoutfeltet. Hvorfor angive typen, for eksempel for feltet "Nomenklatur", hvis du allerede ved, hvilken type det er? Dette er påkrævet, hvis layoutfeltet er af en sammensat type. Du kan vælge en bestemt type, så når du filtrerer efter dette felt, vil værdier af denne type blive valgt.

    Højttaler "Tilgængelige værdier" giver dig mulighed for at angive de tilgængelige værdier for valg og begrænse brugerens valg til bestemte grænser.

    Højttaler "Registrering" giver dig mulighed for at indstille udseendet af layoutfeltet uden at bruge layouts. Du kan angive skrifttypefarve, rammefarve, tekstretning og så videre.

    Højttaler "Redigeringsmuligheder" giver dig mulighed for at angive, hvordan layoutfeltet skal redigeres. For eksempel kan du angive et hurtigt udvalg af elementer fra en liste i et udvalg. Som standard arver layoutfeltet alle redigeringsmuligheder fra metadataobjektet.

    Beregnede felter

    Du kan oprette dine egne beregnede felter på fanen Beregnede felter i datasammensætningen.

    Hvorfor har vi brug for beregnede felter, når vi kan oprette dem på forespørgselsniveau? Ikke alle felter kan beskrives med en forespørgsel. Hvis du skal sammensætte et komplekst felt ud fra forskellige datasæt, for eksempel forespørgsels- og objekttyper, så er beregnede felter uundværlige. Du kan ikke tilføje et datasammensætningsfelt, hvis datakilden er en forespørgsel og autofuldførelse, men du kan tilføje så mange felter, som du vil, ved at bruge beregnede felter.

    I kolonnen i det beregnede felt "Udtryk" skal du skrive et vilkårligt udtryk, der bruger felterne i datasammensætningen, med henvisning til deres sti ("sti"-kolonnen på fanen "Datasæt"). Enten kan du bruge de matematiske transformationsfunktioner, eller du kan henvise til funktionerne i de generelle moduler. Lad os f.eks. skrive navnet på det beregnede felt "Afvigelse" i kolonnen "Sti til data" og følgende i feltet "Udtryk":

    Beløb - Pris* Antal

    Tjek en anden, og du kan også downloade ved hjælp af disse funktioner.

    I det væsentlige er beregnede felter sat til de samme indstillinger som layoutfelter. Kun kolonnen Hierarkigruppe mangler her. Når du skriver beregnede felter, kan du ikke henvise til andre beregnede felter.

    Hvordan overfører man parametre og valg til en rapport bygget på ACS uden at oprette en rapportformular?

    &AtClient // Overførsel af parametre til ACS-rapporten Procedure Kommandobehandling(Kommandoparameter, Kommandoudførelsesparametre) Valg = Ny struktur("Nomenklatur", Kommandoparameter) ; FixedSettings = GetFixedSettings() ; FormParameters = Ny struktur( "ShapeOnOpen, Valg, variantnøgle, faste indstillinger", Sandhed , Udvælgelse, "Salgsrapportvariant", FixedSettings) ; OpenForm( "Report.SalesReport.Form", FormParameters); EndProcedure &AtServer Funktion GetFixedSettings() Salgsrapport = Rapporter. Salgsrapport. Skab() ; SKD = ​​Salgsrapport. DataCompositionScheme; Indstillinger = SKD. Standardindstillinger; StartPeriod = Indstillinger. ParametreData. FindParameterValue( NewDataCompositionParameter("PeriodStart") ); Begyndelse af menstruation. Værdi = MonthStart(CurrentDate()) ; Begyndelse af menstruation. Brug = sand ; StartPeriod = Indstillinger. ParametreData. FindParameterValue( NewDataCompositionParameter("EndPeriod") ); SlutPeriode. Værdi = EndMonth(CurrentDate() ); SlutPeriode. Brug = sand ; Returner Indstillinger; EndFunctions // GetFixedSettings()

    Hvordan justerer man kolonneoverskrifter til midten i en SKD-rapport?

    Du skal indstille to parametre i feltet "Design" på fanen "Datasæt":

    Vandret position: Center Lodret position: Center

    Også på fanen "Indstillinger" nederst finder du en anden fane: "Betinget udseende". Der for hver gruppering, parameter osv. du kan indstille det layout du ønsker.

    Det ser ud til, at han har fortalt alt! Som du husker, har du mulighed for at stille spørgsmål, evt. Jeg vil prøve at svare. I fremtiden planlægger jeg at skrive flere artikler om dette emne, så glem ikke at abonnere på opdateringer af vores websted for ikke at gå glip af det! Sørg også for at lave en test for at konsolidere materialet fra denne lektion.

    I slutningen af ​​artiklen vil jeg rådgive dig fri fra Anatoly Sotnikov. Dette er et kursus fra en erfaren programmør. Han vil på et separat grundlag vise dig, hvordan du opbygger rapporter i ACS. Du skal bare lytte godt efter og huske! Du får svar på spørgsmål som:
    • Hvordan opretter man en simpel listerapport?
    • Hvad er kolonnerne Felt, Sti og Titel på fanen Felter til?
    • Hvad er begrænsningerne for layoutfelter?
    • Hvordan opsætter man roller korrekt?
    • Hvad er rollerne for layoutfelter?
    • Hvor kan jeg finde fanen datalayout i en forespørgsel?
    • Hvordan konfigureres parametre i SKD?
    • Endnu mere interessant...
    Måske skulle du ikke selv prøve at surfe på internettet på jagt efter den nødvendige information? Desuden er alt klar til brug. Bare kom i gang! Alle detaljer om, hvad der er i de gratis videotutorials