Små knep av stora förfrågningar. Fördefinierade datatyper

Små knep av stora förfrågningar.  Fördefinierade datatyper
Små knep av stora förfrågningar. Fördefinierade datatyper

För att skapa och utföra frågor till databastabeller i 1C-plattformen används ett speciellt programmeringsspråksobjekt. Begäran. Detta objekt skapas genom att anropa konstruktionen Ny förfrågan. Det är bekvämt att använda en fråga när du behöver få ett komplext urval av data, grupperade och sorterade efter behov. Ett klassiskt exempel på att använda en fråga är att få en sammanfattning av ackumuleringsregistrets tillstånd på visst ögonblick tid. Dessutom gör frågemekanismen det enkelt att få information i olika tidsavsnitt.

Begärans text är den instruktion enligt vilken begäran ska utföras. Brödtexten i begäran beskriver:

  • infobastabeller som används som frågedatakällor;
  • tabellfält som behöver bearbetas i frågan;
  • grupperingsregler;
  • sorteringsresultat;
  • etc.
Instruktionen är sammanställd på ett speciellt språk - frågespråket och består av separata delar - avsnitt, meningar, nyckelord, funktioner, aritmetiska och logiska operatorer, kommentarer, konstanter och parametrar.

Frågespråket för 1C-plattformen är mycket likt syntaxen för andra SQL-språk, men det finns skillnader. De främsta fördelarna med det inbyggda frågespråket är: avledande fält, närvaron av virtuella tabeller, bekväm drift med totaler, oskrivna fält i frågor.

  • uppräkningsvärden;
  • fördefinierade data:
  • kataloger;
  • planer för typer av egenskaper;
  • kontoplaner;
  • planer för typer av beräkningar;
  • tomma länkar;
  • värden för vägpunkter i affärsprocesser.
Dessutom kan texten i begäran innehålla systemuppräkningsvärden som kan tilldelas fälten i databastabellerna: AccumulationMotionType, AccountType och AccountingMovementType. Förfrågningar hänvisar till fördefinierade konfigurationsdata och systemuppräkningsvärden med hjälp av en funktionstyp bokstavlig MENANDE. Den här bokstaven förbättrar läsbarheten för frågan och minskar antalet frågeparametrar.

Ett exempel på att använda en bokstavlig MENANDE:
WHERE City = VÄRDE(Directory.Cities.Moskva)
WHERE City = VÄRDE(Reference.City.EmptyReference)
WHEREItemType = VÄRDE(Enumeration.ProductTypes.Service)
WHEREMovementType = VÄRDE(MovementTypeAccumulation.Income)
WHERE RoutePoint = VÄRDE(BusinessProcess.BusinessProcess1.RoutePoint.Action1

2) Använd instruktioner AUTO BESTÄLLNING i en fråga kan exekveringstiden för frågan vara mycket lång, så om sortering inte krävs är det bättre att inte använda det alls. I de flesta fall är det bästa sättet att tillämpa sortering med uttalandet SORTERA EFTER.

Automatisk arrangemang fungerar enligt följande principer:

  • Om ORDER BY-satsen specificerades i frågan, kommer varje referens till tabellen i denna sats att ersättas av de fält som tabellen sorteras efter som standard (för kataloger är detta koden eller namnet, för dokument, datumet av dokumentet). Om beställningsfältet hänvisar till en hierarkisk katalog kommer hierarkisk sortering efter denna katalog att tillämpas.
  • Om det inte finns någon ORDER BY-sats i frågan, men det finns en TOTAL-sats, kommer frågeresultatet att sorteras efter fälten som finns i TOTAL-satsen efter nyckelord Programvara, i samma sekvens och, om summan beräknades av fälten - länkar, sedan av standardsorteringsfälten för tabellerna som refererades till.
  • Om det inte finns några ORDER BY- och TOTAL-satser i frågan, men det finns en GROUP BY-sats, kommer frågeresultatet att sorteras efter fälten som finns i meningen i samma sekvens och, om grupperingen utfördes av fält - länkar och sedan som standard sorteringsfältstabeller som refererades till.
  • Om frågan inte innehåller satserna och ORDER BY, TOTAL och GROUP BY, kommer resultatet att sorteras efter standardsorteringsfälten för de tabeller som data väljs från, i den ordning de visas i frågan.

Om frågan innehåller TOTAL-satsen, beställs varje nivå av totaler separat.

3) För att undvika att fråga om databasen när frågeresultatet visas för användaren (till exempel bygga en fråga eller visa frågeresultatet med kalkylarksdokument) är det användbart att använda instruktionen PRESENTATIONSLÄNKAR A som låter dig få en representation av ett referensvärde.

Det är också möjligt att använda instruktionen PRESTANDA- utformad för att få en strängrepresentation av ett värde av en godtycklig typ. Skillnaden mellan dessa instruktioner är att i det första fallet, om instruktionerna passerar en referens, kommer resultatet att vara en sträng. I andra fall blir resultatet värdet av den skickade parametern. I det andra fallet kommer resultatet av instruktionen alltid att vara en sträng!

4) Om frågan innehåller ett fält med en sammansatt typ, blir det för sådana fält nödvändigt att kasta fältvärdena till en specifik typ med hjälp av instruktionen UTTRYCKA, vilket gör att du kan ta bort onödiga tabeller från den vänstra anslutningen med ett fält av en sammansatt datatyp och påskynda frågan.

Exempel:
Det finns ett register för ackumulering av rester av varor, i vilket registrarfältet har sammansatt typ. I begäran väljs datum och nummer för varumottagningsdokumenten, medan åtkomst till detaljerna i dokumentet via Registrator-fältet inte resulterar i många vänsterkopplingar av ackumuleringsregistertabellen med tabellerna över registerdokument.

VÄLJA
EXPRESS(Remain of Goods.Registrar AS Document.Receipt of Goods).Nummer AS-kvittonummer,
EXPRESS(Remain of Goods.Registrar AS Document.Receipt of Goods).Datum AS Mottagningsdatum
FRÅN
Ackumuleringsregister.Rester av varor AS Rester av varor

Om typgjutningen inte anses vara genomförbar kommer resultatet av typcasten att vara NULL.

5) Glöm inte instruktionerna TILLÅTEN, vilket innebär att frågan endast kommer att välja de poster för vilka nuvarande användaren har rättigheter. Om detta ord inte anges, kommer frågan att fungera med ett fel i det fall då frågan väljer poster som användaren inte har rättigheter för.

6) Om frågan använder en koppling, och i vissa delar av kopplingen finns det kapslade tabeller (dokument med tabelldel), och vissa inte, blir det nödvändigt att komplettera urvalslistan med fält - tomma kapslade tabeller. Detta görs med hjälp av nyckelordet TÖM BORD, varefter aliasen för fälten som den kapslade tabellen kommer att bestå av anges inom parentes.

Exempel:
// Välj fält Antal och Komposition
// från virtuell tabell Document.Invoice
VÄLJ Referensnummer, TOMTABELL.(Nom, Tov, Antal) SOM KOMPOSITION
FRÅN Document.Invoice
FÖRENA ALLA
VÄLJ Link.Number, Composition.(LineNumber, Product, Quantity)
FRÅN Document.Invoice Document.Invoice.Composition.*
7) För att undvika dubbletter av rader i frågeresultatet bör du använda instruktionen OLIKA, eftersom det är tydligare och tydligare, och instruktionen GRUPP AV används för gruppering aggregerade funktioner. Förresten, när du använder aggregerade funktioner, meningen GRUPP AV kanske inte specificeras alls, medan alla frågeresultat kommer att grupperas på en enda rad.

Exempel:
// Det är nödvändigt att ta reda på vilka motparter
// varorna skickades för perioden.
Välj Diverse
Dokument.Faktura.Entreprenör

8) Instruktion GRUPP AV låter dig komma åt fält högsta nivån, utan att gruppera resultat efter dessa fält, om aggregerade funktioner tillämpas på kapslade tabellfält. Även om det är skrivet i 1C-hjälpen, vid gruppering av frågeresultat, måste aggregerade funktioner anges i listan över urvalsfält, och förutom aggregatfunktioner kan endast de fält som grupperingen utförs med anges i urvalslistan fält.

Exempel:
VÄLJA
Mottagande av varor och tjänster. varor. (SUM (kvantitet), nomenklatur),
Mottagande av varor och tjänster. Länk,
Mottagande av varor och tjänster Motpart
FRÅN
Dokument Mottagande av varor och tjänster AS Mottagande av varor och tjänster
GRUPP AV
Mottagande av varor och tjänster. Varor. (Nomenklatur)

9) Instruktion ÄR INGETär avsett att ersätta NULL-värdet med ett annat värde, men glöm inte att den andra parametern kommer att konverteras till typen av den första om typen av den första parametern är en sträng eller ett tal.

10) När du hänvisar till huvudtabellen kan du hänvisa till data från den underordnade tabellen i villkoret. Den här funktionen kallas för att referera till fälten i en undertabell.

Exempel (sök efter dokument som innehåller en viss produkt i tabelldelen):
VÄLJA
Entrance.Link
FRÅN
Document.Incoming Where Incoming.Goods.Nomenclature = &Nomenclature.

Fördelen med denna fråga framför frågan i undertabellen Inkommande.Produkter är att om det finns dubbletter i dokument, kommer frågeresultatet endast att returnera unika dokument utan att använda nyckelordet OLIKA.

11) Ett intressant operatörsalternativ Iär en kontroll av förekomsten av en ordnad uppsättning i uppsättningen av sådana uppsättningar (Fält1, Fält2, ... , FältN) I (Fält1, Fält2, ... , FältN).

Exempel:
VÄLJA
Contractors.Link
VAR
(Contractors.Link, Goods.Link)
(VÄLJ Försäljning.Kund, Försäljningsprodukt
FRÅN ackumulationsregistret. Sales AS Sales)
FRÅN
Katalog. Motparter,
Katalog.Produkter

12) Använd när det är möjligt virtuella tabeller förfrågningar. När du skapar en fråga tillhandahåller systemet ett antal virtuella tabeller som datakällor - det är tabeller som också är resultatet av en fråga som systemet genererar vid exekvering av motsvarande kodsektion.

Utvecklaren kan självständigt erhålla samma data som systemet tillhandahåller honom som virtuella tabeller, men algoritmen för att erhålla dessa data kommer inte att optimeras, eftersom:

  • Alla virtuella tabeller parametreras, det vill säga utvecklaren ges möjlighet att ställa in några parametrar som systemet kommer att använda när det genererar en begäran om att skapa en virtuell tabell. Beroende på vilka virtuella tabellparametrar som specificeras av utvecklaren, kan systemet generera OLIKA frågor för att få samma virtuella tabell, och de kommer att optimeras med avseende på parametrarna som skickas.
  • Det är inte alltid möjligt för en utvecklare att få tillgång till den data som systemet har tillgång till.
13) I driftsättet klient-server, funktionen SUBSTRING() implementeras med funktionen SUBSTRING() för motsvarande SQL-sats skickas till databasservern SQL-data Server, som beräknar resultattypen för SUBSTRING()-funktionen enligt komplexa regler, beroende på typen och värdena för dess parametrar, såväl som beroende på det sammanhang i vilket den används. I de flesta fall påverkar dessa regler inte exekveringen av en fråga, men det finns fall då den maximala längden på resultatsträngen beräknad av SQL Server. Det är viktigt att komma ihåg att i vissa sammanhang när du använder funktionen SUBSTRING() kan den maximala längden på resultatet vara lika med den maximala längden på en sträng med begränsad längd, vilket är 4000 tecken i SQL Server. Detta kan leda till en oväntad krasch i frågekörningen:
Microsoft OLE DB-leverantör för SQL Server: Varning: Frågeprocessorn kunde inte skapa en frågeplan från optimeraren eftersom den totala längden på alla kolumner i GROUP BY- eller ORDER BY-satsdelen överstiger 8000 byte.
HRESULT=80040E14, SQLSTATE=42000, native=8618
För att undvika detta fel rekommenderas det inte att använda funktionen SUBSTRING() för att konvertera strängar med obegränsad längd till strängar med begränsad längd. Istället är det bättre att använda castoperatorn EXPRESS().

14) Använd med försiktighet ELLER i WHERE-konstruktionen, eftersom användningen av ett villkor med OR kan betydligt "tyngre" frågan. Du kan lösa problemet med CONNECT ALL-konstruktionen.

Exempel:
VÄLJA

FRÅN

VAR
_DemoContractors.Link = &Länk1

FÖRENA ALLA

VÄLJA
_Demo Counterparties.NameFull
FRÅN
Directory._DemoContractors HUR _DemoContractors
VAR
_DemoContractors.Link = &Länk2

15) Skick INTE I i WHERE-konstruktionen ökar exekveringstiden för frågan, eftersom det är ett slags NOT (OR1 OR2 ... ORn), så för stora tabeller, försök att använda en LEFT JOIN med IS NULL-villkoret.

Exempel:
VÄLJA
_DemoContractors.Link
FRÅN
Directory._DemoContractors HUR _DemoContractors
LEFT JOIN Document._DemoBuyerOrder AS _DemoBuyerOrder
Programvara _DemoContractors.Link = _BuyerDemoOrder.Contractor
VAR
_Köparens DemoOrder.Motpart ÄR NULL

15) Vid användning Tillfälliga bord du måste indexera villkoret och sammanfogningsfälten i dessa tabeller, MEN när du använder index kan frågan köras ännu långsammare. Därför är det nödvändigt att analysera varje fråga med och utan ett index, mäta hastigheten för utförande av en fråga och fatta ett slutgiltigt beslut.
Om du placerar data i en temporär tabell som initialt är indexerad på vissa fält, kommer det inte längre att finnas ett index på dessa fält i den temporära tabellen.

16) Om du inte använder Temp bordsansvarig, då finns det inget behov av att uttryckligen ta bort den temporära tabellen, den kommer att raderas efter slutförandet av batchfrågan, annars bör den temporära tabellen tas bort på något av följande sätt: använd kommandot DELETE i frågan, anrop TemporaryTable Manager.Close() metod.

För att arbeta med frågor används ett objekt av det inbyggda språket Begäran. Det låter dig ta emot information lagrad i databasens fält i form av ett urval som formats enligt specificerade regler..

Frågan får initial information från en uppsättning tabeller. Dessa tabeller representerar data från riktiga databastabeller i en form som är lämplig för analys. De kan delas upp i två stora grupper: verklig Och virtuell.

Verkliga tabeller kan i sin tur vara objekt (referens) eller icke-objekt (icke-referens), fig. 97.

Ris. 97. Frågetabeller

En utmärkande egenskap hos riktiga tabeller är att de innehåller data från vilken som helst riktig tabell som är lagrad i databasen.. Till exempel är tabellen Katalog.Kunder, som motsvarar katalogen Kunder, eller tabellen Ackumuleringsregistret. Materialrester, motsvarande ackumuleringsregistret för materialrester, verklig.

Virtuella tabeller bildas främst av data från flera databastabeller. Exempelvis är tabellen Accumulationsregister.Remains of Materials.Remains and Turnovers, bildad av flera tabeller i ackumulationsregistret Materialrests, virtuell.

