Beräknade fält i SKD. Data Composition System Expression Language (1Cv8)

Hej kära läsare! Vi har ytterligare en lektion om grunderna i layoutsystemet. I bekantade du dig med funktionerna i uttrycksspråket SKD, såg funktionerna i layoutsystemet och förstod även de grundläggande inställningarna för layoutfälten. Nu ska vi titta på nytt material. Gå!

Ytterligare inställningar för ACS-fält.

Kolumn "Värde typ" Låter dig ange datatypen för layoutfältet. Varför ange typen, till exempel för fältet "Nomenklatur", om du redan vet vilken typ det är? Detta är nödvändigt om layoutfältet är av en sammansatt typ. Du kan välja en specifik typ, och när du väljer detta fält kommer värden av denna typ att väljas.

Kolumn "Tillgängliga värden" låter dig ange de värden som är tillgängliga för val och begränsa användarens val till vissa gränser.

Kolumn "Dekor" låter dig specificera utformningen av ett layoutfält utan att använda layouter. Du kan ange teckensnittsfärg, ramfärg, textorientering, etc.

Kolumn "Redigeringsalternativ" Låter dig ange hur layoutfältet ska redigeras. Du kan till exempel ange ett snabbt urval av element från en lista i ett urval. Som standard ärver ett layoutfält alla redigeringsalternativ från metadataobjektet.

Beräknade fält

På fliken "Beräknade fält" i datasammansättningen kan du skapa dina egna beräknade fält.

Varför behöver du beräknade fält när du kan skapa dem på frågenivå? Alla fält kan inte beskrivas med en fråga. Om du behöver skapa ett komplext fält från olika uppsättningar data, till exempel, som en fråga och ett objekt, kan du inte klara dig utan beräknade fält. Du kan inte lägga till ett datasammansättningsfält om datakällan är en fråga och autofyll är aktiverat, men med hjälp av beräknade fält kan du lägga till så många fält du vill.

I kolumnen "Uttryck" i det beräknade fältet måste du skriva ett godtyckligt uttryck som använder datasammansättningsfälten och kommer åt deras sökväg (kolumnen "Sökväg" på fliken "Datauppsättningar"). Antingen kan du använda matematiska transformationsfunktioner eller komma åt funktionerna i vanliga moduler. Låt oss till exempel skriva namnet på det beräknade fältet "Avvikelse" i kolumnen "Datasökväg" och i fältet "Uttryck" följande.

I ljuset av den kommande releasen av 8.2.14 kommer jag att försöka beskriva några nya funktioner i datasammansättningssystemet.

Öppna datalayoutdiagrammet, helst i en extern rapport, för att göra redigeringen enklare.

Vi lägger till en datauppsättning av frågetypen och skriver, antingen manuellt eller med hjälp av frågedesignern, en enkel fråga:

1. Ställ in en begäran i passersystemet.

2. Ställ in beräknade fält i passersystemet

3. Konfigurera datalayouten på fliken Inställningar

4. Starta 1C Enterprise 8.2.14. Öppna rapporten. Vi formar, vi tar emot.

Beskrivning av själva de nya funktionerna:

1. Det aktuella datumet()

Returnerar systemdatumet. När du skapar en layoutlayout, i alla uttryck som finns i layouten, ersätts funktionen CurrentDate() med värdet för det aktuella datumet.

2. COMPUTEEXPRESSION()

Syntax:

CalculateExpression(,)

Beskrivning:

Funktionen är utformad för att utvärdera ett uttryck inom ramen för någon gruppering.

Funktionen tar hänsyn till urvalet av grupperingar, men tar inte hänsyn till hierarkiska urval.

Funktionen kan inte tillämpas på en gruppering i gruppvalet för den grupperingen. När du till exempel väljer nomenklaturgrupperingen kan du inte använda uttrycket CalculateExpression("Sum(SumOmsättning)", "TotalTotal") > 1000. Men ett sådant uttryck kan användas i hierarkiskt urval.

Om slutposten föregår startposten anses det inte finnas några poster för beräkning av detaljerade data och beräkning av aggregatfunktioner.

Vid beräkning av intervalluttryck för en totalsumma (parametern Gruppering är satt till GrandTotal) antas det att det inte finns några poster för beräkning av detaljerade data och beräkning av aggregerade funktioner.

Layoutlinker när ett funktionsuttryck genereras Beräkna uttryck, om ordningsuttrycket innehåller fält som inte kan användas i gruppering, ersätter funktionen Beräkna uttryckNULL.

alternativ

Typ: Linje. Uttrycket som ska utvärderas.

Typ: Linje. Innehåller namnet på den gruppering i vilken uttrycket ska utvärderas. Om en tom sträng används som grupperingsnamn kommer beräkningen att utföras i samband med den aktuella grupperingen. Om GeneralTotal-strängen används som gruppnamn, kommer beräkningen att utföras i samband med totalsumman. Annars kommer beräkningen att utföras inom ramen för den överordnade grupperingen med samma namn.

Till exempel:

Sum(Sales.SumTurnover)/Calculate("Sum(Sales.SumTurnover)", "Total")

I det här exemplet blir resultatet förhållandet mellan summan per fält Försäljning.Belopp Omsättning gruppera poster till summan av samma fält i hela layouten;

Typ: Linje. Parametern kan ha följande värden:

· Totalsumma— Uttrycket kommer att beräknas för alla grupperingsposter.

· Hierarki— Uttrycket kommer att utvärderas för den överordnade hierarkiska posten, om det finns en, och för hela grupperingen, om det inte finns någon överordnad hierarkisk post.

· Gruppering— uttrycket kommer att utvärderas för den aktuella gruppgrupperingsposten.

· GroupingNonResource— vid beräkning av en funktion för en grupppost efter resurser, kommer uttrycket att beräknas för den första gruppposten i den ursprungliga grupperingen.

Vid beräkning av en funktion CalculateExpression() med mening GroupingNonResource för gruppposter som inte är grupperade efter resurser beräknas funktionen på samma sätt som den skulle beräknas om parametervärdet var lika med värdet Gruppering.

Layoutbyggaren för datasammansättning, när den genererar en datasammansättningslayout vid utmatning av ett resursfält genom vilket gruppering utförs till layouten, placerar ett uttryck i layouten som beräknas med funktionen CalculateExpression() , som indikerar parametern GroupingNonResource. För andra resurser placeras de vanliga resursuttrycken i resursgrupperingen.

Typ: Linje. Indikerar från vilken post fragmentet ska börja, i vilka aggregerade uttrycksfunktioner som ska beräknas och från vilken post som ska erhållas fältvärden utanför aggregerade funktioner. Värdet kan vara något av följande:

· Först

· Sista (sista)

· Tidigare

· Nästa (Nästa)

· Nuvarande

· LimitingValue(BoundaryValue) LimitingValue

