Hem - Data
Enkla instruktioner - hur man visar bilder i rapporter på passersystemet. Använda en datakälla som ett objekt

Låt oss skapa en extern rapport som visar rapporteringsinformation om postsaldon och dess omsättning. Den begärda informationen begärs av begäran med hjälp av en datamängd av typen "Request", som innehåller förfrågningstexten:
VÄLJA
_DemoNomenclature.Link HUR Nomenclature
PLATS Aktuell nomenklatur
FRÅN
Directory._DemoNomenclature HUR MAN _DemoNomenclature
VAR
NOT _DemoNomenclature.Delete Mark
OCH INTE _DemoNomenclature.Detta är en grupp
;

////////////////////////////////////////////////////////////////////////////////
VÄLJA
CurrentNomenclature.Nomenclature,
_DemoRester av varor på lagringsplatserRester och omsättningar.Lagerplats,
_DemoResterande varor i lagringsplatserRemainingsAnd Omsättning.QuantityInitialRemaining,
_DemoResterande varor i lagringsplatserÅterstående Och Omsättning. Kvantitet Slutlig Återstående,
_DemoResterande varor i lagringsplatserÅterstående och omsättning. Kvantitet Inkommande,
_DemoResterande varor på lagerplatserResterande och omsättning. Kvantitet Förbrukning,
_DemoResterande varor i lagringsplatserRemainingsAndTurnover.QuantityOmsättning
FRÅN
CurrentNomenclature AS CurrentNomenclature
LEFT CONNECTION RegisterAccumulations._DemoRemaining GoodsInStorageLocations.RemainingsAndTurnover AS _DemoRemainingGoodsInStorageLocationsRemainingAndTurnover
Software CurrentNomenclature.Nomenclature = _DemoRemaining Goods in Storage LocationsRemainingsAndTurnover.Nomenclature

Som ett resultat innehåller rapporten följande fält (se figur 1):

Eftersom informationen är hämtad från den virtuella tabellen "Saldon och omsättningar" skapar ACS automatiskt två dataparametrar, början av perioden och slutet av perioden, som är nödvändiga för att ställa in gränserna för datasamplingsperioden. Jag föredrar att inte arbeta med sådana parametrar direkt, utan att ställa in deras värden genom en annan parameter som kommer att vara tillgänglig för användaren för redigering (se figur 2).
Rapporten klarar av sin uppgift, men rapportens rubrik är ganska torr. Under mitt arbete hittade jag flera sätt att designa en rapporthuvud:

  1. Ställa in fältrubriker på fliken "Datauppsättningar" i ACS;
  2. Ställa in fältrubriker på ACS-fliken "Inställningar";
  3. Programmatisk inställning av fälthuvuden;
  4. Ställa in rapporthuvudet med hjälp av en layout;
  5. Slutförande av resultatet (tabelldokument);
Låt oss titta på dem i detalj.

1. Ställa in rubriker på ACS-fliken "Datauppsättningar".

Allt är enkelt här, markera rutan bredvid "Titel"-fältegenskapen (dvs. avbryt autotiteln) och ange den önskade titeltexten (se figur 4).
Om du behöver ställa in designen för hela fältet, och inte bara för dess titel, så finns det en fältegenskap "Design", med vilken du kan ställa in en design för fältet, till exempel ändra teckensnitt eller ställa in bakgrunden färg (se figur 5).
Det är här min kunskap om fliken "Datauppsättningar" slutar.

2. Ställa in fältrubriker på ACS-fliken "Inställningar".

För att ställa in en fälttitel, måste du välja önskat fält, högerklicka för att öppna snabbmenyn och välj "Ange titel" (se figur 6)
För att gruppera fält (till exempel efter typ av information) måste du lägga till ett grupperingsfält och placera de obligatoriska fälten i det (se figur 7), kapsling är obegränsad.
Du kan också spela med fältegenskapen "Location", som bestämmer typen av fältgruppering.

Dessa åtgärder kan också utföras i 1C:Enterprise-läge genom att öppna rapportinställningarna, MEN, "Valda fält" måste inkluderas i rapportinställningarna (se figur 8).
Detta slutför den enkla delen av att ställa in rapporthuvudet. En av fördelarna med ovanstående åtgärder: all installation utförs med standardverktyg. Av nackdelarna: oförmågan att ställa in en flerradsfälttitel.

