Investeringer

Oppretting av eksterne trykte skjemaer 1s. Publikasjoner. Kobler ekstern prosessering til konfigurasjonen

Oppretting av eksterne trykte skjemaer 1s.  Publikasjoner.  Kobler ekstern prosessering til konfigurasjonen

La oss vurdere å skrive den enkleste trykte formen i 1s 8.1 - 8.2 ved hjelp av konfigurasjonseksempel Bedriftsregnskap 2.0. La oss si at du må skrive et eksternt trykt skjema for et dokument: vis dokumentets grunnleggende data, så vel som fra tabelldelen Varer: nomenklatur, pris, mengde og beløp.

Du kan laste ned det resulterende eksemplet fra .

I konfiguratoren 1C Enterprises 8 skape ekstern behandling (Fil->Ny->Ekstern behandling), angi navnet, opprett de nødvendige detaljene for det eksterne trykte skjemaet Objektreferanse med type DocumentLink Salg av varer og tjenester.

Opprette et trykt skjemaoppsett

Legg til en ny oppsett, la layouttypen stå regnearkdokument. Vi lager tre områder på layouten: Overskrift, Data Og Kjeller. Dette kan gjøres ved å markere nødvendig mengde linjer og klikkemenyen Tabell->Navn->Tildel navn (Ctrl+Shift+N).

Etter dette begynner vi å plassere tekst og parametere i områdene. Vi legger det i overskriften navn på det trykte skjemaet, dokumentnummer Og organisasjon, og også tegne kantlinjene til tabelloverskriften og skrive navnene på kolonnene. Når du oppretter en parameter i celleegenskapene, på Layout-fanen bør du angi egenskapen Fylling i betydning Parameter.

I området Data la oss lage parametere for å vise rader i tabelldelen( Nomenklatur, pris etc.), og i området Kjeller for totaler etter mengde og beløp.

Programmering

La oss gå til utskriftsskjemaobjektmodulen Handlinger->Åpne objektmodul.

La oss lage en eksportfunksjon der som er obligatorisk for trykte skjemaer. Tetning().

Funksjon Skriv ut () Eksport EndFunction

I funksjonen skal vi lage en variabel for regnearkdokument, som det trykte skjemaet skal skrives ut i, får vi oppsett Og layout områder.

TabDoc = nytt TabularDocument; Layout = GetLayout("Layout" ); HeaderArea = Layout.GetArea("Header" ); AreaData = Layout.GetArea("Data" ); AreaFooter = Layout.GetArea("Footer" );

La oss fylle ut parameterne hatter og bringe den til regnearkdokument.

HeaderArea.Parameters.HeaderText = +LinkToObject.Number; HeaderArea.Parameters.Organization = LinkToObject.Organization; TabDoc.Output(HeaderArea);

For å få tabellrader Varer vi bruker forespørselen.

Request = ny forespørsel; Request.SetParameter("Link", ObjectLink); Query.Text = "VELG | Salg av varer og tjenester varer. Nomenklatur, | Salg av varer og tjenester varer. Beløp, | Salg av varer og tjenester varer. Pris, | Salg av varer og tjenester varer. Antall|FRA | Dokument Salg av varer og tjenester Varer HVORDAN Salg av varer og tjenester varer|HVOR | Salg av varer og tjenester varer. Link = &Link";

Vi sender detaljene til forespørselsparameteren Objektreferanse, for å indikere i tilstanden HVOR, at vi kun trenger data fra dokumentet som vi henter det trykte skjemaet fra. For å få et eksempelspørring, kjører vi det først og velger deretter radene.

Select = Query.Run().Select();