Typ: Linje. Indikerar till vilken post fragmentet ska fortsätta, i vilken uttryckets aggregerade funktioner ska beräknas. Värdet kan vara något av följande:

· Först. Det är nödvändigt att erhålla den första grupperingsposten. Efter ordet inom parentes kan du ange ett uttryck, vars resultat kommer att användas som en offset från början av grupperingen. Det resulterande värdet måste vara ett heltal större än noll. Till exempel First(3) - tar emot den tredje posten från början av grupperingen.

Om den första posten ligger utanför grupperingen anses det inte finnas några poster. Till exempel, om det finns 3 poster, och du vill få First(4), så anses det att det inte finns några poster.

· Sista (sista). Du måste få den sista grupperingsposten. Efter ordet inom parentes kan du ange ett uttryck, vars resultat kommer att användas som en offset från slutet av grupperingen. Det resulterande värdet måste vara ett heltal större än noll. Till exempel Last(3) - tar emot den tredje posten från slutet av gruppen.

Om den sista posten ligger utanför grupperingen, anses det inte finnas några poster. Till exempel, om det finns 3 poster, och du vill få Last(4), så anses det att det inte finns några poster.

· Tidigare. Du måste hämta den tidigare grupperingsposten. Efter ordet inom parentes kan du ange ett uttryck, vars resultat kommer att användas som en förskjutning från den aktuella grupperingsposten. Till exempel Previous(2) - hämtar föregående från föregående post.

Om den tidigare posten går utöver grupperingen (till exempel för den andra grupperingsposten måste du hämta Previous(3)), så erhålls den första grupperingsposten.

Vid hämtning av den tidigare posten för en grupperingssumma anses den första posten erhållas.

· Nästa (Nästa). Du måste få nästa grupperingspost. Efter ordet inom parentes kan du ange ett uttryck, vars resultat kommer att användas som en förskjutning framåt från den aktuella grupperingsposten. Till exempel, Next(2) - kommer nästa från nästa post.

Om nästa post går utöver grupperingen, anses det inte finnas några poster. Till exempel, om det finns 3 poster och den tredje posten får Next() , anses det inte finnas några poster.

När nästa post tas emot för grupperingssumman anses det inte finnas någon post.

· Nuvarande. Du måste få den aktuella posten.

Vid hämtning för en grupperingssumma erhålls den första posten.

· LimitingValue(BoundaryValue). Behovet av att få en post med det angivna värdet. Efter ordet LimitingValue inom parentes måste du ange uttrycket med det värde som du vill starta fragmentet av, det första ordningsfältet.

Den första posten vars beställningsfältvärde är större än eller lika med det angivna värdet kommer att returneras som posten. Till exempel, om fältet Period används som beställningsfält, och det har värdena 01/01/2010, 02/01/2010, 03/01/2010, och du vill få LimitingValue(DatumTime(2010, 1, 15)), då kommer en post med datumet 2010-01-02 att tas emot.

Typ: Linje. Listar uttryck, separerade med kommatecken, som beskriver ordningsreglerna. Om det inte anges, utförs beställningen på samma sätt som för den gruppering för vilken uttrycket utvärderas. Efter varje uttryck kan du ange ett nyckelord Ålder(för beställning i stigande ordning), Nedåtgående(för beställning i fallande ordning) och Automatisk beställning(för att sortera referensfält efter de fält som du vill sortera det refererade objektet efter). Ord Automatisk beställning kan användas som med ordet Ålder, så med ordet Nedåtgående.

Typ: Linje. Samma som parameter Sortering. Används för att organisera hierarkiska poster. Om det inte anges genererar layoutbyggaren beställningen enligt den ordning som anges i parametern Sortering.

Typ: Linje. Anger regeln för att fastställa föregående eller nästa post om det finns flera poster med samma ordningsvärde:

· Separat indikerar att en sekvens av ordnade poster används för att fastställa föregående och nästa poster. Standardvärde.

· Tillsammans indikerar att föregående och nästa post bestäms baserat på värdena för ordningsuttrycken.

Till exempel, om den resulterande sekvensen är ordnad efter datum:

datum Fullständiga namn Menande
1 1 januari 2001

Ivanov M.

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

Separat, Den där:

§ den föregående posten till post 3 kommer att vara post 2.

Aktuell, Aktuell(i enlighet därmed parametrar Start Och Slutet), för post 2 kommer detta fragment att bestå av en post 2. Uttrycket kommer att vara lika med 20.

Om parametervärdet är Tillsammans, Den där:

§ den föregående posten till post 3 kommer att vara post 1.

§ om beräkningsfragmentet definieras som Aktuell, Aktuell(i enlighet därmed parametrar Start Och Slutet), då för post 2 kommer detta fragment att bestå av post 2 och 3. Uttryck CalculateExpression("Sum(Value)", Current, Current) kommer att vara lika med 50.

När man anger ett parametervärde lika med Tillsammans, i parametrar Start Och Slutet du kan inte ange en offset för positioner Första, sista, föregående, nästa.

CalculateExpression("Summa(Sumomsättning)", "Första", "Nuvarande")

Om du vill få grupperingsvärdet på föregående rad kan du använda följande uttryck:

CalculateExpression("Rate", "Föregående")

Lista ny funktioner:

CalculateExpressionWithGroupArray(,) -

Funktionen returnerar en array, vars varje element innehåller resultatet av att utvärdera ett uttryck för gruppering efter det angivna fältet.

CalculateExpressionWithGroupValueTable(,) -

Funktionen returnerar en värdetabell där varje rad innehåller resultatet av utvärdering av uttryck för gruppering efter det angivna fältet

ValueFilled() - Returnerar True om värdet är annat än standardvärdet av denna typ, annat än NULL, annat än en tom referens, annat än Odefinierat. Booleska värden kontrolleras för NULL-värden. Strängar kontrolleras för frånvaron av tecken som inte är blanksteg

Formatera(, ) - Ta emot en formaterad sträng med det godkända värdet. Formatsträngen ställs in i enlighet med formatsträngen i 1C:Enterprise-systemet.

Delsträng(, , ) - Denna funktion är utformad för att extrahera en delsträng från en sträng.

Linjelängd() - Funktionen är utformad för att bestämma längden på en sträng. Parameter är ett stränguttryck

Linje() - Om en array skickas som en parameter, returnerar funktionen en sträng som innehåller strängrepresentationer av alla arrayelement, separerade med "; "-tecken. Om en värdetabell skickas som en parameter, returnerar funktionen en sträng som innehåller strängrepresentationer av alla rader i värdetabellen, med cellrepresentationerna för varje rad separerade med ";"-tecken och raderna med en nyrad karaktär. Om ett elements strängrepresentation är tom, visas en sträng istället för dess representation.

I ljuset av den kommande releasen av 8.2.14 kommer jag att försöka beskriva några nya funktioner i datasammansättningssystemet.

Öppna datalayoutdiagrammet, helst i en extern rapport, för att göra redigeringen enklare.

