Designer af eksterne trykformularer 1c.

Det er ingen hemmelighed, at selvom et stigende antal virksomheder i vores tid skifter til elektronisk dokumenthåndtering, mister det gamle ordsprog "Uden et stykke papir du ..." ikke sin relevans. Det skete således, at kontrolorganerne af en eller anden grund primært interesserer sig for papirdokumenter. Derfor, hvis du aktivt bruger programmet 1C: Regnskab eller Enterprise til økonomistyring, er det vigtigt at vide, hvordan du udskriver et elektronisk dokument oprettet ved hjælp af programmet.

Printbare formularer i 1C giver dig mulighed for at omdanne et elektronisk dokument til en trykt version.

For at gøre dette har udvikleren leveret et fremragende værktøj - Print Constructor. Med den kan du oprette dokumenter, hvor du kan angive alle data, du har brug for, og ikke kun nogle få standardformularer. Dette gælder især for de dokumenter, der ikke har en strengt reguleret form, som under ingen omstændigheder kan ændres. Dette omfatter især et udført arbejde, nogle fakturaer eller betalinger.

I denne vejledning foreslår vi at forstå printdesignerens muligheder, overveje hvilke typer trykformularer, der kan være, og hvordan de adskiller sig fra hinanden. Vi vil også vise med et eksempel, hvordan man udskriver den oprettede formular.

Til at begynde med er det værd at finde ud af, hvad der generelt er en printbar formular i 1C 8. Dette er en 1C regnearksskabelon (som Excel), hvor der er angivet nogle variable linjer, som udfyldes med data fra programmet, når der tegnes op et dokument.

Der er to typer printables:

  • Intern (indbygget). De er gemt i programkonfigurationen, så det er bedre ikke at ændre dem, da der kan opstå problemer under opdateringen senere.
  • Ekstern - gemt separat fra programindstillingerne. Og med deres hjælp kan du oprette og forberede dig til udskrivning af et dokument af næsten enhver kompleksitet uden at påvirke konfigurationen af ​​1C 8-programmet.

Hvordan vælger man allerede forberedte layouts? Når du har udført en indtægts- eller udgiftsoperation, for eksempel, har skrevet en fuldførelseshandling, klikker du på knappen "Udskriv" for at udskrive dokumenterne. Listen viser en liste over formularer til udskrivning, som allerede er udfyldt med de indtastede data om transaktionen og din virksomhed. Ved at klikke på den type dokument, du skal bruge, åbner du et forhåndsvisningsvindue, så du kan sikre dig, at de udfyldte data er korrekte. Udskriv-knappen udsender dokumentet til printeren.

Med det grundlæggende af vejen, lad os finde ud af, hvor alle dine printables er gemt. Lad os gå videre til næste spørgsmål.

Hvor opbevares printables?

Du kan se de indbyggede printables både i konfiguratortilstand og i normal virksomhedstilstand. I det første tilfælde skal du trykke på den tilsvarende knap i startvinduet, når du starter programmet. Du vil se programmenuen, finde grenen "Realisering af varer og tjenester", som indeholder punktet "Layouts". Den indeholder ofte kun to poster - "Faktura" og "Act". Hvor er så alle andre, for listen er meget mere omfattende? De gemmer sig bare et andet sted. Du skal åbne grenen "Generelt" - "Generelle layouts", næsten alle layout er gemt i den.

I det andet tilfælde skal du gå til menuafsnittet "Administration" - "Udskriv formularer, rapporter og behandling" - "Udskriv formularlayouts". Det vil vise alle dokumentlayouts. Det er bemærkelsesværdigt, at de i samme menu kan redigeres.

Hvad angår eksterne formularer, skal de først enten oprettes gennem konfiguratortilstanden eller ved at downloade en færdiglavet fil og derefter tilsluttes i menuen "Administration" - "Udskrevne formularer, rapporter og behandling" - "Yderligere rapporter og behandling" . Vi vil tale om dette lidt senere.

Oprettelse af en simpel formular gennem den indbyggede Print Constructor

En sådan printbar indebærer ikke muligheden for dyb redigering, da dette vil medføre en ændring i konfigurationen af ​​programmet samt yderligere vanskeligheder ved opdatering af det. Men hvis du er helt tilfreds med standardformularen, eller hvis du ønsker at dykke ned i forviklingerne ved at oprette en ekstern formular, er denne metode helt egnet til dig.

  1. Først og fremmest, start i Configurator-tilstand, find det dokument, du skal bruge, for eksempel Realisering af varer og tjenester, i dokumentegenskaberne, gå til Handlinger - Konstruktører - Printdesigner.
  2. Når du bliver bedt om en jobindstilling, skal du vælge Almindelige formularer.
  3. Giv det nye layout et navn, f.eks. "Invoice Print".
  4. Vælg de detaljer, du gerne vil se i dokumentets overskrift. Desuden skal de vælges i den rækkefølge, de vil blive vist. For at vælge skal du markere elementet i venstre kolonne med markøren og trykke på pilen i midten af ​​skærmen, så attributten vises i højre kolonne.
  5. Marker de detaljer, der skal vises, i tabeldelen. Valget af detaljer følger samme princip som i det foregående afsnit.
  6. På samme måde skal du vælge detaljerne i bunden af ​​dokumentet.
  7. På den sidste fase af oprettelsen skal du vælge, om du vil udskrive med det samme uden forhåndsvisning, om du har brug for tabelbeskyttelse, og derefter bekræfte oprettelsen af ​​formularen med OK-knappen.

Oprettelse af en ekstern printbar

Formularer oprettet gennem Print Designer kan sammenlignes med en visuel programeditor, når du ikke indtaster al koden manuelt, men kun sammensætter den ud fra de foreslåede elementer. Den eksterne formular er en fil med manuelt skrevet programkode, som beskriver proceduren for visning af data på skærmen. Dette er det, der giver dig mulighed for at redigere den udskrevne formular, som du vil, og specificere absolut alle data i enhver rækkefølge.