3. Programmera fälthuvuden

Plattformen låter dig ställa in fältrubriker programmatiskt, dessutom ställa in flerradiga sådana, vilket i sin tur gör det möjligt att flexibelt och dynamiskt ställa in fältrubriker vid generering av en rapport.

För att göra detta kommer vi att definiera en procedur i rapportmodulen När du lägger ut resultatet. I denna procedur kommer vi att skriva kod för att ställa in fältrubriker.

// 1. Hämta användarinställningar.
SettingsKD = ThisObject.SettingsLitter.GetSettings();

// 2. Vi får värdet på parametern "Period" från vilken vi bestämmer periodens start- och slutdatum.
ParameterPeriod = NewDataCompositionParameter("Period");
Period = SettingsCD.DataParameters.FindParameterValue(PeriodParameter).Value;
StartPeriod = Period.StartDate;
EndPeriod = Period.EndDate;

// 3. Förbered information om att omdefiniera fältrubriker. För att göra detta, låt oss skapa
// en array som kommer att innehålla information: Fältnamn - värden för egenskapen "Path" i
// datauppsättning (se figur 1), Titel - titeltext.
FieldList = New Array;
pagePeriodStart = Format(PeriodStart, "DF=dd.MM.åååå; DP="Tom datum"");
FieldInitialRemaining = New Structure("Fältnamn, Rubrik", "QuantityInitialRemaining", "Remaining on " + Symbols.PS + pageBeginningPeriod);
List ofFields.Add(FieldInitialRemaining);
strEndPeriod = Format(EndPeriod, "DF=dd.MM.åååå; DP="Tom datum"");
FieldFinalRemaining = New Structure("Fältnamn, Rubrik", "QuantityFinalRemaining", "Remaining on " + Symbols.PS + strEndPeriod);
FieldList.Add(FieldFinalRemaining);

// 4. Få en lista över fält som finns i gruppen "Återstående" (se figur 7) och
// ställ in en ny titel genom att gå igenom elementen i en loop.
SelectedFields = SettingsCD.Selection.Items; // Första nivån av fält.
SelectedFieldsRemains = SelectedFields.Items; // Återstår grupperingsfält.
För varje SelectedField From SelectedFieldsRemainders Cycle
Cykel för varje element i en matris från en lista över fält
LayoutField = NewDataCompositionField(ArrayItem.FieldName);
Om SelectedField.Field = LayoutField Då
SelectedField.Header = ArrayItem.Header;
endIf;
EndCycle;
EndCycle;

// 5. Ladda tillbaka de ändrade användarinställningarna.
ThisObject.SettingsLinker.LoadSettings(CDSettings);

Rapportresultat (se figur 10):
Metoden är svårare än alla ovanstående, men jag gillar den.

4. Ställa in rapporthuvudet med hjälp av en layout

För mer flexibel anpassning av rapportens utseende tillhandahåller ACS skapandet av layouter. I rapportinställningarna kommer vi att skapa en annan gruppering "detaljerade poster" och ställa in namnet "DZ Line" för denna gruppering (se figur 11).
På fliken Layouter lägger du till en grupprubriklayout. För layouten i ett kalkylarksdokument kommer vi att skapa en rapportrubrik (rapportrubriken ska innehålla lika många fältrubriker som antalet fält som den detaljerade posten visar) och ange området för kalkylarksdokumentet för layouten (se bild 12).
Som ett resultat har rapporten följande rubrik (se figur 13):

Figur 13. ACS-layout som rapporthuvud
Enligt min mening har layouter en stor nackdel: oförmågan att anpassa sig till en given användargrupp, så de bör användas om rapporteringsformuläret är reglerat och inte kan ändras. Försök att ställa in en gruppering för "LineDZ"-grupperingen och du kommer att se att layouten är förvirrad.

Informationsteknologins supportwebbplats innehåller en artikel Using predefined layouts, som i detalj beskriver hur man använder layouter i passersystem.