Ibland kan virtuella tabeller också bildas från en riktig tabell (till exempel den virtuella tabellen Priser. Slice of the Last bildas på basis av tabellen i Prisinformationsregistret). Gemensamt för alla virtuella tabeller är dock att de kan ges ett antal parametrar som avgör vilken data som kommer att ingå i dessa virtuella tabeller. Uppsättningen av sådana parametrar kan vara olika för olika virtuella tabeller och bestäms av data som lagras i källdatabastabellerna.

Verkliga tabeller är indelade i objekt (referens) och icke-objekt (icke-referens).

I objekt (referens) tabeller information om referensdatatyper (kataloger, dokument, planer för typer av egenskaper etc.) presenteras. Och i icke-objektiv (icke-referensiell)– alla andra datatyper (konstanter, register, etc.).

Särskiljande drag objekt (referens) tabellerär att de inkluderar ett länkfält som innehåller en länk till den aktuella posten. Dessutom är det möjligt för sådana tabeller få en anpassad representation av ett objekt. Dessa tabeller kan vara hierarkiska och fälten i sådana tabeller kan innehålla kapslade tabeller (tabellsektioner).

Algoritmen med vilken data kommer att väljas från källtabellerna för frågan beskrivs i frågetexten på ett speciellt språk - frågespråk . Förfrågningstexten består av flera delar:

en beskrivning av begäran;

Konsolidering av förfrågningar

beställning av resultat;

· AUTO-ORDNING;

en beskrivning av resultaten.

Den obligatoriska delen av begäran är endast den första - beskrivningen av begäran. Alla andra är närvarande vid behov.

Frågebeskrivningen definierar datakällor, urvalsfält, grupperingar etc.

Frågeaggregation avgör hur resultaten av flera frågor slås samman.

Ordningen av resultaten definierar villkoren för ordning av frågeresultatraderna.

AUTOORDER låter dig aktivera automatisk ordning av frågeresultatrader.

Beskrivningen av summorna avgör vilka summor som ska beräknas i frågan och hur resultatet grupperas.

Det bör noteras att när ett frågespråk används för att beskriva datakällor i ett datasammansättningssystem, används inte sammanfattningsdelen av frågespråket. Detta beror på det faktum att datasammansättningssystemet oberoende beräknar totalsummorna baserat på inställningarna som gjorts av utvecklaren eller användaren.

Datasammansättningssystem designad för att skapa anpassade rapporter i 1C:Enterprise 8.1-systemet och består av flera huvuddelar.

De första uppgifterna för rapportens layout innehåller datasammansättningsschema är datamängder och metoder för att arbeta med dem(Fig. 98).

Utvecklaren skapar ett datasammansättningsschema som beskriver texten i begäran, datamängder, relationer mellan dem, tillgängliga fält, parametrar för att erhålla data och uppsättningar initiala inställningar layouter - rapportstruktur, datalayoutlayout m.m.

Till exempel kan ett layoutdiagram innehålla följande uppsättning data (Figur 99).

Ris. 98. Allmänt schema arbeta med datasammansättningssystemet

Ris. 99. Ett exempel på ett layoutschema (en datauppsättning och en fråga som använder den)

På fig. Figur 99 visar designfönstret för datasammansättningsschemat, som innehåller datakällan, frågetext och fält som valts av frågan.

Systemrapporten för datasammansättning som användaren får är inte bara en tabell med poster som matchar frågan. Den har en komplex hierarkisk struktur och kan bestå av olika element som grupperingar, tabeller och diagram. Samtidigt kan användaren ändra den befintliga eller till och med skapa en helt ny rapportstruktur, sätta upp det urval han behöver, designa elementen i rapportstrukturen, få en uppdelning för varje element osv.

Till exempel kan följande rapportstruktur ställas in (bild 100):

Ris. 100. Struktur för en eventuell rapport

Den genererade rapporten kan ha nästa vy(Fig. 101).

I den presenterade rapporten kommer tabellen att bestå av ackumuleringsregisterposter Försäljningsomsättning om kunder och tjänster som tillhandahålls dem. Dessa poster är grupperade efter befälhavarna som utförde beställningarna. Och i grupperingen kommer en lista över masters att visas.

I allmän syn ett datasammansättningssystem är en samling av flera objekt. Vid generering och exekvering av en rapport överförs data sekventiellt från ett objekt i datasammansättningssystemet till ett annat, tills det slutliga resultatet erhålls - ett dokument som visas för användaren.

Algoritmen för interaktionen mellan dessa objekt är följande: utvecklaren skapar ett datakompositionsschema och standardinställningar. I det allmänna fallet, baserat på ett datasammansättningsschema, kan man skapa Ett stort antal olika rapporter. Inställningar för datasammansättning - antingen skapade av utvecklaren eller modifierade av användaren - avgör vilken rapport som kommer att tas emot i ett visst fall.

Ris. 101. Provrapport

Baserat på layoutschemat och de tillgängliga inställningarna skapar layoutbyggaren en datalayoutlayout. Detta är förberedelsestadiet för genomförandet av rapporten. Datalayouten finns redan färdig uppgift ska utföras av layoutprocessorn. Layoutlayouten innehåller nödvändiga frågor, rapportområdeslayouter etc.

Datakompositionsprocessorn väljer data från infobasen enligt kompositionslayouten, samlar ihop och formaterar dessa data.

Resultatet av layouten bearbetas av utdataprocessorn, och som ett resultat får användaren det resulterande kalkylarksdokumentet.

Sekvensen för layoutsystemet kan representeras som följande diagram (fig. 102):

Ris. 102. Schema för layoutsystemet

3.12.1. Skapande av rapporten "Register över dokument Tillhandahållande av tjänster"

Rapportera Register över dokument Tillhandahållande av tjänster kommer att visa en lista över befintliga tjänstedokument i databasen i ordning efter datum och nummer.

Rapportera. Ge det ett namn RegisterDocumentsProvisionServices. Bokmärke Main klick " Redo". Lägg till i schemakonstruktorn för datasammansättning Datauppsättning - Fråga Begär konstruktör".

Välj dokumenttabellen för objektet (referens) som datakälla för frågan RenderingServices. I den här tabellen väljer du följande fält (bild 103):

Datum för; Siffra; Stock; Bemästra; Klient.

Ris. 103. Valda fält

Gå sedan till bokmärke Beställa och ange att frågeresultatet först ska sorteras efter fältvärde datum, och sedan efter fältvärde RenderingServices.Link(Fig. 104).

Ris. 104. Ordningsföljd för utmatning av frågeresultat

Klick " OK" och se vilken fråga frågekonstruktorn genererade.

Gå till bokmärke inställningar och lägg till en ny gruppering i rapportstrukturen (Fig. 105).

Ris. 105. Kommandopanelen på fliken Inställningar

I fönstret för val av grupperingsfält klickar du på " OK" och på fliken Valda fält ställ in fälten som ska visas i rapporten:

Datum för; Siffra; Stock; Bemästra; Klient (fig. 106).

Ris. 106. Anpassa rapportens struktur

Register över dokument tillhandahållande av tjänster. Klick " Form" och titta på resultatet av rapporten (bild 107).

Ris. 107. Rapport Register över dokument som tillhandahåller tjänster

Rapportera. namnge det Servicebetyg. Bokmärke Main klick " Öppna datasammansättningsdiagrammet". I dialogrutan Layoutdesigner som öppnas klickar du på " Redo".

Skapa i schemakonstruktorn för datasammansättning Datauppsättning - Fråga(DataSet1) och klicka på " Begär konstruktör".

Nomenklatur Och virtuellt bord ackumuleringsregister Försäljning, omsättning. För att undvika namntvetydigheter i frågan, byt namn på nomenklaturtabellen till SprNomenklatur (innehållsmeny höger musknapp - Byt namn på tabell).

Välj sedan från tabellfält Spr Nomenklatur Länk Och FörsäljningOmsättning.IntäktOmsättning(Fig. 108).

Ris. 108. Valda fält

Gå till bokmärke Anslutningar och notera att konstruktören redan har skapat en relation mellan de två valda tabellerna - värdet på ändringen i nomenklaturregistret måste vara lika med referensen till artikeln i nomenklaturens referensbok.

Det enda man kan göra är att återställa flaggan Allt vid registerbordet och ställ in det vid referensbordet SprNomenklatur(Fig. 109).

Att sätta flaggan Allt för katalogtabellen kommer att innebära att alla element kommer att väljas från katalogen och dessa element kommer att tilldelas värdet av intäktsomsättningen från registret. Som ett resultat av förfrågan kommer alltså alla tjänster att vara närvarande, och för några av dem kommer intäktsomsättningen att anges. För de tjänster som inte tillhandahålls under den valda perioden kommer ingenting att anges.

Ris. 109. Dukning av tabelllänkar

Gå till bokmärke Betingelser och ställ in villkoren för att välja element från referensboken för nomenklaturen (Fig. 110). När du ställer in urvalsvillkor måste du använda frågeparametrar. Det första villkoret måste vara att det valda elementet inte är en grupp (för att göra detta, byt till Godtyckligt tillstånd- sätt flagga Slumpmässig). Sedan i fält skick skriv in följande text:

SprNomenclature.ThisGroup = FALSK

Det andra villkoret måste vara att det valda objektet är en tjänst (detta är enkelt skick) (Fig. 110).

Ris. 110. Villkor för val av element

I framtiden, innan begäran utförs, i parametern Typnomenklatur du måste klara motsvarande uppräkningsvärde.

Gå till bokmärke Fackföreningar/Alias och ange att referensobjektvyn kommer att ha ett alias Service, och registerfältet kommer att ha ett alias Inkomst(Fig. 111).

Ris. 111. Fackföreningar/Alias

Gå till bokmärke Beställa och ange att frågeresultatet ska sorteras i fallande ordning för fältvärdet Inkomst. Skapandet av förfrågan är klar, klicka på knappen " OK". Titta på frågetexten som genereras av konstruktorn.

Gå till bokmärke Resurser och klicka på " >> " så att konstruktören väljer alla tillgängliga resurser för att beräkna totalsummorna. I ditt fall är detta den enda resursen Inkomst(Fig. 112).

Ris. 112. Datasammansättningsschemaresurser

Gå till bokmärke alternativ(Fig. 113).

Ris. 113. Alternativ för datasammansättning

På den här fliken ser du tre alternativ: Början av perioden, Slutperiod Och Typnomenklatur. Den första parametern är början på totalberäkningsperioden, den andra är slutet på perioden. Som ett resultat kommer källtabellen endast att innehålla de omsättningar som beräknats under den överförda perioden.

För parameter Början av perioden ställ in titeln som ska visas för användaren − start datum.

Här ska du alltid komma ihåg att om du passerar ett datum som dessa parametrar, så innehåller datumet även tiden till närmaste sekund.

Anta att det är känt i förväg att användaren inte kommer att vara intresserad av rapportens resultat under de angivna perioderna med en noggrannhet på upp till en sekund. I det här fallet bör två funktioner beaktas.

Först måste användaren befrias från behovet av att ange tidpunkten när han anger ett datum. För att göra detta, ändra den befintliga typdeklarationen för parametern Början av perioden. Dubbelklicka i en cell Tillgängliga typer, motsvarande parametern Början av perioden, tryck på väljarknappen " " och längst ned i fönstret för redigering av datatyp, ställ in Datumsammansättning till mening datum(Fig. 114).

Klick " OK".

Den andra funktionen är att standardtiden i datumet är 00:00:00. Därför, om användaren ställer in rapportperioden från 10/01/2009 till 10/31/2009, kommer registersummorna att beräknas från början av dagen 10/01/2009 00:00:00 till början av dagen 2009-10-31 00:00:00. Data för den 31:a dagen, förutom början av dagen, kommer alltså inte att inkluderas i beräkningen, vilket kommer att överraska användaren mycket. För att eliminera denna situation, lägg till en annan parameter där användaren anger slutdatumet. Parametervärde Slutperiod kommer att beräknas automatiskt så att den indikerar slutet på dagen för det datum som användaren angett. Därför för parametern Slutperiod sätta flaggan Tillgänglighetsbegränsning.

Ris. 114. Redigera sammansättningen av datumet

Använd kommandofältsknappen för att lägga till ny parameter benämnt Slutdatum (Fig. 115).

Ris. 115. Lägger till EndDate-parameter

För denna parameter kommer plattformen automatiskt att generera en rubrik − utgångsdatum. Lämna det oförändrat. Ställ in parametervärdestypen − datum. I det här fallet, vad gäller parametern Början av perioden, ange sammansättningen av datumet - datum.

Observera att parametern du lagt till som standard är tillgänglig för användaren (tillgänglighetsbegränsningen i den sista kolumnen tas bort).

Gå till parameter Slutperiod. För det har systemet ställt in flaggan för tillgänglighetsbegränsning. Avmarkera inte den, eftersom värdet på denna parameter kommer att beräknas baserat på värdet inställt av användaren för parameter Utgångsdatum.

För att ställa in formeln med vilken parametervärdet ska beräknas Slutperiod, använd uttrycksspråket för datakompositionssystemet. Den innehåller funktionen EndPeriod(), vilket gör att du kan få datumet som motsvarar slutet av en period, till exempel den angivna dagen.

I en cell Uttryck ställ in parametern Slutperiod följande uttryck:

Som ett resultat av ovanstående åtgärder kommer layoutparametrarna att se ut så här (bild 116):

Ris. 116. Layoutsystemalternativ

Ställ slutligen in parametern Typnomenklatur. Eftersom rapporten endast ska visa intäkterna från försäljning av tjänster, värdet på parametern Typnomenklatur användaren ska inte ändra sig. Den måste ställas in direkt i layouten som . Parameterbegränsningsflagga Typnomenklatur plattformen har ställt in det som standard, så du behöver bara ange önskat enumvärde Artnomenklatur i en cell Menande, motsvarande parametern Typnomenklatur(Fig. 117).

Ris. 117. Inställning av värdet för parametern Nomenclature Type

Fortsätt till bildandet av rapportstrukturen. Bokmärke inställningar lägg till en gruppering och återigen ange inte grupperingsfältet. Bokmärke Valda fält ange fälten Service Och Inkomst(Fig. 118).

Gå sedan till bokmärke Andra inställningar och ställ in rubriken på rapporten - Servicebetyg(Fig. 119).

Ris. 119. Ange rapportens titel

Kör 1C:Enterprise i felsökningsläge.

Välj rapport Servicebetyg, men innan du klickar på " Form", öppen inställningar och på bokmärket Dataalternativ ange rapportperioden från 2004-01-03 till 2004-04-30 (Fig. 120). Om datumen för skapande av dina dokument skiljer sig från de som anges i exemplet, bör rapportperioden ställas in på ett annat sätt.

Ris. 120. Rapportinställningar

Klick " OK" och generera en rapport. Resultatet kommer att se ut så här (Fig. 121):

Ris. 121. Resultat av rapportens genomförande

Ändra nu slutdatumet till 2004-03-31. Data för 31 mars ingår i rapporten (bild 122).

Ris. 122. Resultatet av rapportens utförande

3.12.3. Skapande av rapporten "Mästarnas intäkter"

Rapportera Masters intäkter kommer att innehålla information om vilka intäkter som erhölls av Master LLC på grund av var och en av mästarnas arbete, med detaljer för alla dagar under den valda perioden och en uppdelning för kunder som betjänades på var och en av dagarna. Med den här rapporten som exempel kommer du att lära dig hur du bygger grupperingar på flera nivåer i en fråga och hur du kringgår alla datum under en vald period.