Vi lägger till en datauppsättning av frågetypen och skriver, antingen manuellt eller med hjälp av frågedesignern, en enkel fråga:

1. Ställ in en begäran i passersystemet.

2. Ställ in beräknade fält i passersystemet

3. Konfigurera datalayouten på fliken Inställningar

4. Starta 1C Enterprise 8.2.14. Öppna rapporten. Vi formar, vi tar emot.

Beskrivning av själva de nya funktionerna:

1. Det aktuella datumet()

Returnerar systemdatumet. När du skapar en layoutlayout, i alla uttryck som finns i layouten, ersätts funktionen CurrentDate() med värdet för det aktuella datumet.

2. COMPUTEEXPRESSION()

Syntax:

CalculateExpression(,)

Beskrivning:

Funktionen är utformad för att utvärdera ett uttryck inom ramen för någon gruppering.

Funktionen tar hänsyn till urvalet av grupperingar, men tar inte hänsyn till hierarkiska urval.

Funktionen kan inte tillämpas på en gruppering i gruppvalet för den grupperingen. När du till exempel väljer nomenklaturgrupperingen kan du inte använda uttrycket CalculateExpression("Sum(SumOmsättning)", "TotalTotal") > 1000. Men ett sådant uttryck kan användas i hierarkiskt urval.

Om slutposten föregår startposten anses det inte finnas några poster för beräkning av detaljerade data och beräkning av aggregatfunktioner.

Vid beräkning av intervalluttryck för en totalsumma (parametern Gruppering är satt till GrandTotal) antas det att det inte finns några poster för beräkning av detaljerade data och beräkning av aggregerade funktioner.

Layoutlinker när ett funktionsuttryck genereras Beräkna uttryck, om ordningsuttrycket innehåller fält som inte kan användas i gruppering, ersätter funktionen Beräkna uttryckNULL.

alternativ

Typ: Linje. Uttrycket som ska utvärderas.

Typ: Linje. Innehåller namnet på den gruppering i vilken uttrycket ska utvärderas. Om en tom sträng används som grupperingsnamn kommer beräkningen att utföras i samband med den aktuella grupperingen. Om GeneralTotal-strängen används som gruppnamn, kommer beräkningen att utföras i samband med totalsumman. Annars kommer beräkningen att utföras inom ramen för den överordnade grupperingen med samma namn.

Till exempel:

Sum(Sales.SumTurnover)/Calculate("Sum(Sales.SumTurnover)", "Total")

I det här exemplet blir resultatet förhållandet mellan summan per fält Försäljning.Belopp Omsättning gruppera poster till summan av samma fält i hela layouten;

Typ: Linje. Parametern kan ha följande värden:

· Totalsumma— Uttrycket kommer att beräknas för alla grupperingsposter.

· Hierarki— Uttrycket kommer att utvärderas för den överordnade hierarkiska posten, om det finns en, och för hela grupperingen, om det inte finns någon överordnad hierarkisk post.

· Gruppering— uttrycket kommer att utvärderas för den aktuella gruppgrupperingsposten.

· GroupingNonResource— vid beräkning av en funktion för en grupppost efter resurser, kommer uttrycket att beräknas för den första gruppposten i den ursprungliga grupperingen.

Vid beräkning av en funktion CalculateExpression() med mening GroupingNonResource för gruppposter som inte är grupperade efter resurser beräknas funktionen på samma sätt som den skulle beräknas om parametervärdet var lika med värdet Gruppering.

Layoutbyggaren för datasammansättning, när den genererar en datasammansättningslayout vid utmatning av ett resursfält genom vilket gruppering utförs till layouten, placerar ett uttryck i layouten som beräknas med funktionen CalculateExpression() , som indikerar parametern GroupingNonResource. För andra resurser placeras de vanliga resursuttrycken i resursgrupperingen.

Typ: Linje. Indikerar från vilken post fragmentet ska börja, i vilka aggregerade uttrycksfunktioner som ska beräknas och från vilken post som ska erhållas fältvärden utanför aggregerade funktioner. Värdet kan vara något av följande:

· Först

· Sista (sista)

· Tidigare

· Nästa (Nästa)

· Nuvarande

· LimitingValue(BoundaryValue) LimitingValue

Typ: Linje. Indikerar till vilken post fragmentet ska fortsätta, i vilken uttryckets aggregerade funktioner ska beräknas. Värdet kan vara något av följande:

· Först. Det är nödvändigt att erhålla den första grupperingsposten. Efter ordet inom parentes kan du ange ett uttryck, vars resultat kommer att användas som en offset från början av grupperingen. Det resulterande värdet måste vara ett heltal större än noll. Till exempel First(3) - tar emot den tredje posten från början av grupperingen.

Om den första posten ligger utanför grupperingen anses det inte finnas några poster. Till exempel, om det finns 3 poster, och du vill få First(4), så anses det att det inte finns några poster.

· Sista (sista). Du måste få den sista grupperingsposten. Efter ordet inom parentes kan du ange ett uttryck, vars resultat kommer att användas som en offset från slutet av grupperingen. Det resulterande värdet måste vara ett heltal större än noll. Till exempel Last(3) - tar emot den tredje posten från slutet av gruppen.

Om den sista posten ligger utanför grupperingen, anses det inte finnas några poster. Till exempel, om det finns 3 poster, och du vill få Last(4), så anses det att det inte finns några poster.

· Tidigare. Du måste hämta den tidigare grupperingsposten. Efter ordet inom parentes kan du ange ett uttryck, vars resultat kommer att användas som en förskjutning från den aktuella grupperingsposten. Till exempel Previous(2) - hämtar föregående från föregående post.

Om den tidigare posten går utöver grupperingen (till exempel för den andra grupperingsposten måste du hämta Previous(3)), så erhålls den första grupperingsposten.

Vid hämtning av den tidigare posten för en grupperingssumma anses den första posten erhållas.

· Nästa (Nästa). Du måste få nästa grupperingspost. Efter ordet inom parentes kan du ange ett uttryck, vars resultat kommer att användas som en förskjutning framåt från den aktuella grupperingsposten. Till exempel, Next(2) - kommer nästa från nästa post.

Om nästa post går utöver grupperingen, anses det inte finnas några poster. Till exempel, om det finns 3 poster och den tredje posten får Next() , anses det inte finnas några poster.

När nästa post tas emot för grupperingssumman anses det inte finnas någon post.

· Nuvarande. Du måste få den aktuella posten.

Vid hämtning för en grupperingssumma erhålls den första posten.

· LimitingValue(BoundaryValue). Behovet av att få en post med det angivna värdet. Efter ordet LimitingValue inom parentes måste du ange uttrycket med det värde som du vill starta fragmentet av, det första ordningsfältet.