En yderligere fordel er, at selvom du ikke forstår eller simpelthen ikke ønsker at forstå forviklingerne ved 1C 8-programmering, kan du overlade denne procedure til fagfolk. De vil være i stand til at udarbejde den nødvendige formular til dig, give den til dig i form af en færdiglavet fil, som du kun aktiverer med et par klik på en knap.

Nu mere om selve proceduren. Overvej eksemplet med at oprette et "Konto"-layout for dokumentet "Implementering (handlinger, fakturaer)".

  1. Åbn programmet 1C 8 i konfiguratortilstand.
  2. Klik på Filer - Ny - Ekstern behandling, giv den et navn (den bør ikke indeholde mellemrum), og klik derefter på Handlinger - Åbn objektmodul.
  3. Indtast følgende kode i indtastningsfeltet, der åbnes (værdier, der kan ændres til dine egne, er fremhævet med gult):

Funktion DetailOnExternalProcessing() Export
RegistrationParameters = Ny struktur;
AssignmentArray = New Array;
Array af tildelinger. Tilføj("Dokument. Realisering af varer af tjenester"); //Angiv det dokument, som vi laver et eksternt print til. form
RegistrationParameters.Insert("View", "PrintForm"); //kan være - Udskrivningsformular, udfyldning af et objekt, yderligere rapport, oprettelse af relaterede objekter ...
RegistrationParameters.Insert("Assignment", Assignment Array);
Registration Parameters.Insert("Navn", "Ordre for salg af varer"); //navn, under hvilket behandlingen vil blive registreret i biblioteket for ekstern behandling
RegistrationParameters.Insert("SafeMode", FALSE);
RegistrationParameters.Insert("Version", "1.0");
RegistrationParameters.Insert("Information", "Denne udskrivbare formular blev oprettet som en prøve");
CommandTable = GetCommandTable();
AddCommand(CommandTable, "External Order", "External Order", "ServerMethod Call", True, "PrintMXL");
RegistrationParameters.Insert("Kommandoer", CommandTable);
ReturparametreRegistrering;
EndFunction // ExternalProcessing Details()
GetCommandTable() funktion
Kommandoer = Ny værditabel;
Commands.Columns.Add("View", New TypeDescription("String"));//hvordan beskrivelsen af ​​den printbare formular vil se ud for brugeren
Commands.Columns.Add("Identifier", NewTypeDescription("String")); //print formular layout navn
Commands.Columns.Add("Brug", NewTypeDescription("String")); //Call ServerMethod
Commands.Columns.Add("ShowAlert", NewTypeDescription("Boolean"));
Commands.Columns.Add("Modifier", NewTypeDescription("String"));
Hold tilbage;
EndFunctions
Procedure AddCommand(CommandTable, View, Identifier, Usage, ShowAlert = False, Modifier = "")
NewCommand = CommandTable.Add();
NewCommand.View = Vis;
NewCommand.Identifier = Identifikator;
NewCommand.Use = Brug;
NewCommand.ShowAlert = ShowAlert;
NewCommand.Modifier = Modifikator;
Slutprocedure

  1. Gem layoutet til udskrivning som en fil i en hvilken som helst mappe på din harddisk, navngiv det i overensstemmelse hermed.

Indsæt proceduren for start af udskrivning fra programmenuen i det samme dokument (kommandoerne markeret med gult skal matche linjen):