Skapa nytt objekt konfiguration Rapportera. namnge det RevenueMasters och kör huvuddatasammansättningsschemakonstruktören.

Lägg till Datauppsättning - Fråga(DataSet1) och klicka på " Begär konstruktör Välj den virtuella tabellen för ackumuleringsregistret Försäljning, omsättning.

Ställ in ett av alternativen för denna virtuella tabell − Periodicitet. För att göra detta, gå till fältet tabeller och tryck på knappen "" (Fig. 123).

Ris. 123. Ändra parametrarna för en virtuell tabell

Ställ in parametervärdet i parameterfönstret som öppnas Periodicitet - Dag(Fig. 124). Tryck på knappen " OK".

Ris. 124. Virtuella tabellalternativ

Välj sedan följande fält från tabellen:

· Försäljningsomsättning Master;

· Försäljningsomsättningar.Period;

· Försäljningsomsättning Kund;

· Försäljningsomsättning Intäktsomsättning (Fig. 125).

Ris. 125. Valda fält

Gå nu till bokmärke Fackföreningar/Alias och ange ett alias Inkomst för fältet FörsäljningOmsättning.IntäktOmsättning(Fig. 126).

Ris. 126. Fackföreningar/Alias

Bokmärke gruppering definiera att gruppering kommer att göras efter fält Bemästra, Period Och Klient och fältvärden Intäkter Omsättning kommer att summeras (bild 127).

Ris. 127. Grupperingsfält

Bokmärke Beställa ange att frågeresultatet kommer att sorteras i stigande ordning för fältvärdet Period. Klick " OK". Tänk på frågetexten som genereras av konstruktorn.

Gå nu vidare till att redigera datasammansättningsschemat. Bokmärke Resurser klick " >> " och se till att konstruktören har valt den enda tillgängliga resursen - Inkomst.

Bokmärke alternativ Följ samma steg som när du skapade den föregående rapporten.

För parameter Början av perioden ange en titel start datum. I fält Tillgängliga typer ställ in datumets sammansättning - datum.

För parameter Slutperiod ställ in ett uttryck:

EndPeriod(&Slutdatum, "Dag")

I fält Begränsning tillgänglighet ställ in flaggan för tillgänglighetsbegränsning.

Lägg slutligen till ytterligare en parameter − Utgångsdatum, ställ in dess typ som datum, är sammansättningen av datumet datum.

Som ett resultat av ovanstående åtgärder kommer datasammansättningsparametrarna att se ut så här (Fig. 128):

Ris. 128. Datakompositionsalternativ

Nu måste vi skapa rapportstrukturen. Bokmärke inställningar skapa två kapslade grupperingar sekventiellt: toppnivå - efter fält Bemästra, kapslade i det - efter fält Period. Lägg sedan till ytterligare en gruppering kapslad i grupperingen efter fält Period, – Detaljposter(utan att ange grupperingsfältet) (Fig. 129).

Ris. 129. Rapportens struktur

När du är på nivån för den globala rapporten går du till fliken Valda fält och lägg till fält i listan Klient Och Inkomst.

Slutligen, från den globala rapportnivån, gå till fliken Andra inställningar och ändra följande inställningar. För parameter satt värde Separat och endast i resultaten; för parameter ställ in värdet Start och för parametern rubrik ställ in värdet Masters intäkter(Fig. 130).

Ris. 130. Inställning av utmatningen av totalsummor till början

Kör 1C:Enterprise i felsökningsläge och titta på resultatet av Masters Revenue-rapporten för perioden 03/01/2004 till 04/30/2004 (Fig. 131).

Ris. 131. Resultat av rapportens genomförande

Om du kommer ihåg bör den här rapporten visa data med detaljer för alla dagar under den valda perioden. Nu visas bara de dagar för vilka det finns poster som inte är noll i ackumuleringsregistertabellen. Därför är det nu nödvändigt att ändra rapportinställningarna på ett sådant sätt att varje datum från perioden för vilken rapporten genererades faller in i rapporten.

För att göra detta, återgå till konfiguratorläget och utför mer finjustering rapportstrukturer. Hittills har alla strukturinställningar som du har gjort gällt för hela rapporten som helhet. Men datasammansättningssystemet låter dig också anpassa varje element i strukturen individuellt.

Du måste ändra grupperingsinställningen Period. För att gå till inställningarna för denna speciella gruppering, i strukturfältet, placera markören på denna gruppering och klicka sedan på " Period" i kommandopanelen (bild 132).

Ris. 132. Grupperingsinställningar Period

De tillgängliga inställningarna för denna gruppering kommer att visas längst ner i formuläret.

Gå till bokmärke Gruppera fält. För fält Period Installera Tilläggstyp - Dag(Fig. 133).

Ris. 133. Inställning av periodens komplementtyp

Genom att göra det har du angett att för denna gruppering kommer befintliga poster med ett resursvärde som inte är noll att kompletteras med poster för var och en av dagarna.

Därefter bör du ange under vilken period ett sådant tillägg ska utföras. I fälten nedan kan du ange start- och slutdatum för denna period. Men att uttryckligen ange datum är inte lämpligt, eftersom användaren kan generera en rapport för en godtycklig period. Det är nödvändigt att tillägg av datum inte görs under någon bestämd period, utan under den period som användaren har valt för hela rapporten.

För att säkerställa exakt detta arbete med rapporten, gå in i redigeringsläget för det första fältet (till exempel genom att dubbelklicka på det) och klicka på knappen "rensa" X". Efter det, genom att klicka på knappen " T", kommer du att kunna välja vilken typ av data som visas i detta fält. Välj Datasammansättningsfält(Fig. 134).

Ris. 134. Välja en datatyp

Klick " OK". Klicka nu på väljknappen i inmatningsfältet " " och markera alternativet i fältvalsfönstret som öppnas Början av perioden(Fig. 135). Klick " OK".

Ris. 135. Fältval

För det andra inmatningsfältet, specificera på samma sätt att periodens slutdatum kommer att erhållas från parametern Utgångsdatum(Fig. 136).

Ris. 136. Grupperingsinställningar Period

Kör 1C:Enterprise i felsökningsläge och kör rapporten Masters intäkter för perioden 20 mars 2004 till 20 april 2004 (bild 137).

Ris. 137. Resultat av rapportens genomförande

3.12.4. Skapa en serviceinventeringsrapport

Rapportera Servicelista kommer att innehålla information om vilka tjänster och till vilket pris LLC "Master" tillhandahåller. På hans exempel kommer du att bekanta dig med möjligheten att få senaste värden från det periodiska registret över information och utdata från hierarkiska kataloger.

Skapa ett nytt konfigurationsobjekt Rapportera. namnge det Servicelista och kör Data Composition Schema Designer. Skapa en ny Datauppsättning - Fråga(DataSet1) och anropa frågekonstruktorn.

Välj uppslagstabellen för objekt (referens). Nomenklatur och en virtuell tabell med informationsregister Priser.SliceLast. För att eliminera tvetydigheten hos namnen i frågan, byt namn på tabellens nomenklatur till SprNomenklatur.

Anropa dialogrutan för att ange parametrar för den virtuella tabellen PriserSliceLast och indikera att perioden kommer att passeras i parametern Rapportdatum(Fig. 138).

Ris. 138. Virtuella tabellalternativ

Välj sedan följande fält från tabellerna:

· SprNomenclature.Parent;

· PriserSliceLast.Price (Fig. 139).

Ris. 139. Valda fält

Gå till bokmärke Anslutningar, släpp flaggan Allt vid registerbordet och ställ in det vid referensbordet.

Bokmärke Betingelser ställ in villkoret för val av ordbokselement Nomenklatur– elementen som ska väljas måste motsvara den artikeltyp som skickas i frågeparametern Typnomenklatur(Fig. 140).

Ris. 140. Villkor för val av element

Bokmärke Fackföreningar/Alias ange att fältet Förälder kommer att ha ett alias Servicegrupp, och fältet Länk - Service(Fig. 141).

Ris. 141. Fackföreningar/Alias

Gå till bokmärke gruppering och ange att grupperingen kommer att göras av fältet SprNomenclature.Prent. Det är inte nödvändigt att ställa in värdena för de sammanfattade fälten (bild 142).

Fig. 142. Gruppera fält

Klick " OK" Titta på texten i begäran.

Fortsätt med att redigera datasammansättningsschemat. Bokmärke Resurser trycka på knappen " >> " välj den enda tillgängliga resursen Pris.

Bokmärke alternativ ställ in parametervärdet Typnomenklatur Hur Enumeration.Types of Nomenclature.Service. Ta dessutom bort tillgänglighetsbegränsningen för parametern Rapportdatum och ge det en titel - Rapportdatum. I fält Tillgängliga typer ställ in datumets sammansättning - datum. För parameter Period, tvärtom, ställ in tillgänglighetsbegränsningen (bild 143).

Ris. 143. Alternativ för layoutschema

Fortsätt till bildandet av rapportstrukturen. Gå till bokmärke inställningar och skapa en grupp för fält Servicegrupp, som anger typen av gruppering Hierarki. Inom denna gruppering skapar du en annan gruppering utan att ange ett gruppfält. Den kommer att innehålla detaljerade rapportposter (Fig. 144).

Ris. 144. Rapportens struktur och markerade områden

Gå till bokmärke Valda fält och ange att fälten Service och Pris kommer att visas i rapporten (Fig. 145).

Ris. 145. Rapportens struktur

Och äntligen satt upp utseende bokmärkesrapport Andra inställningar. Eftersom rapporten bara kommer att vara en lista över tillhandahållna tjänster, där priserna för specifika tjänster är av intresse, visas resursvärden Pris för var och en av grupperingarna och för hela rapporten som helhet är inte vettigt.

För att inaktivera visningen av totaler i rapporten, ställ in parametern Placering av totalsummor vertikalt till mening Nej.

Gå sedan till de specifika grupperingsinställningarna − Servicegrupp. För parameter Plats för totaler denna gruppering, ange värdet Nej. Återgå till inställningarna för hela rapporten som helhet.

För parameter Placering av grupperingsfält ange ett värde Separat och endast i resultaten(så rapporten blir bättre "läst"). Ange slutligen rubriken på rapporten - Servicelista.

Kör 1C:Enterprise i felsökningsläge och öppna först det periodiska registret Priser.

Lägg till ytterligare ett värde för tjänsten Diagnostik: det nya priset för tjänsten den 01.04.2004 är 350 (Fig. 146). Detta kommer att testa rapporten.

Ris. 146. Anteckningar i registret "Priser"

Kör nu rapporten Servicelista per den 31 mars 2004 (fig. 147).

Ris. 147. Resultat av rapportens genomförande

Din rapport återspeglar korrekt priset för diagnostiktjänsten den 31/03/2004 - 200 rubel.

Kör rapporten igen, men nu för ett annat datum - 04/01/2004 (Fig. 148).

Ris. 148. Resultat av rapportens genomförande

Som du kan se visas det nya priset för diagnostiktjänsten - 350 rubel.

Rapportera Kundbetyg kommer att visa vad som är intäkterna från tillhandahållandet av tjänster till var och en av kunderna under hela driftperioden för Master LLC. I dess exempel kommer möjligheten att använda ett diagram för att visa resultatet av en fråga att demonstreras.

Diagram är ett kontrollelement avsett för placering i tabeller och former av diagram och grafer av olika typer av 1C:Enterprise-systemet.

Logiskt diagramär samlingen av poäng, serier och serievärden vid punkten(Fig. 149).

Som regel används ögonblick eller objekt för vilka du får egenskapernas värden som poäng, och egenskaper som du är intresserad av värden för används som serier.

Till exempel kommer ett diagram över försäljning av typer av varor per månader att bestå av poäng - månader, serier - typer av varor och värden - försäljningsomsättning.

Diagrammet som objekt för det inbyggda språket har tre områden som låter dig styra utformningen av diagrammet: konstruktionsområdet, titelområdet och legendområdet (bild 150).

Diagrammet kan infogas i rapportstrukturen som ett separat element. När du skapar en rapport Kundbetyg diagrammet kommer att användas i inställningsstrukturen för datasammansättningsschemat.

Ris. 149. Diagramexempel

Ris. 150. Kartområden

Skapa ett nytt konfigurationsobjekt i konfiguratorn Rapportera. namnge det RatingClientsöppnar du dess huvudsakliga datalayoutschema.

Skapa datamängd - fråga(DataSet1) och anropa frågekonstruktorn. Välj virtuell ackumuleringsregistertabell Försäljning, omsättning och från det ett fält - Försäljning Omsättning.Kund.

Lägg sedan till ett nytt fält (ikon Lägg till i kommandofältet ovanför listan med fält) och använd uttrycksbyggaren, definiera det som skillnaden mellan intäkt och kostnad (Fig. 151).

Ris. 151. Redaktör för anpassade fältuttryck

Som ett resultat kommer listan över valda fält att se ut så här (bild 152):

Ris. 152. Valda fält

Bokmärke Fackföreningar/Alias ange att det beräknade fältet kommer att ha ett alias Inkomst(Fig. 153).

Ris. 153. Fackföreningar/Alias

Bokmärke Beställa indikera att resultatraderna ska sorteras i fallande ordning på fältvärdet Inkomst. Klick " OK" och se vilken text frågekonstruktorn genererade.

Gå till bokmärke Resurser och lägg till ett fält Inkomst till layoutresurserna. Gå sedan till bokmärke inställningar för att skapa rapportens struktur.

Till skillnad från alla tidigare rapporter, vars struktur innehöll grupperingar, lägg denna gång till ett diagram till rapportstrukturen (fig. 154).

Ris. 154. Rapportens struktur

Lägg till gruppering efter fält till diagrampunkter Klient. Lämna diagramserien oförändrad.

Gå nu till bokmärke Valda fält och välj fält Inkomst för utmatning till rapporten. Rapportstrukturen bör ha följande form (bild 155):

Ris. 155. Rapportstruktur och diagraminställningar

Bokmärke Andra inställningar ange rubriken på rapporten - Kundbetyg, och välj även diagramtypen − Cirkulär volymetrisk.

Kör 1C:Enterprise i felsökningsläge och öppna rapporten Kundbetyg(Fig. 156).

Ris. 156. Cirkelvolymdiagram i rapporten

Observera att när du håller muspekaren över en sektor av diagrammet visas ett verktygstips.

Öppna rapportinställningarna och ändra diagramtypen till Mätning. Generera rapporten igen (bild 157).

Ris. 157. Mätdiagram i rapporten

3.12.6. Generera en allmän rapport

Med hjälp av exemplet att skapa en universell rapport kommer du att lära dig hur datasammansättningssystemet kan interagera med en pivottabell.

Skapa ett nytt konfigurationsobjekt i konfiguratorn Rapportera. Ge det ett namn Universell. Öppna dess huvudsakliga datakompositionsschema och skapa ett nytt datamängd - fråga(Datauppsättning1).

Anrop frågekonstruktorn och välj den virtuella tabellen för ackumuleringsregistret Försäljning, omsättning. Välj alla fält från den här tabellen (bild 158).

Ris. 158. Valda fält

På fliken Gruppering använder du " >> " välj alla fält som är tillgängliga för gruppering och lägg till alla resurser till sammanfattade fält (Fig. 159).

Ris. 159. Gruppera fält och resurser