Den första posten vars beställningsfältvärde är större än eller lika med det angivna värdet kommer att returneras som posten. Till exempel, om fältet Period används som beställningsfält, och det har värdena 01/01/2010, 02/01/2010, 03/01/2010, och du vill få LimitingValue(DatumTime(2010, 1, 15)), då kommer en post med datumet 2010-01-02 att tas emot.

Typ: Linje. Listar uttryck, separerade med kommatecken, som beskriver ordningsreglerna. Om det inte anges, utförs beställningen på samma sätt som för den gruppering för vilken uttrycket utvärderas. Efter varje uttryck kan du ange ett nyckelord Ålder(för beställning i stigande ordning), Nedåtgående(för beställning i fallande ordning) och Automatisk beställning(för att sortera referensfält efter de fält som du vill sortera det refererade objektet efter). Ord Automatisk beställning kan användas som med ordet Ålder, så med ordet Nedåtgående.

Typ: Linje. Samma som parameter Sortering. Används för att organisera hierarkiska poster. Om det inte anges genererar layoutbyggaren beställningen enligt den ordning som anges i parametern Sortering.

Typ: Linje. Anger regeln för att fastställa föregående eller nästa post om det finns flera poster med samma ordningsvärde:

· Separat indikerar att en sekvens av ordnade poster används för att fastställa föregående och nästa poster. Standardvärde.

· Tillsammans indikerar att föregående och nästa post bestäms baserat på värdena för ordningsuttrycken.

Till exempel, om den resulterande sekvensen är ordnad efter datum:

datum Fullständiga namn Menande
1 1 januari 2001

Ivanov M.

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

Separat, Den där:

§ den föregående posten till post 3 kommer att vara post 2.

Aktuell, Aktuell(i enlighet därmed parametrar Start Och Slutet), för post 2 kommer detta fragment att bestå av en post 2. Uttrycket kommer att vara lika med 20.

Om parametervärdet är Tillsammans, Den där:

§ den föregående posten till post 3 kommer att vara post 1.

§ om beräkningsfragmentet definieras som Aktuell, Aktuell(i enlighet därmed parametrar Start Och Slutet), då för post 2 kommer detta fragment att bestå av post 2 och 3. Uttryck CalculateExpression("Sum(Value)", Current, Current) kommer att vara lika med 50.

När man anger ett parametervärde lika med Tillsammans, i parametrar Start Och Slutet du kan inte ange en offset för positioner Första, sista, föregående, nästa.

CalculateExpression("Summa(Sumomsättning)", "Första", "Nuvarande")

Om du vill få grupperingsvärdet på föregående rad kan du använda följande uttryck:

CalculateExpression("Rate", "Föregående")

Lista ny funktioner:

CalculateExpressionWithGroupArray(,) -

Funktionen returnerar en array, vars varje element innehåller resultatet av att utvärdera ett uttryck för gruppering efter det angivna fältet.

CalculateExpressionWithGroupValueTable(,) -

Funktionen returnerar en värdetabell där varje rad innehåller resultatet av utvärdering av uttryck för gruppering efter det angivna fältet

ValueFilled() - Returnerar True om värdet är annat än standardvärdet av denna typ, annat än NULL, annat än en tom referens, annat än Odefinierat. Booleska värden kontrolleras för NULL-värden. Strängar kontrolleras för frånvaron av tecken som inte är blanksteg

Formatera(, ) - Ta emot en formaterad sträng med det godkända värdet. Formatsträngen ställs in i enlighet med formatsträngen i 1C:Enterprise-systemet.

Delsträng(, , ) - Denna funktion är utformad för att extrahera en delsträng från en sträng.

Linjelängd() - Funktionen är utformad för att bestämma längden på en sträng. Parameter är ett stränguttryck

Linje() - Om en array skickas som en parameter, returnerar funktionen en sträng som innehåller strängrepresentationer av alla arrayelement, separerade med "; "-tecken. Om en värdetabell skickas som en parameter, returnerar funktionen en sträng som innehåller strängrepresentationer av alla rader i värdetabellen, med cellrepresentationerna för varje rad separerade med ";"-tecken och raderna med en nyrad karaktär. Om ett elements strängrepresentation är tom, visas en sträng istället för dess representation.

1. Beräkna (Eval)- är avsedd att utvärdera ett uttryck inom ramen för någon gruppering. Funktionen används för kompatibilitet med tidigare versioner av plattformen. Det rekommenderas att använda funktionen CalculateExpression istället.

Syntax:
Beräkna (uttryck, gruppering, beräkningstyp)

Alternativ :

  • Uttryck(Linje). Innehåller ett beräknat uttryck;
  • Gruppering(Linje). Innehåller namnet på den gruppering i vilken uttrycket ska utvärderas. Om en tom sträng används som grupperingsnamn kommer beräkningen att utföras i samband med den aktuella grupperingen. Om GrandTotal-strängen används som gruppnamn, kommer beräkningen att utföras i samband med totalsumman. Annars kommer beräkningen att utföras inom ramen för den överordnade grupperingen med samma namn.
    Till exempel:
    Sum(Sales.SumTurnover) / Calculate("Sum(Försäljning.SumOmsättning)", "Totalt").
    I det här exemplet blir resultatet förhållandet mellan beloppet för fältet "Sales.AmountTurnover" i grupperingsposten och beloppet för samma fält i hela layouten.
  • Typ av beräkning(Linje). Om denna parameter är inställd på "TotalTotal" kommer uttrycket att beräknas för alla grupperingsposter. Om värdet på parametern är "Gruppering", kommer värdena att beräknas för den aktuella grupperingsgruppposten.
2. Utvärdera uttryck (EvalExpression) - är avsedd att utvärdera ett uttryck inom ramen för någon gruppering. Funktionen tar hänsyn till urvalet av grupperingar, men tar inte hänsyn till hierarkiska urval. Funktionen kan inte tillämpas på en gruppering i gruppvalet för den grupperingen.

Syntax:
CalculateExpression(Expression, Grouping, CalculationType, Start, End, Sorter, HierarchicalSort, ProcessingIdentical OrderValues)