5. Slutförande av resultatet (tabelldokument)

Denna metod använder den underbara kalkylarksdokumentmetoden FindText(), men för att använda den här metoden måste du inaktivera standardbearbetning för att generera rapportresultatet.

Låt oss börja. Vi inaktiverar standardgenerering, för att göra detta i rapportmodulen för händelsen När du lägger ut resultatet Låt oss ställa in StandardProcessing-variabeln till False och skriva vår egen layout av resultatet:
StandardProcessing = Falskt;
LayoutLinker = newDataLayoutLayoutLinker;
LayoutLayout = LayoutLocker.Execute(
ThisObject.DataCompositionSchema,
ThisObject.SettingsLinker.Settings,
DecryptionData);
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout, DecryptionData, True);
OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument;
OutputProcessor.SetDocument(DocumentResult);
OutputProcessor.Output(CompositionProcessor);
Mjukvarulayouten för rapportresultatet beskrivs mer i detalj i artikeln

Det kompilerade resultatet matas ut till ett kalkylarksdokument - detta är variabeln DocumentResult. Därefter, efter att ha genererat resultatet och matat ut det till ett kalkylarksdokument, skriver vi kod för att ersätta en celltext med en annan. Låt oss till exempel ändra namnet på gruppen "Remainings" till "Remaining items" i rapporthuvudet (se figur 14):
Cell = DocumentResult.FindText("Resterande");
Om Cell<>Odefinierat då
Cell.Text = "Återstående objekt";
endIf;

Du kan också ställa in formatering för den hittade cellen; se cellegenskaperna för kalkylarksdokumentet i syntaxassistenten.

Jag upptäckte den här metoden nyligen; den är enkel och låter dig arbeta mycket flexibelt med rapporthuvudet, huvudsaken är att celltexten har unik text.

P.S. Kanske har du ett annat sätt att designa fältrubriker?

När du skapar rapporter med ett datasammansättningssystem (DCS) är det praktiskt att visa rapportparametrar (åtminstone de mest använda) på formuläret, för att inte tvinga användaren att fördjupa sig i standardfönstret för DCS-inställningar.

Låt oss titta på hur detta kan göras med vanliga 1C-formulär. Låt oss omedelbart reservera att vi i den här artikeln kommer att överväga exakt utmatningen av parametrar till formuläret, dvs. själva parametrarna i passersystemet måste redan vara skapade.

Det finns två sätt att mata ut ACS-parametrar till en vanlig form:

  • utdata för hela parameterinställningstabellen
  • utdata av enskilda parametrar i form av inmatningsfält.

Parameterinställningstabellen som visas på formuläret liknar parameterinställningstabellen som genereras av ACS-verktyg. För att visa det på formuläret måste du skapa ett kontrollelement Tabellfält, som har fastigheten Data ange Inställningar Composer.Settings.Data Options

I det här fallet kommer användaren att visas alla parametrar för åtkomstkontrollsystemet som inte har en tillgänglighetsbegränsning.

Men i vissa fall kanske den här metoden inte verkar så vacker och inte särskilt användarvänlig. Låt oss titta på hur man visar ACS-parametrar på ett formulär separat i form av vanliga inmatningsfält.

  1. Låt oss skapa rapportdetaljer som motsvarar parametrarna. I vårt exempel kommer dessa att vara detaljerna Startdatum, Slutdatum, Organisation. Låt oss ställa in lämpliga datatyper för dem.
  2. Låt oss skapa inmatningsfält på formuläret för var och en av parametrarna och koppla dem via egenskapen Data med rapportdetaljer. För varje inmatningsfält skulle det vara trevligt att skapa en etikett bredvid med namnet på parametern så att användaren förstår vilken parameter han redigerar.
  3. För varje inmatningsfält måste du skapa en procedur för händelsehanteraren När det ändras, vilket kommer att ställa in det användarvalda värdet till ACS-parametrarna. I exemplet skapade jag en procedur och tilldelade den att ändra händelser för alla tre inmatningsfälten. Det vill säga när en parameter ändras återställs alla tre. Ur prestationssynpunkt är detta troligen inte effektivt, men... Det finns inte många parametrar, skillnaden är inte märkbar. Om det finns ett stort antal parametrar är det värt att ställa in var och en i en separat procedur. Så, procedurkoden för hanteraren När det ändras kommer se ut så här:

    Procedur ParametersOnChange(Element)

    ParameterStartDate = SettingsLinker. Inställningar. Dataparametrar. Element. Find("Början av period"); //Sökning utförs med namnet på ACS-parametern
    ParameterStartDate Användning = Sant ; //Parametern kommer att användas under valet
    ParameterStartDate Värde = Startdatum; //Parametern tilldelas värdet för rapportattributet

    ParameterDataCon = LinkerSettings. Inställningar. Dataparametrar. Element. Find("EndPeriod");
    ParameterDateCon. Användning = Sant ;
    ParameterDateCon. Värde = SlutDag(Slutdatum) ;

    ParameterOrg = BuilderSettings. Inställningar. Dataparametrar. Element. Find("Organisation");
    ParameterOrg. Användning = Sant ;
    ParameterOrg. Värde = Organisation;

    Slut på procedur

