1s 8.3 SKD kommunikationsvillkor. Samband mellan datamängder i passerkontrollsystemet och principer för deras användning

Ibland, för att få ett visst layoutresultat, är det nödvändigt att skapa länkar mellan datamängder i passerkontrollsystemet. Vi kommer att försöka prata om när detta behövs och hur man gör det i vår artikel.

Datalayoutschemat implementerat i 1C stöder tre typer av datakällor (Fig. 1)

Datakällor

Den mest uppenbara och mest använda datakällan av utvecklare är frågan.

Frågedesignern som implementeras i version 8 av 1C är mycket bekväm, och i de flesta fall kan du länka flera tabeller tillsammans och göra nödvändiga grupperingar och val direkt i den.

I komplexa fall, när det är nödvändigt eller lämpligare att använda exekveringen av någon kod (till exempel ladda data från en tredjepartsfil) eller när det inte är möjligt att använda en fråga, kommer "Objekt"-datakällan till räddningen. Godtycklig kod som exekveras i modulen måste ha en viss struktur vid utgången som åtkomstkontrollsystemet kan komma åt.

Den tredje datakällan är "Union". Faktum är att denna källa kan betraktas som en av typerna av kommunikation. Den kombinerar (reducerar flera tabeller till en), utan att matcha, men slumpen av vissa fält. Det vill säga, om två tabeller som sammanfogas har 3 respektive 4 rader, kommer den resulterande datakällan att ha 7 rader.

Formulering av problemet

Som testplats kommer vi att välja UPP-basen, version 1.3.92.3, som fungerar i normalt applikationsläge.

Vi har fått följande uppgift: med hjälp av endast passersystemet, skapa en rapport som skulle visa en tabell över köpta föremål från dokumentet, med priser hämtade från filen som motparten skickat.

Så vi måste:

  1. Ta tabelldel kvittodokument;
  2. Ladda upp filen till "Objekt"-datakällan;
  3. Länka dessa två källor med en viss parameter (i vårt fall kommer detta att vara kod);
  4. Visa den resulterande tabellen.

Utförandeprocess

Låt oss gå igenom alla steg som anges:

  • Vi skapar en fråga för den tabellformade delen av kvittodokumentet (Fig. 2)

Fig.2

  • Skapa ett datamängdsobjekt (Fig. 3);

Fig.3

Här är det viktigt att vara uppmärksam på "Namnet på objektet som innehåller data"; detta är namnet vi måste ange i koden för rapportmodulen.

  • Vi går till rapportmodulen och skapar proceduren "Vid komposition av resultat" där (fig. 4);


Fig.4

Vi kommer inte att beskriva proceduren för att hämta data från en extern fil, vi kommer att uppmärksamma den del av koden som måste finnas i layouten så att vi kan få data för "Datauppsättning 2" (Fig. 5).

Fig. 5

Viktig! När du skapar ett "Objekt" i procedurkod under länkning måste värdet på parametern StandardProcessing vara False.

Gå till fliken "Datauppsättningslänkar".

Länka set

Gå till motsvarande flik i diagrammet (fig. 6).

Vi ser en tabelldel som är väldigt lik den tabelldel som finns i frågedesignern, med några undantag. Kryssrutan "Alla" kan inte markeras för kommunikationskällan och kommunikationsdestinationen, men flera ytterligare kolumner har lagts till.

I datauppsättningsrelationer kan du bara upprätta en relation som liknar frågekonstruktorns vänstra yttre koppling.

Innan du skapar en anslutning, låt oss bestämma syftet med kolumnerna:

  1. Länkkällan är den första datamängden från vilken alla tillgängliga värden kommer att tas;
  2. Kommunikationsmottagare - en uppsättning data från vilka värden som motsvarar vårt tillstånd kommer att väljas;
  3. Källuttryck – ett fält eller uttryck för den första datamängden mot vilken jämförelsen kommer att ske;
  4. Destinationsuttrycket är ett fält eller uttryck för den beroende uppsättningen;
  5. Parameter – om du anger parameternamnet i det här fältet, kommer kommunikationen med mottagaren endast att utföras enligt värdet som anges i parametern;
  6. Lista över parametrar - bestämmer möjligheten att använda en lista med värden som en parameter;
  7. Anslutningsvillkor – genom att ange ett uttryck här med hjälp av källfält kan du skapa ett villkor, vars uppfyllelse kommer att fungera som en signal för att upprätta en anslutning;
  8. Initialt värde – visar startvärdet för anslutningen;
  9. Obligatorisk relation - Bestämmer om fälten som används i källan (inställd på FALSK) eller destination (inställd på TRUE) är aktiverade och baserat på detta lägger relationen till layouten.