Klick " OK" och titta på texten som genereras av frågekonstruktorn.

Avsluta skapa datalayoutschemat genom att göra följande på layoutdesignfliken Resurser välj alla tillgängliga resurser (klicka på " >> "). Detta slutför arbetet med datakompositionsschemat, stäng det och återgå till fönstret för redigering av konfigurationsobjektet Rapport Universell.

Gå till bokmärke Blanketter och skapa rapportens huvudformulär genom att klicka på vyknappen bredvid tabellfältet Huvudrapportformulär. Eftersom det inte finns något huvudformulär ännu kommer systemet att anropa formulärdesignern. Acceptera vad systemet föreslår som standard och tryck omedelbart på knappen " Redo".

Huvudformen för rapporten öppnas på skärmen. Som du kan se har systemet redan infogat kalkylarkets dokumentfält åt dig och namngett det Resultat(Fig. 160).

Ris. 160. Redigera rapportformuläret

Du måste infoga en pivottabell i detta fält. Men kalkylbladsdokumentfältceller Resultatär för närvarande inne Titta enbart. För att infoga en pivottabell måste du stänga av det här läget, så klicka på kalkylbladets dokumentfält och gör Tabell –> Visa –> Endast vy. Nu kan du redigera tabellfältet.

Placera markören i den övre vänstra cellen i kalkylarkets dokumentfält och kör Tabell –> Inbäddade tabeller –> Infoga pivottabell. Systemet lägger till en pivottabell i tabellfältet och öppnar fältfönstret pivottabell(Fig. 161).

Ris. 161. Pivottabell

För att visa data i en pivottabell måste du skriva flera rader i formulärmodulen. Öppna rapportformulärmodulen och lägg till variabeln du behöver i texten:

Variabel källa för pivottabell;

Skapa sedan händelsehanteraren för rapportformuläret Vid öppning(I egenskapsfönstret i formuläret Generic Report) och lägg till följande text:

Procedur OnOpen()

PivotTableSource = NewDataCompositionPivotTableDataSource;

PivotTableSource.SetSchema(DataCompositionSchema);

FormElements.Result.EmbeddedTables.PivotTable1.DataSource =

Pivottabellkälla;

Pivottabell Source.SetSettings(SettingsComposer.Settings);

Slutprocedur

Med den här texten ställer du in datasammansättningsschemat för pivottabellen som en datakälla och ställer in inställningarna för inställningsbyggaren för den.

Kör 1C:Enterprise i felsökningsläge och öppna rapporten Universell. Ett rapportformulär och ett fönster för val av fält i pivottabellen visas på skärmen (fig. 162).

Ris. 162. Rapport Universal

Sätt värdet på resursen Intäkter Omsättning till Dataområde, dimension Nomenklatur– till området Rader och dimensionen Bemästra– i högtalarområdet. Rapporten kommer att ha följande form (bild 163):

Ris. 163. Resultatet av rapportens utförande

Expandera nu gruppen i fönstret för val av pivottabellfält Nomenklatur och lägg till värdet (Ingen hierarki) till raderna (i rullgardinsmenyn i fönstret "Pivottabellfält", välj Passa till linjer), och mätningen Klient lägg till i kolumner (välj i rullgardinsmenyn i fönstret "Pivottabellfält". Placera i kolumner). Rapporten kommer att ändra utseende (bild 164).

Ris. 164. Resultatet av rapportens utförande

Med hjälp av data från datasammansättningsschemat gav du alltså användaren en alternativ möjlighet att självständigt generera en rapport om registret Rendered Services.

3.12.7. Generera en Generic 2-rapport

Med hjälp av exemplet att skapa en andra universell rapport kommer du att lära dig hur du direkt styr layoutsystemets inställningar och genererar layouter baserade på standarddesignalternativ.

Skapa ett nytt konfigurationsobjekt Rapportera Med namn Universal 2. Öppna dess huvudsakliga datakompositionsschema, skapa ett nytt datamängd - fråga(DataSet1) och kör frågebyggaren. Välj alla fält från ackumuleringsregistrets virtuella tabell Försäljning, omsättning och klicka på " OK". På fliken Resurser schemadesigner för datasammansättning, klicka på " >> " och se till att systemet hämtade tre resurser: IntäktOmsättning, KvantitetOmsättning Och Kostnad Omsättning.

Bokmärke inställningar skapa en ny grupp Detaljposter(utan att välja grupperingsfältet).

Nu bokmärkt Blanketter fönster för rapportredigering Universal 2 Använd konstruktorn, skapa huvudformen för rapporten och redigera den.

Sträck ut formen och placera två etiketter med namn i fält Och Beställa och med rubriker Fält: Och Beställa: respektive (Fig. 165).

Under inskriptionen fält CommandPanelFields. Under inskriptionen Beställa placera ett kommandofält med namnet CommandPanelOrder. Ordna tabellfälten med namnen under kommandopanelerna Tabellfält Och TabellFieldOrder.(Fig. 166). I egenskapsfönstret för kommandopanelen CommandPanelFields sätta flaggan AutoComplete Och ActionSource - TableFieldField. I egenskapsfönstret för kommandopanelen CommandPanelOrder sätta flaggan AutoComplete Och ActionSource - TableFieldOrder.

Ris. 165. Redigera rapportformuläret

Ris. 166. Rapportformulär Universal2

Nu till tabellfältet Tabellfält ställ in datakällan som ReportObject.SettingsComposer.Settings.Selection(Fig. 167).

Ris. 167. Ställ in datakällan för tabellfältet

Samma som tabellfält TabellFieldOrder ange datakälla ReportObject.SettingsComposer.Settings.Order.

Efter att ha utfört de beskrivna åtgärderna har du kopplat kontrollerna i formuläret till inställningarna för rapportlayoutsystemet, - Val Och Beställa. Val låter dig hantera listan över fält som kommer att inkluderas i rapportresultatet, och Beställa ställer in utgångsordningen för resultatraderna. Kommandopaneler kommer att behövas av användaren för att ställa in värdena för dessa fält. Använder kommandoradens egenskaper Autoslutförande Och Åtgärdskälla, erhölls automatisk generering av kommandon baserat på typen av data som finns i vart och ett av tabellfälten.

1C:Enterprise 8-systemet har en liten uppsättning färdiga designlayouter för användning av datasammansättningssystemet. De finns i objektet. LayoutbibliotekDesignerLayoutdata.

Sätt en annan inskription med namnet Dekor och titel Dekor:, och till höger om den placera en urvalsruta med namnet ChoiceFieldDecoration(Fig. 168) utan signatur.

Ris. 168. Redigera rapportformuläret

Öppna fönstret i egenskaperna för valfältet Vallistrader och fyll den med layoutnamn från d(se figur 169).

Ris. 169. Fylla i värdelistan i det valda fältet

Skapa en hanterare om du vill att markeringsrutan ska ändra den tillämpade layoutsystemets layout När det ändras urvalsfält:

ProcedureSelectionFieldDesignOnChange(Element)

OutputParameters = LinkerSettings.Settings.OutputParameters;

ParameterLayoutLayout = OutputParameters.FindParameterValue(New

DataCompositionParameter("DesignLayout"));

ParameterDesignLayout.Use = true;

ParameterDesignLayout.Value = ChoiceFieldDesign;

Slutprocedur

Med denna text för parametern datasammansättning Layout design du anger namnet på layouten som rapporten ska formateras med och ställer in flaggan för att använda layoutlayouten.

Kör 1C:Enterprise i felsökningsläge och öppna rapporten Universal 2.

Lägg till följande fält i de valda fälten:

· Mästare;

· Nomenklatur;

· Intäkter Omsättning.

Ställ in sorteringsordningen:

· Mästare stigande;

· Nomenklatur. Typ av nomenklatur i fallande ordning;

· Nomenklatur i stigande ordning.

Välj till exempel en design Grön och klicka på " Form". Resultatet kommer att se ut så här (bild 170):

Ris. 170. Resultat av rapportens genomförande

Ändra nu villkoren för att generera rapporten. Välj fält Kund, nomenklatur Och Intäkter Omsättning. Sorteringsordningen kommer att vara i stigande ordning för fältvärdet Klient, och designalternativet - Hav. Kör rapporten (Fig. 171).

Ris. 171. Resultat av rapportens genomförande


3.13. Optimering av dokumentet "Provision of Services"

Låt oss anta att ledningen för OOO "Master" har fattat ett slutgiltigt beslut om förfarandet för att beräkna kostnaden för material som används i processen att tillhandahålla tjänster. Den nuvarande kostnaden för materialet kommer nämligen att bestämmas som en kvot av den totala kostnaden för resten av detta material och dess återstående kvantitet i lager.

Dessutom låter 1C:Enterprise 8.1-verktyg dig styra hastigheten på dokumentposteringsproceduren genom att använda frågemekanismen.

Alltså dokumentoptimering RenderingServices, tjänar två syften:

Fastställande av kostnaden för förbrukningsvaror när du utför ett dokument;

Öka hastigheten på dokumentbehandlingsprocessen.

Ta bort i dokument RenderingServices rekvisita i tabellform Pris, som inte längre behövs. Ta även bort motsvarande kolumn från tabellfältet som finns i dokumentformuläret RenderingServices.

Ta sedan bort innehållet i händelsehanteraren helt Bearbetning i dokumentmodulen RenderingServices och skapa en blankett av proceduren i den. Texten i begäran som körs i onlineexekveringsläget (dvs dagens datum och tid) kommer att skilja sig från den fråga som körs i icke-realtidsinlägg (d.v.s. "backdating"). Därför måste bildningen av förfrågningstexten inkluderas i villkoret If ... Annars ... EndIf:

Request = Ny begäran;

Om Läge = Dokumentbokföringsläge Drift då

Request.Text =

Annat

Request.Text =

EndIf;

Skapa först en fråga som kommer att köras när dokumentet läggs upp online. Värdet på variabeln Request.Text kommer att genereras automatiskt. För att göra detta, placera markören före semikolon, öppna snabbmenyn genom att trycka på höger musknapp och välj objektet Begär konstruktör. Gå med på att skapa en ny förfrågan. Dialogrutan Query Builder visas på skärmen. Öppna bordet Listnomenklatur tabelldelen av dokumentet RenderingServices och välj fält från den:

· Nomenklatur;

· Kvantitet;

· Nomenklatur. Typ av nomenklatur;

Dessa fält kommer att behövas för att ställa in dimensionsvärdena för registren och deras resurser. Dessutom fältet Typnomenklatur du måste analysera vad nomenklaturen som anges i dokumentet är: ett material eller en tjänst (bild 172).

Ris. 172. Valda fält

För att ange resursvärden Pris register Kostnad för material Och Försäljning du måste beräkna den aktuella kostnaden för artikeln som kvoten av den återstående kostnaden för detta material och dess återstående kvantitet.

Lägg därför till ytterligare två tabeller till listan över valda tabeller (bild 173).

Ackumuleringsregister.Rester av material.Rester.

Ris. 173. Utvalda tabeller

Dessa virtuella tabeller måste ha samma inställningar. Välj först den virtuella tabellen ResterMaterialRester, ring upp snabbmenyn genom att trycka på höger musknapp och välj objektet Virtuella bordsalternativ. Parametrarna kommer att inkludera den tidpunkt då resten av dessa register ska tas emot och villkoret för att ta emot data.

Villkoret för att erhålla data anger att saldot endast ska tas emot för de poster av posten som finns i det bokförda dokumentet (innan begäran utförs måste en lista över alla poster av posten som finns i det bokförda dokumentet skickas till Document Item List parameter) - fig. 174.

Ris. 174. Virtuella tabellalternativ

Ställ in samma parametrar för den andra virtuella tabellen Materialkostnad. Välj sedan fälten Cost Remaining och Quantity Remaining från dessa virtuella tabeller (Fig. 175).

Ris. 175. Valda fält

Välj den virtuella ackumuleringstabellen igen ResterMaterialRester och byt namn på den till Återstående material som finns kvar på lagret(Fig. 176).

Ris. 176. Utvalda tabeller

För denna virtuella tabell, ange även parametern Moment of Time, och i villkoret skriv att materialet måste finnas i artikellistan och lagret måste vara lika med lagret som anges i dokumentet (Fig. 177).

Ris. 177. Tabellparametrar

Välj nu fältet QuantityRemainder från denna virtuella tabell (Fig. 178).

Ris. 178. Valda fält

Detta slutför bildandet av listan över valda fält, och du kan fortsätta med att ställa in länkvillkoren mellan de valda tabellerna. För att göra detta, gå till bokmärket Anslutningar. Var och en av de virtuella tabellerna måste vara kopplade till dokumenttabellen på ett sådant sätt att för alla poster i dokumenttabellen måste befintliga poster för den virtuella tabellen väljas, och nomenklaturen i dokumenttabellen måste vara lika med materialet från den virtuella tabellen (fig. 179, a-b).

Ris. 179a. Utvalda bord

Ris. 179b. Relationsförhållanden mellan tabeller

Gå nu till bokmärke Dessutom och sätt flaggan För förändring. Flagga För förändring tillåter dig att i förväg blockera läsningen av specificerad data (som kan läsas av en transaktion av en annan anslutning) redan vid läsning, för att undvika låsningar vid skrivning. Denna sats låter dig ange i frågan vilka tabeller vars lästa data ska ändras.

Eftersom du planerar att skriva ackumuleringsregistren Restermaterial Och Kostnad för material, specificera tabellerna för dessa register som tabeller att ändra (fig. 180).

Ris. 180. Ange tabeller som ska ändras

Gå till bokmärke Betingelser och ställ in villkoret för att endast välja raderna i det aktuella dokumentet från dokumenttabellen (en länk till det kommer att skickas till parametern Länkfråga) - fig. 181. För att göra detta, dubbelklicka på vänster musknapp på fältet Länk.

Ris. 181. Urvalsvillkor från dokumenttabell

Gå till bokmärke Fackföreningar/Alias och ställ in följande fältalias: NomenclatureNomenclatureView –> NomenclatureView; KvantitetRemaining1 –> QuantityInStock.

Klick " OK" och se vilken frågetext konstruktorn genererade (värdet av variabeln Request.Text):

Tillhandahållande av tjänster Lista över nomenklatur.Nomenklatur.Typ av nomenklatur AS Typ av nomenklatur,

Kostnad för material återstår. Kostnad återstår,

Återstående material Återstående i lager Kvantitet Återstående AS Kvantitet i lager

VÄNSTER JOIN Ackumuleringsregister.MaterialCost.Remains(&Time in Time, Material In (&Document Item List)) AS MaterialsCostRemains

Material i (&DocumentNomenclature List)) AS-resterMaterialRester

Programvaruåtergivningstjänster Lista över nomenklatur Nomenklatur =

VÄNSTER GÅ MED

Material i (&DocumentItemList) AND Warehouse = &WarehouseInDocument)

HUR RESTEN AV MATERIAL

Programvaruåtergivningstjänster Lista över nomenklatur Nomenklatur =

Materialrester finns kvar i lagret

FÖR FÖRÄNDRING

Ackumuleringsregister. Materialkostnad. Saldon,

Ackumuleringsregister.RemaindersMaterials.Remains