Alternativ :

  • Uttryck(Linje). Innehåller ett beräknat uttryck;
  • Gruppering(Linje). Innehåller namnet på den gruppering i vilken uttrycket ska utvärderas. Om en tom sträng används som grupperingsnamn kommer beräkningen att utföras i samband med den aktuella grupperingen. Om GrandTotal-strängen används som gruppnamn, kommer beräkningen att utföras i samband med totalsumman. Annars kommer beräkningen att utföras inom ramen för den överordnade grupperingen med det namnet;
  • Typ av beräkning(Linje). Om denna parameter är inställd på "TotalTotal" kommer uttrycket att beräknas för alla grupperingsposter. Om värdet på parametern är "Gruppering", kommer värdena att beräknas för den aktuella grupperingsgruppposten. Om parametern är inställd på "Icke-resursgruppering" kommer uttrycket att utvärderas för den första gruppposten i den ursprungliga grupperingen vid beräkning av funktionen för en grupppost för resurs. Vid utvärdering av funktionen CalculateExpression med värdet "GroupingNonResource" för gruppposter som inte är grupperade efter resurs, utvärderas funktionen på samma sätt som den skulle utvärderas med värdet för parametern "Gruppering". Layoutbyggaren för datasammansättning, när den genererar en datasammansättningslayout vid utmatning av ett fält - en resurs med vilken gruppering utförs, till layouten, matar ut till layouten ett uttryck som beräknats med hjälp av funktionen CalculateExpression med den angivna parametern "GroupingNon-Resource". För andra resurser grupperade efter resurs returneras normala resursuttryck. Om parametern är inställd på "Hierarki" måste uttrycket utvärderas för den överordnade hierarkiska posten, om det finns en, och för hela grupperingen, om det inte finns någon överordnad hierarkisk post. Layoutbyggaren, när den genererar ett uttryck för % i Hierarchy Group-fältet, genererar ett uttryck som innehåller relationen mellan resursuttrycket och funktionen CalculateExpression för resursuttrycket som beräknas för den aktuella grupperingen med beräkningstypen Hierarki.
  • Start. Indikerar från vilken post fragmentet ska börja, i vilka aggregerade uttrycksfunktioner som ska beräknas och från vilken post som ska erhållas fältvärden utanför aggregerade funktioner. En sträng som innehåller en av:
    • "Först" Det är nödvändigt att erhålla den första grupperingsposten. Efter ordet inom parentes kan du ange ett uttryck, vars resultat kommer att användas som en offset från början av grupperingen. Det resulterande värdet måste vara ett heltal större än noll. Till exempel First(3) – ta emot den tredje posten från början av grupperingen. Om den första posten ligger utanför grupperingen anses det inte finnas några poster. Till exempel, om det finns 3 poster, och du vill få First(4), så anses det att det inte finns några poster.
    • "Sista" Du måste få den sista grupperingsposten. Efter ordet inom parentes kan du ange ett uttryck, vars resultat kommer att användas som en offset från slutet av grupperingen. Det resulterande värdet måste vara ett heltal större än noll. Till exempel Last(3) – tar emot den tredje posten från slutet av gruppen. Om den sista posten ligger utanför grupperingen anses det inte finnas några poster. Till exempel, om det finns 3 poster, och du vill få Last(4), så anses det att det inte finns några poster.
    • "Tidigare" Du måste hämta den tidigare grupperingsposten. Efter ordet inom parentes kan du ange ett uttryck, vars resultat kommer att användas som en förskjutning från den aktuella grupperingsposten. Till exempel Previous(2) – hämtar föregående från föregående post. Om den föregående posten ligger utanför grupperingen (till exempel kräver den andra grupperingsposten att man hämtar Previous(3)), så erhålls den första grupperingsposten. När den tidigare posten för grupperingssumman tas emot erhålls den första posten.
    • "Nästa" Du måste få nästa grupperingspost. Efter ordet inom parentes kan du ange ett uttryck, vars resultat kommer att användas som en förskjutning framåt från den aktuella grupperingsposten. Till exempel Next(2) – hämta nästa från nästa post. Om nästa post går utöver grupperingen, anses det inte finnas några poster. Till exempel, om det finns 3 poster och den tredje posten tar emot Next, då anses det inte finnas några poster. När nästa post tas emot för grupperingssumman anses det inte finnas någon post.
    • "Nuvarande" Du måste få den aktuella posten. Vid hämtning för en grupperingssumma erhålls den första posten.
    • "BoundaryValue". Behovet av att få en post med det angivna värdet. Efter ordet LimitingValue inom parentes måste du ange uttrycket med värdet som du vill starta fragmentet av, det första ordningsfältet. Den första posten vars beställningsfältvärde är större än eller lika med det angivna värdet kommer att returneras som posten. Till exempel, om fältet Period används som beställningsfält och det har värdena 01/01/2010, 02/01/2010, 03/01/2010 och du vill få LimitingValue(DateTime(2010) , 1, 15)), då erhålls en post med datum 02/01 2010.
  • Slutet. Indikerar till vilken post fragmentet ska fortsätta, i vilken det aggregerade uttrycket ska beräknas. En sträng som innehåller en av:
    • "Först"
    • "Sista"
    • "Tidigare"
    • "Nästa"
    • "Nuvarande"
    • "BoundaryValue".
  • Sortering. En sträng som listar uttrycken, separerade med kommatecken, i vilken riktning sekvensen ska ordnas. Om det inte anges, utförs beställningen på samma sätt som för den gruppering för vilken uttrycket utvärderas. Efter varje uttryck kan du ange nyckelordet Stigande, för ordning i stigande ordning, Fallande, för ordning i fallande ordning, Autoordning, för ordning av referensfälten efter de fält som du vill sortera objektet som refereras till. Ordet automatisk ordning kan användas med både ordet stigande och fallande.
  • Hierarkisk sortering. Liknar sortering. Används för att organisera hierarkiska poster. Om det inte anges genererar layoutkompositören beställningen enligt den ordning som anges i parametern Sortera.
  • Bearbetar samma beställningsvärden. En sträng som innehåller en av:
    • "Tillsammans" betyder att en sekvens av ordnade poster används för att fastställa föregående och nästa poster;
    • "Separat" betyder att de föregående och nästa posterna bestäms baserat på värdena för ordningsuttrycken;
    Till exempel, om den resulterande sekvensen är ordnad efter datum:
    1. 1 januari 2001 Ivanov M. 10
    2. 2 januari 2001 Petrov S. 20
    3. 2 januari 2001 Sidorov R. 30
    4. 3 januari 2001 Petrov S. 40
    När du använder bearbetning av identiska värden av ordningen "Separat", kommer den föregående för post 3 att vara post 2, och när du använder "Together" - post 1. Och fragmentet för den aktuella posten för post 2 för "Separat" kommer att vara post 2, och för "Together" - post 2 och 3. Totalt för den aktuella posten för "Separately" blir alltså 20 och för "Together" - 50. När "Together" anges i Start och Slutparametrar, du kan inte ange en offset för positionerna "Första", "Sista", "Föregående", "Nästa". Standardvärdet är "Separat".
Exempel:
Att erhålla förhållandet mellan beloppet för fältet "Sales.AmountTurnover" i en grupperingspost och beloppet för samma fält i hela layouten:
Sum(Sales.SumTurnover) / CalculateExpression("Sum(Sales.SumTurnover)", "Totalt").

Det här exemplet beräknar värdet på den aktuella hierarkin:
Val
När Level() > 0
Sedan EvaluateExpression("Referens", "Hierarki")
Annars Null
Slutet