Således:

  • Kommunikationskällan kommer att vara resultatet av vår begäran;
  • Objektet kommer att fungera som en mottagare;
  • Källuttrycket kommer att vara "NomenclatureCode";
  • Mottagaruttryck "Nomenklatur";
  • Kommunikation kommer att vara obligatorisk (Fig. 7).

Om vi ​​hade angett namnet på någon nomenklatur, eller dess typ av reproduktion, eller något annat som anslutningsvillkor, kunde vi ha fått ett mer exakt prov för vår uppgift. Resultatet av våra handlingar kan ses i fig. 8

Fig. 8

Det fanns ingen matchning för de två nedre raderna i rapporten i prisfilen.

Ett datakompositionssystem kan använda flera datamängder. Och det är ganska logiskt att dessa datamängder på något sätt ska vara kopplade till varandra. I analogi med 1C-frågespråket kan datamängder vara antingen eller. I den här artikeln kommer vi att prata om anslutning av datamängder i passersystem.

Vid första anblicken kan det vara oklart varför du behöver skapa flera datamängder och sedan sammanfoga dem, om du helt enkelt kan sammanfoga tabeller inom en datamängd. Det finns åtminstone en anledning till detta - i fallet med att använda en extern datamängd. Som ni vet, när vi skriver en fråga för en ACS-datauppsättning kan vi inte gå in i den, till exempel . Även om detta görs helt enkelt för en normal förfrågan. Vid användning av ett passersystem tvingas vi överföra en värdetabell till det som en . Därav behovet av att koppla datamängder. Låt mig omedelbart notera att datamängder endast kan anslutas med hjälp av VÄNSTER ANSLUTNING. Därför, till skillnad från här, kommer du inte att se kryssrutor som är ansvariga för typen av tabellanslutning.

Låt oss nu komma på en situation, med hjälp av ett exempel som vi kan överväga att ansluta datamängder i ett åtkomstkontrollsystem. Anta att vi har en katalog Varor, som vi kan få från olika leverantörer, och vi vill generera en rapport med priser på varor per leverantör för att välja den leverantör som har mest förmånligt pris. Och vi tar priser som är aktuella för tillfället, till exempel genom webbtjänster från leverantörernas webbplatser.

Följaktligen kommer vi för varor att ha en datamängd som erhålls med hjälp av en begäran, och för priser kommer vi att ha en datamängd som erhålls från en extern källa.


Låt oss nu gå till bokmärket Datauppsättningsrelationer och gör inställningarna enligt bilden.

På bokmärket inställningar Låt oss först göra en grundläggande utdata av detaljerade poster


Låt det finnas i vår katalog Varor innehåller följande poster

Vi kör rapporten och ser följande bild

Det vill säga vi ser att datamängderna var sammankopplade enligt alla regler VÄNSTER ANSLUTNING

På bokmärket Datauppsättningsrelationer Det är möjligt att ange några ytterligare parametrar i lämpliga fält. Men de används ganska sällan. Du kan läsa mer i den tekniska dokumentationen och på ITS-skivorna.

Datalayoutdiagram (1C SKD)- en bekväm designer för att skapa komplexa rapporter i 1C:Enterprise-programvaruprodukter som bidrar till utveckling och spårning av produktionsautomation, vilket gör att de kan göras så flexibla och vackra som möjligt på ett minimum av tid. En ytterligare fördel med Data Composition Scheme (1C SKD) är den automatiska genereringen av ett kontrollerat rapportformulär och med vidareutveckling av detta område är det en viktig faktor vid val av metod för att ta fram en rapport. Men på grund av komplexiteten i strukturen för Data Composition Scheme (1C SKD) och det enorma antalet inställningar, leder det ofta till längre utveckling av rapporten än genom "output form designer". Därför måste en 1C-programmerare förstå alla krångligheterna i Data Composition Scheme (1C DCS) för att ytterligare påskynda utvecklingstiden för att generera rapporter.