Texten i begäran för fallet med icke-operativ postering av dokumentet kommer att vara nästan densamma, förutom att den kommer att sakna den tredje vänstra sammanfogningen och följaktligen fältet Antal i lager, därför att I det här fallet finns det inget behov av att kontrollera saldot. Placera markören före semikolonet i avsnittet Annat(se sidan 135) och klistra in följande frågetext:

Tillhandahållande av tjänster Lista över nomenklatur. Nomenklatur,

Tillhandahållande av tjänster Lista över nomenklatur. Kvantitet,

Tillhandahållande av tjänsterNomenclature List.Nomenclature.Nomenclature Typ AS

Typnomenklatur,

Tillhandahållande av tjänster Lista över nomenklatur. Belopp,

ResiduesMaterialsResidues.QuantityRemainder,

CostMaterialsRemainder.CostRemainder

Document.Provision of Services.List of Nomenclature AS Provision of ServicesList of Nomenclature

VÄNSTER GÅ MED

HUR MAN KOSTNADER MATERIAL

Programvaruåtergivningstjänster Lista över nomenklatur Nomenklatur =

Kostnad för materialrester.Material

VÄNSTER GÅ MED

Material i (&DocumentNomenclatureList))

AS RemainsMaterialsRemains

Programvaruåtergivningstjänster Lista över nomenklatur Nomenklatur =

ResterMaterialsRester.Material

FÖR FÖRÄNDRING

Ackumuleringsregister.Rester av material.Rester,

Ackumuleringsregister.Kostnad för material.Rester;

Lägg nu till förfrågningsparametrarna i hanterartexten (lägg bara till de kommandon som är i fetstil på motsvarande rader):

Request = Ny begäran;

Query.SetParameter("WarehouseInDocument", Warehouse);

Om Läge = Dokumentbokföringsläge Drift då

Request.Text =

| Ackumuleringsregister. Materialkostnad. Saldon";

EndIf;

Query.SetParameter("MomentTime", MomentTime());

Query.SetParameter("DocumentNomenclatureList",

ItemList.UnloadColumn("Nomenklatur"));

Grundläggande metoder för att arbeta med vissa objekt i det inbyggda språket "1C:Enterprise"

Inbyggt språk i 1C:Enterprise-systemet

Det inbyggda 1C:Enterprise-språket låter dig algoritmiskt bestämma beteendet hos systemobjekt. Detta gör att användaren kan lösa olika uppgifter att ta med programvara för företagets specifika behov.

Syftet med arbetet: Att studera de grundläggande principerna för att arbeta med objekt i det inbyggda språket "fråga", "tabell", "referensbok".

För att arbeta med förfrågningar måste du skapa funktionsvariabel"Skapa objekt". Attribut eller metoder för ett objekt skrivs med en punkt efter variabelnamnet. Listan över tillgängliga metoder samt frågespråkoperatorer finns i hjälpsystem"1C:Enterprise". Se fig. 1.

Fig.1 Hjälpsystemfönster

Efter att ha skapat en variabel av typen "Request" bör du hänvisa till metoden Springa. Därefter organiseras cyklisk bearbetning av den genererade datamängden, för detta används metoden Gruppering. Till exempel, i följande exempel (Procedur för register över dokument), skapas en begäran, som ett resultat av vilken en datamängd genereras som innehåller följande detaljer för dokumenten "Inkommande kontantorder": dokumentdatum, dokumentnummer, dokumentbelopp , från vem kontanter under en viss period (variabler StartDate, ConDate).

ProcedureDocumentRegister()

Variabel Request, Request Text, Tab, nom;

//Skapa ett objekt av typen Request

Request = CreateObject("Request");

RequestText =

"//((REQUEST(Generera)

|Period från StartDate till ConDate;

|Number = Document.IncomingOrder.DocNumber;

|Date1 = Document.IncomingOrder.DateDoc;

|Total = Document.IncomingOrder.Amount;

|From = Document.IncomingOrder.AcceptedFrom;

|Funktionssumma = Summa(Totalt);

| Grupperingsnummer;

|"//)) BEGÄRAN

// Om det finns ett fel i begäran, avsluta proceduren

Om Request.Execute(QueryText) = 0 Då

Lämna tillbaka;

EndIf;

// Förbered dig på att fylla i utdataformulär med förfrågningsdata

Tab = CreateObject("Tabell");

Tab.SourceTable("Tabell");

// Fyll i "Titel"-fälten

Tab.OutputSection("Titel");

State("Fyller utdatatabellen...");

Tab.Options(0, 0, Tab.TableHeight(), 0);

// Utmatning av det ifyllda formuläret

Nom=0;

Medan Query.Group(1) = 1 loop

//Fyll i fälten

Nom=Nom+1;

Tab.OutputSection("Dokument");

EndCycle;

Tab.DisplaySection("Totalt");

Tab.ViewOnly(1);

Tab.Show("Tabell", "");

Slutprocedur

För att visuellt se förfrågningsdata, a tryckt formulär med hjälp av tabellobjektet. Det vanligaste sättet att fylla i ett kalkylarksdokument är att inkludera avsnitt i det. För detta används det ursprungliga kalkylarksdokumentet, som kan placeras i samma form. Dessutom kan källtabellen finnas både i de allmänna konfigurationstabellerna och i extern fil. Tilldelningen av källdokumentet utförs med objektmetoden "Tabell" - Källtabell. Metod OutputSection låter dig inkludera det valda fragmentet av källtabellen i det genererade kalkylarksdokumentet.

Fig.2. Källtabell

Du kan lära dig mer om kalkylarksredigeraren i metodguiden.

"Katalog" är en aggregerad datatyp, ett verktyg för att arbeta med listor med homogena element. Kataloger kan vara på flera nivåer. Katalogelement kan vara periodiska, dvs. lagra värdet för ett specifikt datum. För kataloger kan du ange underordning till andra kataloger, d.v.s. bilda en-till-många-relationer.

Tillgång till attribut, anrop av katalogmetoder beror på exekveringskontexten mjukvarumodul. Det kan finnas följande alternativ:

1) vi har direkt tillgång till det aktuella elementet i katalogen, om vi till exempel är i form av att redigera elementet i katalogen. Här kan vi direkt komma åt katalogens attribut.

F_name = "Petrov"; där F_name är katalogattributet som anges i konfiguratorn.

2) elementets värde kan erhållas från andra källor, till exempel som ett attribut för något dokument. För att komma åt ett attribut måste du anropa metoden för en sådan variabel med ett värde av typen "Directory".

Antal barn=Doc.Employees.Children;

3) metoden för ett visst element anropas med hjälp av en variabel med en referens till ett objekt av typen "Directory". Ett objekt skapas av en funktion "CreateObject».

Referensmetoder finns också i hjälpsystemet 1C:Enterprise.

Uppdrag för laborationer om tillval

alternativnummer Arbeta med ett objekt Träning
Fråga, tabell Visa information om transaktioner med klienten (välja en klient i dialogläget) för inkommande och utgående fakturor.
Katalog, tabell Visa information om anställda (namn, adress, antal barn)
Katalog, tabell Visa information om anställda (fullständigt namn, adress, land, certifikatnummer i FIU)
Katalog, tabell Visa information från nomenklaturens referensbok (produkt, pris, ursprungsland)
Katalog, tabell Visa information från nomenklaturens referensbok (produkt, måttenhet, momssats)
Fråga, tabell Visa information om alla bokförda fakturor för perioden.
Fråga, tabell Visa information om varorna (ange inkommande fakturor för mottagande och utgående fakturor för konsumtion)

Litteratur

1. Dokumentation för programmet 1C:Enterprise

2. Stukalina E.F. -Verktygslåda. "Grundläggande begrepp och termer mjukvarumiljö"1C:Enterprise". Kalkylbladsredigerare»

| nästa föreläsning ==>

THIS_KEYWORD
<Это конструкция языка>,
<Это конструкция языка>
THIS_FUNCTION(<Это конструкция языка>)

I reglerna som beskriver frågespråket anges språkkonstruktioner inom vinkelparenteser. Nyckelord och funktionsnamn beskrivs med versaler.

Språkkonstruktioner kan innehålla valfria element - nyckelord och så vidare. I reglerna som beskriver frågespråket är valfria element omgivna av hakparenteser "[" och "]":

[THIS_OPTIONAL_WORD] [<Это необязательная конструкция>]

I vissa fall kan ett av flera alternativa element användas i en språkkonstruktion. Sådana element i reglerna listas genom den vertikala stapeln "|":

OR_THIS_WORD | OR_THIS_WORD
<Либо эта конструкция> | <Либо эта конструкция>

Beskrivningar av alla konstruktioner åtföljs av exempel som förklarar hur de används i frågespråket.

Kommentarer på frågespråket

Begärans text kan innehålla kommentarer. En kommentar är en del av en rad som börjar med teckensekvensen // och fortsätter till slutet av raden:

// Detta är en kommentar.

Kommentarer ignoreras när frågan exekveras.

Tvåspråkig presentation av nyckelord

En av de väsentliga egenskaperna hos frågespråket 1C:Enterprise är att, liksom i det inbyggda språket, alla nyckelord har två stavningar: på ryska och engelsk. Längre fram i detta kapitel anges ryska stavningar av nyckelord. Nedan finns en tabell som visar överensstämmelsen mellan ryska och engelska och stavningar av sökord på frågespråk...... (utelämnas)

Huvudsektioner av förfrågningsorganet

Förfrågningstexten kan beskrivas med följande regel:

<Описание запроса>
[<Объединение запросов>]
[<Упорядочивание результатов>]
[AUTO BESTÄLLNING]
[<Описание итогов>]

Som du kan se av den här regeln består förfrågningstexten av flera delar, eller avsnitt:

I avsnitt<Упорядочивание результатов>du kan definiera villkor för ordning av rader i frågeresultatet. Ordning av frågeresultat diskuteras på sidan 324 .

AUTOORDER låter dig aktivera automatisk ordning av rader i frågeresultatet. Detta läge beskrivs på sidan 331.

I avsnitt<Описание итогов>du kan ange vilka summor som ska beräknas i frågan. Det här avsnittet beskrivs på sidan 332.

Begär beskrivning

Som redan nämnts måste förfrågningstexten innehålla en förfråganbeskrivningssektion, som definierar:

Fält som kommer att finnas i frågeresultatet;

Fråga datakällor - källtabeller;

Villkor som påverkar valet av data i en fråga;

Ordningen i vilken frågeresultaten grupperas.

Begäranbeskrivningsavsnittet består av flera sammanhängande meningar:

VÄLJ [VARIOUS] [FIRST<Количество>]
<Список полей выборки>
[FRÅN<Список источников>]
[VAR<Условие отбора>]
[GRUPP AV<Поля группировки>]
[HAR<Условие отбора>]
[FÖR FÖRÄNDRING [<Список таблиц верхнего уровня>]]

Beskrivning av begäran börjar med ett obligatoriskt sökord VÄLJA.

Erbjudande VAR<Условие отбора> låter dig filtrera frågeresultatet. Resultatet inkluderar endast de poster för vilka det angivna villkoret är sant. Regler för beskrivning av urvalsvillkor diskuteras på sidan 315 .

Erbjudande FÖR FÖRÄNDRINGär avsedd att indikera behovet av att låsa data som läses i transaktionen.

Erbjudande GRUPP låter dig beskriva hur frågeresultat grupperas. Gruppering diskuteras i detalj på sidan 316 .

Erbjudande HAR låter dig ställa villkor för grupperingsresultaten. Beskrivs på sidan 318 .

Alla frågeexempel i det här kapitlet inkluderar frågetexten och frågeresultatet. Det antas att begäranstexten skickas som en parameter till Execute-metoden för Request-objektet.

Ge ett exempel nog en enkel begäran, bestående av en enda SELECT-sats och en lista med urvalsfält.

//Det är nödvändigt att visa listan över fraktsedlar i rapporten.

Frågeresultat:

Användning av ordet OLIKA

I många situationer är det önskvärt att samma rader inte upprepas i rapporten.

// Det är nödvändigt att ta reda på vilka motparter
// varorna skickades för perioden.
Välj Document.Invoice.Contractor

Frågeresultat:

Det kan ses att resultatet av frågan har många dubbletter av rader, vilket minskar dess synlighet. För att undvika upprepning bör nyckelordet DIFFERENT anges i frågebeskrivningen.

Välj Diverse Document.Invoice.Contractor

Frågeresultat:

Användning av ordet FÖRST

I vissa fall är det nödvändigt att visa ett begränsat antal rader i en rapport. För att göra detta, i beskrivningen av begäran, ange nyckelordet FÖRST, och efter det - det erforderliga antalet rader.

// Det är nödvändigt att välja de fem dyraste varorna.
// Provtagning bör göras i fallande ordning efter produktpris.
Välj första 5
Katalog. Nomenklatur. Namn,
Directory.Nomenclature.PurchasePrice
Sortera efter

Frågeresultat:

Beskrivning av urvalsfält

Efter det obligatoriska nyckelordet SELECT (och de kvalificerande orden DIFFERENT och FIRST) i frågetexten anges en lista med urvalsfält. Dessa fält kommer att bearbetas när data hämtas i en fråga. Frågeresultatet kommer också att ha fältuppsättningen definierad i denna lista. Exempelfält beskrivs enligt följande regler:

<Описание поля>[ [HUR]<Псевдоним поля>]

<Выражение>[.<Группа полей>]

Listan med urvalsfält består av ett eller flera objekt separerade med kommatecken. Varje<Поле выборки>består av en urvalsfältsbeskrivning och ett valfritt fältalias.

Istället för att lista fält i urvalslistan kan du ange en asterisk "*". Detta kommer att innebära att resultatet av frågan måste innehålla alla fält som finns i källtabellerna - källorna till frågedata som beskrivs i källlistan.

Kommentar! När du anger en asterisk "*" i listan över urvalsfält, inkluderar resultatet inte de virtuella fälten i källtabellerna.

<Описание поля>bestämmer hur fältvärdena ska genereras. I det enklaste fallet är urvalsfältet en länk till källtabellsfältet. Länken kan anges med indikeringen av tabellen som innehåller detta fält, eller utan indikation av själva tabellen. Fältavledning behandlas kl.

I det allmänna fallet kan urvalsfältet inte bara vara en länk till källtabellfältet, utan några<Выражение>. Uttryck diskuteras i detalj på sidan 344.

Frågeresultat kan grupperas med hjälp av aggregerade funktioner som anges som uttryck i urvalsfälten. Gruppering av frågeresultat diskuteras på sidan 316. Aggregatfunktioner beskrivs på sidan 345 .

Varje urvalsfält kan tilldelas ett alias. I framtiden kan den användas för mer bekväm åtkomst till givet fält. Användningen av fältalias diskuteras nedan.

<Группа полей>kan endast anges när markeringsfältet pekar på en kapslad tabell. I det här fallet kan du ange vilka fält som ska bearbetas i urvalet för den kapslade tabellen. Om fältgruppen inte anges kommer alla fält i den kapslade tabellen att bearbetas i urvalet. Åtkomst till kapslade tabeller beskrivs i .

Fältalias i urvalslistan

Om du tilldelar ett alias till ett urvalsfält kan du i framtiden hänvisa till detta fält med dess alias i ORDER BY och TOTAL, såväl som när du arbetar med frågeresultatet. En sådan överklagande kan vara mer bekväm och visuell, och i vissa fall den enda möjliga.

AS-nyckelordet kan föregå fältaliaset. Detta ord kanske inte specificeras alls, men om det specificeras ökar frågetextens synlighet och läsbarhet.