Neste i løkken fyller vi ut arealparametrene Data for hver linje i dokumenteksemplet og vis dem i regnearkdokument. Vi beregner også de totale verdiene i løkken mengder Og beløp. Vi fyller ikke ut hver parameter separat, men bruker prosedyren Fyll innPropertyValues((<Приемник>, <Источник>) fra global kontekst, kopierer den egenskapsverdier <Источника> til eiendommer <Приемника> . Matching gjøres av eiendomsnavn. Du kan lese mer om dette i syntaksassistent 1C Enterprise 8.

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

Fyll og vis området Kjeller.

AreaFooter.Parameters.TotalQuantity = TotalQuantity; AreaFooter.Parameters.TotalSum = TotalSum; TabDoc.Output(AreaFooter);

Returnerer det ferdige regnearkdokumentet fra funksjonen Tetning().

returner TabDoc;

Hvis du bruker en av standardkonfigurasjonene, så etter å ha returnert regnearkdokumentet 1C vil vise det trykte skjemaet på skjermen. Du kan også bruke regnearkdokumentmetoden for utdata. Forestilling().

5. Koble et trykt skjema til et dokument

I standardkonfigurasjoner 1C 8 Det er en katalog for registrering av eksterne trykte skjemaer Ekstern behandling. For å koble til, gå til menyen i bedriftsmodus Service->Tilleggsrapporter og behandling->Ekstra eksternt trykte skjemaer .

Legg til et nytt katalogelement, last det utskrevne skjemaet fra disken og velg dokumenttype.

Nå i dokumentet Salg av varer og tjenester En ny utskriftsbar vises.

Autoregistrering av trykt skjema

For å sikre at du ikke trenger å velge dokumenttype manuelt når du kobler til et utskriftsskjema, kan du konfigurere automatisk registrering. For å gjøre dette, legg til en ny layout og kall den Innstillinger_Automatisk registrering(dette er den eneste måten) og i den første cellen skriver vi Dokumentasjon.<Наименование документа> (eller Kataloger.<Наименование справочника> ).

Nå, når du kobler til et utskriftsskjema, vil vi bli bedt om å bruke parametere for automatisk registrering.

Det utføres i samsvar med standardoppsettet til det trykte skjemaet innebygd i applikasjonen av utviklerne (dette kalles "levert" layout).

Om nødvendig kan du endre standardoppsettet og i fremtiden skrive ut et dokument basert på ditt personlige ("egendefinerte") oppsett. For å redigere oppsettet til det trykte skjemaet, er det gitt en mekanisme for opplasting til en lokal datamaskin. Redigering av oppsettet utføres i den lokale versjonen av 1C:Enterprise-systemapplikasjonen (spesielt kan du bruke gratisprogrammet 1C:Enterprise - Working with Files).


Slik endrer du det utskrivbare oppsettet:




Redigering av oppsettet til det utskrevne skjemaet er fullført; ved utskrift av dokumentet vil oppsettet som endringene er gjort til brukes.

Hvis du vil gå tilbake til forrige utskrivbare layout, klikker du på knappen Bruk standard layout. I dette tilfellet vil det redigerte oppsettet fortsatt være til stede på serveren, og det kan slås på igjen ved å trykke på knappen Endring.

Vi ønsker deg hyggelig arbeid!

Hvordan sette inn en firmalogo i et trykt skjemaoppsett?

Her er et spesifikt eksempel på redigering av et trykt skjemaoppsett Fakturaer for betaling, nemlig, vi vil vurdere hvordan du setter inn et bilde i det, for eksempel en firmalogo (dette bildet må først forberedes og lagres som en grafisk fil, for eksempel i png- eller jpg-format).


Dermed vil nå fakturaene du forbereder for overføring til dine motparter inneholde firmalogoen din. For å legge til en logo i andre dokumenter, må du gjenta de beskrevne trinnene for de tilsvarende trykte skjemaene for disse dokumentene.

Vi ønsker deg hyggelig arbeid!

Denne artikkelen vil fortelle deg i detalj hvordan en nybegynner med lite kunnskap om 1C 8 kan lage et trykt skjema. La oss for eksempel ta en av de vanligste 1C 8-konfigurasjonene - Regnskap 2.0. Lage et trykt skjema 1C skrivestadier:

  • Opprette en ekstern utskriftsskjemafil;
  • Oppretting av et trykt skjemaoppsett;
  • Skrive programkode for å vise utskrevne skjemadata på skjermen;
  • Opprette parametere for automatisk registrering av et trykt skjema;
  • Koble til et eksternt utskriftsskjema til basen 1C bedrifter.

Oppretting av et trykt skjema 1C. Formulering av problemet

Vi er påkrevd i konfigurasjonen Regnskap 2.0 lage et trykt skjema for et dokument Mottak av varer og tjenester. Vis følgende data i overskriften på det trykte skjemaet:

  • Organisasjon;
  • Motpart;
  • Motpartsavtale;
  • Dato for kvitering.

Vis dataene i tabelldelen som en tabell Varer dokument. Tabellen skal inneholde følgende kolonner:

  • Nomenklatur;
  • Mengde;
  • Pris;
  • Sum;
  • Og også prisen på varen for gjeldende dato (etter type pris fra dokumentet).

Ekstern behandlingsfil

La oss gå videre til å løse problemet. Først, la oss åpne 1C 8 i modus Konfigurator. Det er i denne modusen at all utvikling utføres på plattformen 1C 8. Nå må vi lage en ekstern behandlingsfil. For å gjøre dette, klikk på menyen Fil -> Ny... eller ved ikonet til en ny fil.

Velg elementet i vinduet som åpnes Ekstern behandling.

Neste i feltet Navn Du må skrive inn navnet på den eksterne behandlingen. I vårt tilfelle vil vi ganske enkelt kalle det "PrintedForm"; synonymfeltet fylles ut automatisk. Vær oppmerksom på det i feltet Navn, ekstern behandling, skal navnet skrives uten mellomrom eller skilletegn.

La oss legge til eksterne behandlingsattributter LinkToObject og velg skriv for ham DocumentLink Mottak av varer og tjenester. For å gjøre dette, velg elementet i 1C ekstern behandlingsmetadatatreet Requisites og trykk på knappen Legg til(knapp med grønt pluss). Attributtegenskaper-vinduet åpnes på høyre side av skjermen, i feltet Navn la oss skrive - ReferenceToObject. I felt Type trykk på knappen med tre prikker.

La oss utvide grenen i typetreet DocumentLink, og finn elementet Mottak av varer og tjenester der, merk av i boksen ved siden av og klikk OK.

La oss lagre den eksterne behandlingsfilen på harddisken; for å gjøre dette, bruk menyen Fil -> Lagre, piktogram Lagre(blå diskett), eller en hurtigtast Ctrl+S. La oss gi den lagrede filen navnet "PrintForm".

Opprette et trykt skjemaoppsett

La oss begynne å lage et oppsett av 1C-utskriftsskjemaet. Oppsettet fungerer som en mal for utskriften av det trykte skjemaet, så hvis du vil at det trykte skjemaet ditt skal se bra ut, bør du være oppmerksom på det.

La oss legge til et nytt oppsett i det eksterne behandlingsmetadatatreet; vi vil ikke endre noe i layoutdesignervinduet og klikke på knappen Klar.

I det nye oppsettet som åpnes, vil vi opprette flere områder som er nødvendige for å vise det trykte skjemaet. Alle layoutområdene vi trenger vil være horisontale, så for å lage nytt område du bør velge ønsket antall layoutlinjer og gå til menyen Tabell -> Navn -> Tildel navn eller bruk hurtigtast Ctrl + Shift + N, skriv deretter inn navnet på regionen i boksen. Når du oppretter et layoutområde, ikke vær redd for å gjøre en feil med antall linjer; du kan alltid legge til eller fjerne dem. For å slette en 1C-layoutlinje, velg ønsket linje og velg elementet i kontekstmenyen Slett. For å legge til en ny linje i oppsettet, velg en hvilken som helst linje i oppsettet og velg elementet i hurtigmenyen Utvide.

Legge til en layoutoverskrift

Først av alt, la oss lage et område En lue, vil den vise dataene for overskriften til det utskrevne skjemaet. For dette området trenger vi syv layoutlinjer. La oss velge dem og, som jeg skrev ovenfor, trykk på tastekombinasjonen Ctrl + Shift + N, i felt Navn skriv "Hatt" og trykk på knappen OK.

La oss fylle layoutområdet med dataene vi trenger. Vanligvis er ingen trykt skjema komplett uten en tittel, så la oss lage en i layoutoverskriften vår også. Siden vi i tittelen, i tillegg til navnet på det trykte skjemaet, også vil vise nummeret på dokumentet det ble skrevet ut fra, vil vi sette teksten til tittelen i layouten som en parameter. En layoutparameter er en spesielt utpekt layoutcelle der ulike data kan sendes ut ved å bruke det innebygde 1C 8-språket. Tittelen skal vises over hele bredden av det trykte skjemaet, så la oss bestemme hvor mange layoutceller som vil være nok til at vi kan skrive ut på en standard liggende orientering av arket.

Vanligvis er tretten eller fjorten layoutceller nok, velg dem i den første raden i området En lue og kombiner til en celle ( Hurtigmeny -> Slå sammen). Etter dette, dobbeltklikk på den resulterende store cellen og skriv navnet på parameteren, i vårt tilfelle "Titteltekst". For at den angitte teksten skal bli en fullverdig parameter, høyreklikk på cellen og velg elementet i kontekstmenyen Egenskaper. På bokmerket Oppsett la oss finne feltet Fylling og velg verdien Parameter. Parametre i 1C-oppsettet er indikert med parentes "<>».

Overskriften til det trykte skjemaet skal skille seg ut blant annen tekst, så velg cellen på nytt og bruk ikonene på layoutformateringspanelet for å angi tekstjusteringen Sentrert og skriftstørrelse 14.

Etter tittelteksten vil vi vise den i området En lue informasjon om organisasjon, motpart, motpartsavtale og dato for mottak av varer. Siden alle disse dataene også er hentet fra dokumentet, vil vi også formalisere dem med parametere. I tillegg bør du før hver parameter skrive forklarende tekst slik at brukeren enkelt kan forstå hvor organisasjonen er, hvor motparten er osv. Alle disse handlingene ligner på å lage en tittel, så jeg vil ikke dvele ved dem i detalj, jeg vil bare gi et bilde av hva som skal skje til slutt.

Figuren viser hvordan layoutparametrene skiller seg fra vanlig tekst.

Legge til en layouttabelloverskrift

Det siste vi trenger å lage i dette layoutområdet er tabelloverskriften, der dataene til tabelldelen vil bli vist Varer. Kolonnene som kreves for tabellen, ble beskrevet i avsnittet "Problemerklæring". Vi vil også lage en tabelloverskrift ved å bruke en kombinasjon av celler og skrive tekst (kolonnenavn). Velg kantene til tabelloverskriften ved hjelp av verktøyet Ramme, som er plassert i layoutformateringspanelet.

Legge til en tabell i et oppsett

La oss lage et annet område i oppsettet - Data. Datatabellen til tabelldelen vil vises i den Varer. For dette området trenger vi bare en linje med layout. For å vise alle radene i tabelldelen i et trykt skjema, vil vi fylle ut og vise dette området det nødvendige antallet ganger. Søyler i området Data skal falle sammen med kolonnene i tabelloverskriften, så det vil ikke være vanskelig å fylle den ut. Den eneste forskjellen er i området Data vi trenger parametere, ikke bare tekst. Vær også oppmerksom på at som standard er numeriske parametere formatert til høyre og tekstparametere formateres til venstre. For å velge kolonner må du også bruke verktøyet Ramme.

Legge til en bunntekst i en layout

Det siste layoutområdet vi trenger er Kjeller. Den vil vise totaler etter mengde og beløp. Skapelse ligner på å skape et område Data, men i tillegg bør resultatene markeres med fet skrift.

Sluttresultatet bør være en layout som ser slik ut:

Oppretting av et trykt skjema 1C. Programmering

La oss begynne å programmere - dette er det viktigste stadiet i å lage et trykt skjema. Først av alt, la oss gå til den eksterne utskriftsskjemaobjektmodulen, det er her vi skal programmere. For å gjøre dette, klikk i hovedvinduet for ekstern behandling Handlinger -> Åpne objektmodul.

Du må opprette en eksportfunksjon i den eksterne utskriftsskjemaobjektmodulen Tetning().

Funksjon Print() Eksporter EndFunction

noter det denne funksjonen kreves for eksterne utskriftsskjemaer i konfigurasjoner som bruker en vanlig applikasjon. All påfølgende programkode som er nødvendig for å vise det trykte skjemaet vil bli skrevet inne i denne funksjonen.

Initialisere grunnleggende variabler

La oss lage en variabel TabDoc, som vil inneholde et regnearkdokument - dette er akkurat det trykte skjemaet der vi vil vise de fylte områdene i oppsettet.

TabDoc = nytt TabularDocument;

Til en variabel Oppsett Vi vil få det trykte skjemaoppsettet vi har laget. For å gjøre dette bruker vi den innebygde funksjonen GetLayout(<ИмяМакета>).

Layout = GetLayout("Layout");

Vi vil konvertere alle områder av layouten til variabler. For å gjøre dette bruker vi layoutmetoden GetArea(<ИмяОбласти>) .

HeaderArea = Layout.GetArea("Header"); AreaData = Layout.GetArea("Data"); AreaFooter = Layout.GetArea("Footer");

Skrive ut overskriften til et trykt skjema i et regnearkdokument

Alle nødvendige variabler initialiseres. La oss begynne å fylle ut og vise layoutområdene i et regnearkdokument. Først av alt, la oss fylle ut tittelen på det utskrivbare skjemaet; for dette må vi sende inn parameteren Titteltekst, som vi laget i oppsettet, teksten vi trenger. For å fylle ut parameterverdiene for layoutområdet, er det en spesiell samling kalt - Alternativer. Fra hvilken gjennom "." du kan få hvilken som helst parameter. I overskriftsteksten overfører vi teksten: "Utskrevet skjema", samt dokumentnummeret.

Header Area.Parameters.TitleText = "Skriv ut skjema"+LinkToObject.Number;

Vi vil fylle ut de resterende parametrene til overskriften på lignende måte; vi vil hente alle nødvendige verdier for dem fra detaljene Objektreferanse, som inneholder en lenke til dokumentet som skal skrives ut.

HeaderArea.Parameters.Organization = LinkToObject.Organization; HeaderArea.Parameters.Account = LinkToObject.Account; HeaderArea.Parameters.ReceiptDate = ObjectLink.Date; Header Area.Parameters.Counterparty Agreement = LinkToObject.Counterparty Agreement;

Alle parametere til overskriften er fylt ut, vi vil vise den i regnearkdokumentet vi opprettet, for dette bruker vi metoden Produksjon(<Область>) .

TabDoc.Output(HeaderArea);

Skrive en forespørsel om trykt handikap

La oss begynne å fylle og tegne ut området Data. Å lage et 1C trykt skjema innebærer også å skrive en spørring; vi trenger den for å få tabelldata Varer og priser Nomenklaturer for gjeldende dato vi skal bruke Be om. Spørringsspråket 1C 8 ligner på SQL, eller snarere kopierer praktisk talt egenskapene til SELECT-operatøren, men hele spørringen er skrevet på russisk. Derfor, hvis du i det minste er vagt kjent med SQL, vil du lett forstå spørringsspråket 1C 8.

I dette trykte skjemaet vil forespørselen være ganske enkel, og mange vil si at det ville være mulig å klare seg uten det, men kunnskap om spørringsspråket og evnen til å bruke det kompetent er en av hovedferdighetene til en 1C-programmerer. Spørringer lar deg få komplekse dataeksempler ved å bruke færre ressurser, og spørringsteksten er mye lettere å forstå enn programkode skrevet uten å bruke en spørring (eller med minimal bruk av den). I tillegg har 1C 8 en veldig god spørringsdesigner som lar deg interaktivt sette sammen en spørring fra de nødvendige tabellene.

La oss lage en variabel som vil inneholde forespørselen.

Request = Ny forespørsel;

Vi vil komponere forespørselsteksten ved å bruke forespørselskonstruktøren. Til å begynne med, la oss skrive:

Request.Text = "";

Plasser musepekeren mellom anførselstegnene og trykk på høyre museknapp. Velg elementet i kontekstmenyen som åpnes Be om konstruktør, det vil hjelpe oss mye med å lage et 1C-trykkskjema. Etter dette åpnes spørringsdesignervinduet; det inneholder mange faner, men for søket vårt trenger vi bare fire: "Tabeller og felt", "Relasjoner", "Betingelser", "Joins / Aliaser".

For spørringen vår trenger vi to tabeller: tabelldel Varer dokument Mottak av varer og tjenester og et øyeblikksbilde av den siste informasjonen på gjeldende dato for registeret Varepriser.

På venstre side av designervinduet finner vi kolonnen Database. Den inneholder et tre med alle metadataobjekter, la oss finne de vi trenger. For å gjøre dette, la oss åpne tråden Dokumentasjon og finn dokumentet Mottak av varer og tjenester, la oss åpne den og finne den tabellformede delen Varer, dra den inn i kolonnen til spørringsdesigneren Tabeller. Du kan dra på tre måter: ved å dra, ved å dobbeltklikke på tabellen, eller ved å velge den og klikke på «>»-knappen. La oss åpne tråden Informasjonsregistre og finn bordet der PriserNomenklatur.SnarveiSiste, dra den også inn i kolonnen Tabeller. Disse to tabellene er nok for vårt søk.

La oss velge feltene vi trenger fra de resulterende tabellene. For å gjøre dette, i kolonnen Tabeller la oss åpne bordet og finn feltene: Nomenklatur, Mengde, Pris, Mengde og dra dem til den tredje kolonnen i konstruktøren - Enger. La oss utvide tabellen , la oss finne feltet Pris og også dra den til Enger.

Strukturen til tabellene og feltene i forespørselen vår er klar, la oss nå gå videre til betingelsene. Vi trenger tabelldataene Varer ble ikke tatt fra alle kvitteringer, men kun fra den vi skriver ut. For å gjøre dette vil vi legge en betingelse på bordet Mottak av varer TjenesterVarer. La oss gå til "Betingelser"-fanen til spørringsdesigneren. I en kolonne Enger tabellene vi valgte tidligere er plassert, for tilstanden trenger vi et felt Link fra bordet Mottak av varer og tjenester varer, La oss dra den inn i vilkårsvinduet.

I 1C-spørringer kan du bruke parametere; de ​​er nødvendige for å overføre data til forespørselen. For eksempel, hvis vi ønsker å begrense utvalget av dokumenter til et spesifikt dokument, kan vi bruke en parameter for å sende en lenke til dette dokumentet til forespørselen og bruke denne parameteren i betingelsen. Dette er nøyaktig hva vi vil gjøre i vår forespørsel.

Etter vinduet Forhold vi la til et felt Link, vil spørringsdesigneren selv lage en parameter med samme navn og plassere den etter "="-tegnet. Denne parameteren kan gis nytt navn om ønskelig. I forespørselsteksten er parametere merket med "&", men i i dette tilfellet det er ikke nødvendig å gjøre dette, siden det antas at den andre delen av tilstanden inneholder en parameter, du trenger bare å huske dette. Hvordan sende en verdi til en 1C-forespørselsparameter vil bli diskutert nedenfor.

Siden vi i forespørselen ikke bruker en fullstendig tabell over produktpriser, men en virtuell (en del av sistnevnte i dette tilfellet), må vi sette betingelsene for dannelsen av dette virtuelle bordet, i vårt tilfelle er dette skjæringsdato og betingelse for pristype (priser som har en strengt definert pristype er den som er spesifisert i kvitteringsdokumentet som vi skriver ut).

For å fylle ut parametrene til den virtuelle tabellen, gå til fanen Tabeller og felt spørringskonstruktør, i kolonnen Tabeller velg tabellen PriserNomenklaturSkjæringSiste og trykk på knappen Virtuelle bordalternativer, plassert på toppen. I vinduet som åpnes, i feltet Periode bør du angi en parameter som datoen da priskuttet skal foretas vil bli passert. I vårt tilfelle vil dette være gjeldende dato (det vil si i dag), så vi kaller parameteren "&CurrentDate". I vilkårsfeltet vil vi skrive betingelsene for pristypen, vi vil også sende den inn i parameteren, som vi kaller "&TypePris". Den resulterende tilstanden vil se slik ut (hvor TypePris- registermåling Varepriser):

PriceType = &PriceType

De virtuelle tabellparametrene er fylt ut, klikk på knappen OK.

Nå som vi har begrenset utvalget til kun dokumentet vi trenger, la oss lage forbindelser mellom spørringstabellene. Hvis dette ikke gjøres, vil ikke prisene fra tabellen PricesNomenclatureSliceLast knyttes til varen fra kvitteringen. La oss gå til fanen Tilkoblinger spørringsdesigner. La oss skape en forbindelse på tvers av feltet Nomenklatur mellom våre to bord. For å gjøre dette, trykk på knappen Legg til, i felt Tabell 1 velg en tabell Mottak av varer TjenesterVarer, og i feltet Tabell 2 - PriserNomenklaturSliceLast. Velg feltene i kommunikasjonsbetingelsene Nomenklatur fra begge bordene.

Det bør også bemerkes at i spørringsutvalget må vi hente alle radene fra fanedelen Varer og priser kun hvis de er tilgjengelige på gjeldende dato for dokumentpristypen. Dermed tabelldataene Varer er obligatoriske, men prisdata er ikke tilgjengelig. Derfor, i relasjonene mellom disse tabellene, er det nødvendig å bruke den såkalte LEFT JOIN, og den venstre (eller påkrevde) tabellen vil være Mottak av varer TjenesterVarer, og høyre (eller valgfri) PriceNomenclatureSliceLast. For at venstre sammenføyning av spørringstabeller skal fungere som beskrevet ovenfor, må du merke av i boksen Alle etter feltet Tabell 1.


Forespørselen er nesten klar, det gjenstår bare å jobbe litt med feltaliasene. La oss gå til bokmerket Fagforeninger/Aliaser og angi et alias for feltet PriserNomenklatur Slice Latest.Price. Kallenavnet vil være - Pris som i dag, er det nødvendig slik at navnene på søkevalgfeltene og navnene på parameterne i det utskrevne skjemaoppsettet samsvarer.

Arbeidet i spørringsdesigneren er nå fullført, klikk OK. Etter at designervinduet lukkes, vil du se at linjen med forespørselsteksten er fylt ut og ser slik ut:

Request.Text = "SELECT | Mottak av varer og tjenester varer. Nomenklatur, | Mottak av varer og tjenester varer. Beløp, | Mottak av varer og tjenester varer. Pris, | Mottak av varer og tjenester varer. Mengde, | Priser Nomenklaturskive av siste. Pris AS PrisI dag | FRA | Dokument. Mottak av varer og tjenester. Varer AS Etter trinnProdukterTjenesterProdukter |VENSTRE TILKOBLING RegisterInformasjon.PriserNomenklatur.SkivSiste (| &GjeldendeDato, PrisType = &PrisType) HVORDAN Nomenklaturpriser |God.Slik NomenklaturSliceLast. Nomenklatur |HVOR | Mottak av varerServicesProducts.Link = &Link";

Utfører forespørselen

La oss sende de nødvendige parameterne til forespørselen; for dette vil vi bruke forespørselsmetoden SetParameter(<ИмяПараметра>,<Значение>). For å få gjeldende dato, bruk den innebygde funksjonen Gjeldende dato(), returnerer den datamaskinens dato og klokkeslett.

La oss kjøre en spørring for å få en prøve med dataene vi trenger. For å gjøre dette, bruk først forespørselsmetoden Løpe(), og deretter metoden Velge().

Select = Query.Run().Select();

Fylle ut den trykte skjematabellen

Som et resultat, i variabelen Prøve vil inneholde et utvalg søkeresultater, kan du navigere gjennom den ved å bruke metoden Neste(), og for å gå gjennom det hele trenger du en løkke Ha det. Designet vil være som følger:

Mens Select.Next() Loop EndLoop;

Det er i denne løkken vi skal fylle og vise layoutområdet Data. Men først, la oss initialisere to variabler av numerisk type. I dem vil vi samle totalene etter mengde og mengde som vi trenger å vise i området Kjeller.

Totalsum = 0; TotalQuantity = 0;

Inne i løkken skal vi fylle området Data data fra gjeldende utvalgselement til variabler Totale mengden Og Totalt antall legg til sum- og kvantitetsverdier, og vis til slutt området i et regnearkdokument ved å bruke metoden som allerede er kjent for oss Produksjon(). Siden navnene på feltene i forespørselen vår er fullstendig sammenfallende med navnene på områdeparametrene Data, så for å fylle vil vi bruke den innebygde prosedyren FillPropertyValues(<Приемник>, <Источник>), som kopierer eiendomsverdier<Источника>til eiendommer<Приемника>.

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

Skrive ut bunnteksten til et trykt skjema i et regnearkdokument

Det gjenstår å fylle og vise det siste området av oppsettet - Kjeller. Vi har allerede forberedt dataene for fylling, fylling og uttak utføres i henhold til samme ordning.

AreaFooter.Parameters.TotalQuantity = TotalQuantity; AreaFooter.Parameters.TotalSum = TotalSum; TabDoc.Output(AreaFooter);

Regnearkdokumentet er fullstendig utfylt, det gjenstår bare å vise det på skjermen slik at brukeren kan se det utskrevne skjemaet og skrive det ut om nødvendig. Men i typiske 1C 8-konfigurasjoner er prosedyrene til spesialmoduler ansvarlige for utgangen av eksterne trykte skjemaer. Derfor er det nok å gå tilbake fra funksjonen Tetning() utfylt regnearkdokument.

Returner TabDoc;

På dette tidspunktet er programmeringsstadiet fullført og opprettelsen av 1c-utskriftsskjemaet er nesten fullført. Full tekst funksjoner Tetning() Jeg vil ikke gi det her, du kan se på det i den utskrivbare skjemafilen, som du kan laste ned nederst i artikkelen.

Oppretting av et trykt skjema 1C. Alternativer for automatisk registrering

Når du kobler et eksternt trykkskjema til databasen, bestemmer ikke systemet automatisk hvilket dokument eller oppslagsbok utskriftsskjemaet er beregnet på, du må velge det manuelt. Og hvis en annen person skrev det trykte skjemaet, og du bare har i oppgave å koble det til, kan valget bli tvetydig. For å unngå slike problemer er det i alle eksterne trykte skjemaer nødvendig å lage et oppsett med parametere for automatisk registrering. Hvis den er opprettet og riktig formatert, bestemmer systemet automatisk hvilket dokument eller oppslagsbok det trykte skjemaet er beregnet på.

Det gjøres som følger:

  • I ekstern behandling lager vi en ny layout. Vi kaller det "Settings_Auto-Registration" (det er viktig å ikke gjøre en feil!).
  • I den første cellen i oppsettet skriver vi Dokumentasjon.(eller Kataloger.) og navnet på dokumentet du må koble det utskrevne skjemaet til.

Koble til et eksternt utskriftsskjema til basen

  • Start 1C 8 i modus Selskap;
  • Gå til menyen Service -> Ytterligere rapporter og behandling -> Ytterligere eksterne trykte skjemaer;
  • Klikk på knappen Legg til;
  • Klikk på ikonet i vinduet som åpnes Erstatt ekstern behandlingsfil;
  • Hvis du har opprettet parametere for automatisk registrering, godtar vi å bruke dem;
  • Hvis du ikke har opprettet parametere for automatisk registrering, så i tabelldelen Trykkplatetilbehør Legg til nødvendig dokument eller oppslagsbok;
  • trykk på knappen OK.

Etter dette vil det eksterne utskriftsskjemaet være tilgjengelig i menyen Tetning dokument Mottak av varer og tjenester. Opprettelsen av det trykte 1C-skjemaet kan nå anses som fullført.

Det er ingen hemmelighet at, selv om i dag flere og flere selskaper bytter til elektronisk dokument omsetning, det gamle ordtaket "Uten et stykke papir du ..." mister ikke sin relevans. Det har seg slik at tilsynsmyndighetene av en eller annen grunn først og fremst er interessert i papirdokumenter. Derfor, hvis du aktivt bruker programmet 1C: Regnskap eller Enterprise for økonomikontroll, er det viktig å vite hvordan du skriver ut et elektronisk dokument opprettet ved hjelp av programmet.

Trykte skjemaer i 1C lar deg transformere et elektronisk dokument til en trykt versjon.

For dette har utvikleren gitt et utmerket verktøy - Print Designer. Med dens hjelp kan du lage dokumenter der du kan spesifisere alle data du trenger, og ikke bare noen få standardskjemaer. Dette gjelder spesielt for de dokumenter som ikke har en strengt regulert form, som ikke under noen omstendigheter kan endres. Dette kan spesielt omfatte en handling av fullføring av arbeid, enkelte fakturaer eller betalinger.

I denne veiledningen foreslår vi å forstå egenskapene til utskriftsdesigneren, vurdere hvilke typer utskriftsformer det kan være og hvordan de skiller seg fra hverandre. Vi vil også vise med et eksempel hvordan du skriver ut det opprettede skjemaet.

For det første er det verdt å forstå hva et trykt skjema generelt er i 1C 8. Dette er en 1C-regnearkmal (som Excel), der noen variable rader er spesifisert, fylt med data fra programmet når du lager et dokument.

Utskriftsskjemaer kommer i to typer:

  • Intern (innebygd). De er lagret i programkonfigurasjonen, så det er bedre å ikke endre dem, da det kan oppstå problemer senere under oppdateringen.
  • Ekstern - lagret separat fra programinnstillingene. Og med deres hjelp kan du opprette og forberede deg på utskrift av et dokument av nesten hvilken som helst kompleksitet, uten å påvirke konfigurasjonen av 1C 8-programmet.

Hvordan velge allerede forberedte oppsett? Etter at du har utført en innkommende eller utgående operasjon, for eksempel ved å skrive ut en rapport om utført arbeid, klikker du på "Skriv ut"-knappen for å skrive ut dokumentene. Listen viser en liste over utskrivbare skjemaer som allerede er fylt med innlagte data om utført transaksjon og din bedrift. Ved å klikke på dokumenttypen du trenger, åpner du et forhåndsvisningsvindu slik at du kan forsikre deg om at dataene du har fylt inn er korrekte. Skriv ut-knappen skriver ut dokumentet til skriveren.

Med det grunnleggende ute av veien, la oss finne ut hvor alle utskriftene dine er lagret. La oss gå videre til neste spørsmål.

Hvor lagres trykte skjemaer?

Du kan se de innebygde trykte skjemaene både i konfiguratormodus og i normal bedriftsmodus. I det første tilfellet må du klikke på den tilsvarende knappen i startvinduet når du starter programmet. Du vil se programmenyen, finne grenen "Salg av produkter og tjenester", som inneholder elementet "Layouts". Den inneholder ofte bare to elementer - "Faktura" og "Act". Hvor er alle andre da, siden listen er mye mer omfattende? De gjemmer seg bare et annet sted. Du må åpne grenen "Generelt" - "Generelle oppsett", nesten alle oppsett er lagret i den.

I det andre tilfellet må du gå til menydelen "Administrasjon" - "Skriv ut skjemaer, rapporter og behandling" - "Layouts av trykte skjemaer". Den vil vise alle dokumentoppsett. Det er bemerkelsesverdig at de kan redigeres i samme meny.

Angående ytre former, så må du først enten opprette dem gjennom konfiguratormodus, eller ved å laste ned en ferdig fil, og deretter koble dem til "Administrasjon"-menyen - "Utskrevne skjemaer, rapporter og behandling" - "Ytterligere rapporter og behandling". Vi skal snakke om dette litt senere.

Lag et enkelt skjema ved hjelp av den innebygde Print Designer

Et slikt trykt skjema innebærer ikke muligheten for dyp redigering, siden dette vil medføre en endring i programkonfigurasjonen, samt ytterligere vanskeligheter med å oppdatere den. Men hvis du er helt fornøyd med standardskjemaet eller ønsker å fordype deg i vanskelighetene ved å lage et eksternt skjema, er denne metoden helt egnet for deg.

  1. Først av alt, start inn i konfiguratormodus, finn dokumentet du trenger, for eksempel Salg av produkter og tjenester, i dokumentegenskapene går du til Handlinger - Designere - Print Designer.
  2. Når du blir bedt om et arbeidsalternativ, velger du Vanlige skjemaer.
  3. Gi den nye layouten et navn, for eksempel "Skriv ut faktura."
  4. Velg detaljene du vil se i overskriften på dokumentet. Dessuten må de velges i den rekkefølgen de skal vises i. For å velge må du markere elementet i venstre kolonne med markøren og trykke på pilen midt på skjermen slik at detaljene vises i høyre kolonne.
  5. Merk detaljene som skal vises i tabelldelen. Valget av detaljer følger samme prinsipp som i forrige avsnitt.
  6. På samme måte velger du detaljene i den nedre delen av dokumentet.
  7. På den siste fasen av opprettelsen, velg om du vil skrive ut umiddelbart uten forhåndsvisning, om du trenger å beskytte tabellen, og bekreft deretter opprettelsen av skjemaet med OK-knappen.

Opprette et eksternt utskriftsskjema

Skjemaer opprettet gjennom Print Designer kan sammenlignes med en visuell programvareredigerer, når du ikke skriver inn all koden manuelt, men bare komponerer den fra de foreslåtte elementene. Det eksterne skjemaet er en fil med manuelt skrevet programkode, som beskriver fremgangsmåten for å vise data på skjermen. Dette er det som lar deg redigere det trykte skjemaet slik du vil, og spesifisere absolutt alle data i hvilken som helst rekkefølge.

En ekstra fordel er at selv om du ikke forstår eller rett og slett ikke vil forstå vanskelighetene med 1C 8-programmering, kan du overlate denne prosedyren til fagfolk. De kan forberede seg på deg det nødvendige skjemaet, vil gi den til deg som en ferdig fil, som du bare aktiverer med noen få klikk på en knapp.

La oss nå snakke mer om selve prosedyren. La oss se på eksemplet med å lage et "Faktura"-oppsett for dokumentet "Salg (handlinger, fakturaer)".

  1. Åpne 1C 8-programmet i konfiguratormodus.
  2. Klikk Fil - Ny - Ekstern behandling, gi den et navn (det skal ikke inneholde mellomrom), og klikk deretter Handlinger - Åpne objektmodul.
  3. I inntastingsfeltet som åpnes, skriv inn følgende kode (verdier som kan endres til dine egne er uthevet i gult):

Funksjon InformationOnExternalProcessing() Export
Registreringsparametre = Ny struktur;
ArrayDestinations = New Array;
Array of Assignments.Add("Dokument.Salg av varer og tjenester"); //Spesifiser dokumentet som vi lager en ekstern utskrift for. form
Registreringsparametere.Insert("View", "PrintForm"); //kanskje - PrintableForm, Fyllingsobjekt, Tilleggsrapport, Opprette relaterte objekter...
Registration Parameters.Insert("Destination", Array of Destination);
Registration Parameters.Insert("Navn", "Ordre for salg av varer"); //navn som behandlingen vil bli registrert under i katalogen for ekstern behandling
Registreringsparametere.Insert("SafeMode", FALSE);
Registreringsparametere.Insert("Versjon", "1.0");
Registreringsalternativer.Insert("Informasjon", "Dette utskrivbare skjemaet ble opprettet som en prøve");
CommandTable = GetCommandTable();
AddCommand(CommandTable, "External Order", "External Order", "CallServerMethod", True, "MXL Print");
Registreringsparametere.Insert("Kommandoer", CommandTable);
ReturnRegistration Parameters;
EndFunction // Informasjon OM ekstern behandling()
Funksjon GetTableCommand()
Kommandoer = Ny verditabell;
Commands.Columns.Add("View", New TypeDescription("Row"));//hvordan beskrivelsen av utskriftsskjemaet vil se ut for brukeren
Commands.Columns.Add("Identifier", New TypeDescription("String")); //utskriftsskjema layout navn
Commands.Columns.Add("Bruk", NewTypeDescription("Row")); //Call ServerMethod
Commands.Columns.Add("ShowAlert", NewTypeDescription("Boolean"));
Commands.Columns.Add("Modifier", NewTypeDescription("Row"));
Return Team;
EndFunction
Prosedyre AddCommand(CommandTable, View, Identifier, Usage, ShowAlert = False, Modifier = "")
NewCommand = CommandTable.Add();
NewCommand.View = Vis;
NewCommand.Identifier = Identifikator;
NewCommand.Use = Bruk;
NewCommand.ShowAlert = ShowAlert;
NewCommand.Modifier = Modifikator;
Slutt på prosedyre

  1. Lagre oppsettet for utskrift som en fil i en hvilken som helst mappe på harddisken, gi det et passende navn.

Sett inn i samme dokument prosedyren for å starte utskrift fra programmenyen (kommandoer uthevet i gult må samsvare med linjen):

Legg til kommando (Tabell over kommandoer, "Ekstern rekkefølge", "Ekstern ordre"):
Prosedyreutskrift (Array of Objects, Collection of PrintForms, PrintObjects, Output Parameters) Eksporter
Print Management.Output TabularDocumentIntoCollection(
Samling av utskriftsskjemaer,
"Ekstern ordre"
"Ekstern ordre"
GeneratePrintForm(ArrayofObjects, PrintObjects);
Sluttprosedyre // Print()

  1. Sett inn et oppsett for å fylle ut det trykte skjemaet ved å klikke på navnet på det eksterne skjemaet i nedre venstre hjørne og velge "Layouts" - "Add" - "Spreadsheet Document", gi det et navn. Etter det fyller du ut regnearket med de nødvendige dataene. For eksempel:
    • Ordre for produktnr. [Realiseringsnummer] fra [Realiseringsdato] - høyreklikk - Egenskaper - Layout - Fylling - Mal.
    • Lag kolonnene du vil skal vises i dokumentet.
    • Velg de angitte cellene, klikk på Tabell - Navn - Tildel et navn - skriv inn navnet "Overskrift".
    • Kopier raden med tabelloverskriftene, velg dem, høyreklikk - Egenskaper - Layout - Fylling - Parameter.
    • Velg en linje og navngi den, for eksempel "StringTCH".
    • Lag en bunntekst: skriv Total, cellen der det totale beløpet skal vises, gi det navnet TotalTotal, velg "Parameters" i egenskapene.
    • Spesifiser den ansvarlige, og spesifiser "Parametere" i celleegenskapene for visning av etternavnet.
    • Velg de nederste radene og navngi området "bunntekst".
  2. Nå i inndatavinduet, skriv inn funksjonen for å generere et trykt skjema:

Funksjon GeneratePrintForm(LinkToDocument, PrintObjects)
TabularDocument = Nytt TabularDocument;
TabularDocument.Name of Print Parameters = "PRINT_PARAMETERS_Faktura for betaling til VRTU";
Behandlingsoppsett = GetLayout("BetalingsfakturaEkstern");
//fyll overskriften
AreaHeader = ProcessingLayout.GetArea("Header");
AreaHeader.Parameters.DocumentNumber = LinkToDocument.Number;
AreaHeader.Parameters.DocumentDate = LinkToDocument.Date;
AreaHeader.Parameters.OrganizationName = LinkToDocument.Organization.Name;
//skriv ut overskriften i et regnearkdokument
TabularDocument.Output(HeaderArea);
//fyll inn PM-linjene
RowArea = ProcessingLayout.GetArea("ROW");
For hver gjeldende linje fra dokumentkobling. Produktsyklus
FillPropertyValues(RowArea.Parameters, CurrentRow);
TabularDocument.Output(RowArea);
EndCycle;
//fylle kjelleren
AreaFooter = ProcessingLayout.GetArea("Footer");
AreaFooter.Parameters.QuantityTotal = LinkToDocument.Products.Total("Quantity");
AreaFooter.Parameters.AmountTotal = LinkToDocument.Products.Total("Amount");
AreaFooter.Parameters.ResponsibleName = LinkToDocument.Manager.Name;
//skriv ut bunnteksten til et regnearkdokument
TabularDocument.Output(AreaFooter);
TabularDocument.AutoScale = Sant;
returner TabularDocument;
EndFunction

  1. Lagre endringene i dokumentet.
  2. Nå må du aktivere det opprettede skjemaet. For dette:
    • Gå til "Administrasjon" - "Utskrevne skjemaer, rapporter og behandling" - "Ytterligere rapporter og behandling".
    • Klikk på "Opprett", velg den eksterne skjemafilen i Utforsker, bekreft oppføringen din med "Lagre og lukk"-knappen.
  3. For å sjekke, gå til Salg - Salg (handlinger, fakturaer), klikk på "Skriv ut", velg skjemaet ditt og kontroller at det er riktig utfylt.
  4. Skriv ut dokumentet om nødvendig.

Konklusjon

Vi så på et eksempel på å lage et utskrivbart skjema gjennom Print Designer og gjennom verktøyet for å lage eksterne skjemaer. Vi håper alt ordner seg for deg. Legg igjen spørsmålene dine i kommentarfeltet.

Hvordan lage et eksternt trykkskjema basert på et ferdig? 1C 8,0/8,1
_______________________________________________________

Det forutsettes at du allerede har kunnskap fra å lese emnet, så kun nye spørsmål behandles i detalj.

Så: vi trengte å endre utformingen av fakturaen litt for betaling til kjøperen (vi vil jobbe med Accounting 1.6-konfigurasjonen):
- fjern overskriften i fakturaoppsettet for betaling (tekst «Obs! Betaling av denne fakturaen..., med forbehold om fullmakt og pass.»)
- endre presentasjonen av leverandøren (dvs. oss) på forespørsel fra banken
(en virkelig oppgave med en arbeidstid på 15-20 minutter)

Opprettelsen av behandlingen vil bestå av to stadier:
1 - lage en komplett analog av det originale utskriftsskjemaet
2 - modifikasjon for å passe dine egne behov

Etappe én

Først, la oss lage en tom ekstern behandling, men vi vil ikke lage et oppsett -
vi vil kopiere den for senere modifikasjon fra hovedkonfigurasjonen. For å kopiere et oppsett til behandling fra konfigurasjonen er det nok
velg det i objekttreet, og gå deretter til menyen Redigere-Kopiere, og velg deretter i behandlingsdatatreet i layout-grenen
på menyen Redigere-Sett inn En mer praktisk måte er å dra denne layouten direkte fra hovedkonfigurasjonen inn i datatreet med musen
behandling.

Og vi skriver denne koden:

Funksjon Print() Export //... her skal vi skrive noe senere End of Function

Hva vi gjorde: for at det eksterne utskriftsskjemaet skal fungere, kreves det en eksportfunksjon (dvs. synlig for andre konfigurasjonsobjekter) Tetning,
som skal returnere det genererte regnearkdokumentet til hovedprogrammet for forhåndsvisning og påfølgende utskrift.

For ikke å finne opp hjulet på nytt, la oss se hvordan et regnearkdokument dannes i hovedkonfigurasjonen: for dette vil vi gå
til dokumentmodulen Faktura for betaling til kjøper La oss finne en funksjon i modulen Tetning, som ser omtrent slik ut:

// Prosedyren skriver ut dokumentet. Du kan rette utskriften til en //-skjerm eller skriver, og skrive ut det nødvendige antallet kopier. // // Navnet på utskriftsoppsettet sendes som en parameter, // ved å bruke det beståtte navnet finner vi navnet på oppsettet i samsvar. // // Parametere: // LayoutName - streng, layoutnavn. // Prosedyre Print(LayoutName, Number of Instances = 1, OnPrinter = False, DirectPrint = False) Export // Få en kopi av dokumentet for utskrift Hvis LayoutName = "Invoice" Then TabDocument = PrintOrderInvoice(LayoutName); slutt om; Universal Mechanisms.PrintDocument(TabDocument, Number of Instances, OnPrinter, WorkWithDialogs.GenerateDocumentTitle(ThisObject, ""), DirectPrint); Sluttprosedyre // Skriv ut

I vårt tilfelle viser det seg at for å skrive ut en faktura, sendes en parameter til denne funksjonen LayoutName lik strengvariabel "Sjekk",
hvis vi ser på koden vil vi se at funksjonen brukes til å generere en standard faktura PrintOrderInvoice(...), som er nå
Vi må finne den i dokumentmodulkoden. Vanligvis er den plassert rett over funksjonen Tetning(...)
Så her er den forkortede teksten til denne funksjonen:

// Funksjonen genererer et tabelldokument med et trykt skjema for en ordre eller faktura, // utviklet av metodologer // // Returverdi: // Et tabelldokument er et generert trykt skjema // Funksjon PrintOrderInvoice(Type) Request = New Be om; Request.SetParameter("CurrentDocument", ThisObject.Link); // ...programkode...Layout Area.Parameters.Fill(Header); TabDocument.Output(LayoutArea); returner TabDocument; EndFunction // PrintOrderInvoice()

Som vi kan se, på slutten av denne funksjonen, returneres det genererte regnearkdokumentet - alt vi trenger å gjøre er å kopiere teksten fullstendig
denne funksjonen (starter med linjen "Request = New Query;" og slutter med linjen "Return TabDocument;") og sett den inn i brødteksten til den forberedte funksjonen
Tetning i vår behandlingsmodul.

Etter at vi har satt inn funksjonsteksten, la oss prøve å lagre behandlingen. Konfiguratoren vil advare oss om at den har oppdaget feil i modulen og displayet
dem i tjenestemeldingsvinduet. Her er en eksempeltest for disse feilene:

(ExternalProcessing.ExternalProcessing1(102,7)): Variabel er ikke definert (Type) Hvis<>Type = "Konto" Da (ExternalProcessing.ExternalProcessing1(224,7)): Variabel er ikke definert (Type) Hvis<>Type = "Konto" Deretter (ExternalProcessing.ExternalProcessing1(107,15)): Variabel er ikke definert (StructuralUnit) IfValueType(<>StructuralUnit) = Type("DirectoryLink.BankAccounts") Deretter (ExternalProcessing.ExternalProcessing1(108,40)): Variabel er ikke definert (StructuralUnit) Bank = ?(NOT ValueFilled(<>StructuralUnit.BankForSettlements), StructuralUnit.Bank, StructuralUnit.BankForSettlements); (ExternalProcessing.ExternalProcessing1(108,77)): Variabel ikke definert (StructuralUnit) Bank = ?(NOT ValueFilled(StructuralUnit.BankForSettlements),<>StructuralUnit.Bank, StructuralUnit.BankFor Settlements); (ExternalProcessing.ExternalProcessing1(108,102)): Variabel ikke definert (StructuralUnit) Bank = ?(NOT ValueFilled(StructuralUnit.BankForSettlements), StructuralUnit.Bank,<>StructuralUnit.BankFor Settlements); (ExternalProcessing.ExternalProcessing1(112,38)): Variabel ikke definert (StructuralUnit)AccountNumber = ReturnAccount(<>Strukturell enhet); (ExternalProcessing.ExternalProcessing1(123,21)): Variabel er ikke definert (StructuralUnit) If EmptyString(<>StructuralUnit.CorrespondentText) Then (ExternalProcessing.ExternalProcessing1(125,27)): Variabel er ikke definert (StructuralUnit) If ValueFilled(<>StructuralUnit.BankForSettlements) Deretter (ExternalProcessing.ExternalProcessing1(126,59)): Variabelen er ikke definert (StructuralUnit)CorrespondentText =CorrespondentText + "r/s" +<>StructuralUnit.AccountNumber (ExternalProcessing.ExternalProcessing1(127,15)): Variabel ikke definert (StructuralUnit) + " i " +<>StructuralUnit.Bank + " " + StructuralUnit.Bank.City; (ExternalProcessing.ExternalProcessing1(127,47)): Variabel ikke definert (StructuralUnit) + " i " + StructuralUnit.Bank + " " +<>Strukturell enhet.Bank.by; (ExternalProcessing.ExternalProcessing1(130,26)): Variabel ikke definert (StructuralUnit) Korrespondenttekst =<>StructuralUnit.TextCorrespondent; (ExternalProcessing.ExternalProcessing1(112,17)): Prosedyren eller funksjonen med det angitte navnet er ikke definert (Return Account) Kontonummer =<>ReturnAccount(Strukturell enhet);

La oss se på disse feilene:
*** 1. Variabel er ikke definert (type)- hvis du ser på kildekoden til funksjonen, blir det klart at typevariabelen var en parameter:
Funksjon PrintInvoiceOrder(Type), fjernet vi denne parameteren. I dette tilfellet inneholdt denne parameteren en linje med navnet på layouten
for utskrift. Fordi vi trenger bare å skrive ut ett oppsett - la oss definere denne variabelen som følger: vi vil endre tittelen
funksjoner Tetning i behandlingsmodulen:

Funksjon Skriv ut(Type = "Konto")

Hva betyr denne notasjonen: det betyr at hvis ingen parameter ble sendt til funksjonen, så parameteren Type vil ta verdien
misligholde "Kryss av", som er det vi trenger for å jobbe.

*** 2. Variabel ikke definert (StructuralUnit)- denne variabelen er et dokumentattributt Faktura for betaling til kjøper, fordi
i modulen til det eksterne trykte skjemaet ser vi ikke dette attributtet (vi er ikke i kroppen til dokumentobjektet), vi får denne variabelen via
lenke til dokumentet, dvs. via behandlingsdetaljer Objektreferanse, som programmet vil sende en lenke til det gjeldende dokumentet til.
Legg til følgende linje i begynnelsen av funksjonen:

*** 3. Prosedyren eller funksjonen med det angitte navnet er ikke definert (Return konto)- denne funksjonen er definert (dvs. beskrevet) i modulen
dokument, derfor trenger vi bare å fullstendig overføre koden til denne funksjonen til vår behandling.

Så nå ser prosesseringsmodulen omtrent slik ut:

Funksjon ReturnCurrentAccount(CounterpartyAccount) BankForSettlements = CounterpartyAccount.BankForSettlements; Resultat = ?(BankForSettlements.Empty(), Motpartskonto.Kontonummer, Motpartskonto.Bank.Korrespondentkonto); Returner Resultat; Slutt på funksjon // Return Current Account() // Funksjonen genererer et tabelldokument med et trykt skjema for en ordre eller faktura, // utviklet av metodologer // // Returverdi: // Tabelldokument - generert trykt skjema // Funksjon Print(Type = "Faktura") Export StructuralUnit = ObjectLink.StructuralUnit; Request = Ny forespørsel; Request.SetParameter("CurrentDocument", ThisObject.Link); // ...programtekst...Layout Area.Parameters.Fill(Header); TabDocument.Output(LayoutArea); returner TabDocument; EndFunction // PrintOrderInvoice()

Hvis alt er gjort riktig, kan vi nå lagre behandlingen og vi vil få en komplett ekstern analog av det innebygde utskriftsskjemaet.

Etappe to

La oss nå gjøre de nødvendige endringene i oppsettet når du skriver ut (forutsatt at du vet hvordan du jobber med oppsett), og også endre
leverandørens tekst i fakturahodet.

Som vi kan se av programkoden, er mottakerens tekst fylt ut på dette stedet:

If EmptyString(StructuralUnit.CorrespondentText) ThenCorrespondentText = SupplierInformation.FullName; Hvis verdien er fylt ut (StructuralUnit.BankForSettlements) Da CorrespondentText = CorrespondentText + "konto" + StructuralUnit.AccountNumber + " i " + StructuralUnit.Bank + " " + StructuralUnit.Bank.City; slutt om; Ellers CorrespondentText = StructuralUnit.CorrespondentText; slutt om; LayoutArea.Parameters.ProviderView = Korrespondenttekst;

Kunden satte som betingelse at teksten til denne boksen er hentet fra navnet på betaleren i betalingsoppdrag på
overføring av skatter. Denne teksten er lagret i katalogelementattributtet Organisasjoner- Alt vi har igjen er
få tilgang til den. Hvis vi ser på dokumentdetaljene, vil vi se at de inneholder informasjon om organisasjonen,
som dokumentet ble utstedt i henhold til, og teksten vi trenger er lagret i organisasjonsdetaljene - nå vet vi hvordan vi får tilgang:

Layout Area.Parameters.SupplierView = LinkToObject.Organization.Name of PayerWhen overføring av skatter;

Det er alt - layouten er klar til bruk og kan kobles til konfigurasjonen!

I emnet kan du ta den behandlingen som skulle ha resultert til slutt.

PS. Diskusjoner, spørsmål, forslag - alt er på temaet.