Låt oss titta på de tre första flikarna i Data Composition Scheme (1C SKD) - datauppsättning, datauppsättningsanslutningar och beräknade fält.

Datauppsättning i 1C SKD

Datauppsättningen innehåller möjligheten att skapa tre objekt - en fråga, ett objekt och en förening, låt oss ta en närmare titt på vart och ett av dem:

Detta är en vanlig fråga som genereras med knappen Frågebyggare. Om Autofyll-flaggan är inställd, kommer alla valda detaljer automatiskt att inkluderas i fälten i datamängden. Det är också möjligt att anpassa ifyllningen av fält i begäran på fliken Datasammansättning, där det finns tre flikar:

Tabeller, här väljs tabellerna som kommer att delta i genereringen av rapporten, vanligtvis väljs standarddata, eftersom vi på fliken Tabeller och fält redan har valt de dokument, kataloger, register vi behöver...

Fält, här väljer vi de objekt som ska ingå i rapporten, barnflaggan indikerar om det kommer att finnas tillgängliga underordnade element för objektet eller inte, det är logiskt att för sträng, numerisk och liknande data kommer det inte att gå att ställa in flaggan till True.

Villkor, här väljer vi de objekt som kan användas under förhållanden i passerkontrollsystemet.

En del av arbetet görs i datasammansättningsschemat, och en del av det görs programmatiskt; låt oss titta på ett enkelt exempel:

Först skapar vi ett layoutdiagram för dokumentets datalayout och kallar det SKD (till exempel: 1C SKD), i det skapar vi ett datamängdsobjekt, sedan fyller vi i fälten, till exempel har vi ett dokument med en tabelldel av varor med detaljer - nomenklatur, kvantitet och pris.

Låt oss lägga till tre fält och fylla i varje kolumn med namnet på detaljerna, de återstående kolumnerna kommer att fyllas i automatiskt:

Låt oss skapa en knapp på dokumentformuläret, beskriv funktionsmekanismen i kontrollerade former:

&OnClient

Procedur Print()

OurReport = PrintOnServer(); //anropar funktionen på servern

OurReport.Show(); //visa den genererade rapporten

Slut på procedur

&På server

Funktion PrintOnServer()

DocumentObject = FormAttributeValue(“Objekt”);

//vi placerar tabelldelen Produkter i en struktur med namnet ProductsSKD på samma sätt som vi angav i själva SKD namnet på objektet som innehåller data

DataSet = ny struktur;

DataSet.Insert(“ProductsSKD”, DocumentObject.Products);

//vi får vår layout och ställer in standardinställningarna så att alla inställningar för rapportutdata tas från vår layout

OurLayout = DocumentObject.GetLayout(“SKD”);

Inställningar = OurLayout.DefaultSettings;

//skapa en datalayoutlayout med våra inställningar

LayoutLinker = newDataLayoutLayoutLinker;

LayoutLayout = LayoutComposer.Execute(OurLayout, Settings);

//utföra datasammansättning med vår datamängd

DataCompositionProcessor = newDataCompositionProcessor;

DataCompositionProcessor.Initialize(LayoutLayout, DataSet);

//Vi skapar ett kalkylark och visar vår rapport i den

ReportDocument = New TabularDocument;

OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument;

OutputProcessor.SetDocument(ReportDocument);

OutputProcessor.Output(DataCompositionProcessor);

Returnera DocumentReport;

EndFunction

Om du vill kan du få områden med vilken annan layout som helst och även visa dem i den här rapporten, till exempel har vi en standardlayout för att generera en betalningsorder och rubriken är mycket väl skapad i den, för att inte göra onödigt arbete, vi ska bara först få layouten, visa rubriken, sedan kommer vi att generera och visa vår rapport om passerkontrollsystemet.