Fältalias definieras enligt reglerna för tilldelning av variabelidentifierare. Alias ​​i begäran kan inte matcha.

Att tilldela alias till fält påverkar inte i sig valet av data i en fråga.

// Måste väljas från produktkatalogen
// produktnamn och gruppnamn.
Välja
Katalog. Nomenklatur. Namn som varor,
Katalog. Nomenclature.Parent.Name Som grupp
från
Directory.Nomenklatur

Frågeresultat:

Observera att fälten i fältfrågeresultatet heter "Artikel" och "Grupp". Om fältaliasen inte angavs skulle fälten i frågeresultatet få namnet "Name" och "Name1" (namnen på fälten i frågeresultatet kan inte vara desamma, så "1" läggs automatiskt till i namnet på det andra fältet), vilket är mycket mindre uppenbart.

Kapslade tabeller i listan med urvalsfält

Ett fält i urvalslistan kan referera till en kapslad tabell i frågans datakälla. I det här fallet kommer frågeresultatfältet att vara av typen QueryResult, det vill säga det kommer att innehålla ett kapslat frågeresultat som genereras baserat på en kapslad källtabell.

Som standard inkluderar det kapslade resultatet alla fält i den kapslade tabellen - datakällan. Det är möjligt att uttryckligen definiera en grupp av fält som måste finnas i ett kapslat frågeresultat. Den kapslade resultatfältgruppen beskrivs enligt följande regel:

(<Список вложенных полей>) | *

<Вложенное поле [, <Вложенное поле>[, ...] ]

<Список вложенных полей>består av ett eller flera element separerade med kommatecken. Om listan består av ett enskilt element behöver den inte stå inom parentes.

Istället för att lista kapslade fält kan du ange en asterisk "*"; detta innebär att det kapslade frågeresultatet måste innehålla alla fält som finns i den kapslade tabellen.

<Выражение>[[HUR]<Псевдоним поля>]

<Вложенное поле>kan representera något uttryck. I det enklaste fallet<Выражение>är en referens till ett kapslat tabellfält. Uttryck diskuteras i detalj på sidan 344.

Varje kapslat fält kan tilldelas ett alias. Ytterligare<Псевдоним поля>kan användas för att mer bekvämt hänvisa till detta fält, liknande urvalslistans fältalias - se avsnittet "Fältalias i urvalslistan" på

Alias ​​kan tilldelas kapslade fält oavsett om ett alias ges till den kapslade tabellen själv.

//Det är nödvändigt att visa specifikationen för fraktsedlar i rapporten,
// Dokumentera sig själv, nomenklatur och kvantitet.
Välja

Document.Invoice.Composition.(Nomenklatur som varor, kvantitet)

Frågeresultat:

Länk Förening
Produkt Kvantitet
Jeans för kvinnor 4
Jeans för kvinnor 5
Skjorta "Cowgirl" 5
Utgiftsfaktura 00005 daterad 24 februari 2002 0:00:00 Jeans för kvinnor 1
Jeans för kvinnor 1
Moidodyr "Akvarium" 5
Sänka "Lily" 8
Mixer "Ultra" 10

Observera att fältet "Composition" i frågeresultatet är en kapslad tabell som har fälten "Nomenklatur" och "Quantity".

//Visa alla fält i tabelldelen av fakturan i rapporten.
Välja
Document.Invoice.Link,
Document.Invoice.Composition.*

Syftet med FROM-satsen är att ange en lista med källtabeller - datakällor som används i denna SELECT-sats.

Det bör noteras att FROM-satsen i frågespråket är valfri. Den kan utelämnas om datakällorna är helt kvalificerade i beskrivningen av urvalsfältslistan som finns i SELECT-satsen. Observera att ett antal av exemplen i de föregående avsnitten inte innehöll en FROM-sats.

Nyckelordet FRÅN följs av en lista med källor. I allmänhet beskrivs listan över källor av följande uppsättning regler:

<Источник>[, <Источник>[, ...]]

Frågedatakällorna listas i listan över källor separerade med kommatecken. Varje<Источник>källförteckningen måste innehålla en beskrivning av källan; dessutom kan det specificeras<Перечень соединений>- regler för att koppla en källa till andra källor. Anslutningsspecifikationer beskrivs.

<Описание источника> [ <Перечень соединений> ]

Om infobastabellen är datakällan,<Описание источника>innehåller<Имя таблицы>.

<Таблица>[ [HUR]<Псевдоним источника>]

Om källtabellen är virtuell kan man ange<Параметры>dess bildning. Parametrarna för virtuella tabeller beskrivs i detalj i avsnittet "Frågedatakällor".

<Имя таблицы> [(<Параметры>)] | <Описание запроса>

En underfråga kan också fungera som en frågedatakälla; i detta fall innehåller källbeskrivningen<Описание запроса>. Användningen av kapslade frågor beskrivs på.

I beskrivningen av datakällan kan dess alias också tilldelas. Ytterligare<Псевдоним источника>kan användas för mer bekväm åtkomst till denna källa. Användningen av datakällans alias täcks av .

Anslutningsspecifikationer

När flera källor är definierade i källlistan görs ett urval från den andra källtabellen för varje post från den första källtabellen, och så vidare. Sålunda, som ett resultat av frågan, bildas alla möjliga kombinationer av alla poster från alla specificerade källor.

Frågeresultat:

motpart Bank
Leverantörer JSCB Investment Bank
Leverantörer JSCB PromStroyBank
Stickfabrik "Zarya" JSCB Investment Bank
Stickfabrik "Zarya" JSCB PromStroyBank
Jeansfabrik JSCB Investment Bank
Jeansfabrik JSCB PromStroyBank
Köpare JSCB Investment Bank
Köpare JSCB PromStroyBank
Klädmässa JSCB Investment Bank
Klädmässa JSCB PromStroyBank
Handelshuset "Budenovsky" JSCB Investment Bank
Handelshuset "Budenovsky" JSCB PromStroyBank
Paviljong 45 på grossistmarknaden JSCB Investment Bank
Paviljong 45 på grossistmarknaden JSCB PromStroyBank
Bayern - porslin JSCB Investment Bank
Bayern - porslin JSCB PromStroyBank
Jeansfabrik JSCB Investment Bank
Jeansfabrik JSCB PromStroyBank
JSCB PromStroyBank JSCB Investment Bank
JSCB PromStroyBank JSCB PromStroyBank

Frågeresultatet innehåller kombinationer av alla motparter hos alla banker. Som regel är ett sådant resultat i sig inte vettigt. Vanligtvis måste kombinationer av poster från olika källtabeller begränsas av vissa villkor. Det är möjligt i frågespråket att beskriva en sådan kombination av källor genom att specificera själva källorna och ange villkoren under vilka kombinationer av poster från dessa källor krävs för att inkluderas i frågeresultatet.

Anslutningar är av flera typer, de beskrivs av följande regler:

<Соединение> [<Перечень соединений>]

I allmänhet<Перечень соединений>kan innehålla och beskriva inte bara en koppling (av två källor), utan också flera kopplingar av flera källor samtidigt.

[INTERN] ANSLUTNING<Описание источника>FÖRBI<Условие отбора> |

VÄNSTER [YTTRE] GÅ MED<Описание источника>FÖRBI<Условие отбора> |

HÖGER [YTTRE] GÅ MED<Описание источника>FÖRBI<Условие отбора> |

FULLSTÄNDIG (EXTERN] GÅ MED<Описание источника>FÖRBI<Условие отбора>

<Условие отбора>innehåller villkor enligt vilka det är nödvändigt att kombinera data från källtabeller - frågekällor i urvalet. Regler för att beskriva villkor i frågespråket diskuteras på sidan 357.

Nyckelorden LEFT, RIGHT och FULL anger typen av sammanfogningen. Orden INTERN eller EXTERN kan överhuvudtaget utelämnas, de ökar frågetextens synlighet och läsbarhet.

Sammanfogade källor är inte likvärdiga med varandra, och i vissa fall beror resultatet på vilken tabell som listas först, före JOIN-nyckelordet (till vänster om det), och vilken tabell som listas tvåa (till höger).

[INNER] JOIN innebär att från båda källtabellerna - datakällorna, måste endast de kombinationer av poster som matchar det angivna villkoret inkluderas i frågeresultatet. Resten av bidragen ingår inte i resultatet.

// Behöver ta reda på vilka banker är samtidigt
// motparter (samma namn förekommer
//både i katalogen motparter och i bankkatalogen).
Välja

Banks.Link Gillar Bank
Från

Intern anslutning
Handbook.Banker som banker
Förbi

Frågeresultat:

motpart Bank
JSCB PromStroyBank JSCB PromStroyBank

LEFT [OUTTER] JOIN betyder att frågeresultatet ska inkludera kombinationer av poster från båda källtabellerna som matchar det angivna villkoret. Men till skillnad från en inre koppling måste frågeresultatet även innehålla poster från den första källan (anges till vänster om ordet JOIN) för vilka inga poster från den andra källan som matchar villkoret hittades.

Således kommer resultatet av frågan att inkludera alla poster från den första källan; de kommer att slås samman med poster från den andra källan när det angivna villkoret är uppfyllt. Frågeresultatrader för vilka inga matchande poster från den andra källan hittas kommer att innehålla NULL i de fält som genereras baserat på poster från denna källa.

//Det är nödvändigt att visa alla motparter i rapporten, och för dessa
// som också är en bank - ange en länk till banken.
Välja
Entreprenörer. Länk som entreprenör,
Banks.Link Gillar Bank
Från
Katalog Motparter Som motparter
Vänster yttre fog
Handbook.Banker som banker
Förbi
Counterpartys.Name = Banks.Name

Frågeresultat:

RIGHT [OUTER] JOIN betyder att frågeresultatet ska inkludera kombinationer av poster från båda källtabellerna som matchar det angivna villkoret. Dessutom bör frågeresultatet även inkludera poster från den andra källan (anges till höger om ordet JOIN) för vilka inga poster från den första källan som matchade villkoret hittades.

Således kommer frågeresultatet att inkludera alla poster från den andra källan; de kommer att slås samman med poster från den första källan när det angivna villkoret är uppfyllt. Frågeresultatrader för vilka inga matchande poster från den första källan hittas kommer att innehålla NULL i de fält som genereras baserat på poster från den källan.

//Det är nödvändigt att visa alla banker i rapporten, och för dem
// som också är en motpart - ange en länk till motparten.
VÄLJA
Entreprenörer. Länk som entreprenör,
Banks.Link Gillar Bank
FRÅN
Katalog Motparter Som motparter
Höger yttre fog
Handbook.Banker som banker
Förbi
Counterpartys.Name = Banks.Name

Frågeresultat:

motpart Bank
NULL JSCB Investment Bank
JSCB PromStroyBank JSCB PromStroyBank

FULL [OUTER] JOIN innebär att frågeresultatet måste inkludera kombinationer av poster från båda källtabellerna som matchar det angivna villkoret. Dessutom måste frågeresultatet även inkludera de poster från båda källorna för vilka inga matchningar hittades.

Således kommer resultatet av frågan att inkludera alla poster från båda källorna; de kommer att kopplas till varandra när det angivna villkoret är uppfyllt. Frågeresultatrader för vilka inga matchande poster hittades från någon källa kommer att innehålla NULL i fält som genereras baserat på poster från den källan.

// Det är nödvändigt att visa alla motparter och alla banker i rapporten,
// a.de som är båda - utdata på en rad.
Välja
Entreprenörer. Länk som entreprenör,
Banks.Link Gillar Bank
Från
Katalog Motparter Som motparter
Full Outer Join
Handbook.Banker som banker
Förbi
Counterpartys.Name = Banks.Name

Frågeresultat:

Alias ​​för datakällor

Om ett alias tilldelas en datakälla, kommer det i framtiden att vara möjligt att komma åt denna källa med detta alias (och det kommer inte längre att vara möjligt att komma åt det genom att ange tabellnamnet). En sådan överklagande kan vara mer bekväm och visuell, och i vissa fall den enda möjliga.

Aliaset sätts i enlighet med reglerna för tilldelning av variabelidentifierare. Alias ​​i begäran kan inte matcha.

AS-nyckelordet kan föregå källaliaset. Detta ord kanske inte specificeras alls, men om det specificeras ökar frågetextens synlighet och läsbarhet.

Att tilldela alias till källor påverkar inte i sig valet av data i en fråga.

// Det här exemplet visar användningen
// i listan över urvalsfält för varualiaset,
// tilldelad källtabellen Reference.Nomenclature
Välja
Produktbeskrivning,
Objekt. Förälder
Från
Katalog.Nomenklatur.Produkt

Kapslade tabeller i källlistan

Listan över källor kan också innehålla kapslade tabeller - tabelldelar av kataloger och dokument.

//Det är nödvändigt att visa specifikationen för fraktsedlar i rapporten -
// visa själva dokumentet, nomenklatur och kvantitet.
//Den kapslade tabellen "Composition" är specificerad i källlistan -
// tabelldelen av fakturan.
// Urvalet är begränsat till åtta poster för att inte överbelasta exemplet.
Välj Första 8
Referens, nomenklatur, kvantitet
Från
Document.Invoice.Composition

Frågeresultat:

Länk Nomenklatur Kvantitet
Utgiftsfaktura 00007 daterad 25.02.2002 21:03:21 Jeans för kvinnor 4
Utgiftsfaktura 00006 daterad 25 februari 2002 0:00:00 Jeans för kvinnor 5
Utgiftsfaktura 00006 daterad 25 februari 2002 0:00:00 Skjorta "Cowgirl" 5
Utgiftsfaktura 00005 daterad 2002-01-03 20:58:28 Jeans för kvinnor 1
Utgiftsfaktura 00004 daterad 2002-01-03 20:50:40 Jeans för kvinnor 1
Utgiftsfaktura 00003 daterad 23 februari 2002 0:00:00 Moidodyr "Akvarium" 5
Utgiftsfaktura 00003 daterad 23 februari 2002 0:00:00 Sänka "Lily" 8
Utgiftsfaktura 00003 daterad 23 februari 2002 0:00:00 Mixer "Ultra" 10

Observera att när du anger en kapslad tabell i källlistan är det tillåtet att komma åt både fälten i själva den kapslade tabellen och fälten i tabellen på översta nivån (den som innehåller den kapslade tabellen). I det här fallet öppnas fältet "Länk" för själva dokumentet.

Underfrågor i källlistan

En frågekälllista kan använda en underfråga som en källtabell. I det här fallet innehåller källbeskrivningen underfrågans beskrivning. Beskrivningen av en kapslad fråga görs på samma sätt som en vanlig: se

Att använda en kapslad fråga som datakälla skiljer sig inte från att använda en infobastabell. Alla fält som beskrivs i listan med urvalsfält för underfråga är tillgängliga som fält för en sådan källa.

Resultatet blir exakt detsamma som i föregående exempel.

För att arbeta med frågor används ett objekt av det inbyggda språket Begäran. Det låter dig ta emot information lagrad i databasens fält i form av ett urval som formats enligt specificerade regler..

Frågan får initial information från en uppsättning tabeller. Dessa tabeller representerar data från riktiga databastabeller i en form som är lämplig för analys. De kan delas in i två stora grupper: verklig Och virtuell.