Anmärkningar:
Funktionen tar hänsyn till urvalet av grupperingar, men tar inte hänsyn till hierarkiska urval. Funktionen kan inte tillämpas på en gruppering i gruppvalet för den grupperingen. När du till exempel väljer nomenklaturgrupperingen kan du inte använda uttrycket CalculateExpression("Sum(SumOmsättning)", "TotalTotal") > 1000 . Men ett sådant uttryck kan användas i hierarkiskt urval. Om slutposten föregår startposten anses det inte finnas några poster för beräkning av detaljerade data och beräkning av aggregatfunktioner. Vid beräkning av intervalluttryck för en totalsumma (parametern Gruppering är satt till "Bruttototal"), antas det att det inte finns några poster för beräkning av detaljerade data och beräkning av aggregerade funktioner. När ett uttryck för CalculateExpression-funktionen genereras, ersätter layoutkompositören, om ordningsuttrycket innehåller fält som inte kan användas i gruppering, funktionen CalculateExpression med NULL.

3. Utvärdera uttryck med gruppmatris (EvalExpression med gruppmatris) - funktionen returnerar en array, vars varje element innehåller resultatet av beräkningen av ett uttryck för gruppering efter det angivna fältet.

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

Alternativ :

  • Uttryck(String) - uttrycket som ska utvärderas. Till exempel, "Amount(AmountTurnover)";
  • FieldExpressionsGroups
  • Urval av poster
  • Urval av grupper- urval tillämpas på gruppposter. Till exempel: "Amount(AmountTurnover) > &Parameter1".
Exempel:
Maximum(CalculateExpressionWithGroupArray("Amount(AmountOmsättning)", "Motpart"));


När layoutbyggaren genererar uttryck för visning av ett anpassat fält vars uttryck endast innehåller funktionen CalculateArrayWithGroup, genererar visningsuttrycket så att data som visas av vyerna och data ordnas.
Till exempel, för ett anpassat fält med uttrycket:
CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Motpart")
Layoutbyggaren kommer att generera följande uttryck för utdata:
ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover)), Amount(DataSet.AmountTurnover)", "DataSet.Account"), "2")))

4. EvalExpressionWithGroupValueTable - funktionen returnerar en tabell med värden, vars varje element innehåller resultatet av beräkningen av ett uttryck för gruppering efter det angivna fältet.

Syntax:
CalculateExpressionWithGroupValueTable (Expression, GroupFieldExpressions, SelectRecords, SelectGroups)

Alternativ :

  • Uttryck(String) - uttrycket som ska utvärderas. En rad kan innehålla flera uttryck separerade med kommatecken. Efter varje uttryck kan det finnas ett valfritt nyckelord AS och namnet på värdetabellkolumnen. Till exempel: "Motpart, Belopp (Amount Omsättning) Som försäljningsvolym."
  • FieldExpressionsGroups- uttryck för gruppering av fält, separerade med kommatecken. Till exempel "Motpart, Part";
  • Urval av poster- ett uttryck som tillämpas på detaljposter. Till exempel "Ta bort flagga = False." Om den här parametern använder en aggregerad funktion kommer ett fel att uppstå när data komponeras;
  • Urval av grupper- urval tillämpas på gruppposter. Till exempel: "Amount(AmountTurnover) > &Parameter1".
Exempel:
CalculateExpressionWithGroupValueTable("Konto AS Motpart, Belopp(AmountOmsättning) AS SalesVolume", "Konto")

Resultatet av denna funktion blir en värdetabell med kolumnerna Motpart och Försäljningsvolym, som kommer att innehålla motparter med sina försäljningsvolymer.
Layoutbyggaren, när den genererar en layout, konverterar funktionsparametrar till termer av datalayoutlayoutfält. Till exempel kommer fältet Konto att konverteras till DataSet.Account.
Till exempel ett anpassat fält med uttrycket:
CalculateExpressionWithGroupValueTable("Konto, Belopp(AmountOmsättning)", "Konto")
Layoutbyggaren kommer att generera följande uttryck för utdata:
ConnectRows(GetPart(Order(CalculateExpressionWithGroupingValueTable("DataSet.Account, DataSet.AccountRepresentation, Sum(DataSet.AmountTurnover), View(DataSet.AmountTurnover), DataSet.OrderingField", "DataMängd.Konto"), "3". ), "2, 4"))

5. Nivå - funktionen är utformad för att erhålla den aktuella inspelningsnivån.

Syntax:
Nivå()

Exempel:
Nivå()

6. Sekvensnummer - få nästa serienummer.

Syntax:
NumberByOrder()

Exempel:
NumberByOrder()

7. SequenceNumberInGrouping - returnerar nästa sekvensnummer i den aktuella grupperingen.

Exempel:
NumberByOrderInGroup()

8. Formatera - få en formaterad sträng av det godkända värdet.

Syntax:
Format(Värde, FormatString)

Alternativ :

  • Menande- uttrycket som behöver formateras;
  • FormatString- formatsträngen är inställd i enlighet med 1C:Enterprise-formatsträngen.
Exempel:
Format(Faktura för förbrukningsmaterial. Dokumentbelopp, "NPV=2")

9. BeginOfPeriod

Syntax:
StartPeriod(Datum, PeriodType)

Alternativ :

  • datum(Datum för). Angivet datum;
  • Typ av period
Exempel:
StartPeriod(DatumTime(2002, 10, 12, 10, 15, 34), "Månad")
Resultat: 2002-10-01 0:00:00

10. EndOfPeriod - Funktionen är utformad för att välja ett specifikt datum från ett givet datum.

Syntax:
EndPeriod(Datum, PeriodType)

Alternativ :

  • datum(Datum för). Angivet datum;
  • Typ av period(Linje). Innehåller ett av följande värden: Minute; Timme; Dag; En vecka; Månad; Fjärdedel; År; Årtionde; Halvår.
Exempel:
EndPeriod(DatumTime(2002, 10, 12, 10, 15, 34), "Vecka")
Resultat: 2002-10-13 23:59:59

11. AddKDate (DateAdd) - Funktionen är utformad för att lägga till ett visst värde till datumet.

Syntax:
AddToDate(Uttryck, IncrementType, Magnitude)

Alternativ :

  • Uttryck(Datum för). Originaldatum;
  • TypFörstoring(Linje). Innehåller ett av följande värden: Minute; Timme; Dag; En vecka; Månad; Fjärdedel; År; Årtionde; Halvår.
  • Magnitud(Siffra). Med hur mycket datumet behöver ökas ignoreras bråkdelen.
Exempel:
AddToDate(DatumTime(2002, 10, 12, 10, 15, 34), "Månad", 1)
Resultat: 2002-11-12 10:15:34

12. DateDifference - Funktionen är designad för att få skillnaden mellan två datum.

Syntax:
DifferenceDate(Expression1, Expression2, DifferenceType)

Alternativ :

  • Uttryck 1(Datum för). Subtraherat datum;
  • Uttryck 2(Datum för). Originaldatum;
  • TypDifference(Linje). Innehåller ett av värdena: Second; Minut; Timme; Dag; Månad; Fjärdedel; År.
