Beräknat fält i SKD 1s 8.2. SKD. Visar tabellinformation i en cell. Vad är ett beräknat fält

1. Beräkna (Eval)- är avsedd att utvärdera ett uttryck inom ramen för någon gruppering. Denna funktion används för kompatibilitet med tidigare versioner plattformar. 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 gruppnamnet används tom rad, kommer beräkningen att utföras inom ramen för 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 gruppen med samma namn.
    Till exempel:
    Sum(Sales.SumTurnover) / Calculate("Sum(Försäljning.SumOmsättning)", "Totalt").
    I i detta exempel resultatet blir förhållandet mellan beloppet för fältet "Sales.SumTurnover" 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:
BeräknaUttryck(Uttryck, Gruppering, Beräkningstyp, Start, Slut, Sortera, 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 med vilken post fragmentet som ska beräknas i ska börja samla funktioner uttryck och från vilken post för att erhålla 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 sista rekordet går utöver grupperingen anses det saknas register. 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 specificera nyckelord Asc, för ordning i stigande ordning, fallande, för ordning i fallande ordning, Autoordning, för ordning av referensfält 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 grupperingar- urval tillämpas på gruppposter. Till exempel: "Amount(AmountTurnover) > &Parameter1".
Exempel:
Maximum(CalculateExpressionWithGroupArray("Amount(AmountOmsättning)", "Motpart"));


När layoutbyggaren genererar uttryck för att visa ett anpassat fält vars uttryck endast innehåller funktionen CalculateArrayWithGroup, genererar utmatningsuttrycket på ett sådant sätt att visningsdata 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. Beräkna uttryck med GroupValueTable (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 (Uttryck, GroupField Expressions, Records Selection, Group Selection)

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 (Belopp 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 "Delete Flag = False." Om i denna parameter en aggregerad funktion används, ett fel kommer att uppstå när data komponeras;
  • Urval av grupperingar- urval tillämpas på gruppposter. Till exempel: "Amount(AmountTurnover) > &Parameter1".
Exempel:
Beräkna uttryck med gruppering av värdetabell ("Konto AS Motpart, Belopp (Belopp Omsättning) AS Försäljningsvolym", "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.
Layoutsammansättaren, när den genererar en layout, konverterar funktionsparametrar till termer av datasammansättningslayoutfä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", "DataSet".Account"), "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 ställs in i enlighet med formatsträng 1C:Företag.
Exempel:
Format(Invoices.Doc Amount, "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 - denna funktionär avsett 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 bestäms.
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(Utgift.Datum)

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 timmen på dygnet från ett datumtypvärde. Klockan på dygnet varierar 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 sträcker sig 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(Expression, TypeIndication)

Alternativ :

  • Uttryck- uttryck som ska konverteras;
  • Typindikation(Linje). Innehåller en typsträng. Till exempel "Nummer", "Sträng" osv. Förutom primitiva typer given rad kan innehålla tabellnamnet. 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 för den andra parametern om värdet för 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:
Sin (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 av denna typ.

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.

Logga in på sidan som student

Logga in som elev för att få tillgång till skolmaterial

Datakompositionssystem 1C 8.3 för nybörjare: räkna resultaten (resurser)

Syftet med denna lektion kommer att vara:

  • Skriv en rapport som visar en lista över produkter (matkatalog), deras kaloriinnehåll och smak.
  • Gruppera produkter efter färg.
  • Lär dig om att sammanfatta (resurser) och beräknade fält.

Skapa en ny rapport

Som i tidigare lektioner öppnar vi databasen " Deli"i konfiguratorn och skapa en ny rapport via menyn" Fil"->"Ny...":

Dokumenttyp - extern rapport:

I rapportinställningsformuläret skriver du namnet " Lektion 3"och tryck på knappen" Öppna diagram för datasammansättning":

Lämna standardschemanamnet och klicka på " Redo":

Lägger till en begäran via konstruktorn

På fliken " Datauppsättning" klick grön plustecken och välj " Lägg till datauppsättning - Fråga":

Istället för att skriva förfrågningstexten manuellt kör vi den igen frågekonstruktör:

På "fliken" Tabeller"dra bordet" Mat" från den första kolumnen till den andra:

Välj från tabellen " Mat"fält som vi kommer att begära. För att göra detta, dra och släpp fälten" namn", "Smak", "Färg"och" Kaloriinnehåll" från den andra kolumnen till den tredje:

Det blev så här:

Tryck på knappen " OK" - förfrågningstexten genererades automatiskt:

Skapa rapportpresentationsinställningar

Gå till fliken " inställningar" och klicka på trollspö, att ringa inställningsdesigner:

Välj rapporttyp " Lista..." och tryck på knappen " Ytterligare":

Dra från den vänstra kolumnen till höger fälten som kommer att visas i listan och klicka på " Ytterligare":

Dra från vänster kolumn till höger fält " Färg" - det kommer att hända gruppering rader i rapporten. Klick " OK":

Och här är resultatet av designerns arbete. Hierarki i vår rapport:

  • rapporten som helhet
  • gruppering "Färg"
  • detaljerade poster - rader med matnamn

Spara rapporten (knapp diskett) Och utan att stänga Vi kommer omedelbart att öppna konfiguratorn i användarläge. Det blev så här:

Ändra ordningen på kolumner

Men låt oss låt oss ändra ordningen kolumner (upp- och nedpilar) så att det ser ut som bilden nedan:

Låt oss spara rapporten och öppna den igen i användarläge:

Bra, det är mycket bättre.

Låt oss summera kaloriinnehållet

Det skulle vara trevligt att sammanfatta kaloriinnehållet i livsmedel efter grupp. För att se summan av kaloriinnehållet i alla produkter, säg vit eller gul. Eller ta reda på det totala kaloriinnehållet för alla produkter i databasen.

För detta ändamål finns det en mekanism för att beräkna resurser.

Gå till fliken " Resurser"och dra fältet" Kaloriinnehåll"(vi ska sammanfatta det) från den vänstra kolumnen till höger.

I det här fallet, i fältet, välj uttrycket från rullgardinsmenyn " Mängd (kalori)", eftersom summan kommer att vara summan av alla element som ingår i summan:

Vi sparar och genererar en rapport:

Vi har nu resultat för var och en av grupperna och för rapporten som helhet.

Låt oss summera det (genomsnittet) i termer av kalorier

Låt oss nu få det att visas i en annan kolumn genomsnitt kaloriinnehåll i produkter efter grupper och i rapporten som helhet.

Du kan inte röra den befintliga kolumnen "Kalori" - summan visas redan i den, så låt oss skapa ett annat fält, som kommer att vara en exakt kopia av "Calorie"-fältet.

För att skapa ett sådant "virtuellt" fält kommer vi att använda mekanismen beräknade fält.

Gå till fliken " Beräknade fält" och tryck grön plustecken:

I en kolumn" Datasökväg"vi skriver namnet på det nya fältet ( sömlöst, utan mellanslag). Låt det heta " Genomsnittligt kaloriinnehåll" och i kolumnen " Uttryck"vi skriver namnet på ett befintligt fält utifrån vilket det nya fältet kommer att beräknas. Vi skriver där " Kaloriinnehåll". Kolumn" Rubrik" kommer att fyllas i automatiskt.

Vi har lagt till ett nytt fält (" Genomsnittligt kaloriinnehåll"), men det kommer inte att visas i rapporten av sig självt - du måste antingen ringa igen inställningsdesigner("trollspö") eller lägg till det här fältet manuellt.

Vi gör det andra sätt. För att göra detta, gå till fliken " inställningar", Välj " Rapportera"(Vi vill trots allt lägga till fältet som en helhet i rapporten), välj fliken längst ner" Valda fält"och dra fältet" Genomsnittligt kaloriinnehåll"från vänster kolumn till höger:

Det blev så här:

Vi sparar och genererar en rapport:

Fältet har dykt upp och vi ser att dess värden är värdena i "Calorie"-fältet. Bra!

För att göra detta kommer vi igen att använda den mekanism som redan är bekant för oss Resurser(sammanfattande). Gå till fliken " Resurser"och dra fältet" Genomsnittligt kaloriinnehåll"från vänster kolumn till höger:

Dessutom, i kolumnen " Uttryck"välja" Average(AverageCalorie)":

Vi sparar och genererar en rapport:

Vi ser att för grupperna, det vill säga för varje färg, och för rapporten som helhet, beräknades medelvärdet helt korrekt. Men de är närvarande extra poster för enskilda produkter (inte grupper) som jag vill ta bort från rapporten.

Vet du varför de dök upp (värden inte per grupp)? För när vi lade till fältet " Genomsnittligt kaloriinnehåll"i rapportinställningarna, i det andra steget valde vi hela rapporten och detta nya fält hamnade i elementet " Detaljerad uppgifter".

Låt oss åtgärda felet. För att göra detta, gå tillbaka till fliken " inställningar", Välj " Detaljerade poster" först från ovan (steg 2) och sedan " Detaljerade poster"underifrån (steg 3), gå till bokmärket" Vald fält" och vi kommer att se elementet i dess högra kolumn " Bil".

Element " Bil" - detta är inte ett fält. Det här är flera fält som faller här automatiskt baserat på inställningar på högre nivå.

För att se vilka dessa fält är, klicka på elementet " Bil" höger knappen och välj " Bygga ut":

Element " Bil" expanderat till följande fält:

Och här är vårt fält" Genomsnittligt kaloriinnehåll"som kom hit från punkten" Rapportera" när vi släpade dit honom. Bara låt oss ta bort markera rutan bredvid det här fältet för att ta bort dess utdata.

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

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 framgår tydligt av 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 indikerar arrayens identifierare, värden eller värde, kan ytterligare två ställas in i den:

  1. Element Separator - indikerar vilket tecken som kommer att separera ett arrayelement eller en rad i en värdetabell från en annan (i vårt fall utelämnade vi denna parameter 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 namn, 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 begäran; 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".

Till sist några ord om nog ny funktion 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".

God dag kära läsare av vår blogg! Idag vill jag berätta för dig, med hjälp av ett verkligt exempel, hur
använd ACS-funktionerna Array och JoinStrings. I en artikel om

det stod lite om hur man arbetar med
på bokmärket
, har också redan förklarats som
med hjälp av fliken "Resurser". Idag ska vi återigen uppmärksamma dessa
bokmärken i ljuset av vårt ämne.

Utseende på en exempel 1C-rapport med två ACS-funktioner Array Och ConnectRows Nästa:

Redogörelse för problemet med att använda ACS-funktionerna Array och JoinStrings

Uppgift: Du måste infoga alla försäljningsnummer för en produkt i en cell.

Något som: nomenklatur | kvantitet | 001, 002 osv. |

Vi kommer att använda en begäran till ackumuleringsregistret "Realization of TMZ".

VÄLJA
Implementering av TMZ. Registrator. Siffra,
Implementering av TMZ. Nomenklatur,
Implementering av TMZ. Registrator,
Implementering av TMZ. Kvantitet Omsättning
FRÅN
Ackumuleringsregister. Implementering av TMZ. Revolutioner
(, , Registrar, ) HUR MAN implementerar TMZ

Ackumuleringsregistret "Realization of TMZ" finns både i Accounting-konfigurationen och i Trade Enterprise Management (UTP)-konfigurationen. Ta reda på hur du konfigurerar USP i katalogelementet "Nomenklatur". Därför kan du efter nedladdning köra den här rapporten i båda konfigurationerna för att kontrollera dess funktionalitet.

Implementering av uppgiften med funktionerna SKD Array och ConnectRows


Samma steg, men med några tillägg, användes för att skapa
.

Beskrivning av funktionen JoinStrings

JoinStrings

Används för att sammanfoga strängar till en sträng.

Syntax:

ConnectRows(Value, ItemSeparator, ColumnSeparator)

Alternativ:

  1. Menande— uttryck som behöver kombineras till en rad.
    Om det är en array kommer elementen i arrayen att kombineras till en sträng.
    Om det är en värdetabell kommer alla kolumner och rader i tabellen att kombineras till en rad;
  2. Elementseparator- en sträng som innehåller texten som ska användas som
    separator mellan matriselement och värdetabellsrader. Standard – radmatningstecken;
  3. Kolumnavskiljare-en sträng som innehåller texten som ska användas som avgränsare
    mellan kolumnerna i värdetabellen. Standard ";".

I ljuset av den kommande versionen 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 gruppen 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 placerar ett uttryck i layouten som beräknas med hjälp av funktionen när den genererar en datasammansättningslayout när resursfältet matas ut genom vilket gruppering utförs till layouten. CalculateExpression() , som anger 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. Anger 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 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(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 du 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("Sum(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 tabell med värden, vars 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.