Verkliga tabeller kan i sin tur vara objekt (referens) eller icke-objekt (icke-referens), fig. 97.

Ris. 97. Frågetabeller

En utmärkande egenskap hos riktiga tabeller är att de innehåller data från vilken som helst riktig tabell som är lagrad i databasen.. Till exempel är tabellen Katalog.Kunder, som motsvarar katalogen Kunder, eller tabellen Ackumuleringsregistret. Materialrester, motsvarande ackumuleringsregistret för materialrester, verklig.

Virtuella tabeller bildas främst av data från flera databastabeller. Exempelvis är tabellen Accumulationsregister.Remains of Materials.Remains and Turnovers, bildad av flera tabeller i ackumulationsregistret Materialrests, virtuell.

Ibland kan virtuella tabeller också bildas från en riktig tabell (till exempel den virtuella tabellen Priser. Slice of the Last bildas på basis av tabellen i Prisinformationsregistret). Gemensamt för alla virtuella tabeller är dock att de kan ges ett antal parametrar som avgör vilken data som kommer att ingå i dessa virtuella tabeller. Uppsättningen av sådana parametrar kan vara olika för olika virtuella tabeller och bestäms av data som lagras i källdatabastabellerna.

Verkliga tabeller är indelade i objekt (referens) och icke-objekt (icke-referens).

I objekt (referens) tabeller information om referensdatatyper (kataloger, dokument, planer för typer av egenskaper etc.) presenteras. Och i icke-objektiv (icke-referensiell)– alla andra datatyper (konstanter, register, etc.).

Särskiljande drag objekt (referens) tabellerär att de inkluderar ett länkfält som innehåller en länk till den aktuella posten. Dessutom är det möjligt för sådana tabeller få en anpassad representation av ett objekt. Dessa tabeller kan vara hierarkiska och fälten i sådana tabeller kan innehålla kapslade tabeller (tabellsektioner).

Algoritmen med vilken data kommer att väljas från källtabellerna för frågan beskrivs i frågetexten på ett speciellt språk - frågespråk . Förfrågningstexten består av flera delar:

en beskrivning av begäran;

Konsolidering av förfrågningar

beställning av resultat;

· AUTO-ORDNING;

en beskrivning av resultaten.

Den obligatoriska delen av begäran är endast den första - beskrivningen av begäran. Alla andra är närvarande vid behov.

Frågebeskrivningen definierar datakällor, urvalsfält, grupperingar etc.

Frågeaggregation avgör hur resultaten av flera frågor slås samman.

Ordningen av resultaten definierar villkoren för ordning av frågeresultatraderna.

AUTOORDER låter dig aktivera automatisk ordning av frågeresultatrader.

Beskrivningen av summorna avgör vilka summor som ska beräknas i frågan och hur resultatet grupperas.

Det bör noteras att när ett frågespråk används för att beskriva datakällor i ett datasammansättningssystem, används inte sammanfattningsdelen av frågespråket. Detta beror på det faktum att datasammansättningssystemet oberoende beräknar totalsummorna baserat på inställningarna som gjorts av utvecklaren eller användaren.

Datasammansättningssystem designad för att skapa anpassade rapporter i 1C:Enterprise 8.1-systemet och består av flera huvuddelar.

De första uppgifterna för rapportens layout innehåller datasammansättningsschema är datamängder och metoder för att arbeta med dem(Fig. 98).

Utvecklaren skapar ett datasammansättningsschema där han beskriver texten i begäran, datamängder, relationer mellan dem, tillgängliga fält, parametrar för att erhålla data och ställer in de initiala konfigurationsinställningarna - rapportstruktur, datadesignlayout, etc.

Till exempel kan ett layoutdiagram innehålla följande uppsättning data (Figur 99).

Ris. 98. Allmänt arbetsschema med datasammansättningssystemet

Ris. 99. Ett exempel på ett layoutschema (en datauppsättning och en fråga som använder den)

På fig. Figur 99 visar designfönstret för datasammansättningsschemat, som innehåller datakällan, frågetext och fält som valts av frågan.

Systemrapporten för datasammansättning som användaren får är inte bara en tabell med poster som matchar frågan. Den har en komplex hierarkisk struktur och kan bestå av olika element som grupperingar, tabeller och diagram. Samtidigt kan användaren ändra den befintliga eller till och med skapa en helt ny rapportstruktur, sätta upp det urval han behöver, designa elementen i rapportstrukturen, få en uppdelning för varje element osv.

Till exempel kan följande rapportstruktur ställas in (bild 100):

Ris. 100. Struktur för en eventuell rapport

Den genererade rapporten kan se ut så här (fig. 101).

I den presenterade rapporten kommer tabellen att bestå av ackumuleringsregisterposter Försäljningsomsättning om kunder och tjänster som tillhandahålls dem. Dessa poster är grupperade efter befälhavarna som utförde beställningarna. Och i grupperingen kommer en lista över masters att visas.

Generellt sett är datasammansättningssystemet en samling av flera objekt. Vid generering och exekvering av en rapport överförs data sekventiellt från ett objekt i datasammansättningssystemet till ett annat, tills det slutliga resultatet erhålls - ett dokument som visas för användaren.

Algoritmen för interaktionen mellan dessa objekt är följande: utvecklaren skapar ett datakompositionsschema och standardinställningar. I allmänhet kan ett stort antal olika rapporter skapas utifrån ett datasammansättningsschema. Inställningar för datasammansättning - antingen skapade av utvecklaren eller modifierade av användaren - avgör vilken rapport som kommer att tas emot i ett visst fall.

Ris. 101. Provrapport

Baserat på layoutschemat och de tillgängliga inställningarna skapar layoutbyggaren en datalayoutlayout. Detta är förberedelsestadiet för genomförandet av rapporten. En datakompositionsmall är ett jobb som redan är förberett för exekvering av kompositionsprocessorn. Layoutlayouten innehåller nödvändiga frågor, rapportområdeslayouter etc.

Datakompositionsprocessorn väljer data från infobasen enligt kompositionslayouten, samlar ihop och formaterar dessa data.

Resultatet av layouten bearbetas av utdataprocessorn, och som ett resultat får användaren det resulterande kalkylarksdokumentet.

Sekvensen för layoutsystemet kan representeras som följande diagram (fig. 102):

Ris. 102. Schema för layoutsystemet

3.12.1. Skapande av rapporten "Register över dokument Tillhandahållande av tjänster"

Rapportera Register över dokument Tillhandahållande av tjänster kommer att visa en lista över befintliga tjänstedokument i databasen i ordning efter datum och nummer.

Rapportera. Ge det ett namn RegisterDocumentsProvisionServices. Bokmärke Main klick " Redo". Lägg till i schemakonstruktorn för datasammansättning Datauppsättning - Fråga Begär konstruktör".

Välj dokumenttabellen för objektet (referens) som datakälla för frågan RenderingServices. I den här tabellen väljer du följande fält (bild 103):

Datum för; Siffra; Stock; Bemästra; Klient.

Ris. 103. Valda fält

Gå sedan till bokmärke Beställa och ange att frågeresultatet först ska sorteras efter fältvärde datum, och sedan efter fältvärde RenderingServices.Link(Fig. 104).

Ris. 104. Ordningsföljd för utmatning av frågeresultat

Klick " OK" och se vilken fråga frågekonstruktorn genererade.

Gå till bokmärke inställningar och lägg till en ny gruppering i rapportstrukturen (Fig. 105).

Ris. 105. Kommandopanelen på fliken Inställningar

I fönstret för val av grupperingsfält klickar du på " OK" och på fliken Valda fält ställ in fälten som ska visas i rapporten:

Datum för; Siffra; Stock; Bemästra; Klient (fig. 106).

Ris. 106. Anpassa rapportens struktur

Register över dokument tillhandahållande av tjänster. Klick " Form" och titta på resultatet av rapporten (bild 107).

Ris. 107. Rapport Register över dokument som tillhandahåller tjänster

Rapportera. namnge det Servicebetyg. Bokmärke Main klick " Öppna datasammansättningsdiagrammet". I dialogrutan Layoutdesigner som öppnas klickar du på " Redo".

Skapa i schemakonstruktorn för datasammansättning Datauppsättning - Fråga(DataSet1) och klicka på " Begär konstruktör".

Nomenklatur och en virtuell tabell över ackumuleringsregistret Försäljning, omsättning. För att undvika namntvetydigheter i frågan, byt namn på nomenklaturtabellen till SprNomenklatur(högerklicka på snabbmenyn - Byt namn på tabell).

Välj sedan från tabellfält Spr Nomenklatur Länk Och FörsäljningOmsättning.IntäktOmsättning(Fig. 108).

Ris. 108. Valda fält

Gå till bokmärke Anslutningar och notera att konstruktören redan har skapat en relation mellan de två valda tabellerna - värdet på ändringen i nomenklaturregistret måste vara lika med referensen till artikeln i nomenklaturens referensbok.

Det enda man kan göra är att återställa flaggan Allt vid registerbordet och ställ in det vid referensbordet SprNomenklatur(Fig. 109).

Att sätta flaggan Allt för katalogtabellen kommer att innebära att alla element kommer att väljas från katalogen och dessa element kommer att tilldelas värdet av intäktsomsättningen från registret. Som ett resultat av förfrågan kommer alltså alla tjänster att vara närvarande, och för några av dem kommer intäktsomsättningen att anges. För de tjänster som inte tillhandahålls under den valda perioden kommer ingenting att anges.

Ris. 109. Dukning av tabelllänkar

Gå till bokmärke Betingelser och ställ in villkoren för att välja element från referensboken för nomenklaturen (Fig. 110). När du ställer in urvalsvillkor måste du använda frågeparametrar. Det första villkoret måste vara att det valda elementet inte är en grupp (för att göra detta, byt till Godtyckligt tillstånd- sätt flagga Slumpmässig). Sedan i fält skick skriv in följande text:

SprNomenclature.ThisGroup = FALSK

Det andra villkoret måste vara att det valda objektet är en tjänst (detta är enkelt skick) (Fig. 110).

Ris. 110. Villkor för val av element

I framtiden, innan begäran utförs, i parametern Typnomenklatur du måste klara motsvarande uppräkningsvärde.

Gå till bokmärke Fackföreningar/Alias och ange att referensobjektvyn kommer att ha ett alias Service, och registerfältet kommer att ha ett alias Inkomst(Fig. 111).

Ris. 111. Fackföreningar/Alias

Gå till bokmärke Beställa och ange att frågeresultatet ska sorteras i fallande ordning för fältvärdet Inkomst. Skapandet av förfrågan är klar, klicka på knappen " OK". Titta på frågetexten som genereras av konstruktorn.

Gå till bokmärke Resurser och klicka på " >> " så att konstruktören väljer alla tillgängliga resurser för att beräkna totalsummorna. I ditt fall är detta den enda resursen Inkomst(Fig. 112).

Ris. 112. Datasammansättningsschemaresurser

Gå till bokmärke alternativ(Fig. 113).

Ris. 113. Alternativ för datasammansättning

På den här fliken ser du tre alternativ: Början av perioden, Slutperiod Och Typnomenklatur. Den första parametern är början på totalberäkningsperioden, den andra är slutet på perioden. Som ett resultat kommer källtabellen endast att innehålla de omsättningar som beräknats under den överförda perioden.

För parameter Början av perioden ställ in titeln som ska visas för användaren − start datum.

Här ska du alltid komma ihåg att om du passerar ett datum som dessa parametrar, så innehåller datumet även tiden till närmaste sekund.

Anta att det är känt i förväg att användaren inte kommer att vara intresserad av rapportens resultat under de angivna perioderna med en noggrannhet på upp till en sekund. I det här fallet bör två funktioner beaktas.

Först måste användaren befrias från behovet av att ange tidpunkten när han anger ett datum. För att göra detta, ändra den befintliga typdeklarationen för parametern Början av perioden. Dubbelklicka i en cell Tillgängliga typer, motsvarande parametern Början av perioden, tryck på väljarknappen " " och längst ned i fönstret för redigering av datatyp, ställ in Datumsammansättning till mening datum(Fig. 114).

Klick " OK".

Den andra funktionen är att standardtiden i datumet är 00:00:00. Därför, om användaren ställer in rapportperioden från 10/01/2009 till 10/31/2009, kommer registersummorna att beräknas från början av dagen 10/01/2009 00:00:00 till början av dagen 2009-10-31 00:00:00. Data för den 31:a dagen, förutom början av dagen, kommer alltså inte att inkluderas i beräkningen, vilket kommer att överraska användaren mycket. För att eliminera denna situation, lägg till en annan parameter där användaren anger slutdatumet. Parametervärde Slutperiod kommer att beräknas automatiskt så att den indikerar slutet på dagen för det datum som användaren angett. Därför för parametern Slutperiod sätta flaggan Tillgänglighetsbegränsning.

Ris. 114. Redigera sammansättningen av datumet

Använd kommandofältsknappen och lägg till en ny parameter med namnet EndDate (Fig. 115).

Ris. 115. Lägger till EndDate-parameter

För denna parameter kommer plattformen automatiskt att generera en rubrik − utgångsdatum. Lämna det oförändrat. Ställ in parametervärdestypen − datum. I det här fallet, vad gäller parametern Början av perioden, ange sammansättningen av datumet - datum.

Observera att parametern du lagt till som standard är tillgänglig för användaren (tillgänglighetsbegränsningen i den sista kolumnen tas bort).

Gå till parameter Slutperiod. För det har systemet ställt in flaggan för tillgänglighetsbegränsning. Avmarkera inte den, eftersom värdet på den här parametern kommer att beräknas baserat på värdet som ställts in av användaren för parametern Utgångsdatum.

För att ställa in formeln med vilken parametervärdet ska beräknas Slutperiod, använd uttrycksspråket för datakompositionssystemet. Den innehåller funktionen EndPeriod(), vilket gör att du kan få datumet som motsvarar slutet av en period, till exempel den angivna dagen.

I en cell Uttryck ställ in parametern Slutperiod följande uttryck:

Som ett resultat av ovanstående åtgärder kommer layoutparametrarna att se ut så här (bild 116):

Ris. 116. Layoutsystemalternativ

Ställ slutligen in parametern Typnomenklatur. Eftersom rapporten endast ska visa intäkterna från försäljning av tjänster, värdet på parametern Typnomenklatur användaren ska inte ändra sig. Den måste ställas in direkt i layouten som . Parameterbegränsningsflagga Typnomenklatur plattformen har ställt in det som standard, så du behöver bara ange önskat enumvärde Artnomenklatur i en cell Menande, motsvarande parametern Typnomenklatur(Fig. 117).

Ris. 117. Inställning av värdet för parametern Nomenclature Type

Fortsätt till bildandet av rapportstrukturen. Bokmärke inställningar lägg till en gruppering och återigen ange inte grupperingsfältet. Bokmärke Valda fält ange fälten Service Och Inkomst(Fig. 118).

Gå sedan till bokmärke Andra inställningar och ställ in rubriken på rapporten - Servicebetyg(Fig. 119).

Ris. 119. Ange rapportens titel

Kör 1C:Enterprise i felsökningsläge.

Välj rapport Servicebetyg, men innan du klickar på " Form", öppen inställningar och på bokmärket Dataalternativ ange rapportperioden från 2004-01-03 till 2004-04-30 (Fig. 120). Om datumen för skapande av dina dokument skiljer sig från de som anges i exemplet, bör rapportperioden ställas in på ett annat sätt.