Exempel:
DATEDIFFERENCE(DATETIME(2002; 10; 12; 10; 15; 34),
DATETIME(2002, 10, 14, 9, 18, 06), "DAG")
Resultat: 2

13. Delsträng - den här funktionen är utformad för att extrahera en delsträng från en sträng.

Syntax:
Delsträng (sträng, position, längd)

Alternativ :

  • Linje(Linje). Strängen från vilken delsträngen extraheras;
  • Placera(Siffra). Positionen för tecknet från vilken delsträngen som ska extraheras från strängen börjar;
  • Längd(Siffra). Längden på den tilldelade delsträngen.
Exempel:
SUBSTRING(Konton.Adress, 1, 4)

14. StringLength - Funktionen är utformad för att bestämma längden på en sträng.

Syntax:
StringLength(String)

Parameter:

  • Linje(Linje). En sträng vars längd anges.
Exempel:
Rad(motparter.adress)

15. År- den här funktionen är utformad för att extrahera året från ett datumtypvärde.

Syntax:
År (datum)

Parameter:

  • datum(Datum för). Det datum då året bestäms.
Exempel:
ÅR(Utgift.Datum)

16. Kvartal - den här funktionen är utformad för att extrahera kvartalsnumret från ett datumtypvärde. Kvartalsnumret varierar normalt från 1 till 4.

Syntax:
Kvartal (datum)

Parameter:

  • datum(Datum för). Det datum då kvartalet bestäms
Exempel:
KVARTAL(Utgift.Datum)

17. Månad - den här funktionen är utformad för att extrahera månadsnumret från ett datumtypvärde. Månadsnumret varierar normalt från 1 till 12.

Syntax:
Månad (datum)

Parameter:

  • datum(Datum för). Det datum då månaden bestäms.
Exempel:
MONTH(Expense.Date)

18. Årets dag (DayOfYear) - den här funktionen är utformad för att hämta dagen på året från ett datumtypvärde. Årets dag varierar normalt från 1 till 365 (366).

Syntax:
Årets dag (datum)

Parameter:

  • datum(Datum för). Det datum då dagen på året bestäms.
Exempel:
DAGÅR(ExpenseAccount.Date)

19. Dag- denna funktion är utformad för att erhålla dagen i månaden från ett datumtypvärde. Dagen i månaden varierar normalt från 1 till 31.

Syntax:
Dag datum)

Parameter:

  • datum(Datum för). Det datum då dagen i månaden bestäms.
Exempel:
DAG(Utgift.Datum)

20. Vecka - den här funktionen är utformad för att erhålla årets veckonummer från ett datumtypvärde. Årets veckor räknas från 1.

Syntax:
Vecka (datum)

Parameter:

  • datum(Datum för). Det datum då veckonummer fastställs.
Exempel:
VECKA(Utgift.Datum)

21. Veckodag - den här funktionen är utformad för att hämta veckodagen från ett datumtypvärde. Den normala veckodagen sträcker sig från 1 (måndag) till 7 (söndag).

Syntax:
Veckodag (datum)

Parameter:

  • datum(Datum för). Det datum då veckodagen bestäms.
Exempel:
VECKODAG (Utgift.Datum)

22. Timme- den här funktionen är utformad för att erhålla timme på dygnet från ett datumtypvärde. Klockan på dygnet sträcker sig från 0 till 23.

Syntax:
timme (datum)

Parameter:

  • datum(Datum för). Det datum då dygnets timme bestäms.
Exempel:
HOUR(Utgift.Datum)

23. Minut - denna funktion är utformad för att erhålla timmens minut från ett datumtypvärde. Timmens minut varierar från 0 till 59.

Syntax:
Minute (datum)

Parameter:

  • datum(Datum för). Det datum då timmens minut bestäms.
Exempel:
MINUTE(Utgift.Datum)

24. För det andra - den här funktionen är utformad för att erhålla sekunden i en minut från ett datumtypvärde. Den andra i en minut varierar från 0 till 59.

Syntax:
Andra (datum)

Parameter:

  • datum(Datum för). Det datum då sekunderna i minuten bestäms.
Exempel:
SEKUND(Utgift.Datum)

25. Cast - den här funktionen är utformad för att extrahera en typ från ett uttryck som kan innehålla en sammansatt typ. Om uttrycket innehåller en annan typ än den önskade typen, kommer NULL att returneras.

Syntax:
Express(Uttryck, Typindikation)

Alternativ :

  • Uttryck- det uttryck som ska konverteras.
  • Typindikation(Linje). Innehåller en typsträng. Till exempel "Nummer", "Sträng" osv. Förutom primitiva typer kan denna rad innehålla tabellens namn. I detta fall kommer ett försök att göras att uttrycka en hänvisning till den angivna tabellen.
Exempel:
Express(Data.Props1, "Number(10,3)")

26. IsNull (IsNull) - denna funktion returnerar värdet på den andra parametern om värdet på den första parametern är NULL. Annars kommer värdet på den första parametern att returneras.

Syntax:
IsNull(Uttryck1, Uttryck2)

Alternativ :

  • Uttryck 1- värde som ska kontrolleras;
  • Uttryck 2- returnera värde om Expression1 är NULL.
Exempel:
JaNULL(Belopp(Försäljning.Belopp Omsättning), 0)

27.ACos- beräknar bågcosinus i radianer.

Syntax:
ACos (uttryck)

Parameter:

  • Uttryck(Siffra). Cosinusvärdet (i intervallet -1 ... 1) med vilket vinkeln bestäms.
28.ASin- beräknar bågen i radianer.

Syntax:
ASin (uttryck)

Parameter:

  • Uttryck(Siffra). Sinusvärdet (i området -1 ... 1) som vinkeln bestäms av.
29.ATan- beräknar arctangensen i radianer.

Syntax:
ATan(Uttryck)

Parameter:

  • Uttryck(Siffra). Tangentvärdet med vilket vinkeln bestäms.
30.Cos- beräknar cosinus.

Syntax:
Cos (uttryck)

Parameter:

  • Uttryck
31. Exp- höja siffran e till en potens.

Syntax:
Exp(Expression)

Parameter:

  • Uttryck(Siffra). Gradens betydelse.
32. Logga- beräknar den naturliga logaritmen.

Syntax:
Logg (uttryck)

Parameter:

  • Uttryck
33. Logg10- beräknar logaritmen för X till bas 10.

Syntax:
Log10(Uttryck)

Parameter:

  • Uttryck(Siffra). Det ursprungliga talet är större än 0.
34. Pow- exponentiering.

Syntax:
Pow (bas, indikator)

Alternativ :

  • Bas(Siffra). Grunden för exponentieringens funktion.
  • Index(Siffra). Exponent.
35. Synd- beräknar sinus.

Syntax:
Synd (uttryck)