AddCommand(CommandTable, "Ekstern ordre", "Ekstern ordre"):
Procedureudskrivning (array af objekter, samling af udskriftsformularer, udskriftsobjekter, outputparametre) eksport
PrintManagement.OutputSpreadsheetDocumentToCollection(
Samling trykte formularer,
"Ekstern ordre"
"Ekstern ordre"
GeneratePrintForm(ArrayObjects,PrintObjects);
EndProcedure // Print()

  1. Indsæt layoutet for den udskrevne formularudfyldning ved at klikke på navnet på den eksterne formular i nederste venstre hjørne og vælge "Layouts" - "Tilføj" - "Regnearksdokument", giv den et navn. Derefter skal du udfylde regnearket med de nødvendige data. For eksempel:
    • Ordre på varenr. [ReleaseNumber] fra [ReleaseDate] - højreklik - Egenskaber - Layout - Udfyldning - Skabelon.
    • Opret de kolonner, du ønsker skal vises i dit dokument.
    • Vælg de indtastede celler, klik Tabel - Navne - Tildel et navn - indtast navnet "Overskrift".
    • Kopier linjen med tabeloverskrifterne, vælg dem, højreklik - Egenskaber - Layout - Udfyldning - Parameter.
    • Vælg linjen, navngiv den, for eksempel "String TH".
    • Opret en sidefod: skriv Total, cellen hvori det samlede beløb skal vises, navngiv SumTotal, vælg "Parameters" i egenskaberne.
    • Angiv den ansvarlige, i egenskaberne for cellen til visning af efternavnet, angiv "Parameter".
    • Vælg de nederste rækker og navngiv området "Footer".
  2. Skriv nu i inputvinduet funktionen til at generere en udskrevet formular:

Funktion GeneratePrintForm(ReferenceToDocument,PrintObjects)
SpreadsheetDocument = Nyt SpreadsheetDocument;
SpreadsheetDocument.PrintParameterName = "PRINT_PARAMETERS_InvoiceForVRTU";
ProcessingLayout = GetLayout("InvoiceForPaymentExternal");
// udfyld overskriften
AreaHat = LayoutProcessing.GetArea("Hat");
AreaHeader.Parameters.DocumentNumber = LinkToDocument.Number;
AreaHeader.Parameters.DocumentDate = LinkToDocument.Date;
AreaHeader.Parameters.OrganizationName = LinkToDocument.Organization.Name;
//viser overskriften i et regnearksdokument
SpreadsheetDocument.Output(RegionHeader);
//udfyld PM-linjerne
StringScope =ProcessingLayout.GetRegion("StringP");
For hver aktuelle række fra ReferenceToDocument.Products-løkke
FillPropertyValues(RowArea.Parameters, CurrentRow);
SpreadsheetDocument.Output(StringArea);
EndCycle;
//fyld sidefod
AreaFooter = LayoutProcessing.GetArea("Footer");
AreaFooter.Parameters.QuantityTotal = LinkToDocument.Products.Total("Quantity");
AreaFooter.Parameters.AmountTotal = LinkToDocument.Products.Total("Amount");
RegionFooter.Parameters.OwnerName = LinkToDocument.Manager.Name;
//output sidefoden i et regnearksdokument
SpreadsheetDocument.Output(RegionFooter);
SpreadsheetDocument.AutoScale = sand;
Returner RegnearkDokument;
EndFunctions

  1. Gem dine ændringer i dokumentet.
  2. Nu skal du aktivere den oprettede formular. For det:
    • Gå til "Administration" - "Udskriv formularer, rapporter og behandling" - "Yderligere rapporter og behandling".
    • Klik på knappen "Opret", vælg den eksterne formularfil i stifinderen, bekræft indtastningen med knappen "Gem og luk".
  3. For at tjekke, gå til Salg - Implementering (handlinger, fakturaer), klik på knappen "Udskriv", vælg din formular og kontroller, at den er udfyldt korrekt.
  4. Udskriv dokumentet, hvis det er nødvendigt.

Konklusion

Vi har sammen med dig gennemgået et eksempel på oprettelse af en udskrivbar formular gennem Print Designer og gennem det eksterne formularoprettelsesværktøj. Vi håber, at alt ordner sig for dig. Stil dine spørgsmål i kommentarerne.

Så hvorfor er det overhovedet nødvendigt? For eksempel skal du blot ændre nogle få tegn i layoutet af en udskrevet formular eller tilføje en linje eller fjerne noget. Fjerne konfigurationen fra support, så du senere med hver opdatering oplever problemer? Hvorfor? Det er bedre at bruge en ekstern trykplade!

For at skabe har vi brug for behandling, som jeg fandt på internettet, takket være forfatteren for dette mirakel "Designer af eksterne udskrivningsformer". Du kan downloade og diskutere det på: forum.-infostart.-en/-forum24/-topic74569/.

Lad os starte, behandlingen starter i 1C:Enterprise. Sådan ser hovedvinduet ud:

For eksempel skal vi ændre den udskrevne form for dokumentet "Indkommende kontantordre", for dette skal du i feltet Dokumenttype vælge det. Vi går ind i konfiguratoren og kopierer hele modulet af dokumentet "Indgående kontantordre". Indsæt det derefter i feltet "Kildetekst", som vist på følgende billede:

Det næste trin er knappen Byg træ. Her er det eneste, der kræves af os, at finde navnet på proceduren "Udskriv" i listen over procedurer, vælge det og klikke på knappen "Vælg hoved". Selve behandlingen vil afgøre, hvilke procedurer og funktioner der er nødvendige for udskrivning, og derudover, på knappen "behøver / ikke nødvendigt", valgte jeg to procedurer "Hent strukturen til udskrivning af formularer", da procedurens brødtekst bruger "Opret en GO Table for Conducting-funktion, så vælger vi den også med knappen "behov":

Det næste trin er at indtaste navnet på det layout, der skal udskrives, og som vi vil ændre, som vist:

Vi åbner den til eftersyn med det samme! Behandlingsformularen åbnes, i feltet vælger vi det nødvendige dokument til udskrivning af kasseapparatet, knappen på formularen "Kør" og den eksterne udskrivningsformular er klar.

Fra behandlingsskemaet kan du også nemt registrere et eksternt trykskema, hertil er der en særlig knap på skemaet, hvorefter det bliver muligt at printe fra et dokument. Det er alt, nu kan du foretage ændringer i printlayoutet. Held og lykke!

Denne artikel vil i detaljer beskrive, hvordan en nybegynder, der ikke kender 1C 8 godt, laver en printbar. Lad os for eksempel tage en af ​​de mest almindelige 1C 8-konfigurationer - Regnskab 2.0. Oprettelse af en printbar 1C skrivestadier:

  • Oprettelse af en ekstern printbar fil;
  • Oprettelse af et trykt formularlayout;
  • Skrivning af en programkode til visning af udskrevne formulardata på skærmen;
  • Oprettelse af parametre til automatisk registrering af en trykt formular;
  • Tilslutning af en ekstern trykformular til basen 1C virksomheder.

Oprettelse af en trykt formular 1C. Formulering af problemet

Vi er påkrævet i konfigurationen Regnskab 2.0 oprette en printbar til et dokument Modtagelse af varer og tjenesteydelser. Vis følgende data i overskriften på den udskrevne formular:

  • Organisation;
  • Modpart;
  • modpartsaftale;
  • Dato for modtagelse.

Vis tabeldata i tabelform Produkter dokument. Tabellen skal indeholde følgende kolonner:

  • Nomenklatur;
  • Antal;
  • Pris;
  • Sum;
  • Samt prisen på varen for den aktuelle dato (efter pristype fra dokumentet).

Ekstern behandlingsfil

Lad os gå videre til at løse problemet. For at komme i gang skal du åbne 1C 8 i tilstand Konfigurator. Det er i denne tilstand, at alle udviklinger udføres på platformen 1C 8. Nu skal vi oprette en ekstern behandlingsfil. For at gøre dette skal du klikke på menuen Fil -> Ny... eller ved ikonet for den nye fil.

Vælg elementet i det vindue, der åbnes Ekstern behandling.

Længere ind i feltet Navn du skal indtaste navnet på den eksterne behandling. I vores tilfælde, lad os kalde det ganske enkelt: "Udskrivningsformular", synonymfeltet udfyldes automatisk. Bemærk det i feltet Navn, ekstern behandling, skal navnet skrives uden mellemrum og tegnsætningstegn.

Tilføj en ekstern behandlingsattribut ObjectReference og vælg for ham type DocumentReference.Receipt of GoodsServices. For at gøre dette skal du vælge elementet i metadatatræet for ekstern behandling 1C Forudsætninger og tryk på knappen Tilføje(grøn plusknap). I højre del af skærmen åbnes vinduet med attributegenskaber i feltet Navn skriv - LinkToObject. PÅ Mark Type tryk på knappen med tre prikker.

Udvid grenen i typetræet DocumentLink, og find varen Modtagelse af varer og tjenester der, marker afkrydsningsfeltet ud for det og klik OKAY.

Lad os gemme den eksterne behandlingsfil på harddisken, til dette vil vi bruge menuen Filer -> Gem, ikon Gemme(blå floppy disk) eller en tastaturgenvej ctrl+s. Lad os navngive den gemte fil "PrintForm".

Opret et printbart layout

Lad os begynde at skabe et 1C-printbart layout. Layoutet fungerer som en skabelon for outputtet af det printbare, så hvis du vil have dit printbare til at se godt ud, skal du være opmærksom på det.

Lad os tilføje et nyt layout i det eksterne behandlingsmetadatatræ, ​​vi vil ikke ændre noget i layoutdesignervinduet og trykke på knappen Parat.

Lad os i det nye layout, der åbnes, oprette flere områder, der er nødvendige for at vise den udskrevne formular. Alle layoutområder, vi har brug for, vil være vandrette, så for at oprette et nyt område skal du vælge det nødvendige antal layoutlinjer og gå til menuen Tabel -> Navne -> Tildel navn eller brug tastaturgenvej Ctrl+Shift+N indtast derefter navnet på regionen i feltet. Når du opretter et layoutområde, skal du ikke være bange for at lave en fejl med antallet af linjer; du kan altid tilføje eller fjerne dem. For at slette en 1C-layoutrække skal du vælge den ønskede række og vælge punktet i kontekstmenuen Slet. For at tilføje en ny linje til layoutet skal du vælge en hvilken som helst linje i layoutet og vælge elementet i kontekstmenuen skubbe fra hinanden.

Tilføjelse af en layoutoverskrift

Lad os skabe et område først. Hat, vil den vise dataene for overskriften på den udskrevne formular. Til dette område har vi brug for syv layoutlinjer. Vælg dem, og som jeg skrev ovenfor, tryk på tastaturgenvejen Ctrl+Shift+N, i marken Navn skriv "Hat" og tryk på knappen Okay.

Lad os fylde layoutområdet med de data, vi har brug for. Normalt er ingen trykt formular komplet uden en header, så vi opretter den også i vores layout-header. Da vi i overskriften udover navnet på den udskrevne formular også vil vise nummeret på det dokument, hvorfra det blev udskrevet, indstiller vi teksten til overskriften i layoutet som en parameter. En layoutparameter er en specielt udpeget layoutcelle, hvori forskellige data kan vises ved hjælp af det indbyggede 1C 8-sprog. Titlen skal vises i hele bredden af ​​den udskrevne formular, så lad os beslutte, hvor mange layoutceller der vil være nok til, at vi kan udskrive på arkets standard liggende orientering.

Normalt er tretten eller fjorten layoutceller nok, vælg dem i den første linje i området Hat og flet ind i én celle ( Kontekstmenu -> Flet). Derefter skal du dobbeltklikke på den resulterende store celle og skrive navnet på parameteren, i vores tilfælde "HeaderText". For at den indtastede tekst skal blive en fuldgyldig parameter, skal du højreklikke på cellen og vælge punktet i kontekstmenuen Ejendomme. Bogmærke Layout finde et felt fyldning og vælg værdien Parameter. Parametrene i 1C-layoutet er angivet med parenteser "<>».

Titlen på den udskrevne formular skal skille sig ud blandt anden tekst, så vælg cellen igen og brug ikonerne på layoutformateringspanelet til at indstille tekstjusteringen Centreret og skriftstørrelse 14.

Efter titelteksten vil vi vise i området Hat data om organisation, modpart, modpartsaftale og dato for modtagelse af varerne. Da alle disse data også er taget fra dokumentet, vil vi også dekorere dem med parametre. Derudover bør du inden hver parameter skrive en forklarende tekst, så brugeren nemt kan forstå, hvor organisationen er, og hvor modparten er mv. Alle disse handlinger ligner at oprette en header, så jeg vil ikke dvæle ved dem i detaljer, jeg vil kun give et billede med, hvad der skulle vise sig i sidste ende.

Figuren viser, hvordan layoutmulighederne adskiller sig fra almindelig tekst.

Tilføjelse af en layouttabeloverskrift

Den sidste ting, vi skal oprette i dette layoutområde, er tabeloverskriften, hvor dataene i tabeldelen vil blive vist. Produkter. De kolonner, der kræves til tabellen, er beskrevet i afsnittet "Problemerklæring". Vi vil også oprette en tabeloverskrift ved at flette celler og skrive tekst (kolonnenavne). Vælg grænserne for tabeloverskriften ved hjælp af værktøjet Ramme, som er placeret i layoutformateringslinjen.

Tilføjelse af en tabel til et layout

Lad os skabe et andet område i layoutet - Data. Det vil vise datatabellen for tabeldelen Produkter. Vi har kun brug for én layoutlinje for dette område. For at få vist alle linjerne i tabeldelen i en trykt form, udfylder og viser vi dette område det nødvendige antal gange. Højttalere i området Data skal matche kolonnerne i tabeloverskriften, så det bliver ikke svært at udfylde det. Den eneste forskel er i området Data vi har brug for muligheder, ikke kun tekst. Bemærk også, at numeriske parametre som standard er formateret i højre margen og tekstparametre til venstre. For at vælge kolonner skal du også bruge værktøjet Ramme.

Tilføjelse af en sidefod til et layout

Det sidste område af layoutet, vi har brug for, er Kælder. Det vil vise totaler efter mængde og mængde. Skabelsen ligner skabelsen af ​​et område Data, men derudover skal resultaterne fremhæves med fed skrift.

Resultatet skulle være et layout, der ser sådan ud:

Oprettelse af en trykt formular 1C. Programmering

Lad os begynde at programmere - dette er den vigtigste fase i at skabe en trykt formular. Først og fremmest, lad os gå til modulet for det eksterne trykpladeobjekt, det er her, vi programmerer. For at gøre dette skal du trykke på i hovedvinduet for ekstern behandling Handlinger -> Åbn objektmodul.

I det eksterne udskriftsformularobjektmodul skal du oprette en eksportfunktion Forsegle().

Funktion Print() Export EndFunction

Bemærk venligst, at denne funktion er påkrævet for eksterne printables i konfigurationer, der bruger et almindeligt program. Vi vil skrive al efterfølgende programkode, der er nødvendig for at vise den udskrevne formular inde i denne funktion.

Initialisering af grundlæggende variabler

Lad os oprette en variabel TabDoc, som vil indeholde et regnearksdokument - det er ham, der er den udskrevne formular, hvori vi vil vise de udfyldte områder af layoutet.

TabDoc = nyt regnearksdokument;

ind i en variabel Layout vi vil modtage det trykte formularlayout, som er oprettet af os. For at gøre dette bruger vi den indbyggede funktion GetLayout(<ИмяМакета>).

Layout = GetLayout("Layout");

Vi vil få alle områder af layoutet ind i variabler. For at gøre dette bruger vi layoutmetoden GetRegion(<ИмяОбласти>) .

Header Area = Layout GetArea("Header"); AreaData = Layout.GetArea("Data"); AreaFooter = Layout.GetArea("Kælder");

Visning af den printbare sidehoved i et regnearksdokument

Alle nødvendige variable initialiseres. Lad os begynde at udfylde og vise layoutområder i et regnearksdokument. Først og fremmest, lad os udfylde titlen på den udskrevne formular, for dette skal vi sende parameteren Titeltekst, som vi har lavet i layoutet, den tekst, vi har brug for. For at udfylde parameterværdierne har layoutområdet en særlig samling, som kaldes - Muligheder. Hvorfra gennem "." du kan få en hvilken som helst parameter. I titelteksten sender vi teksten: "Udskrivningsformular", samt dokumentnummeret.

Header Area.Parameters.HeaderText = "Udskrivningsformular"+ReferenceToObject.Number;

De resterende parametre i overskriften vil blive udfyldt på en lignende måde, alle de krævede værdier for dem vil blive hentet fra rekvisitterne ReferenceToObject, som indeholder et link til det dokument, der skal udskrives.

HeaderScope.Parameters.Organization = LinkToObject.Organization; Header area.Parameters.Account = LinkToObject.Account; Header Area.Parameters.IncomingDate = ObjectReference.Date; Header Area.Parameters.Counterparty Agreement = LinkToObject.Counterparty Agreement;

Alle overskriftsparametre er udfyldt, vi vil vise det i regnearksdokumentet, vi oprettede, til dette bruger vi metoden produktion(<Область>) .

TabDoc.Output(HeaderArea);

At skrive en anmodning om et trykt handicap

Lad os begynde at udfylde og vise området Data. Oprettelse af en 1C printbar indebærer også at skrive en forespørgsel, vi har brug for den for at få dataene fra tabeldelen Produkter og priser Nomenklaturer for den aktuelle dato, vi vil bruge Anmodning. 1C 8-forespørgselssproget ligner SQL, eller rettere sagt, kopierer praktisk talt funktionerne i dens SELECT-sætning, men hele forespørgslen er skrevet på russisk. Derfor, hvis du er i det mindste fjernt bekendt med SQL, så vil du nemt forstå 1C 8 forespørgselssproget.

I denne trykte form vil anmodningen være ret enkel, og mange vil sige, at man kunne undvære det, men kendskab til forespørgselssproget og evnen til at bruge det korrekt er en af ​​hovedfærdighederne hos en 1C-programmør. Forespørgsler gør det muligt at bruge færre ressourcer til at opnå de mest komplekse datavalg, og det er også meget nemmere at forstå forespørgslens tekst end i programkoden skrevet uden at bruge forespørgslen (eller med minimal brug af den). Derudover har 1C 8 en meget god forespørgselsbygger, der giver dig mulighed for interaktivt at indsamle en forespørgsel fra de nødvendige tabeller.

Lad os oprette en variabel, der vil indeholde anmodningen.

Request = Ny anmodning;

Teksten til anmodningen vil blive sammensat ved hjælp af forespørgselsbyggeren. Lad os starte med at skrive:

Request.Text = "";

Sæt musemarkøren mellem citaterne, tryk på højre museknap. Vælg elementet i kontekstmenuen, der åbnes Anmod konstruktør, det vil hjælpe os meget med at skabe en 1C printbar. Derefter åbnes forespørgselsdesignervinduet, det indeholder mange faner, men vores forespørgsel skal kun bruge fire: "Tables and Fields", "Relations", "Conditions", "Joins / Aliases".

Til vores forespørgsel har vi brug for to tabeller: tabeldelen Produkter dokument Modtagelse af varer og tjenesteydelser og et udsnit af de seneste oplysninger om den aktuelle dato for registret Varepriser.

Find kolonnen i venstre del af designervinduet Database. Den indeholder et træ med alle metadataobjekter, lad os finde dem, vi har brug for. For at gøre dette skal du åbne grenen Dokumenterne og find dokumentet Tjenester for indgående varer, udvid den og find tabeldelen Produkter, træk den til kolonnen i forespørgselsdesigneren borde. Der er tre måder at trække og slippe på: ved at trække, ved at dobbeltklikke på bordet eller ved at vælge det og klikke på knappen ">". Lad os åbne en filial Registeroplysninger og find et bord der PriserVare.SliceLast, træk den også til kolonnen borde. Disse to tabeller er nok til vores forespørgsel.

Lad os vælge de felter, vi skal bruge, fra de resulterende tabeller. For at gøre dette, i kolonnen bordeåbne bordet og find felterne: Nomenklatur, Beløb, Pris, Mængde og træk dem til den tredje kolonne i konstruktøren - felter. Lad os åbne bordet , find feltet Pris og træk den også til felter.

Strukturen af ​​tabellerne og felterne i vores anmodning er klar, lad os nu behandle betingelserne. Vi har brug for dataene i tabeldelen Produkter blev ikke taget fra alle kvitteringer, men kun fra den som vi udskriver. For at gøre dette stiller vi en betingelse på bordet Indgående varer Tjenester Varer. Lad os gå til fanen "Betingelser" i forespørgselsbyggeren. I en kolonne felter de tabeller, vi valgte tidligere, er placeret, for den tilstand, vi har brug for feltet Link fra bordet Modtagelse af varer, tjenester, varer, træk det til vinduet Betingelser.

I 1C-forespørgsler kan du bruge parametre, de er nødvendige for at overføre data til forespørgslen. For eksempel, hvis vi ønsker at begrænse udvælgelsen af ​​dokumenter til et specifikt dokument, så kan vi bruge en parameter til at videregive et link til dette dokument til anmodningen og bruge denne parameter i betingelsen. Det er præcis, hvad vi vil gøre i vores anmodning.

En gang ud af vinduet Vilkår vi tilføjede et felt Link, vil forespørgselsbyggeren oprette en parameter med samme navn og placere den efter tegnet "=". Denne parameter kan omdøbes, hvis det ønskes. I teksten til anmodningen er parametrene markeret med tegnet "&", men i dette tilfælde er dette ikke nødvendigt, da det antages, at parameteren er i anden del af tilstanden, du skal bare huske det. Hvordan man sender en værdi til en 1C-anmodningsparameter vil blive diskuteret nedenfor.

Da vi i forespørgslen ikke bruger den fulde pristabel for varen, men en virtuel (et udsnit af sidstnævnte i dette tilfælde), skal vi indstille betingelserne for dannelsen af ​​denne virtuelle tabel, i vores tilfælde er dette dato for klipningen og betingelsen for pristypen (der skal vælges priser, der har en strengt defineret pristype - den, der er angivet i det kvitteringsdokument, som vi udskriver).

For at udfylde parametrene for den virtuelle tabel, gå til fanen Tabeller og felter forespørgselskonstruktør i kolonnen borde vælg tabellen PriserVareSliceSeneste og tryk på knappen Virtuelle bordmuligheder placeret øverst. I vinduet, der åbnes, i feltet Periode du bør indstille den parameter, som datoen, for hvilken prisnedsættelsen vil blive foretaget, vil blive overført. I vores tilfælde vil dette være den aktuelle dato (det vil sige i dag), så vi vil navngive parameteren "&CurrentDate". I betingelsesfeltet skriver vi betingelserne for pristypen, vi sender den også i parameteren, som vi kalder “&PriceType”. Den resulterende betingelse vil se sådan ud (hvor Pris Type- register måling Varepriser):

PriceType = &PriceType

Parametrene for den virtuelle tabel er udfyldt, klik på knappen Okay.

Nu hvor vi har begrænset valget til kun det dokument, vi har brug for, lad os skabe relationer mellem forespørgselstabellerne. Hvis dette ikke gøres, så vil priserne fra tabellen PricesItemsSliceLast ikke være knyttet til varen fra kvitteringen. Lad os gå til fanen Forbindelser forespørgselskonstruktør. Lad os oprette et link for felt Nomenklatur mellem vores to borde. For at gøre dette skal du trykke på knappen Tilføje, i marken tabel 1 vælge et bord Indgående varer Tjenester Varer, og i feltet Tabel 2 - PricesItemsSliceLast. Vælg felterne i forbindelsesbetingelserne Nomenklatur fra begge borde.

Det skal også bemærkes, at i forespørgselsvalget skal vi hente alle rækkerne fra fanebladet Produkter og priser kun, hvis de er tilgængelige for den aktuelle dato efter dokumentpristype. Således er disse faner Produkter er obligatoriske, men prisafskæringsdata er det ikke. Derfor er det i forbindelsen mellem disse tabeller nødvendigt at bruge den såkaldte LEFT JOIN, og den venstre (eller obligatoriske) tabel bliver Indgående varer Tjenester Varer, og den rigtige (eller valgfri) PriceItemSliceLast. For at den venstre sammenføjning af forespørgselstabellerne skal fungere som beskrevet ovenfor, skal du markere afkrydsningsfeltet Alle efter feltet Tabel 1.


Anmodningen er næsten klar, det er kun tilbage at arbejde lidt på feltaliasserne. Gå til bogmærke Fagforeninger / Aliaser og sæt et alias for feltet PriserVareSliceSidste.Pris. Aliasnavnet vil være − Pris For I dag, er det nødvendigt, så navnene på forespørgselsvalgsfelterne og navnene på parametrene i layoutet af den udskrevne formular stemmer overens.

Arbejdet i forespørgselsdesigneren er slut, lad os trykke på OK-knappen. Efter at konstruktørvinduet er lukket, vil du se, at linjen med anmodningsteksten er udfyldt og ser sådan ud:

Forespørgsel. Tekst = "Vælg | modtagelse af tjenester. Nomenklatatorer, | modtagelse af tjenester. Oversigtsvarer, | modtagelse af tjenester. Krydsning af varer. Produkter, | Efterforskningstjenester. Kompleksiteter, | priser for fangerne af den næste dag. (| &Aktuel Dato , PriceType = &PriceType) AS PricesItemsSliceLast | By Incoming GoodsServicesGoods.Nomenclature | = PricesItemsSliceLast.Nomenclature |WHERE | Incoming GoodsServicesGoods.Reference = &Reference";

Udførelse af en anmodning

Vi sender de nødvendige parametre til anmodningen, til dette vil vi bruge anmodningsmetoden sætParameter(<ИмяПараметра>,<Значение>). Brug den indbyggede funktion for at få den aktuelle dato Den aktuelle dato(), returnerer den dato og klokkeslæt for computeren.

Lad os udføre en forespørgsel for at få et udvalg med de data, vi har brug for. For at gøre dette bruger vi først forespørgselsmetoden Udfør(), og så metoden Vælge().

Selection = Query.Execute().Select();

Udfyldelse af den printbare tabel

Som et resultat, i variablen Prøve vil indeholde et udvalg af forespørgselsresultater, kan du navigere gennem det ved hjælp af metoden Næste(), og for at omgå det hele skal du bruge en løkke Farvel. Strukturen vil se sådan ud:

Mens Selection.Next() Loop EndCycle;

Det er i denne cyklus, at vi vil udfylde og vise layoutområdet Data. Men lad os først initialisere to variable af en numerisk type. I dem vil vi samle totalerne efter det antal og det beløb, som vi skal vise i området Kælder.

Totalsum = 0; TotalNumber = 0;

Inde i løkken vil vi fylde området Data data fra det aktuelle udvalgselement til variabler Samlet Sum og Samlet Antal tilføj sum- og mængdeværdier, og vis til sidst området i et regnearksdokument ved hjælp af den metode, vi allerede kender Produktion(). Da feltnavnene på vores anmodning er nøjagtig de samme som feltparameternavnene Data, så til udfyldning vil vi bruge den indbyggede procedure FillPropertyValues(<Приемник>, <Источник>), der kopierer ejendomsværdierne<Источника>til ejendomme<Приемника>.

While Selection.Next() Loop FillPropertyValues(DataArea.Parameters, Selection); TotalSum = TotalSum + Sample.Sum; TotalQuantity = TotalQuantity + Sample.Quantity; TabDoc.Output(DataArea); EndCycle;

Udskrivning af sidefoden af ​​udskrivningsformularen til et regnearksdokument

Det er tilbage at udfylde og vise det sidste område af layoutet - Kælder. Vi har allerede forberedt dataene til påfyldning, påfyldning og output udføres i henhold til samme skema.

AreaBasement.Parameters.TotalQuantity = TotalQuantity; RegionBasement.Parameters.TotalAmount = TotalAmount; TabDoc.Output(RegionFooter);

Regnearksdokumentet er fuldstændigt udfyldt, det er tilbage at vise det på skærmen, så brugeren kan se den udskrevne formular og om nødvendigt udskrive den. Men i typiske 1C 8-konfigurationer er procedurerne for specialmoduler ansvarlige for output af eksterne udskrivningsformularer. Derfor er det nok at vende tilbage fra funktionen Forsegle() udfyldt regneark.

Returner TabDoc;

På dette stadium er programmeringen afsluttet, og oprettelsen af ​​den printbare formular 1c er næsten færdig. Funktionens fulde tekst Forsegle() Jeg vil ikke give det her, du kan se det i en printbar fil, som du kan downloade nederst i artiklen.

Oprettelse af en trykt formular 1C. Muligheder for automatisk registrering

Når du tilslutter en ekstern printbar til databasen, bestemmer systemet ikke automatisk hvilket dokument eller mappe det printbare er beregnet til, du skal vælge det manuelt. Og hvis en anden person har skrevet den trykte formular, og du kun bliver bedt om at forbinde den, så kan valget blive tvetydigt. For at undgå sådanne problemer er det i alle eksterne printables nødvendigt at oprette et layout med autoregistreringsparametre. Hvis den er oprettet og korrekt formateret, bestemmer systemet automatisk, hvilket dokument eller bibliotek den udskrevne formular er beregnet til.

Det gøres som følger:

  • I ekstern behandling opretter vi et nyt layout. Vi kalder det "Parameters_Autoregistration" (vigtigt ikke at tage fejl!).
  • I den første celle i layoutet skriver vi Dokumenterne.(eller Opslagsbøger.) og navnet på det dokument, som du vil forbinde det printbare til.

Tilslutning til bunden af ​​en ekstern udskrivningsformular

  • Kør 1C 8 i tilstand Selskab;
  • Gå til menuen Service -> Yderligere rapporter og behandling -> Yderligere eksterne trykskemaer;
  • Klik på knappen Tilføje;
  • Klik på ikonet i det vindue, der åbnes Erstat ekstern behandlingsfil;
  • Hvis du har oprettet parametre for automatisk registrering, accepterer vi at bruge dem;
  • Hvis du ikke har oprettet parametre for automatisk registrering, så i tabeldelen Tilbehør til trykpladen tilføje det nødvendige dokument eller bibliotek;
  • Vi trykker på knappen OKAY.

Derefter vil den eksterne printable være tilgængelig i menuen Forsegle dokument Levering af varer og tjenesteydelser. Oprettelsen af ​​en 1C printbar på dette kan betragtes som komplet.

Overvej at skrive en enkel printbar ind 1s 8.1 - 8.2 på konfigurationseksemplet Virksomhedsregnskab 2.0. Antag, at du vil skrive en ekstern printbar til dokumentet: vis dokumentets hoveddata såvel som fra tabeldelen Produkter: nomenklatur, pris, mængde og beløb.

Du kan downloade det resulterende eksempel ved at .

I konfiguratoren 1C Enterprises 8 oprette ekstern behandling ( Fil->Ny->Ekstern behandling), angiv et navn, opret en attribut, der kræves til den eksterne udskrivningsformular ReferenceToObject med type DocumentReference.Realization of GoodsServices.

Opret et printbart layout

Tilføjelse af en ny layout, forlad layouttypen regnearksdokument. Vi opretter tre områder på layoutet: Overskrift, Data og Kælder. Det kan du gøre ved at vælge det ønskede antal linjer og klikke på menuen Tabel->Navne->Tildel navn (Ctrl+Shift+N).

Derefter begynder vi at placere tekst og parametre i områderne. Lad os sætte det i overskriften udskrivbart navn, dokumentnummer og organisation, samt tegne grænserne for tabeloverskriften og skrive navnene på kolonnerne. Når du opretter en parameter i celleegenskaberne, skal du indstille egenskaben på fanen Layout fyldning til mening Parameter.

I området ved Data opret parametre til udlæsning af rækkerne i tabelsektionen( Nomenklatur, pris osv.), men i området Kælder for totaler efter mængde og beløb.

Programmering

Lad os gå til modulet til printbare objekter Handlinger->Åbn objektmodul.

Lad os oprette en eksportfunktion, der er obligatorisk for udskrivning af formularer Forsegle().

Funktion Udskriv () Eksport EndFunctions

Lad os oprette en variabel i funktionen regnearksdokument, hvori den trykte formular vil blive vist, får vi layout og layout område.

TabDoc = nyt regnearksdokument; Layout = GetLayout("Layout" ); Header Area = Layout.GetArea("Header" ); ScopeData = Layout.GetScope("Data" ); AreaFooter = Layout.GetArea("Kælder" );

Udfyld parametrene hatte og tag det til regnearksdokument.

Header Area.Parameters.HeaderText = +ObjectReference.Number; HeaderScope.Parameters.Organization = LinkToObject.Organization; TabDoc.Output(HeaderArea);

For at få tabelrækker Produkter brug forespørgsel.

Request = ny anmodning; Query.SetParameter("Reference", ObjectReference); Query.Text = "VÆLG | Realisering af varer, tjenester, varer. Nomenklatur, | Realisering af varer, tjenester, varer. Beløb, | Realisering af varer, tjenester, varer. Pris, | Salg af varer, tjenester, varer, mængde| FRA | Document.Salg of GoodsServices.Goods AS Realisering af GoodsServicesGoods| HVOR | ImplementationProductsServicesProducts.Reference = &Reference";

Vi sender rekvisitterne til anmodningsparameteren ReferenceToObject at specificere i tilstanden HVOR at vi kun behøver data fra det dokument, hvorfra vi viser den udskrevne formular. For at få et udvalg af en forespørgsel, udfører vi den først og vælger derefter rækkerne.

Selection = Query.Execute().Select();

Dernæst skal du i løkken udfylde parametrene for området Data for hver linje i dokumentvalget og vis dem i regnearksdokument. Også i løkken tæller vi de samlede værdier antal og beløb. Vi vil ikke udfylde hver parameter separat, men vi vil bruge proceduren FillPropertyValues((<Приемник>, <Источник>) fra global kontekst, kopierer den ejendomsværdierne <Источника> til ejendomme <Приемника> . Matching udføres af ejendomsnavne. Det kan du læse mere om i syntaksassistent 1C Enterprise 8.

Totalsum = 0 ; TotalNumber = 0 ; While Selection.Next() Loop FillPropertyValues(DataArea.Parameters, Selection); TotalSum = TotalSum + Sample.Sum; TotalQuantity = TotalQuantity + Sample.Quantity; TabDoc.Output(DataArea); EndCycle ;

Udfyld og vis området Kælder.

AreaBasement.Parameters.TotalQuantity = TotalQuantity; RegionBasement.Parameters.TotalAmount = TotalAmount; TabDoc.Output(RegionFooter);

Vi returnerer det udfyldte regnearksdokument fra funktionen Forsegle().

returner TabDoc;

Hvis du bruger en af ​​de typiske konfigurationer, så efter at have returneret regnearksdokumentet 1C vil automatisk vise den udskrevne formular. Du kan også bruge regnearksmetoden til output. At vise().

5. Tilslutning af det printbare til dokumentet

typiske konfigurationer 1C 8 der er en mappe til registrering af eksterne trykformularer Ekstern Bearbejdning. For at oprette forbindelse skal du gå til menuen i virksomhedstilstand Service->Yderligere rapporter og behandling->Yderligere eksterne trykskemaer.

Vi tilføjer et nyt element i biblioteket, indlæser den udskrevne formular fra disken og vælger dokumenttypen.

Nu i dokumentet Salg af varer og tjenesteydelser en ny printbar vises.

Udskriv formular automatisk registrering

For at undgå behovet for at vælge dokumenttype manuelt, når du tilslutter det printbare, kan du konfigurere automatisk registrering. For at gøre dette tilføjer vi et nyt layout og kalder det Parameters_Autoregistrering(kun det) og i dens første celle skriver vi Dokumenterne.<Наименование документа> (eller Opslagsbøger.<Наименование справочника> ).

Nu, når vi tilslutter printformularen, bliver vi bedt om at bruge muligheder for automatisk registrering.

Layout konstruktør giver dig mulighed for at oprette layouts, der bruges både af objekterne i den anvendte løsning og af selve den anvendte løsning som helhed. Layouts kan indeholde forskellige data, der er nødvendige for at vise information, mens du arbejder.

Konstruktøren kaldes automatisk af systemet, når der oprettes et nyt layout (f.eks. når der oprettes et nyt referencelayout i konfigurationsvinduet):

Konstruktøren giver dig mulighed for at oprette både tomme layouts og layouts, der indeholder nogle oplysninger. Dette kan være et tomt layout af et regnearksdokument, som ligner regneark og er meget udbredt i dannelsen af ​​output-former af dokumenter og rapporter; det kan være et tomt tekstdokumentlayout eller et layout, der indeholder binære data.

Designeren understøtter også oprettelse af layouts, der indeholder et ActiveDocument (f.eks. et Word-dokument, et Excel-regneark eller en CorelDRAW-tegning). Derudover giver designeren dig mulighed for at oprette layout, der indeholder HTML-dokumenter eller geografiske skemaer. For rapporter, der bruger datasammensætningssystemet, giver designeren dig mulighed for at oprette layouts, der indeholder et datasammensætningsskema og et datasammensætningsdesignlayout.

Resultatet af designerens arbejde bliver det færdige layout. Det kan for eksempel være et tomt regnearksdokumentlayout.