Ris. 120. Rapportinställningar

Klick " OK" och generera en rapport. Resultatet kommer att se ut så här (Fig. 121):

Ris. 121. Resultat av rapportens genomförande

Ändra nu slutdatumet till 2004-03-31. Data för 31 mars ingår i rapporten (bild 122).

Ris. 122. Resultatet av rapportens utförande

3.12.3. Skapande av rapporten "Mästarnas intäkter"

Rapportera Masters intäkter kommer att innehålla information om vilka intäkter som erhölls av Master LLC på grund av var och en av mästarnas arbete, med detaljer för alla dagar under den valda perioden och en uppdelning för kunder som betjänades på var och en av dagarna. Med den här rapporten som exempel kommer du att lära dig hur du bygger grupperingar på flera nivåer i en fråga och hur du kringgår alla datum under en vald period.

Skapa ett nytt konfigurationsobjekt Rapportera. namnge det RevenueMasters och kör huvuddatasammansättningsschemakonstruktören.

Lägg till Datauppsättning - Fråga(DataSet1) och klicka på " Begär konstruktör Välj den virtuella tabellen för ackumuleringsregistret Försäljning, omsättning.

Ställ in ett av alternativen för denna virtuella tabell − Periodicitet. För att göra detta, gå till fältet tabeller och klicka på " Virtuella bordsalternativ"(Fig. 123).

Ris. 123. Ändra parametrarna för en virtuell tabell

Ställ in parametervärdet i parameterfönstret som öppnas Periodicitet - Dag(Fig. 124). Tryck på knappen " OK".

Ris. 124. Virtuella tabellalternativ

Välj sedan följande fält från tabellen:

· Försäljningsomsättning Master;

· Försäljningsomsättningar.Period;

· Försäljningsomsättning Kund;

· Försäljningsomsättning Intäktsomsättning (Fig. 125).

Ris. 125. Valda fält

Gå nu till bokmärke Fackföreningar/Alias och ange ett alias Inkomst för fältet FörsäljningOmsättning.IntäktOmsättning(Fig. 126).

Ris. 126. Fackföreningar/Alias

Bokmärke gruppering definiera att gruppering kommer att göras efter fält Bemästra, Period Och Klient och fältvärden Intäkter Omsättning kommer att summeras (bild 127).

Ris. 127. Grupperingsfält

Bokmärke Beställa ange att frågeresultatet kommer att sorteras i stigande ordning för fältvärdet Period. Klick " OK". Tänk på frågetexten som genereras av konstruktorn.

Gå nu vidare till att redigera datasammansättningsschemat. Bokmärke Resurser klick " >> " och se till att konstruktören har valt den enda tillgängliga resursen - Inkomst.

Bokmärke alternativ Följ samma steg som när du skapade den föregående rapporten.

För parameter Början av perioden ange en titel start datum. I fält Tillgängliga typer ställ in datumets sammansättning - datum.

För parameter Slutperiod ställ in ett uttryck:

EndPeriod(&Slutdatum, "Dag")

I fält Begränsning tillgänglighet ställ in flaggan för tillgänglighetsbegränsning.

Lägg slutligen till ytterligare en parameter − Utgångsdatum, ställ in dess typ som datum, är sammansättningen av datumet datum.

Som ett resultat av ovanstående åtgärder kommer datasammansättningsparametrarna att se ut så här (Fig. 128):

Ris. 128. Datakompositionsalternativ

Nu måste vi skapa rapportstrukturen. Bokmärke inställningar skapa två kapslade grupperingar sekventiellt: toppnivå - efter fält Bemästra, kapslade i det - efter fält Period. Lägg sedan till ytterligare en gruppering kapslad i grupperingen efter fält Period, – Detaljposter(utan att ange grupperingsfältet) (Fig. 129).

Ris. 129. Rapportens struktur

När du är på nivån för den globala rapporten går du till fliken Valda fält och lägg till fält i listan Klient Och Inkomst.

Slutligen, från den globala rapportnivån, gå till fliken Andra inställningar och ändra följande inställningar. För parameter satt värde Separat och endast i resultaten; för parameter ställ in värdet Start och för parametern rubrik ställ in värdet Masters intäkter(Fig. 130).

Ris. 130. Inställning av utmatningen av totalsummor till början

Kör 1C:Enterprise i felsökningsläge och titta på resultatet av Masters Revenue-rapporten för perioden 03/01/2004 till 04/30/2004 (Fig. 131).

Ris. 131. Resultat av rapportens genomförande

Om du kommer ihåg bör den här rapporten visa data med detaljer för alla dagar under den valda perioden. Nu visas bara de dagar för vilka det finns poster som inte är noll i ackumuleringsregistertabellen. Därför är det nu nödvändigt att ändra rapportinställningarna på ett sådant sätt att varje datum från perioden för vilken rapporten genererades faller in i rapporten.

För att göra detta, återgå till konfiguratorläget och finjustera rapportstrukturen. Hittills har alla strukturinställningar som du har gjort gällt för hela rapporten som helhet. Men datasammansättningssystemet låter dig också anpassa varje element i strukturen individuellt.

Du måste ändra grupperingsinställningen Period. För att gå till inställningarna för denna speciella gruppering, i strukturfältet, placera markören på denna gruppering och klicka sedan på " Period" i kommandopanelen (bild 132).

Ris. 132. Grupperingsinställningar Period

De tillgängliga inställningarna för denna gruppering kommer att visas längst ner i formuläret.

Gå till bokmärke Gruppera fält. För fält Period Installera Tilläggstyp - Dag(Fig. 133).

Ris. 133. Inställning av periodens komplementtyp

Genom att göra det har du angett att för denna gruppering kommer befintliga poster med ett resursvärde som inte är noll att kompletteras med poster för var och en av dagarna.

Därefter bör du ange under vilken period ett sådant tillägg ska utföras. I fälten nedan kan du ange start- och slutdatum för denna period. Men att uttryckligen ange datum är inte lämpligt, eftersom användaren kan generera en rapport för en godtycklig period. Det är nödvändigt att tillägg av datum inte görs under någon bestämd period, utan under den period som användaren har valt för hela rapporten.

För att säkerställa exakt detta arbete med rapporten, gå in i redigeringsläget för det första fältet (till exempel genom att dubbelklicka på det) och klicka på knappen "rensa" X". Efter det, genom att klicka på knappen " T", kommer du att kunna välja vilken typ av data som visas i detta fält. Välj Datasammansättningsfält(Fig. 134).

Ris. 134. Välja en datatyp

Klick " OK". Klicka nu på väljknappen i inmatningsfältet " " och markera alternativet i fältvalsfönstret som öppnas Början av perioden(Fig. 135). Klick " OK".

Ris. 135. Fältval

För det andra inmatningsfältet, specificera på samma sätt att periodens slutdatum kommer att erhållas från parametern Utgångsdatum(Fig. 136).

Ris. 136. Grupperingsinställningar Period

Kör 1C:Enterprise i felsökningsläge och kör rapporten Masters intäkter för perioden 20 mars 2004 till 20 april 2004 (bild 137).

Ris. 137. Resultat av rapportens genomförande

3.12.4. Skapa en serviceinventeringsrapport

Rapportera Servicelista kommer att innehålla information om vilka tjänster och till vilket pris LLC "Master" tillhandahåller. I exemplet kommer du att bekanta dig med möjligheten att få de senaste värdena från det periodiska registret över information och visa hierarkiska kataloger.

Skapa ett nytt konfigurationsobjekt Rapportera. namnge det Servicelista och kör Data Composition Schema Designer. Skapa en ny Datauppsättning - Fråga(DataSet1) och anropa frågekonstruktorn.

Välj uppslagstabellen för objekt (referens). Nomenklatur och en virtuell tabell med informationsregister Priser.SliceLast. För att eliminera tvetydigheten hos namnen i frågan, byt namn på tabellens nomenklatur till SprNomenklatur.

Anropa dialogrutan för att ange parametrar för den virtuella tabellen PriserSliceLast och indikera att perioden kommer att passeras i parametern Rapportdatum(Fig. 138).

Ris. 138. Virtuella tabellalternativ

Välj sedan följande fält från tabellerna:

· SprNomenclature.Parent;

· PriserSliceLast.Price (Fig. 139).

Ris. 139. Valda fält

Gå till bokmärke Anslutningar, släpp flaggan Allt vid registerbordet och ställ in det vid referensbordet.

Bokmärke Betingelser ställ in villkoret för val av ordbokselement Nomenklatur– elementen som ska väljas måste motsvara den artikeltyp som skickas i frågeparametern Typnomenklatur(Fig. 140).

Ris. 140. Villkor för val av element

Bokmärke Fackföreningar/Alias ange att fältet Förälder kommer att ha ett alias Servicegrupp, och fältet Länk - Service(Fig. 141).

Ris. 141. Fackföreningar/Alias

Gå till bokmärke gruppering och ange att grupperingen kommer att göras av fältet SprNomenclature.Prent. Det är inte nödvändigt att ställa in värdena för de sammanfattade fälten (bild 142).

Fig. 142. Gruppera fält

Klick " OK" Titta på texten i begäran.

Fortsätt med att redigera datasammansättningsschemat. Bokmärke Resurser trycka på knappen " >> " välj den enda tillgängliga resursen Pris.

Bokmärke alternativ ställ in parametervärdet Typnomenklatur Hur Enumeration.Types of Nomenclature.Service. Ta dessutom bort tillgänglighetsbegränsningen för parametern Rapportdatum och ge det en titel - Rapportdatum. I fält Tillgängliga typer ställ in datumets sammansättning - datum. För parameter Period, tvärtom, ställ in tillgänglighetsbegränsningen (bild 143).

Ris. 143. Alternativ för layoutschema

Fortsätt till bildandet av rapportstrukturen. Gå till bokmärke inställningar och skapa en grupp för fält Servicegrupp, som anger typen av gruppering Hierarki. Inom denna gruppering skapar du en annan gruppering utan att ange ett gruppfält. Den kommer att innehålla detaljerade rapportposter (Fig. 144).

Ris. 144. Rapportens struktur och markerade områden

Gå till bokmärke Valda fält och ange att fälten Service och Pris kommer att visas i rapporten (Fig. 145).

Ris. 145. Rapportens struktur

Och slutligen, anpassa utseendet på rapporten på fliken Andra inställningar. Eftersom rapporten bara kommer att vara en lista över tillhandahållna tjänster, där priserna för specifika tjänster är av intresse, visas resursvärden Pris för var och en av grupperingarna och för hela rapporten som helhet är inte vettigt.

För att inaktivera visningen av totaler i rapporten, ställ in parametern Placering av totalsummor vertikalt till mening Nej.

Gå sedan till de specifika grupperingsinställningarna − Servicegrupp. För parameter Plats för totaler denna gruppering, ange värdet Nej. Återgå till inställningarna för hela rapporten som helhet.

För parameter Placering av grupperingsfält ange ett värde Separat och endast i resultaten(så rapporten blir bättre "läst"). Ange slutligen rubriken på rapporten - Servicelista.

Kör 1C:Enterprise i felsökningsläge och öppna först det periodiska registret Priser.

Lägg till ytterligare ett värde för tjänsten Diagnostik: det nya priset för tjänsten den 01.04.2004 är 350 (Fig. 146). Detta kommer att testa rapporten.

Ris. 146. Anteckningar i registret "Priser"

Kör nu rapporten Servicelista per den 31 mars 2004 (fig. 147).

Ris. 147. Resultat av rapportens genomförande

Din rapport återspeglar korrekt priset för diagnostiktjänsten den 31/03/2004 - 200 rubel.

Kör rapporten igen, men nu för ett annat datum - 04/01/2004 (Fig. 148).

Ris. 148. Resultat av rapportens genomförande

Som du kan se visas det nya priset för diagnostiktjänsten - 350 rubel.

Rapportera Kundbetyg kommer att visa vad som är intäkterna från tillhandahållandet av tjänster till var och en av kunderna under hela driftperioden för Master LLC. I dess exempel kommer möjligheten att använda ett diagram för att visa resultatet av en fråga att demonstreras.

Diagram är ett kontrollelement avsett för placering i tabeller och former av diagram och grafer av olika typer av 1C:Enterprise-systemet.

Logiskt diagramär samlingen av poäng, serier och serievärden vid punkten(Fig. 149).

Som regel används ögonblick eller objekt för vilka du får egenskapernas värden som poäng, och egenskaper som du är intresserad av värden för används som serier.

Till exempel kommer ett diagram över försäljning av typer av varor per månader att bestå av poäng - månader, serier - typer av varor och värden - försäljningsomsättning.

Diagrammet som objekt för det inbyggda språket har tre områden som låter dig styra utformningen av diagrammet: konstruktionsområdet, titelområdet och legendområdet (bild 150).

Diagrammet kan infogas i rapportstrukturen som ett separat element. När du skapar en rapport Kundbetyg diagrammet kommer att användas i inställningsstrukturen för datasammansättningsschemat.

Ris. 149. Diagramexempel

Ris. 150. Kartområden

Skapa ett nytt konfigurationsobjekt i konfiguratorn Rapportera. namnge det RatingClientsöppnar du dess huvudsakliga datalayoutschema.

Skapa datamängd - fråga(DataSet1) och anropa frågekonstruktorn. Välj virtuell ackumuleringsregistertabell Försäljning, omsättning och från det ett fält - Försäljning Omsättning.Kund.

Lägg sedan till ett nytt fält (ikon Lägg till i kommandofältet ovanför listan med fält) och använd uttrycksbyggaren, definiera det som skillnaden mellan intäkt och kostnad (Fig. 151).

Ris. 151. Redaktör för anpassade fältuttryck

Som ett resultat kommer listan över valda fält att se ut så här (bild 152):

Ris. 152. Valda fält

Bokmärke Fackföreningar/Alias ange att det beräknade fältet kommer att ha ett alias Inkomst(Fig. 153).

Ris. 153. Fackföreningar/Alias

Bokmärke Beställa indikera att resultatraderna ska sorteras i fallande ordning på fältvärdet Inkomst. Klick " OK" och se vilken text frågekonstruktorn genererade.

Gå till bokmärke Resurser och lägg till ett fält Inkomst till layoutresurserna. Gå sedan till bokmärke inställningar för att skapa rapportens struktur.

Till skillnad från alla tidigare rapporter, vars struktur innehöll grupperingar, lägg denna gång till ett diagram till rapportstrukturen (fig. 154).

Ris. 154. Rapportens struktur

Lägg till gruppering efter fält till diagrampunkter Klient. Lämna diagramserien oförändrad.

Gå nu till bokmärke Valda fält och välj fält Inkomst för utmatning till rapporten. Rapportstrukturen bör ha följande form (bild 155):

Ris. 155. Rapportstruktur och diagraminställningar

Bokmärke Andra inställningar ange rubriken på rapporten - Kundbetyg, och välj även diagramtypen − Cirkulär volymetrisk.

Kör 1C:Enterprise i felsökningsläge och öppna rapporten Kundbetyg(Fig. 156).

Ris. 156. Cirkelvolymdiagram i rapporten

Observera att när du håller muspekaren över en sektor av diagrammet visas ett verktygstips.

Öppna rapportinställningarna och ändra diagramtypen till Mätning. Generera rapporten igen (bild 157).