HANDLA OM enande

Vi kan placera våra frågor och objekt i den, men till skillnad från en anslutning lägger den helt enkelt till tabeller till varandra, det vill säga om vi kopplar ihop två identiska tabeller kommer vi att sluta med en, och när den kombineras kommer den att fördubblas, låt oss titta vid ett enkelt exempel:

Vi har bord:

Vid kommunikation får vi:

Och i kombination:

Låt oss nu titta på att fylla i kolumner i datamängder (vi hoppar över några, eftersom de är relaterade till andra flikar; vi återkommer till dem i framtida artiklar):

- fält, ange det allmänna namnet på attributet;

­­- väg, ange namnet på de uppgifter som vi kommer att kontakta det med i passersystemet, till exempel i Beräknade fält;

- titel, ange namnet på attributet som kommer att visas i rapporten;

- fältbegränsning, ange tillgängligheten för detta krav;

- Begränsning av detaljer, ange tillgänglighet barnelement, det är viktigt att om tillgängligheten för detaljerna anges, så kommer själva fältet att vara tillgängligt, kanske kommer denna mekanik att ändras i framtida utgåvor;

- uttryck med vilket fältrepresentationen beräknas, det är bekvämt att använda när vi behöver ändra utdata av detaljer lite, till exempel behöver vi efter namnet nomenklatur visades stock, där den finns, fyll sedan i följande: Artikel + "finns på lagret" + Lager. Jag upprepar att tillgången till detaljerna sker genom det namn som anges i kolumnen väg;

- uttrycksordning, en bekväm mekanism för att ställa in rapportbeställning, där villkoret kan ställas in manuellt, i likhet med föregående punkt, men som praxis visar fungerar denna mekanism ofta inte som vi skulle vilja, och jag råder dig att använda standardsortering;

- värde typ, anger typen av värde för attributet, detta måste fyllas i om du använder följande fält;

- tillgängliga värden, fungerar bara när den är full värde typ, öppna formuläret och i kolumnen Menande vi anger elementet som behöver ändras, beroende på typen kan det vara fördefinierade objekt eller numeriska, till exempel detaljer har enkla värden, i presentation Vi anger vad vi behöver ändra till, ett exempel på en boolesk typ:

- dekorstandardinställning fältformat, liknande inställningen i hanterade formulär, gör att du kan anpassa utmatningen av vissa detaljer mer exakt och vackert.

Datauppsättningsanslutningar i 1C SKD

Här är den bara installerad vänster gå med, enligt en princip liknande anslutningar i förfrågningar, i kommunikationskälla ange huvudtabellen för anslutningen, i mottagare ytterligare. I uttryckskälla Och uttrycksmottagare Vi anger detaljerna för kommunikationen. Vi kommer att titta på de återstående kolumnerna mer i detalj när vi tittar på fliken. alternativ. Om det inte finns någon ytterligare anslutning med parametrar, rekommenderas det att göra anslutningen i begäran, detta kommer att påskynda rapporten.