Idag ska vi titta på att lösa ett intressant problem - visa bilder i en rapport.

Vad kan detta vara användbart för?

Här några exempel:

  • Prislista med bilder på produkter och logotyp i rubriken
  • Medarbetarprofiler med foton
  • Avstämning av beräkningar med stämpel och signatur i källaren
  • Rapporter/utskrivna blanketter med skannat tryck

I videon diskuterar vi också programbildning anmäla till SKD. Denna metod för att generera rapporter används i standardkonfigurationer– det här är ytterligare en anledning att titta noga :)

Fördefinierade layouter i ACS

Genom att använda fördefinierade layouter kan du åsidosätta standardrapportlayouten.

I den här lektionen kommer vi, förutom att ställa in problemet, överväga:

  • Lagring av binär data i en modellkonfiguration
  • Möjlighet att använda ACS-layouter för att visa bilder

Programmatisk generering av en rapport om passersystemet

För att lösa problemet med att visa bilder i en rapport om passerkontrollsystemet är det nödvändigt att generera det programmatiskt.

Det är när man genererar en rapport programmatiskt som det är möjligt att komma åt binär data.

Under denna lektion kommer vi att göra:

  • Mata ut layoutresultatet till ett kalkylarksdokument
  • Använda objektet Dekrypteringsdata
  • Hämtar binär data från databasen
  • Programmatiskt skapande av ritningar i ett kalkylbladsdokument

Visar en bild i ACS-rapporten

I den här lektionen utför vi de sista stegen: vi visar tidigare erhållna binära data i rapporten.

För att göra detta läggs en ritning till ett kalkylbladsdokument, varefter den visas i rapporten.

Mångsidigheten hos bildutgångsalgoritmen

Den utvecklade bildutgångsalgoritmen är universell - algoritmen fortsätter att fungera oavsett förändringar i rapportstrukturen.

Det är faktiskt vad vi kommer att bevisa i den här lektionen.

Dessutom kommer vi att överväga funktionen för generering av bakgrundsrapporter på åtkomstkontrollsystemet (generera en rapport med rutinuppgifter).

Visar en bild i rapporthuvudet

Ofta behöver du visa en statisk bild i sidhuvudet eller sidfoten i en rapport.

Det verkar vara en enkel uppgift, men i fallet med ACS måste du veta hur du löser det:

  • Steg 1. Generera en rapport programmässigt
  • Steg 2. Skapa en separat layout med önskad sidhuvud eller sidfot
  • Steg 3. Innan du fyller i ACS-rapporten, visa ett avsnitt med nödvändiga data.

Den här videon visar tydligt lösningen på problemet.

Njut av att titta! :)

De senaste dagarna har vi publicerat material på ACS.

Vad händer om 1C-programmeraren/implementeraren inte känner till passerkontrollsystemet? Kanske är det verkligen inte så viktigt?

Ok, låt oss titta på vad som väntar en specialist som skriver rapporter "på knäet" (till exempel genom att använda manuell utmatning till ett kalkylarksdokument).

Skjut inte pianisten, han spelar så gott han kan.

Rapporter är praktiskt taget i alla standardkonfigurationer baserat på SKD.

