1s SKD beräknade fält exempel. Exempel på användning av SKD-funktionen - beräkna uttryck

1s SKD beräknade fält exempel.  Exempel på användning av SKD-funktionen - beräkna uttryck
1s SKD beräknade fält exempel. Exempel på användning av SKD-funktionen - beräkna uttryck
  • 1C-Bitrix
  • Ett av de viktigaste områdena inom affärsprogramvara är rapportering. Ett företags öde kan bero (och inte i bildlig mening!) på hur lätt det är att anpassa en befintlig rapport till verksamhetens (och lagstiftningens) förändrade behov eller skapa en ny, vare sig det är en rapport för skatteverket. eller ett diagram över efterfrågan på varors beroende av säsong och andra faktorer. Ett kraftfullt och flexibelt rapporteringssystem som gör det enkelt att extrahera nödvändig data från systemet, presentera den i en begriplig form, så att slutanvändaren kan konfigurera om en standardrapport för att se data i ett nytt ljus - detta är det idealiska för varje affärssystem bör sträva efter.

    I 1C:Enterprise-plattformen är en mekanism som kallas "Data Composition System" (förkortat DCS) ansvarig för att generera rapporter. I den här artikeln kommer vi att försöka ge kort beskrivning idéer och arkitektur för ACS-mekanismen och dess kapacitet.


    ACS är en mekanism baserad på en deklarativ beskrivning av rapporter. Passeringssystemet är utformat för att generera rapporter och visa information med en komplex struktur. Förresten, förutom att utveckla rapporter, används ACS-mekanismen också i 1C:Enterprise i en dynamisk lista, ett verktyg för att visa listinformation med rik funktionalitet (visa platta och hierarkiska listor, villkorlig design av rader, grupperingar, etc. ).

    Lite historia

    I den allra första versionen av 1C:Enterprise 8-plattformen, version 8.0, gjordes rapporter så här:
    1. En eller flera frågor skrevs i frågespråket 1C (SQL-liknande språk, mer om det nedan).
    2. Kod skrevs som överförde resultatet av genomförda frågor till kalkylarksdokument eller i ett diagram. Koden kan också göra arbete som inte kunde göras i en fråga - till exempel beräknade den värden med det inbyggda 1C-språket.
    Tillvägagångssättet är enkelt, men inte det mest bekväma - det finns minimala visuella inställningar, allt måste programmeras "hand-to-hand". Och ett av trumfkorten på den tiden för den helt nya plattformen "1C:Enterprise 8" var minimeringen i applikationslösningen av mängden kod som behöver skrivas manuellt, i synnerhet p.g.a. visuell design. Det vore logiskt att följa samma väg i rapporteringsmekanismen. Detta gjordes genom att utveckla en ny mekanism - Data Composition System.

    En av idéerna som låg till grund för passerkontrollsystemet var flexibiliteten och anpassningen av rapporter, vilket var tillgängligt för både utvecklaren och slutanvändaren. Helst skulle jag vilja ge slutanvändaren tillgång till samma uppsättning rapportdesignverktyg som utvecklaren. Det skulle vara logiskt att skapa en enda uppsättning verktyg tillgängliga för alla. Tja, eftersom verktygen kräver slutanvändarens deltagande, betyder det att användningen av programmering i dem bör reduceras till ett minimum (det är bäst att eliminera det helt), och visuella inställningar bör användas maximalt.

    Formulering av problemet

    Uppgiften innan utvecklingsteamet var att skapa ett rapporteringssystem baserat inte på en algoritm (dvs genom att skriva kod), utan på en deklarativ metod för att skapa rapporter. Och vi tror att problemet har lösts framgångsrikt. Enligt vår erfarenhet kan cirka 80 % av den erforderliga rapporteringen implementeras med hjälp av ACS utan en enda kodrad (förutom att skriva formler för beräknade fält), mestadels genom visuella inställningar.
    Utvecklingen av den första versionen av SDS tog cirka 5 personår.

    Två språk

    Det finns två språk som är involverade i att skapa rapporter. Det ena är ett frågespråk som används för att hämta data. Det andra är uttrycksspråket för datasammansättning, avsett för att skriva uttryck som används i olika delar av systemet, till exempel i datasammansättningsinställningar, för att beskriva uttryck för användarfält.

    Frågespråk

    Frågespråket är baserat på SQL och är lätt att lära sig för dem som är kunniga i SQL. Exempelförfrågan:

    Det är lätt att se analoger till sektionsstandarden för SQL-frågor - SELECT, FROM, GROUP BY, ORDER BY.

    Samtidigt innehåller frågespråket ett betydande antal tillägg som syftar till att spegla de specifika finansiella och ekonomiska problemen och minimera ansträngningen som krävs för att utveckla applikationslösningar:

    • Åtkomst till fält med hjälp av en punkt. Om fälten i en tabell är av en referenstyp (de lagrar länkar till objekt i en annan tabell), kan utvecklaren hänvisa till dem i texten i begäran genom ".", och systemet begränsar inte antalet kapslingsnivåer av sådana länkar (till exempel Kundorder. Avtal. Organisation. Telefon).
    • Multidimensionell och flernivåbildning av resultat. Summor och delsummor bildas med hänsyn till gruppering och hierarki, nivåer kan passeras i valfri ordning med summering och korrekt konstruktion av totaler enligt tidsdimensioner säkerställs.
    • Stöd för virtuella tabeller. Virtuella tabeller som tillhandahålls av systemet låter dig få nästan färdiga data för de flesta applikationsuppgifter utan att behöva kompilera komplexa frågor. Således kan en virtuell tabell ge data om produktsaldon efter perioder vid en viss tidpunkt. Vart i virtuella tabeller maximalt utnyttja lagrad information, till exempel tidigare beräknade summor etc.
    • Tillfälliga bord. Frågespråket låter dig använda tillfälliga tabeller i frågor. Med deras hjälp kan du förbättra frågeprestanda, i vissa fall minska antalet blockeringar och göra frågetexten lättare att läsa.
    • Batchförfrågningar. För mer bekvämt arbete Med temporära tabeller stöder frågespråket att arbeta med batchfrågor - sålunda placeras skapandet av en temporär tabell och dess användning i en fråga. En batchbegäran är en sekvens av förfrågningar separerade med semikolon (";"). Förfrågningarna i partiet exekveras en efter en. Resultatet av att exekvera en batchbegäran, beroende på vilken metod som används, blir antingen resultatet som returneras av den sista begäran i partiet, eller en uppsättning resultat från alla frågor i partiet i den sekvens som frågorna i partiet följer .
    • Hämta representationer av referensfält. Varje objekttabell (i vilken en referensbok eller dokument är lagrad) har ett virtuellt fält - "Visa". Detta fält innehåller textrepresentation objekt och underlättar rapportskaparens arbete. Så för ett dokument innehåller detta fält all nyckelinformation - namnet på dokumenttypen, dess nummer och datum (till exempel "Rea 000000003 från 07/06/2017 17:49:14"), vilket sparar utvecklaren från skriva ett beräknat fält.
    • och så vidare.
    Begäran mekanismen ändrar automatiskt begäran med hänsyn till de roller som användaren på vars vägnar begäran exekveras tillhör (dvs användaren kommer bara att se de data som han har rätt att se) och funktionella alternativ (dvs i enlighet med med de som konfigurerats i applikationslösningens funktionalitet).

    Det finns också speciella frågespråktillägg för passersystem. Expansionen utförs med hjälp av speciella syntaktiska instruktioner som finns i tandställning och placeras direkt i förfrågan. Med hjälp av tillägg bestämmer utvecklaren vilka operationer slutanvändaren ska kunna utföra när rapporten anpassas.

    Till exempel:

    • VÄLJA. Denna mening beskriver de fält som användaren kommer att kunna välja för utdata. Efter det här nyckelord Separerade med kommatecken listas alias för fält från huvudfrågevallistan som kommer att vara tillgängliga för konfiguration. Exempel: (VÄLJ artikel, lager)
    • VAR. Fälten där användaren kan tillämpa urval beskrivs. Detta förslag använder tabellfält. Det är inte tillåtet att använda vallistfältalias. Varje del av förbundet kan innehålla sitt eget WHERE-element. Exempel: (WHERE Item.*, Warehouse), (WHERE Document.Date >= &StartDate, Document.Date<= &ДатаКонца}
    • och så vidare.
    Exempel på användning av tillägg:

    Uttrycksspråk för datasammansättning

    Data Composition Expression Language är utformat för att skriva uttryck som används, särskilt för att beskriva anpassade fältuttryck. SKD låter dig definiera anpassade fält i en rapport med antingen dina egna uttryck eller uppsättningar av alternativ med villkor för deras val (analogt med CASE i SQL). Anpassade fält liknar beräknade fält. De kan ställas in både i konfiguratorn och i 1C:Enterprise-läge, men funktioner kan inte användas i anpassade fältuttryck gemensamma moduler. Därför är anpassade fält avsedda för användaren snarare än utvecklaren.

    Exempel:

    Processen att skapa en rapport om passerkontrollsystemet

    När vi skapar en rapport måste vi skapa en layout som definierar hur data ska visas i rapporten. Du kan skapa en layout baserad på ett datalayoutdiagram. Ett datalayoutdiagram beskriver kärnan i den data som tillhandahålls till rapporten (varifrån kan du hämta data och hur du kan styra dess layout). Datasammansättningsschemat är grunden på vilken alla typer av rapporter kan genereras. Datasammansättningsschemat kan innehålla:
    • begära text med instruktioner för datasammansättningssystemet;
    • beskrivning av flera datamängder;
    • detaljerad beskrivning av tillgängliga fält;
    • beskrivning av relationer mellan flera datamängder;
    • beskrivning av datainsamlingsparametrar;
    • beskrivning av fältlayouter och grupperingar;
    • och så vidare.

    Du kan till exempel lägga till en fråga till datasammansättningsschemat som en datamängd och anropa frågekonstruktorn, som gör att du grafiskt kan skapa en fråga med godtycklig komplexitet:

    Resultatet av att starta frågedesignern blir frågetexten (på frågespråket 1C:Enterprise). Denna text kan justeras manuellt vid behov:

    Det kan finnas flera datamängder i ett datalayoutschema, datamängder kan länkas i layouten på vilket sätt som helst, beräknade fält kan läggas till, rapportparametrar kan anges osv. Det är värt att nämna en intressant egenskap hos frågemekanismen i 1C:Enterprise. Frågor översätts slutligen till en SQL-dialekt som är specifik för det DBMS som applikationen direkt arbetar med. I allmänhet försöker vi använda funktionerna hos DBMS-servrar maximalt (vi begränsas av det faktum att vi bara använder de funktioner som samtidigt är tillgängliga i alla DBMS som stöds av 1C:Enterprise-plattformen - MS SQL, Oracle, IBM DB2 , PostgreSQL). På frågenivån i beräknade fält kan vi alltså endast använda de funktioner som är översatta till SQL.

    Men på nivån för datasammansättningsschemat kan vi redan lägga till anpassade fält och använda funktioner i dem i det inbyggda 1C-utvecklingsspråket (inklusive de skrivna av oss), vilket avsevärt utökar rapporternas möjligheter. Tekniskt sett ser det ut så här - allt som kan översättas till SQL översätts till SQL, frågan exekveras på DBMS-nivå, frågeresultaten placeras i minnet på 1C-applikationsservern och SKD:n beräknar värdena för varje post av beräknade fält vars formler är skrivna på 1C-språket.


    Lägga till anpassade fält

    Du kan lägga till ett godtyckligt antal tabeller och diagram till rapporten:


    Rapportdesigner


    Körtidsrapport

    Med SKD kan användaren lägga till komplexa val till rapporten (som kommer att läggas till förfrågan på rätt ställen), villkorlig design (så att de visade fälten kan formateras annorlunda - med typsnitt, färg etc., beroende på deras värden ) och mycket mer. .

    Processen att konstruera och generera en rapport kan kort beskrivas enligt följande:

    • Utvecklaren i designtid med hjälp av en designer (eller i runtime med kod) bestämmer datalayoutschemat:
      • Text till förfrågan/förfrågningar
      • Beskrivning av beräknade fält
      • Relationer mellan förfrågningar (om det finns flera av dem)
      • Rapportalternativ
      • Standardinställningar
      • Etc.
    • Ovanstående inställningar sparas i layouten
    • Användaren öppnar rapporten
      • Gör eventuellt ytterligare inställningar (till exempel ändrar parametervärden)
      • Klicka på knappen "Generera".
    • Användarinställningar tillämpas på datasammansättningsschemat som definierats av utvecklaren.
    • En mellanliggande layout för datalayout bildas, som innehåller instruktioner om varifrån data ska tas emot. Särskilt de frågor som anges i layouten justeras. Således tas fält som inte används i rapporten bort från begäran (detta görs för att minimera mängden mottagen data). Alla fält som deltar i beräknade fältformler läggs till i frågan.
    • Datakompositionsprocessorn kommer in i bilden. Layoutprocessorn kör frågor, länkar datamängder, beräknar värden för beräknade fält och resurser och utför gruppering. Med ett ord, den gör alla beräkningar som inte utfördes på DBMS-nivå.
    • Datautgångsprocessorn startar en begäran om exekvering och visar mottagna data i ett kalkylbladsdokument, diagram, etc.


    Processen att generera en rapport med hjälp av ACS-mekanismen

    Vi försöker minimera mängden rapportdata som överförs från servern till klientapplikationen. När vi visar data i ett kalkylarksdokument, när vi öppnar ett kalkylarksdokument, överför vi från servern endast de rader som användaren ser i början av dokumentet. När användaren rör sig längs dokumentets linjer, laddas den saknade informationen ner från servern till klienten.

    Anpassade inställningar

    Alla ACS-verktyg är tillgängliga för både utvecklaren och slutanvändaren. Men praxis har visat att slutanvändaren ofta skräms av överflöd av verktygsmöjligheter. Dessutom, i de flesta fall, behöver slutanvändaren inte all kraft med inställningar - det räcker för honom att ha snabb tillgång till att ställa in en eller två rapportparametrar (till exempel period och motpart). Med utgångspunkt från en viss version av plattformen har rapportutvecklaren möjlighet att markera vilka rapportinställningar som är tillgängliga för användaren. Detta görs med hjälp av kryssrutan "Inkludera i användarinställningar". Dessutom har rapportinställningarna nu en "Visningsläge"-flagga, som har ett av tre värden:
    • Snabb åtkomst. Inställningen kommer att visas direkt överst i rapportfönstret.
    • Vanlig. Inställningen kommer att vara tillgänglig via knappen "Inställningar".
    • Inte tillgänglig. Inställningen kommer inte att vara tillgänglig för slutanvändaren.


    Ställa in visningsläge i designtid


    Visa inställningen i snabbåtkomstläge under körning (under knappen Generera)

    Utvecklingsplaner

    Ett av våra prioriterade områden i utvecklingen av passersystem är att förenkla användarinställningar. Vår erfarenhet visar att för vissa slutanvändare är arbetet med användarinställningar fortfarande en stor uppgift. Vi tar hänsyn till detta och arbetar i denna riktning. Följaktligen kommer det också att bli lättare för utvecklare att arbeta med passersystem, eftersom Vi vill som tidigare tillhandahålla ett enda verktyg för att sätta upp rapporter för både utvecklaren och slutanvändaren.

    I denna korta notering vill jag visa hur du kan sammanfatta värden på olika grupperingsnivåer i en rapport med hjälp av ett datasammansättningssystem.
    Som visas i bilden, endast på grupperingsnivån "Artikelgrupper", beräknas resursen "Beställning", den visar hur mycket som behöver beställas för den aktuella varugruppen baserat på vissa villkor:


    Detta värde kan endast beräknas på denna grupperingsnivå, eftersom det inte finns några värden över eller under att beräkna. Till exempel, på nivån för detaljerade poster, finns det inga uppgifter om den maximala kvantiteten i en grupp, eftersom dessa uppgifter endast är giltiga för gruppen som helhet och inte för dess enskilda komponenter.

    Följaktligen är det nu nödvändigt att beräkna summorna för ovanstående grupperingar ("Lager", "Lagertyper") och den totala summan.
    För att göra detta, använd funktionen CalculateExpressionWithGroupArray:
    EVALUATE EXPRESSIONWITHGROUPARRAY (EVALEXPRESSIONWITHGROUPARRAY)
    Syntax:
    EvaluateExpressionWithGroupArray(,)
    Beskrivning:
    Funktionen returnerar en array, vars varje element innehåller resultatet av att utvärdera ett uttryck för gruppering efter det angivna fältet.
    Layoutsammansättaren, när den genererar en layout, omvandlar funktionsparametrar till termer av layoutfält för datasammansättning. Till exempel kommer kontofältet att konverteras till DataSet.Account.
    När layoutbyggaren genererar uttryck för utdata från ett anpassat fält vars uttryck endast innehåller funktionen CalculateArrayWithGroupArray() genererar utdatauttrycket så att utdatainformationen 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)),Sum(DataSet.AmountTurnover)",,"DataSet.Account"),"2")))

    Alternativ:

    Typ: Sträng. Uttrycket som ska utvärderas. Rad, till exempel, Amount(AmountTurnover).

    Typ: Sträng. Grupperingsfältuttryck – uttryck för grupperingsfält, separerade med kommatecken. Till exempel Entreprenör, Part.

    Typ: Sträng. Ett uttryck som beskriver valet som tillämpas på detaljposter. Uttrycket stöder inte användningen av aggregerade funktioner. Till exempel, DeletionFlag = False.

    Typ: Sträng. Ett uttryck som beskriver valet som tillämpas på gruppposter. Till exempel, Amount(AmountTurnover) > &Parameter1.
    Exempel:

    Maximum(CalculateExpressionWithGroupArray("Amount(AmountOmsättning)", "Motpart"));

    En detaljerad beskrivning av funktionssyntaxen finns på http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
    Nu, för beräkningen, duplicerar vi fältet "Order", med olika värden "Beräkna med...", med hjälp av följande uttryck, notera att på varje högre nivå används värdena för nivåerna under grupperingarna .

    Som ett resultat får vi följande konstruktion:

    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 datasammansättningsdiagram":

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

    Lägger till en begäran via konstruktören

    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 typ av rapport " 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 per 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 "Kalorier" - summan visas redan i den, så låt oss skapa ett annat fält, vilket kommer bli en exakt kopia"Kalori"-fält.

    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 skulle vilja 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 kom in 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.

    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 komponerar 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 gruppnamnet används tom rad, kommer beräkningen att utföras inom ramen för 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 i detta exempel resultatet blir 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— när en funktion för en grupppost beräknas 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 02/01/2010 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 som uttrycket utvärderas för. 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 (Together) 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("Summa(Värde)", Aktuell, Aktuell) 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("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 skiljer sig från värdet av denna typ standard, annat än NULL, annat än 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.

    Uttrycksspråk för datasammansättningssystem

    Datasammansättningssystemets uttrycksspråk är utformat för att skriva uttryck som används i olika delar av systemet.

    Uttryck används i följande delsystem:

    • datalayoutdiagram - för att beskriva beräknade fält, totala fält, relationsuttryck, etc.;
    • datalayoutinställningar - för att beskriva anpassade fältuttryck;
    • datalayout layout - för att beskriva uttryck för att koppla datamängder, beskriva layoutparametrar, etc.

    Bokstäver

    Uttrycket kan innehålla bokstaver. Följande typer av bokstaver är möjliga:

    • Linje;
    • Siffra;
    • Datum för;
    • Boolean.

    Linje

    En bokstavlig sträng skrivs med ""-tecken, till exempel:

    "Sträng bokstavlig"

    Om du behöver använda tecknet "" i en bokstavlig sträng bör du använda två sådana tecken.

    Till exempel:

    "Ordagrant ""inom citattecken"""

    siffra

    Numret skrivs utan mellanslag, i decimalformat. Bråkdelen separeras med symbolen "." Till exempel:

    10.5 200

    datum

    En bokstavlig datum skrivs med hjälp av nyckeln DATETIME. Efter detta nyckelord listas år, månad, dag, timmar, minuter, sekunder inom parentes, separerade med kommatecken. Tidsspecifikation krävs inte.

    Till exempel:

    DATETIME(1975, 1, 06) – 6 januari 1975 DATETIME(2006, 12, 2, 23, 56, 57) – 2 december 2006, 23 timmar 56 minuter 57 sekunder, 23 timmar 56 minuter 57 sekunder

    Boolean

    Booleska värden kan skrivas med bokstaverna True (True), False (False).

    Menande

    För att specificera bokstaver av andra typer (systemuppräkningar, fördefinierade data) används nyckelordet Value, följt av namnet på bokstaven inom parentes.

    Värde(Kontotyp. Aktiv)

    Operationer på siffror

    Unär –

    Denna operation är avsedd att ändra tecknet för ett tal till det motsatta tecknet. Till exempel:

    Försäljning. Kvantitet

    Unary +

    Denna operation utför inga åtgärder på numret. Till exempel:

    Försäljning. Kvantitet

    binär -

    Denna operation är avsedd att beräkna skillnaden mellan två tal. Till exempel:

    ResidualsAndTurnovers.InitialRemaining – RemainingsAndTurnovers.FinalResidualsRemainingsAndTurnovers.InitialRemaining - 100 400 – 357

    Binär +

    Denna operation är utformad för att beräkna summan av två tal. Till exempel:

    RemainingsAndTurnover.InitialRemaining + RemainingAndTurnover.Turnover ResiduesAndTurnover.InitialRemaining + 100 400 + 357

    Arbete

    Denna operation är utformad för att beräkna produkten av två tal. Till exempel:

    Nomenklatur.Pris * 1,2 2 * 3,14

    Division

    Denna operation är utformad för att erhålla resultatet av att dividera en operand med en annan. Till exempel:

    Nomenklatur.Pris / 1,2 2 / 3,14

    Resten av divisionen

    Denna operation är utformad för att erhålla resten när en operand delas med en annan. Till exempel:

    Nomenklatur Pris % 1,2 2 % 3,14

    Strängoperationer

    Sammanfogning (binär +)

    Denna operation är utformad för att sammanfoga två strängar. Till exempel:

    Nomenclature.Article + “: ”+ Nomenclature.Name

    Tycka om

    Denna operation kontrollerar om strängen matchar det passerade mönstret.

    Värdet på LIKE-operatorn är TRUE om värdet<Выражения>uppfyller mönstret, och FALSK i övrigt.

    Följande karaktärer i<Строке_шаблона>har en annan betydelse än bara en annan karaktär i raden:

    • % - procent: en sekvens som innehåller noll eller fler godtyckliga tecken;
    • _ - understreck: ett godtyckligt tecken;
    • […] - ett eller flera tecken inom hakparenteser: ett tecken, något av de som anges inom hakparenteserna. Uppräkningen kan innehålla intervall, till exempel a-z, vilket betyder ett godtyckligt tecken som ingår i intervallet, inklusive ändarna av intervallet;
    • [^...] - inom hakparentes en negationsikon följt av ett eller flera tecken: vilket tecken som helst förutom de som listas efter negationsikonen;

    Någon annan symbol betyder sig själv och bär ingen extra belastning. Om ett av de listade tecknen måste skrivas som sig själv, måste det föregås av<Спецсимвол>, specificerat efter nyckelordet SPECIAL CHARACTER (ESCAPE).

    Till exempel mall

    "%ABV[abvg]\_abv%" SPECIALTECKET "\"

    betyder en delsträng som består av en sekvens av tecken: bokstaven A; bokstäverna B; bokstäverna B; en siffra; en av bokstäverna a, b, c eller d; understryka; bokstäverna a; bokstäverna b; bokstäver v. Dessutom kan denna sekvens lokaliseras med början från en godtycklig position i linjen.

    Jämförelseoperationer

    Lika

    Denna operation är avsedd att jämföra två operander för jämlikhet. Till exempel:

    Försäljning.Motpart = Försäljning.NomenklaturHuvudleverantör

    Inte jämnlikt

    Denna operation är avsedd att jämföra två operander för ojämlikhet. Till exempel:

    Försäljning. Motpart<>Försäljning.NomenklaturHuvudleverantör

    Mindre

    Denna operation är utformad för att kontrollera att den första operanden är mindre än den andra. Till exempel:

    FörsäljningsAktuellt.Belopp< ПродажиПрошлые.Сумма

    Mer

    Denna operation är utformad för att kontrollera att den första operanden är större än den andra. Till exempel:

    SalesCurrent.Sum > SalesPast.Sum

    Mindre eller lika

    Denna operation är utformad för att kontrollera att den första operanden är mindre än eller lika med den andra. Till exempel:

    FörsäljningsAktuellt.Belopp<= ПродажиПрошлые.Сумма

    Mer eller lika

    Denna operation är utformad för att kontrollera att den första operanden är större än eller lika med den andra. Till exempel:

    SalesCurrent.Amount >= SalesPast.Amount

    Operation B

    Denna operation kontrollerar förekomsten av ett värde i den godkända värdelistan. Resultatet av operationen blir True om värdet hittas, eller False annars. Till exempel:

    Artikel B (&Produkt1, &Produkt2)

    Funktion för att kontrollera närvaron av ett värde i en datamängd

    Operationen kontrollerar förekomsten av ett värde i den angivna datamängden. Valideringsdataset måste innehålla ett fält. Till exempel:

    Försäljning Motpart Till Motparter

    Funktion för att kontrollera ett värde för NULL

    Denna operation returnerar True om värdet är NULL. Till exempel:

    Försäljning. Motpart ÄR NULL

    Funktion för att kontrollera ett värde för NULL-olikhet

    Denna operation returnerar True om värdet inte är NULL. Till exempel:

    Försäljning. Motpart ÄR INTE NULL

    Logiska operationer

    Logiska operationer accepterar uttryck av typen Boolean som operander.

    Operation NOT

    NOT-operationen returnerar True om dess operand är False och False om dess operand är True. Till exempel:

    INTE Document.Consignee = Document.Consignee

    Operation I

    AND-operationen returnerar True om båda operanderna är True och False om en av operanderna är False. Till exempel:

    Document.Consignee = Document.Consignor OCH Document.Consignee = &Motpart

    ELLER operation

    Operationen OR returnerar True om en av dess operander är True och False om båda operanderna är False. Till exempel:

    Document.Consignee = Document.Consignor ELLER Document.Consignee = &Motpart

    Aggregerade funktioner

    Aggregatfunktioner utför någon åtgärd på en uppsättning data.

    Belopp

    Funktionen Summa aggregat beräknar summan av värdena för uttrycken som skickas till den som ett argument för alla detaljposter. Till exempel:

    Belopp (försäljning. belopp omsättning)

    Kvantitet

    Räknefunktionen beräknar antalet andra värden än NULL. Till exempel:

    Kvantitet (försäljning. motpart)

    Antal olika

    Denna funktion beräknar antalet olika betydelser. Till exempel:

    Kvantitet (Olika försäljningar. Motpart)

    Maximal

    Funktionen får maxvärdet. Till exempel:

    Maximum (återstående. kvantitet)

    Minimum

    Funktionen får minimivärdet. Till exempel:

    Minimum (återstående. kvantitet)

    Genomsnitt

    Funktionen får medelvärdet av icke-NULL-värden. Till exempel:

    Genomsnitt (återstående. kvantitet)

    Övriga operationer

    Operation SELECT

    Funktionen Select är avsedd att välja ett av flera värden när vissa villkor är uppfyllda. Till exempel:

    Välj När Belopp > 1000 Sedan Belopp Annars 0 Slut

    Regler för att jämföra två värden

    Om typerna av värdena som jämförs skiljer sig från varandra, bestäms relationerna mellan värdena baserat på typens företräde:

    • NULL (lägst);
    • Boolean;
    • Siffra;
    • Datum för;
    • Linje;
    • Referenstyper

    Relationerna mellan olika referenstyper bestäms utifrån referensnumren i de tabeller som motsvarar en viss typ.

    Om datatyperna är desamma jämförs värdena enligt följande regler:

    • för den booleska typen är värdet TRUE större än värdet FALSE;
    • Nummertypen har de vanliga jämförelsereglerna för siffror;
    • för datumtypen är tidigare datum mindre än senare;
    • för strängtypen - jämförelse av strängar i enlighet med databasens etablerade nationella egenskaper;
    • referenstyper jämförs baserat på deras värden (rekordnummer, etc.).

    Arbeta med NULL-värde

    Varje operation där en av operanderna är NULL kommer att ge ett NULL-resultat.

    Det finns undantag:

    • AND-operationen returnerar endast NULL om ingen av operanderna är False;
    • ELLER-operationen returnerar endast NULL om ingen av dess operander är True.

    Operationsprioriteringar

    Operationerna har följande prioriteringar (första raden har lägst prioritet):

    • B, ÄR NULL, ÄR INTE NULL;
    • =, <>, <=, <, >=, >;
    • Binär +, Binär – ;
    • *, /, %;
    • Unary +, Unary -.

    Datasammansättningssystem Uttryck Språkfunktioner

    Beräkna

    Funktionen Beräkna är utformad för att beräkna ett uttryck inom ramen för en viss gruppering. Funktionen har följande parametrar:

    • Uttryck. Skriv sträng. Innehåller ett beräknat uttryck;
    • Gruppering. Skriv sträng. 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 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 beloppet för fältet "Sales.AmountTurnover" i grupperingsposten och beloppet för samma fält i hela layouten.

    Nivå

    Funktionen är utformad för att erhålla den aktuella inspelningsnivån.

    Nivå()

    NumberInOrder

    Få nästa sekvensnummer.

    NumberByOrder()

    NumberInOrderInGrouping

    Returnerar nästa ordningsnummer i den aktuella grupperingen.

    NumberByOrderInGroup()

    Formatera

    Få en formaterad sträng med det godkända värdet.

    Formatsträngen ställs in i enlighet med 1C:Enterprise-formatsträngen.

    Alternativ:

    • Menande;
    • Formatera sträng.

    Format(Faktura för förbrukningsmaterial. Dokumentbelopp, "NPV=2")

    Början av perioden

    Alternativ:

      • Minut;
      • Dag;
      • En vecka;
      • Månad;
      • Fjärdedel;
      • Årtionde;
      • Halvår.

    StartPeriod(DatumTime(2002, 10, 12, 10, 15, 34), "Månad")

    Resultat:

    01.10.2002 0:00:00

    Periodens slut

    Funktionen är utformad för att extrahera ett specifikt datum från ett givet datum.

    Alternativ:

    • Datum för. Skriv datum. Angivet datum;
    • Periodtyp. Skriv sträng. Innehåller ett av följande värden:
      • Minut;
      • Dag;
      • En vecka;
      • Månad;
      • Fjärdedel;
      • Årtionde;
      • Halvår.

    EndPeriod(DatumTime(2002, 10, 12, 10, 15, 34), "Vecka")

    Resultat:

    13.10.2002 23:59:59

    AddToDate

    Funktionen är utformad för att lägga till ett visst värde till ett datum.

    Alternativ:

    • Förstoringstyp. Skriv sträng. Innehåller ett av följande värden:
      • Minut;
      • Dag;
      • En vecka;
      • Månad;
      • Fjärdedel;
      • Årtionde;
      • Halvår.
    • Belopp – med hur mycket du behöver öka datumet. Typnummer. Bråkdelen ignoreras.

    AddToDate(DatumTime(2002, 10, 12, 10, 15, 34), "Månad", 1)

    Resultat:

    12.11.2002 10:15:34

    DifferenceDate

    Funktionen är designad för att se skillnaden mellan två datum.

    Alternativ:

    • Uttryck. Skriv datum. Originaldatum;
    • Uttryck. Skriv datum. Subtraherat datum;
    • Skillnadstyp. Skriv sträng. Innehåller ett av följande värden:
      • Andra;
      • Minut;
      • Dag;
      • Månad;
      • Fjärdedel;

    DATUMSKILLNAD(DATETIME(2002; 10; 12; 10; 15; 34); DATUMTID(2002; 10; 14; 9; 18; 06); "DAG")

    Resultat:

    Delsträng

    Denna funktion är utformad för att extrahera en delsträng från en sträng.

    Alternativ:

    • Linje. Skriv sträng. Strängen från vilken delsträngen extraheras;
    • Placera. Typnummer. Positionen för tecknet från vilken delsträngen som ska extraheras från strängen börjar;
    • Längd. Typnummer. Längden på den tilldelade delsträngen.

    SUBSTRING(Konton.Adress, 1, 4)

    Linjelängd

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

    Parameter:

    • Linje. Skriv sträng. En sträng vars längd anges.

    Rad(motparter.adress)

    År

    Den här funktionen är utformad för att extrahera året från ett datumtypvärde.

    Parameter:

    • Datum för. Skriv datum. Det datum då året bestäms.

    ÅR(Utgift.Datum)

    Fjärdedel

    Denna funktion är utformad för att extrahera kvartalsnumret från ett datumtypvärde. Kvartalsnumret varierar normalt från 1 till 4.

    Parameter

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

    Månad

    Denna funktion är utformad för att extrahera månadsnumret från ett datumtypvärde. Månadsnumret varierar normalt från 1 till 12.

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

    Årets dag

    Denna funktion är utformad för att erhålla dagen på året från ett datumtypvärde. Årets dag varierar normalt från 1 till 365 (366).

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

    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.

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

    En vecka

    Denna funktion är utformad för att erhålla veckonummer för året från ett datumtypvärde. Årets veckor räknas från 1.

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

    Veckodag

    Denna funktion ä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).

    • Datum för. Skriv datum. Det datum då veckodagen bestäms.
    VECKODAG (kostnadsfakturadatum)

    Timme

    Denna funktion är utformad för att erhålla timmen på dygnet från ett datumtypvärde. Klockan på dygnet varierar från 0 till 23.

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

    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.

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

    Andra

    Denna funktion ä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.

    • Datum för. Skriv datum. Det datum då sekunderna i minuten bestäms.
    SEKUND(Utg.datum)

    uttrycka

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

    Alternativ:

    • Uttryck att konvertera;
    • Typindikering. Skriv sträng. 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.

    Express(Data.Props1, "Number(10,3)")

    Är inget

    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.

    JaNULL(Belopp(Försäljning.Belopp Omsättning), 0)

    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.

    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.