Parameter:

  • Uttryck(Siffra). Anges i radianer.
36. Sqrt- beräknar kvadratroten.

Syntax:
Sqrt(Uttryck)

Parameter:

  • Uttryck(Siffra). Icke-negativt tal.
37. Tan- beräknar tangenten.

Syntax:
Tan (uttryck)

Parameter:

  • Uttryck(Siffra). Sinusvärdet med vilket vinkeln bestäms.
38. Rund- avrundar det ursprungliga numret till önskat bitdjup. Avrundningsläget är standard (1,5 som 2).

Syntax:
Env(Uttryck, Bitdjup)

Alternativ :

  • Uttryck(Siffra). Originalnummer;
  • Lite djup(Siffra). Antalet decimaler att avrunda till.
39. Int- skär av bråkdelen av ett tal.

Syntax:
Objekt (uttryck)

Parameter:

  • Uttryck(Siffra). Ett bråktal.
40. Funktioner för gemensamma moduler

Ett datasammansättningsmotoruttryck kan innehålla anrop till funktioner för globala gemensamma konfigurationsmoduler. Ingen ytterligare syntax krävs för att anropa sådana funktioner.

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

I det här exemplet kommer funktionen "AbbreviatedName" att anropas från den allmänna konfigurationsmodulen.
Observera att användningen av gemensamma modulfunktioner endast är tillåten om lämplig datasammansättningsprocessorparameter är specificerad.
Dessutom kan funktioner för vanliga moduler inte användas i anpassade fältuttryck.

41. Harm - denna funktion returnerar en strängrepresentation av det godkända värdet av en icke-primitiv typ. För värden av en primitiv typ, returnerar själva värdet.

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

Exempel:
Presentation (motpart)

42. Sträng - den här funktionen omvandlar det skickade värdet till en sträng.

Om en array eller en värdetabell används som en parameter, returnerar funktionen en sträng som innehåller en strängrepresentation av alla element i arrayen, åtskilda av tecknen "; ". Om något element har en tom strängrepresentation, då strängen "<Пустое значение>".

Exempel:
Rad (försäljningsdatum)

43. ValueIsFilled

För NULL-värden returnerar Undefined alltid False.
För booleska värden returnerar den alltid True.
För andra typer, returnerar True om värdet skiljer sig från standardvärdet för den givna typen.

Exempel:
ValueFilled(Leveransdatum)

44. LevelInGroup - den här funktionen hämtar den aktuella inspelningsnivån i förhållande till grupperingen.

Kan användas för att erhålla kapslingsnivån för en post i en hierarkisk gruppering.

Exempel:
LevelInGroup()

45. ValueType

Syntax:
ValueType(Expression)

Parameter:

  • Uttryck(Linje). Strängvärdestyp.
Returnerar ett värde av typen Type som innehåller värdetypen för funktionsparametern.

Korrekt användning av ett datakompositionsschema (DCS) låter dig:

  • avsevärt minska den tid som krävs för att utveckla en rapport;
  • eliminera behovet av att skapa en hanterad formulärhanterare;
  • få ett vackert resultat med möjlighet till ytterligare anpassning av användaren.

Men inte alla utvecklare får ut det mesta av schemats möjligheter, eftersom inte alla dess inställningar är uppenbara och intuitiva. I synnerhet vet många att det i 1C SKD finns beräknade fält, men de förstår inte helt omfattningen av deras användning och metoder för att arbeta med dem.

Vad är ett beräknat fält

I de flesta fall är datakällan i layoutdiagrammet en fråga. I princip kan du redan inom själva frågan använda olika formler, konstruktioner och uttryck. En naturlig fråga uppstår: varför behöver vi dubbla funktioner?

Faktum är att åtkomstkontrollsystemet är något mer än att bara visa resultatet av en fråga, och detta är tydligt synligt från formuläret för att skapa diagram (fig. 1).

Beräknade fält låter dig utföra vissa åtgärder med den genererade datamängden:

  • Mata ut en uppsättning data som tas emot av en begäran till en specifik cell, kombinera flera rader till en;
  • Få tillgång till exportfunktionerna för den allmänna modulen;
  • Kör de olika uttryck som finns tillgängliga för layoutspråket och använd de speciella EvaluateExpression-funktionerna.

Låt oss gå igenom den här listan.

Matris av värden i en cell

Låt oss simulera en situation där det är nödvändigt att ta emot alla kvittodokumentnummer för en motpart i en separat cell:


Därför har vi skapat ytterligare ett beräkningsfält i vårt schema;


Som du kan se från exemplet ovan finns det inga svårigheter att lägga till och bearbeta beräknade fält. Vi använde två funktioner: Array() och ConnectRows().

Några ord om det senare. Förutom den första parametern som anger identifieraren för arrayen, värden eller värden, kan ytterligare två ställas in i den:

  1. Element Separator – indikerar vilket tecken som kommer att separera ett matriselement eller en rad i en värdetabell från en annan (i vårt fall utelämnade vi den här parametern och en radbrytning tilldelades som standard);
  2. Kolumnseparator – ett tecken som används för att separera kolumner i en värdetabell (semikolon används som standard).

Åtkomst till exportfunktionerna för en gemensam modul

Funktioner i en gemensam modul kan fungera som en datakälla för att fylla i ett beräknat fält.

Några viktiga punkter:

  • Funktionen måste kunna exporteras;
  • Om en funktion finns i en gemensam modul med attributet "Global" anropas den direkt med namnet, annars måste funktionen anropas enligt schemat "Delat modulnamn". "Namn på funktionen som ska anropas."

Som exempel på användning kommer vi att ta samma begäran om kvittodokument och visa den i en separat kolumn. Vi kommer inte att beskriva själva förfrågan, låt oss gå direkt till de beräknade fälten:


Således ser vi att nästan vilken dataprocessor som helst kan initieras från åtkomstkontrollsystemet, vilket avsevärt utökar möjligheterna att använda schemat.

Layout språkuttryck

Ganska ofta i en utvecklares arbete uppstår en situation när det är nödvändigt att visa resultatet av divisionen i ACS-fältet:

  1. Beräkna den genomsnittliga kostnaden för objektet;
  2. Alla typer av intresse;
  3. Beräkningar av medelinkomster m.m.

För att undvika problem är det i dessa fall lämpligt att ange ett test för division med 0 i det beräknade fältet.

Detta kan göras med hjälp av konstruktionen "Välj när .... Sedan ... Annars ... Slut".

I slutet några ord om den ganska nya funktionen CalculateExpression(). Med dess hjälp, i synnerhet, kan du beräkna avvikelser i kostnad mellan nuvarande och tidigare rader, kumulativ balans, etc.

Låt oss säga att du kan få dokumentbeloppet från föregående rad i vår begäran genom att ange värdet Beräkna uttryck ("Dokumentbelopp", "Tidigare belopp") i fältet "Uttryck".