För en specialist utan CDS-kunskap blir slutförandet av standardrapporter ett lotteri - varför och hur den eller den siffran visas i rapporten, hur man lägger till nya källor, var man redigerar de beräknade siffrorna i koden...

SKD – rapporteringsstandard i standardkonfigurationer, och 1C skriver inte kommentarer baserat på de som ännu inte har studerat standarderna :)

jäkla tid...

Utan ett passersystem sker rapportutvecklingen till stor del manuellt.

Det är såklart häftigt att gå ut som Rambaud med en skruvmejsel i tänderna och typ göra alla :)

Som ett resultat - stora arbetskostnader för rapportutveckling och felsökning. Och detta kommer åtminstone att larma vilken chef/kund som helst: "konstigt, men förstår han verkligen detta??"

Och när det kommer till efterföljande revidering av rapporten, blir detta ofta en huvudvärk (särskilt om det är någon annans rapport)...

Utvecklingsresor till klienter för att ändra grupperingen i rapporten

SKD låter dig ta emot kvalitetsrapporter utan programmering. Skelettet håller på att göras under några minuter, sedan – bugar.

Och användare kan anpassa sådana rapporter utan att involvera en programmerare, generera flera presentationsalternativ - diagram, grafer, listor, tabeller.

För att uppnå en sådan mångsidighet i rapporter som skapas programmatiskt, omöjligt inom en rimlig tidsram.

Därför - ring, spårvagn, låt oss gå... Det här är en sådan professionell tillväxt för ett 1C smeknamn...

"Har du inte samma, men med pärlemorknappar? "Tyvärr nej..." (c)

Vad händer om vissa data behöver hämtas från ett annat system - från en annan 1C-databas eller inte från 1C alls?

Med hjälp av åtkomstkontrollsystemet kan du skapa en rapport som arbetar med aktuell informationssäkerhetsdata och tar emot data från en annan källa - ingen programmering krävs.

Utan passersystem kommer externa data att erhållas programmatiskt och inte på det mest triviala sätt.

Om du vill behärska ACS professionellt och dagligen tillämpa i ditt arbete, anmäl dig till kursen:

Stöd - 2 månader. Kursens omfattning – 34 undervisningstimmar.

Dröj inte med dina studier!

Nästan alla tillgängliga parametrar i dialogrutan för utskriftsinställningar (skrivarinställningar, sidegenskaper) kan specificeras direkt när ett kalkylarksdokument genereras.

Låt oss titta på egenskaperna och metoderna för ett kalkylarksdokument relaterade till utskriftsinställningar (i de givna exemplen är "TabDoc" ett objekt av typen "Kalkylarksdokument").

Fast egendom "Skrivarnamn" Låter dig ange en annan skrivare än standard för utskrift. Namnet måste matcha skrivarnamnet som konfigurerats i systemet:

TabDoc.PrinterName="Canon iR1133";

När du skriver ut ett parti dokument kan du spara tid genom att ställa in sorteringsalternativet:

TabDoc.ParsingByCopies=Sant;

Antalet exemplar kan anges på följande sätt:

TabDoc.Number of Instances=5;

Naturligtvis kan du ställa in fälten:

TabDoc.MarginLeft=20; //Vänster marginal 20 mm, andra marginaler 10 mm (standard)

Några fler sidegenskaper:

TabDoc.PageOrientation=Sidorientering.Landskap; TabDoc.InstancesOnPage=2; //Arket kommer att innehålla 2 sidor TabDoc.Autoscale=true; //liknande skalinställningarna för "sidbredd".

Om det behövs kan du ange ett specifikt skalningsvärde i procent (egenskap "Skriv ut skala" ).

Fast egendom "Sidstorlek" låter dig ställa in standard sidformat – "A3", "A4", "A5" (en komplett lista med alternativ finns i 1C-hjälpen).

TabDoc.PageSize="A3"; // bokstaven A måste vara på engelska

För en icke-standard pappersstorlek (anpassad) kan du ange sidhöjd och bredd (i mm):

TabDoc.PageSize="Custom";//icke-standardstorlek TabDoc.PageHeight=350; TabDoc.PageWidth=350;