41
Jag gjorde nyligen en rapport med ett obegränsat antal kolumner. Jag ville inte mixtra med koden, så jag bestämde mig för att göra det på passerkontrollsystemet. Det var inga problem med detta, det var nödvändigt att sträcka ut resultatet till en godtycklig layout (din egen rubrik +... 27
Även om CDS-studenter stöter på detta på första eller andra dagen, bör det finnas i FAQ-sektionen. Ett enkelt exempel på att programmera ut en rapport på en layout med standardinställningarna. //Hämta diagrammet från... 18
Vid generering av rapporter på passersystemet utökas alla grupperingar som standard, men ibland är det nödvändigt att visa en rapport med kollapsade grupperingar direkt efter generering! Denna kod i rapportmodulen kan du kollapsa... 9
Det som krävs vid utveckling av rapporter är att för en användare med begränsade rättigheter genereras rapporten helt utan kontrollrättigheter! Speciellt om RLS är konfigurerat. Det finns flera sätt att göra detta: 1. Installera...

I det här fallet avgör kryssrutan Required om fälten som används i källan (inställd på FALSE) eller i destinationen (satt till TRUE) är aktiverade och, baserat på detta, lägger till relationen till layouten.

För var och en av datamängderna kan du ställa in en hierarkikontroll:

Detta alternativ används om urvalsvillkoret för ett fält behöver bearbetas på ett icke-standardiserat sätt. Ett fält kan anges med en datamängd från vilken data hämtas för att kontrollera om en länk tillhör en hierarki av ett visst värde.

Fråga 11.33 i tentamen 1C: Platform Professional. Är det acceptabelt att använda flera datamängder?

  1. Endast när du använder dataset – objekt
  2. Endast när du använder datauppsättningar - fråga

Rätt svar är det första, det är acceptabelt i alla fall.


Fråga 11.10 i tentamen 1C: Platform Professional. När du definierar en relation mellan två datamängder i ett datasammansättningsdiagram

  1. Anslutningsalternativet (vänster, fullt) väljs av utvecklaren
  2. Den vänstra sammanfogningen av den första uppsättningen till den andra används alltid
  3. Den vänstra sammanfogningen av den andra uppsättningen till den första används alltid
  4. En vänsterkoppling av den första uppsättningen till den andra används, i vissa fall upprättas en inre koppling

Rätt svar är fjärde. Datauppsättningar ansluts endast med vänster eller inre koppling.

Fråga 11.13 i tentamen 1C: Plattform Professional. I vilka fall är det nödvändigt att konfigurera hierarkikontroll på fliken "Datauppsättningar" i layoutdiagramdesignerfönstret

  1. Om du behöver förbjuda att ta emot totaler enligt din egen hierarki som skiljer sig från den vanliga
  2. Om du behöver tillåta att totaler erhålls enligt din egen hierarki, annorlunda än den vanliga
  3. Om du behöver förbjuda installationen av urval för inträde i en grupp av din egen hierarki, annorlunda än den vanliga
  4. Om du behöver tillåta att urval inkluderas i en grupp av din egen hierarki, annorlunda än den vanliga

Rätt svar är nummer fyra, beskrivning i inlägget.

Fråga 11.16 i tentamen 1C: Plattform Professional. Vilka typer av kopplingar mellan två uppsättningar data kan implementeras i ett sammansättningssystem?

  1. Allt som i frågespråket: "Alla till alla", "Vänster", "Höger", "Inre" och "Full"
  2. Endast "Alla till alla", "Vänster", "Höger" och "Inre"
  3. Endast "vänster" och "inre"
  4. Endast "Alla till alla", "Vänster" och "Inre"
  5. Endast "Vänster", "Höger", "Inre" och "Full".

Rätt svar är fjärde, enligt testresultatet. Faktum är att den tredje är korrekt.

Fråga 11.17 i tentamen 1C: Plattform Professional. När du ställer in en relation mellan två datamängder väljs flaggan "Obligatoriskt förhållande". I vilket fall kommer användarens handlingar att leda till att anslutningen misslyckas?

  1. Anslutningen av data från båda uppsättningarna kommer att implementeras oavsett vilka inställningar användaren har gjort
  2. Listan över valda fält visar endast fälten i den vänstra uppsättningen
  3. I listan över valda fält anges endast fälten i den högra uppsättningen
  4. I listan över valda fält anges endast fälten i den vänstra uppsättningen, fältet för den högra uppsättningen är markerad
  5. I listan över valda fält anges endast fälten för den högra uppsättningen, fältet för den vänstra uppsättningen är markerad

Det korrekta svaret är det andra, om det bara finns en uppsättning (och källan), så finns det inget att ansluta.

Fråga 11.39 av tentamen 1C: Plattform Professional. Hur överförs extern data till en uppsättning - ett objekt i ett datasammansättningssystem?

  1. Med hjälp av det inbyggda språket genom datakompositionsprocessorn
  2. Använda det inbyggda språket via layoutbyggaren
  3. Med hjälp av det inbyggda språket genom datakompositionssystemets utdataprocessor

Rätt svar är det första, genom processorn.