Även i ett kalkylarksdokument kan du styra utmatningen av sidhuvuden och sidfötter och deras innehåll. Detta görs med hjälp av egenskaper "Sidhuvud" Och "Sidfot". Till exempel:

TabDoc.Header.Output=true; //TabDoc-huvudet kommer att skrivas ut.HeaderSizeTop=7; //sidfotsstorlek 7 mm (standard 10 mm) TabDoc.Header.VerticalPosition=VerticalPosition.Top; TabDoc.Header.InitialPage=2;//huvudet är härlett från den andra pageHeaderFont=NewFont("Courier New", 8,True); TabDoc.Header.Font=HeaderFont; //kursivt teckensnitt TabDoc.Header.TextInCenter="Header"; TabDoc.Header.TextRight="Sida[&PageNumber] av [&PagesTotal]"; //sidnumrering TabDoc.Header.TextLeft="[&Date]";//aktuellt datum

Det genererade dokumentet skickas för utskrift med metoden "Typ()". Det finns två möjliga köpalternativ.

1) Direkt till skrivaren:

TabDoc.Print(PrintDialogUseMode.NotUse); TabDoc.Print(true);

2) Före utskrift visas en utskriftsdialogruta:

TabDoc.Print(PrintDialogUseMode.Use); TabDoc.Print(false);

Dessutom kan du styra hur dokumentet delas upp i sidor. Du kan uppskatta antalet sidor i ett dokument baserat på de aktuella skrivarinställningarna:

TabDoc.Number of Pages();

Att använda metoder "CheckOutput()" Och "CheckAttach()" Du kan bestämma om ett kalkylarksdokument eller en mängd kalkylarksdokumentområden får plats på sidan i höjd och bredd med de aktuella skrivarinställningarna.

Man bör komma ihåg att driften av de tre sista metoderna beror på den installerade skrivaren. Om metoden inte kan hitta den, kastas ett undantag.

Metoder låter dig tvinga infogning av sidbrytningar "OutputVerticalPageSeparator()" Och "OutputHorizontalPageSeparator()" .

Således kan du styra utskriften sida för sida och kontrollera sidfyllningen:

Om inte TabDoc.CheckOutput(ArrayOutputAreas) Då TabDoc.OutputHorizontalPageSeparator(); EndIf

En viktig egenskap hos 1C:Enterprise 8.2-plattformen är den strikta separeringen av egenskaper och metoder efter exekveringskontext. Även om alla ovanstående egenskaper är tillgängliga i alla sammanhang, är metoderna som anges inte tillgängliga på den tunna klienten. Undantaget är metoden "Print()", vars tillgänglighet är begränsad till klientdelen av uppenbara skäl. Detta innebär att bildningen av ett kalkylarksdokument ska ske på servern och det ska skickas för utskrift i en klientprocedur.



 


Läsa:



Hur man gör klistermärken i VK Hur man gör klistermärken i Telegram

Hur man gör klistermärken i VK Hur man gör klistermärken i Telegram

Etiketter är ett program för att skapa design av etiketter och prislappar för varor, visitkort, kundkort och andra små tryckta...

Kryssa på Twitter: vad betyder det och hur man får det Vad betyder km på Twitter

Kryssa på Twitter: vad betyder det och hur man får det Vad betyder km på Twitter

Förmodligen har varje Twitter-användare åtminstone en gång märkt ett konto i sitt flöde med en mystisk blå bock bredvid namnet. Vad betyder det här...

Tips för att ta hand om en bärbar dator Vad man inte ska göra med en bärbar dator

Tips för att ta hand om en bärbar dator Vad man inte ska göra med en bärbar dator

Hur ska du hantera din bärbara dator så att den håller länge och inte sviker dig i det mest avgörande ögonblicket? Vilka är driftsfunktionerna...

Matchande bilder baserade på "karakteristiska egenskaper" 1c datautbyte som ändrar objektmatchning

Bildbaserad matchning

Skriv ut (Ctrl+P) Datamatchningsmekanism vid utbyte genom ett universellt format Datamatchningsmekanismen är utformad för att lösa problemet...

feed-bild RSS