1c vanjski tiskani obrazac s pitanjem. Ispis ispisanih obrazaca sa zahtjevom za podacima na obrazac "Ispis dokumenata" iz podsustava BSP "Ispis"

Razmislite o pisanju jednostavnog ispisa 1s 8.1 - 8.2 na primjeru konfiguracije Računovodstvo poduzeća 2.0. Pretpostavimo da želite napisati vanjski ispis u dokument: prikazati glavne podatke dokumenta, kao i iz tabelarnog dijela Roba: nomenklatura, cijena, količina i iznos.

Rezultirajući primjer možete preuzeti putem .

U konfiguratoru 1C poduzeća 8 stvoriti vanjsku obradu ( Datoteka->Novo->Vanjska obrada), postavite naziv, kreirajte atribut potreban za vanjsku ispisnu formu Referenca na objekt s tipom DocumentReference.Realization of GoodsUsluge.

Napravite izgled za ispis

Dodavanje novog raspored, ostavite vrstu izgleda dokument proračunske tablice. Na rasporedu stvaramo tri područja: Zaglavlje, podaci I Podrum. To možete učiniti odabirom željenog broja redaka i klikom na izbornik Tablica->Imena->Dodijeli naziv (Ctrl+Shift+N).

Nakon toga počinjemo postavljati tekst i parametre u područja. Stavimo to u zaglavlje ime za ispis, broj dokumenta I organizacija, kao i nacrtati granice zaglavlja tablice i napisati nazive stupaca. Prilikom stvaranja parametra u svojstvima ćelije, na kartici Izgled postavite svojstvo punjenje u smisao Parametar.

U području Podaci kreirajte parametre za ispis redaka tabelarnog odjeljka( Nomenklatura, cijena itd.), ali u području Podrum za ukupne iznose po količini i iznosu.

Programiranje

Idemo na modul objekta za ispis Akcije->Otvori objektni modul.

Kreirajmo funkciju izvoza koja je obavezna za ispis obrazaca Pečat().

Ispis funkcije () Izvoz Završne funkcije

Kreirajmo varijablu u funkciji dokument proračunske tablice, u kojem će biti prikazan ispisani obrazac, dobivamo raspored I područje rasporeda.

TabDoc = novi SpreadsheetDocument; Izgled = GetLayout("Izgled" ); Područje zaglavlja = Layout.GetArea("Zaglavlje" ); ScopeData = Layout.GetScope("Podaci" ); AreaFooter = Layout.GetArea("Podrum" );

Ispunite parametre šeširi i odnesite ga dokument proračunske tablice.

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

Da biste dobili redove tablice Roba koristiti upit.

Zahtjev = novi zahtjev; Query.SetParameter("Referenca", ObjectReference); Query.Text = "SELECT | Realizacija robe, usluga, robne nomenklature, | Realizacija roba, usluga, roba, iznos, | Realizacija roba, usluga, roba, cijena, | Prodaja roba, usluga, roba, količina| OD | Dokument.Prodaja robeUsluge.Roba AS Realizacija robeUslugeRobe|GDJE | ImplementationProductsServicesProducts.Reference = &Reference";

Prosljeđujemo rekvizite parametru zahtjeva Referenca na objekt navesti u uvjetu GDJE da su nam potrebni podaci samo iz dokumenta iz kojeg prikazujemo ispisani obrazac. Da bismo dobili odabir upita, prvo ga izvršimo, a zatim označimo retke.

Odabir = Upit.Izvrši().Odaberi();

Zatim, u petlji, ispunite parametre područja Podaci za svaki redak odabira dokumenta i prikazati ih u dokument proračunske tablice. Također u petlji brojimo ukupne vrijednosti količinama I iznose. Nećemo popunjavati svaki parametar posebno, već ćemo se pridržavati procedure FillPropertyValues((<Приемник>, <Источник>) iz globalni kontekst, kopira vrijednosti svojstava <Источника> na svojstva <Приемника> . Spajanje se vrši prema imenima svojstava. Više o ovome možete pročitati u pomoćnik za sintaksu 1C Enterprise 8.

Ukupni zbroj = 0; UkupniBroj = 0; While Selection.Next() Loop FillPropertyValues(DataArea.Parameters, Selection); TotalSum = TotalSum + Sample.Sum; TotalQuantity = TotalQuantity + Sample.Quantity; TabDoc.Output(DataArea); Kraj ciklusa ;

Ispunite i prikažite područje Podrum.

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

Iz funkcije vraćamo popunjeni dokument proračunske tablice Pečat().

povratak TabDoc;

Ako koristite jednu od tipičnih konfiguracija, tada nakon vraćanja dokumenta proračunske tablice 1C automatski će prikazati ispisani obrazac. Također možete koristiti metodu proračunske tablice za izlaz. Pokazati().

5. Povezivanje ispisa s dokumentom

U tipične konfiguracije 1C 8 postoji imenik za upis vanjskih tiskarskih obrazaca Vanjska obrada. Za povezivanje idite na izbornik u poslovnom načinu rada Usluga->Dodatni izvještaji i obrade->Dodatni eksterni ispisni obrasci.

Dodajemo novi element imenika, učitavamo ispisani obrazac s diska i odabiremo vrstu dokumenta.

Sada u dokumentu Prodaja roba i usluga pojavit će se novi ispis.

Ispis obrasca za automatsku registraciju

Kako biste izbjegli potrebu za ručnim odabirom vrste dokumenta prilikom povezivanja ispisa, možete konfigurirati automatska registracija. Da bismo to učinili, dodamo novi izgled i pozovemo ga Parametri_autoregistracija(samo tako) iu njegovu prvu ćeliju upisujemo Dokumentacija.<Наименование документа> (ili Referentne knjige.<Наименование справочника> ).

Sada, prilikom povezivanja ispisnog obrasca, od nas će se tražiti da ga upotrijebimo opcije automatske registracije.

Svatko je više puta vidio kako se u tipičnim konfiguracijama izgrađenim na temelju BSP-a (Biblioteka standardnih podsustava), ispisani obrasci izgrađeni na temelju dokumenta proračunske tablice izlaze u poseban obrazac "Dokumenti za ispis". Ovaj obrazac je dio podsustava "Ispis" BSP-a. Kada razvijate svoje ispise, ponekad morate od korisnika tražiti dodatne podatke potrebne za ispis. Ovdje se postavlja pitanje, kako u ovom slučaju prikazati ispisani obrazac u obrascu "Ispis dokumenta". U ovom članku ću razmotriti kako implementirati ispis obrasca za ispis na spomenuti obrazac iz podsustava "Ispis", ukoliko prije ispisa obrasca za ispis od korisnika želimo zatražiti dodatne podatke. Ovdje ćemo razmotriti dva slučaja: kada se ispis implementira pomoću podsustava "Dodatna izvješća i obrada" i kada se ispis dodaje konfiguraciji u konfiguracijskom načinu rada, tj. promjene se unose u zadanu konfiguraciju.

Obrazac "PrintDocuments" pruža neke dodatne funkcije pri radu s obrascima za ispis, kao što su:

  • gumb za ispis na pisač, izravno u obrazac;
  • naznaka broja primjeraka, tiskani obrazac;
  • uređivanje generiranog tiskanog obrasca;
  • mogućnost spremanja ispisanog obrasca u različite podatkovne formate (Excel, Word, PDF itd.);
  • slanje ispisanog obrasca e-poštom;
  • prikladan rad sa skupom dokumenata.

Ovaj obrazac sada koristi 1C u svim standardnim konfiguracijama za prikaz tiskanih obrazaca dokumenata i elemenata imenika. I naravno, kada razvijamo naše tiskovne forme, kako ne bismo izašli iz okvira prihvaćene prakse, trebali bismo također prikazati naše tiskovne forme pomoću dostavljenih alata.

Kod standardnih metoda dodavanja tiskovnih formi, podsustav "Ispis" će učiniti sve za nas i prikazati tiskovne forme kako treba. Na primjer:

  1. Prilikom dodavanja naredbe za ispis dokumentu pomoću podsustava "Ispis", potrebno je opisati naredbu za ispis u proceduri AddPrintCommands naznačujući upravitelja ispisa u kojem je implementirana procedura Ispis;
  2. Prilikom kreiranja Dodatne obrade potrebno je u modulu objekta obrade u funkciji DetailOnExternalProcessing opisati naredbu s tipom use Pozivanje poslužiteljske metode i odmah implementirati Print proceduru koja na određeni način implementira poziv forme tiskovnu formu.

U takvim slučajevima, kao što sam već rekao, podsustav za ispis će prema potrebi prikazati ispisani obrazac koji smo sami formirali. Takve metode podrazumijevaju izravno oblikovanje tiskovne forme, tj. proslijedio objekte za ispis proceduri ispisa, formirao tablični dokument i prikazao ga na ekranu.

Ali što ako, prije početka formiranja tabličnog dokumenta, trebate zatražiti neke podatke od korisnika? Oni. moramo pokazati formu. U ovom slučaju narušava se standardni redoslijed formiranja tiskovne forme i treba razmisliti kako svoju tiskarsku formu prenijeti u formu "Ispis dokumenata".

U ovom slučaju moguće su dvije situacije:

  1. Kada se ispis kreira s promjenom konfiguracije;
  2. Kada se ispis kreira bez promjene konfiguracije, tj. Koristi se podsustav "Dodatna izvješća i obrade".

Ispis stvaramo dodavanjem kroz konfigurator.

Prva varijanta. Kroz kreiranje obrade s timom.

Ova opcija omogućuje dodavanje obrade izravno u objekte metapodataka:

Razmotrimo opciju kada trebamo implementirati ispisnu formu određenog objekta, na primjer, element imenika. Da bismo to učinili, moramo raditi u četiri područja obrade:

  1. Napravite naredbu koja će pozvati obrazac našeg ispisa;
  2. Napravite sam obrazac;
  3. Napravite izgled za ispis;
  4. Napravite promjene u modulu upravitelja obrade.

Mi stvaramo tim

Navedite u svojstvima naredbe:

  • Grupa gdje želimo da se naredba prikaže u formi;
  • Tip parametra je samo referentna knjiga ili dokument čiji tiskani oblik izrađujemo;
  • Način korištenja parametra - više. Da biste mogli prikazati ispisane obrasce, odjednom za nekoliko elemenata odabranih na listi.

U naredbenom modulu otvaramo obradnu formu prosljeđujući joj odabrane elemente imenika za koje je potrebno generirati ispisne forme. Nemojmo ovdje lukavo filozofirati i malo ispravimo tipični kod koji platforma zamjenjuje u proceduri obrade naredbi:

&Na rukovanju naredbama procedure klijenta (parametar naredbe, parametri izvršenja naredbe) //Umetnite sadržaj rukovatelja. FormParameters = New Structure("PrintData", CommandParameter); OpenForm("Processing.PrintForm.Form", FormParameters,CommandExecutionParameters.Source,CommandExecutionParameters.Uniqueness,CommandExecutionParameters.Window, CommandExecutionParameters.NavigationLink); EndProcedure

Parametar procedure, Parametar naredbe, upravo sadrži elemente koje smo odabrali za ispis.

Napravite obrazac

Dodajmo obrazac obradi, kreirajmo atribut obrasca tipa ValueList i potrebne atribute za unos dodatnih parametara za ispis:

DataToPrint - tip ValueList;

Broj redaka - tip Broj.

Moj će primjer biti čisto demonstrativan, pa uvjetno odredimo što mi je cilj prikazati prikaz odabranog elementa u ispisanom retku i broj redaka koji odabiremo kao dodatni parametar na formi.

Idite na modul obrasca i napišite sljedeći kod:

&OnServerCreateProcedureOnServer(Failure, StandardProcessing)PrintData.LoadValues(Parameters.PrintData); Kraj procedure &Na klijentskoj proceduri Print(Command) ControlPrintClient.ExecutePrintCommand("Processing.PrintForm", //Upravitelj ispisa "PrintForm", //Identifier GetObjectsToPrint(), //Ispis objekata ThisObject, //Vlasnik obrasca iz kojeg ispis se zove GetPrintParameters( )); //Parametri ispisa - proizvoljni parametri koji se prosljeđuju upravitelju ispisa Povratni niz; EndFunction &AtServer funkcija GetPrintSettings() PrintSettings = Nova struktura; PrintParameters.Insert("Zaglavlje obrasca", "Ispiši obrazac"); //Jedan od parametara za obrazac "Ispis dokumenta". //Određuje naslov izlaznog obrasca za ispis. //Ovdje dodajemo naše parametre koje želimo dodatno prenijeti u print manager. PrintParameters.Insert("Broj redaka", Količina redaka); Povratak parametaraIspis; Završne funkcije

Definiramo proceduru OnCreateAtServer i u njoj iz parametra koji smo proslijedili iz naredbe prilikom otvaranja forme čitamo popis objekata za koje trebamo generirati printable.

U formi kreiramo naredbu Ispis i upišemo njen rukovatelj u kojem pozivamo funkciju zajedničkog modula ManagePrintClient.RunPrintCommand, postavili smo potrebne parametre ove funkcije, naime:

  • Upravitelj ispisa - naziv objekta u modulu upravitelja, koji definira funkciju ispisa koja oblikuje naš ispis;
  • Identifikator - identifikator ispisa koji se ispisuje. Pomoću ovog identifikatora ćemo u funkciji Ispis modula upravitelja odabrati koji obrazac za ispis treba ispisati;
  • Tiskovni objekti su neposredno oni objekti za koje se oblikuju tiskovne forme;
  • Vlasnik obrasca;
  • Parametri ispisa - ovdje formiramo i predajemo strukturu s parametrima ispisa, tu prosljeđujemo naše dodatne parametre koje smo tražili od korisnika u obrascu obrade.

Zapravo, pozivom funkcije ExecutePrintCommand iz forme za obradu rješavamo naš zadatak prikazivanja forme za ispis u formi "PrintDocuments". Zatim će podsustav "Ispis" izvršiti standardne radnje i dovesti izvršenje do procedure Ispis koju moramo definirati u upravitelju modula naše obrade.

Stvaranje izgleda za ispis

Promjene u modulu upravitelja obrade

Od ovog trenutka izvodimo standardne radnje za razvoj tiskovnih formi koristeći podsustav "Ispis" iz BSP-a.

Dodajte sljedeći kod modulu upravitelja:

Procedura Print(ObjectsArray,PrintParameters,PrintFormCollection,PrintObjects,OutputParameters) ket(ObjectsArray,PrintParameters), "Processing.PrintForm.PF_MXL_PrintForm",); Završi ako; EndProcedure &AtServer funkcija PrintLayout(ObjectArray,PrintSettings) SpreadsheetDocument = Novi SpreadsheetDocument; //Stvorite dokument proračunske tablice ///////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////// //REDODREĐENI DIO MODULA // //Ovdje formiramo naš Layout za ispis = GetLayout("PF_MXL_PrintForm"); Za svaki Object From Objects Array Loop AreaHeader = Layout.GetArea("Header"); AreaObject = Layout.Get Area("Object"); SpreadsheetDocument.Output(RegionHeader); AreaObject.Parameters["Object"] = Objekt; SpreadsheetDocument.Output(RegionObject); For Count = 1 ByPrintSettings["Broj redaka"] Loop AreaString = Layout.GetArea("String"); RegionString.Parameters["String"] = Broj; SpreadsheetDocument.Output(AreaString); EndCycle; SpreadsheetDocument.OutputHorizontalPageSeparator(); EndCycle; //PONOVNO ODREĐENI DIO MODULA //////////////////////////////////////////// ///////////////////////////////////////////////// /// ///////////////// Vrati SpreadsheetDocument; //Vrati dokument proračunske tablice EndFunction

Druga opcija. Kroz implementaciju naredbe print.

Ova opcija je vrlo slična prvoj u smislu ispisa. Njegova razlika je u načinu kreiranja naredbe koja će se ispisati na sučelje i pokrenuti naš ispis.

U ovom slučaju pri definiranju naredbe za ispis koristimo i podsustav "Ispis" iz BSP-a. Umjesto definiranja naredbe za otvaranje obrade u samoj obradi, potrebno je otići do modula managera, objekta u koji želimo dodati printable, te postaviti opis naredbe za ispis u proceduri AddPrintCommands(PrintCommands):

Procedura AddPrintCommands(PrintCommands) ExportPrintCommand = PrintCommands.Add(); PrintCommand.Identifier = "Ispiši obrazac"; PrintCommand.View = NStr("ru = "Ispiši obrazac""); PrintCommand.Handler = "CommonModulePrintForm.ProcessingPrintFormCommand"; PrintCommand.Order = 100; EndProcedure

Ovdje dodajemo svim obrascima imenika (podsjećam vas da radimo s imenikom druge ugovorne strane), naredbu za ispis pod nazivom "Ispiši obrazac za ispis". I ovdje je glavna točka koju treba uzeti u obzir. U obrazac možete dodati dvije vrste naredbi:

1. Pozivanje procedure ispisa iz modula upravitelja;

2. Pozivanje metode klijenta.

Ovo je upravo metoda poziva klijentu koja nam treba. Klijentska metoda omogućit će nam pozivanje forme za obradu u kojoj ćemo od korisnika prije ispisa tražiti podatke koji su nam potrebni.

Da biste implementirali takav poziv, kada definirate naredbu, postavite Handler za nju (pogledajte gornji kod). Niz koji sadrži put do klijentske funkcije prosljeđuje se rukovatelju naredbama, tj. put do funkcije Export dijeljenog modula na klijentu. Ovo je funkcija koja će se pozvati klikom na naredbu za ispis koju dodajemo u forme.

Kao što razumijete, da bi ovo funkcioniralo, morate stvoriti ovaj CommonModule i definirati funkciju izvoza. Stoga pišemo sljedeći kod u našem zajedničkom modulu:

Funkcija HandlingPrintCommandPrintForm(PrintParameters) Export //Umetnite sadržaj rukovatelja. FormParameters = Nova struktura("PrintData",PrintParameters.PrintObjects); OpenForm("Obrada.PrintForm.Form", FormParameters); Završne funkcije

Ovdje činimo isto kao u prvoj implementaciji, otvaramo obrazac za ispis, samo što će sada naš PrintData biti sadržan u parametru proslijeđenom funkciji PrintParameters, odnosno u njenom polju PrintObjects.

Nakon što smo otvorili obrazac za obradu, sve radnje su slične prvoj opciji.

Implementacija ove opcije može se naći u tipičnim konfiguracijama, u mehanizmima povezanim s ispisom privole za obradu osobnih podataka.

Izrađujemo dodatnu obradu.

Ali što ako ovo nije naša konfiguracija, a podržana je? I općenito, ne želimo se penjati u konfiguraciju i uređivati ​​je?

U ovom slučaju moramo koristiti podsustav "Dodatna izvješća i obrade" iz BSP-a.

S ovim rješenjem moramo pisati kod na samo dva mjesta, a sva su u našoj budućoj dodatnoj obradi:

1. Objektni modul obrade;

2. Modul obrazaca za obradu.

U objektnom modulu napišite sljedeći kod:

////////////////////////////////////////////////// ///////////////////////////// // SUČELJE PROGRAMA #API područje // Vraća informacije o vanjskoj obradi. FunctionExternalProcessingDetails() ExportRegistrationParameters = AdditionalReportsAndProcessing.ExternalProcessingDetails("2.2.2.1"); RegistrationParameters.View = AdditionalReportsAndProcessingClientServer.ProcessingViewPrintForm(); RegistrationParameters.Version = "1.0"; Nova naredba = Parametri registracije.Naredbe.Dodaj(); NewCommand.View = NStr("ru = "Vanjski obrazac za ispis s preliminarnim zahtjevom za podatke""); NewCommand.Identifier = "ExternalPrintForm"; NewCommand.Usage = AdditionalReportsAndProcessesClientServer.CommandTypeOpenForm(); NewCommand.ShowAlert = istina; NewCommand.Modifier = "PrintMXL"; Povratak parametaraRegistration; EndFunction Procedura Ispis(PrintData,PrintFormCollection,PrintObjects,OutputParameters) Eksport IfPrintControl.NeedPrintLayout(PrintFormCollection, "ExternalPrintForm") ThenPrintControl.OutputSpreadsheetDocumentToCollection(PrintFormCollection, "ExternalPrintForm", nstr("ru = "Ispitni list" ""), PrintLayout(PrintData ) ); Završi ako; EndProcedure &AtServer funkcija PrintLayout(PrintData)PrintParameters = PrintData.Value; //Dohvaćanje postavki ispisa iz prvog elementa ValuesListObjectArray = PrintData.Copy(); //Kopiraj popis vrijednosti ArrayObjects.Delete(0); //Brisanje redaka kopiranog elementa koji sadržiPrintSettings SpreadsheetDocument = New SpreadsheetDocument; //Stvorite dokument proračunske tablice ///////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////// //REDODREĐENI DIO MODULA // //Ovdje formiramo naš ispisani obrazac Layout = GetLayout("Layout"); Za svaki Object From Objects Array Loop AreaHeader = Layout.GetArea("Header"); AreaObject = Layout.Get Area("Object"); SpreadsheetDocument.Output(RegionHeader); AreaObject.Parameters["Object"] = Objekt; SpreadsheetDocument.Output(RegionObject); For Count = 1 ByPrintSettings["Broj redaka"] Loop AreaString = Layout.GetArea("String"); RegionString.Parameters["String"] = Broj; SpreadsheetDocument.Output(AreaString); EndCycle; SpreadsheetDocument.OutputHorizontalPageSeparator(); EndCycle; //PONOVNO ODREĐENI DIO MODULA //////////////////////////////////////////// ///////////////////////////////////////////////// /// ///////////////// Vrati SpreadsheetDocument; //Vrati dokument proračunske tablice EndFunction #EndArea

Postoje dvije funkcije i jedan postupak.

Standardna funkcija za Dodatnu obradu je ExternalProcessingInfo(), bez nje sustav neće razumjeti da se radi o dodatnoj obradi. Ovdje je važna točka naznaka da naredba implementirana u ovoj obradi ima tip Otvaranje obrasca. Oni. otvorit ćemo obrazac koliko nam treba. Slijedi definicija postupka ispisa i funkcije koja izravno generira naš dokument proračunske tablice.

Ovdje treba obratiti pozornost na to da naredba za ispis u ovom slučaju treba sadržavati samo 4 parametra, a ne 5 kao što je uobičajeno definiranje naredbe za ispis u modulu upravitelja. U ovom slučaju ne postoji mogućnost prolaska opcija ispisa. Stoga ćemo morati pokazati domišljatost kako bismo, osim samih objekata za koje se formira ispisani obrazac, proslijedili i parametre koje u obrascu tražimo od korisnika.

I tako smo definirali dodatnu obradu čijom naredbom se otvara obrazac za obradu. Stoga je sljedeći korak izrada obrasca za obradu.

U ovom obliku moramo stvoriti tri atributa za pohranjivanje vrijednosti koje će nam trebati u budućnosti. Nazovimo te detalje na sljedeći način:

CommandID - tip String

Odredišni objekti - upišite Popis vrijednosti

U modul ovog obrasca upišite sljedeći kod:

&AtServer Procedure WhenCreatingAtServer(Failure, StandardProcessing) //Prilikom kreiranja na poslužitelju zapamtite standardne parametre koje prosljeđuje podsustav AdditionalReportsAndProcessing AdditionalProcessingReference = Parameters.AdditionalProcessingReference; CommandId = Parametri.CommandId; DestinationObjects.LoadValues(Parameters.DestinationObjects); EndProcedure &AtClient Procedure Print(Command) // Dobivanje ključa jedinstvenosti otvorenog obrasca. UniqueKey = String(Novi UniqueIdentifier); //Definirajte i ispunite standardne parametre za opći obrazac PrintDocumentsOpenParameters = New Structure("DataSource, SourceParameters"); OpenParameters.DataSource = AdditionalProcessingReference; OpenParameters.SourceParameters = New Structure("CommandIdentifier, Destination Objects"); OpenParameters.SourceParameters.CommandId = CommandId; //Objekti za ispis i parametri uneseni u obrazac za obradu //provest će se kroz parametar SourceParameters.DestinationObjectsOpeningParameters.SourceParameters.DestinationObjects = GetDestinationObjectsAndPrintParameters(); OpenForm("CommonForm.PrintingDocuments",OpenParameters,FormOwner,UniqueKey); EndProcedure &AtServer funkcija GetDestinationObjectsAndPrintParameters()PrintData = DestinationObjects.Copy(); ////////////////////////////////////////////////// / ///////////////////////////////////////////////// / //////////// //REDODREĐENI DIO MODULA // //Ovdje stvaramo strukturu PrintParameters i ispunjavamo je parametrima //koji se moraju proslijediti funkciji ispisaPrintParameters = New Structure; PrintParameters.Insert("Broj redaka", Količina redaka); PrintData.Insert(0, PrintSettings); //PONOVNO ODREĐENI DIO MODULA //////////////////////////////////////////// ///////////////////////////////////////////////// // ////////////////// ReturnPrintData; Završne funkcije

U proceduri OnCreateOnServer ispunjavamo naša tri detalja koja smo kreirali za pohranjivanje parametara proslijeđenih obrascu za obradu.

Zatim definiramo rukovatelj za gumb za ispis na obrascu. U ovom rukovatelju moramo sami otvoriti formu "Ispis dokumenata", za to moramo pripremiti opcije otvaranja određene strukture. U ovoj strukturi moraju biti definirana najmanje dva polja:

SourceParameters, koji uključuju CommandId i DestinationObjects:

Identifikator naredbe - također se sprema prilikom kreiranja na poslužitelju, ovo je identifikator naredbe koja je pozvala obrazac naše obrade. Dakle, identifikator ćemo odrediti što trebamo ispisati u proceduri Ispis u objektnom modulu.

Destination Objects - u ovo polje trebamo proslijediti niz objekata za koje se formira ispisani obrazac, kao i parametre koji se traže od korisnika u obrascu.

Kako definiram odredišne ​​objekte može se vidjeti u funkciji GetDestinationObjectsAndPrintParameters. Ovdje kopiram naša odredišta iz prop forme, umjesto elementa niza na indeksu 0, zalijepim naše opcije ispisa.

Ovako definirani niz ubuduće će se prosljeđivati ​​iz forme "Ispis dokumenata", kao prvi parametar Print procedure objektnog modula, koji smo ranije definirali.

Ako se vratimo na definiciju modula objekta obrade i pogledamo funkciju PrintLayout, u prva tri retka funkcije možete vidjeti kako izvlačim naše parametre i objekte iz podataka proslijeđenih proceduri Print i zatim radim s njima.

Takve manipulacije s parametrom DestinationObjects uzrokovane su specifičnostima pozivanja procedure Ispis objektnog modula. Možete pratiti kako se prosljeđuju parametri i obavljaju pozivi funkcija otvaranjem modula obrasca PrintDocuments.

Proizlaziti.

Kao rezultat takvih manipulacija dobit ćemo tri naredbe na obrascu iz kojeg želimo prikazati ispisani obrazac:

Numeriranje naredbi odgovara redoslijedu opcija implementacije.

Sve ove naredbe učinit će istu stvar:

Prikaži obrazac zahtjeva za dodatne parametre

Prikažite generirane ispise u obrascu "Ispis dokumenata".. Baš ono što smo htjeli:

p.s. Kao predloške, za implementaciju mojih ispisa sa zahtjevom za dodatnim parametrima, oslobađam obje obrade koje sudjeluju u sve tri metode formiranja ispisa.

Ovaj članak će detaljno opisati kako početnik koji ne poznaje dobro 1C 8 stvoriti ispis. Na primjer, uzmimo jednu od najčešćih konfiguracija 1C 8 - Računovodstvo 2.0. Stvaranje 1C za ispis faze pisanja:

  • Stvaranje vanjske datoteke za ispis;
  • Izrada izgleda tiskanog obrasca;
  • Pisanje programskog koda za prikaz ispisanih podataka obrazaca na ekranu;
  • Izrada parametara za automatsku registraciju tiskanog obrasca;
  • Spajanje vanjske tiskovne forme na bazu 1C poduzeća.

Izrada tiskanog obrasca 1C. Formulacija problema

Potrebni smo u konfiguraciji Računovodstvo 2.0 stvoriti ispis za dokument Prijem robe i usluga. U zaglavlju ispisanog obrasca prikazati sljedeće podatke:

  • Organizacija;
  • protustranka;
  • ugovor o drugoj strani;
  • Datum primitka.

Prikaz tabličnih podataka u tabelarnom obliku Roba dokument. Tablica treba sadržavati sljedeće stupce:

  • Nomenklatura;
  • Količina;
  • Cijena;
  • Iznos;
  • Kao i cijena artikla za tekući datum (po vrstama cijena iz dokumenta).

Datoteka za vanjsku obradu

Prijeđimo na rješavanje problema. Za početak otvorite 1C 8 u načinu rada Konfigurator. U ovom se načinu odvijaju svi razvoji na platformi 1C 8. Sada moramo stvoriti vanjsku datoteku za obradu. Da biste to učinili, kliknite na izbornik Datoteka -> Novo... ili ikonom nove datoteke.

U prozoru koji se otvori odaberite stavku Vanjska obrada.

Dalje u polje Ime morate unijeti naziv vanjske obrade. U našem slučaju, nazovimo to jednostavno: "Ispisni obrazac", polje za sinonim će se automatski popuniti. Imajte na umu da u polju Ime, vanjske obrade naziv treba pisati bez razmaka i interpunkcijskih znakova.

Dodajte atribut vanjske obrade ObjectReference i odaberite za njega tipa DocumentReference.Primka robeUsluge. Da biste to učinili, u stablu metapodataka vanjske obrade 1C odaberite stavku Rekviziti i pritisnite tipku Dodati(zeleni gumb plus). U desnom dijelu ekrana otvorit će se prozor svojstava atributa, u polju Ime pisati - LinkToObject. U polje Tip pritisnite gumb s tri točkice.

Proširite granu u stablu tipa DocumentLink, te tamo pronađite stavku Prijem robe i usluga, označite kućicu pored nje i kliknite U REDU.

Spremimo vanjsku datoteku za obradu na tvrdi disk, za to ćemo koristiti izbornik Datoteka -> Spremi, ikona Uštedjeti(plava disketa) ili tipkovnički prečac ctrl+s. Nazovimo spremljenu datoteku "PrintForm".

Napravite izgled za ispis

Počnimo stvarati 1C izgled za ispis. Izgled služi kao predložak za izlaz ispisa, pa ako želite da vaš ispis izgleda dobro, trebali biste obratiti pozornost na njega.

Dodajmo novi izgled u stablo metapodataka vanjske obrade, nećemo ništa mijenjati u prozoru dizajnera izgleda i pritisnite gumb Spreman.

U novom izgledu koji se otvori stvorimo nekoliko područja potrebnih za prikaz ispisanog obrasca. Sva područja izgleda koja su nam potrebna bit će vodoravna, pa da biste stvorili novo područje, odaberite potreban broj redaka izgleda i idite na izbornik Tablica -> Imena -> Dodijeli naziv ili koristite tipkovni prečac Ctrl+Shift+N zatim u okvir unesite naziv regije. Prilikom izrade područja izgleda nemojte se bojati pogriješiti s brojem redaka; uvijek ih možete dodati ili ukloniti. Da biste izbrisali redak izgleda 1C, odaberite željeni redak i odaberite stavku u kontekstnom izborniku Izbrisati. Da biste dodali novi red u izgled, odaberite bilo koji redak u rasporedu i odaberite stavku u kontekstnom izborniku razdvojiti.

Dodavanje zaglavlja izgleda

Kreirajmo prvo područje. Policajac, prikazat će podatke za zaglavlje ispisanog obrasca. Za ovo područje potrebno nam je sedam linija izgleda. Odaberite ih i, kao što sam gore napisao, pritisnite tipkovni prečac Ctrl+Shift+N, u polju Ime napišite "Šešir" i pritisnite gumb u redu.

Ispunimo područje izgleda podacima koji su nam potrebni. Obično niti jedan ispisani obrazac nije potpun bez zaglavlja, pa ćemo ga izraditi iu našem zaglavlju izgleda. Budući da ćemo u zaglavlju osim naziva ispisanog obrasca ispisati i broj dokumenta iz kojeg je ispisan, kao parametar postavit ćemo tekst zaglavlja u izgledu. Parametar izgleda je posebno određena ćelija izgleda u kojoj se mogu prikazati različiti podaci pomoću ugrađenog jezika 1C 8. Naslov bi trebao biti prikazan cijelom širinom ispisnog obrasca, pa odlučimo koliko će nam ćelija izgleda biti dovoljno za ispis na standardnoj pejzažnoj orijentaciji lista.

Obično je dovoljno trinaest ili četrnaest ćelija rasporeda, odaberite ih u prvom retku područja Policajac i spojiti u jednu ćeliju ( Kontekstni izbornik -> Spoji). Nakon toga dvaput kliknite na dobivenu veliku ćeliju i napišite naziv parametra, u našem slučaju "HeaderText". Kako bi uneseni tekst postao punopravni parametar, desnom tipkom miša kliknite ćeliju i odaberite stavku u kontekstnom izborniku Svojstva. Knjižna oznaka Izgled naći polje punjenje i odaberite vrijednost Parametar. Parametri u rasporedu 1C označeni su zagradama "<>».

Naslov ispisanog obrasca trebao bi se isticati među ostalim tekstom, stoga još jednom odaberite ćeliju i upotrijebite ikone na ploči za oblikovanje izgleda kako biste postavili poravnanje teksta Centrirano i veličina slova 14.

Nakon naslovnog teksta prikazat ćemo u području Policajac podaci o organizaciji, ugovornoj strani, ugovoru o drugoj strani i datum primitka robe. Budući da su svi ti podaci također preuzeti iz dokumenta, također ćemo ih ukrasiti parametrima. Osim toga, prije svakog parametra trebate napisati tekst objašnjenja kako bi korisnik mogao lako razumjeti gdje je organizacija, a gdje druga ugovorna strana itd. Sve ove radnje slične su stvaranju zaglavlja, pa se neću detaljno zadržavati na njima, samo ću dati sliku s onim što bi na kraju trebalo ispasti.

Slika pokazuje kako se opcije izgleda razlikuju od običnog teksta.

Dodavanje zaglavlja tablice izgleda

Posljednje što trebamo kreirati u ovom području izgleda je zaglavlje tablice, u kojem će biti prikazani podaci tabelarnog dijela. Roba. Stupci potrebni za tablicu opisani su u odjeljku "Izjava o problemu". Također ćemo stvoriti zaglavlje tablice spajanjem ćelija i pisanjem teksta (imena stupaca). Pomoću alata odaberite granice zaglavlja tablice Okvir, koji se nalazi u traci za oblikovanje izgleda.

Dodavanje tablice u izgled

Kreirajmo još jedno područje u izgledu - Podaci. Prikazat će tablicu podataka tabelarnog dijela Roba. Trebamo samo jednu liniju izgleda za ovo područje. Za prikaz svih redaka tabelarnog dijela u tiskanom obliku, ovo područje ćemo ispuniti i prikazati potreban broj puta. Govornici u okruženju Podaci mora odgovarati stupcima zaglavlja tablice, tako da ispunjavanje neće biti teško. Razlika je samo u površini Podaci trebamo opcije, ne samo tekst. Također imajte na umu da su prema zadanim postavkama numerički parametri oblikovani na desnoj margini, a tekstualni parametri na lijevoj. Za odabir stupaca također morate koristiti alat Okvir.

Dodavanje podnožja u izgled

Posljednje područje izgleda koje nam je potrebno je Podrum. Prikazat će ukupne iznose prema količini i iznosu. Stvaranje je slično stvaranju područja Podaci, ali osim toga, rezultate treba istaknuti masnim slovima.

Rezultat bi trebao biti izgled koji izgleda ovako:

Izrada tiskanog obrasca 1C. Programiranje

Krenimo s programiranjem - ovo je najvažnija faza u stvaranju tiskanog obrasca. Prije svega, idemo na modul vanjskog objekta tiskarske ploče, tu ćemo programirati. Da biste to učinili, u glavnom prozoru vanjske obrade pritisnite Akcije -> Otvori objektni modul.

U objektnom modulu obrasca za vanjski ispis trebate kreirati funkciju izvoza Pečat().

Funkcija Ispis() Eksport EndFunction

Imajte na umu da je ova značajka potrebna za vanjske ispise u konfiguracijama koje koriste uobičajenu aplikaciju. Napisat ćemo sav kasniji programski kod potreban za prikaz ispisanog obrasca unutar ove funkcije.

Inicijalizacija osnovnih varijabli

Kreirajmo varijablu TabDoc, koji će sadržavati tablični dokument - on je ispisani obrazac u koji ćemo prikazati popunjena područja izgleda.

TabDoc = novi SpreadsheetDocument;

u varijablu Izgled dobit ćemo tiskani izgled obrasca koji smo izradili. Da bismo to učinili, koristimo ugrađenu funkciju GetLayout(<ИмяМакета>).

Izgled = GetLayout("Izgled");

Sva područja izgleda pretvorit ćemo u varijable. Da bismo to učinili, koristimo metodu izgleda GetRegion(<ИмяОбласти>) .

Područje zaglavlja = Izgled GetArea("Zaglavlje"); AreaData = Layout.GetArea("Podaci"); AreaFooter = Layout.GetArea("Podrum");

Prikaz zaglavlja za ispis u dokumentu proračunske tablice

Sve potrebne varijable su inicijalizirane. Počnimo ispunjavati i prikazivati ​​područja izgleda u dokumentu proračunske tablice. Prije svega, ispunimo naslov ispisanog obrasca, za ovo moramo proslijediti parametar Tekst naslova, koji smo izradili u izgledu, tekst koji nam je potreban. Za popunjavanje vrijednosti parametara, područje izgleda ima posebnu zbirku koja se zove - Mogućnosti. Od čega kroz "." možete dobiti bilo koji parametar. U naslovnom tekstu ćemo unijeti tekst: “Tiskarska forma”, kao i broj dokumenta.

Područje zaglavlja.Parametri.HeaderText = "Obrazac za ispis"+ReferencaNaObjekt.Broj;

Preostali parametri zaglavlja će se popuniti na sličan način, sve vrijednosti koje su potrebne za njih će se dobiti iz rekvizita Referenca na objekt, koji sadrži poveznicu na dokument za ispis.

HeaderScope.Parameters.Organization = LinkToObject.Organization; Područje zaglavlja.Parametri.Account = LinkToObject.Account; Header Area.Parameters.IncomingDate = ObjectReference.Date; Header Area.Parameters.Counterparty Agreement = LinkToObject.Counterparty Agreement;

Svi parametri zaglavlja su popunjeni, prikazat ćemo ih u dokumentu proračunske tablice koji smo izradili, za to koristimo metodu izlaz(<Область>) .

TabDoc.Output(HeaderArea);

Pisanje zahtjeva za tiskani hendikep

Počnimo ispunjavati i prikazivati ​​područje Podaci. Stvaranje 1C ispisa također podrazumijeva pisanje upita, potreban nam je za dobivanje podataka tabelarnog dijela Roba i cijene Nomenklature za trenutni datum koji ćemo koristiti Zahtjev. Jezik upita 1C 8 sličan je SQL-u, odnosno praktički kopira mogućnosti njegove izjave SELECT, ali je cijeli upit napisan na ruskom jeziku. Stoga, ako ste barem izdaleka upoznati sa SQL-om, lako ćete razumjeti jezik upita 1C 8.

U ovom tiskanom obliku zahtjev će biti prilično jednostavan i mnogi će reći da bi se moglo i bez njega, ali poznavanje jezika upita i sposobnost njegove ispravne upotrebe jedna je od glavnih vještina 1C programera. Upiti omogućuju korištenje manje resursa za dobivanje najsloženijih odabira podataka, a također je puno lakše razumjeti tekst upita nego u programskom kodu napisanom bez korištenja upita (ili s minimalnom upotrebom istog). Osim toga, 1C 8 ima vrlo dobar alat za izradu upita koji vam omogućuje interaktivno prikupljanje upita iz potrebnih tablica.

Kreirajmo varijablu koja će sadržavati zahtjev.

Zahtjev = Novi zahtjev;

Tekst zahtjeva bit će sastavljen pomoću alata za sastavljanje upita. Počnimo pisanjem:

Zahtjev.Tekst = "";

Postavite kursor miša između navodnika, pritisnite desnu tipku miša. U kontekstnom izborniku koji se otvori odaberite stavku Konstruktor zahtjeva, to će nam puno pomoći u stvaranju 1C ispisa. Nakon toga otvorit će se prozor dizajnera upita koji sadrži mnogo kartica, ali naš će upit trebati samo četiri: "Tablice i polja", "Relacije", "Uvjeti", "Spoji / aliasi".

Za naš upit potrebne su nam dvije tablice: tabularni dio Roba dokument Prijem robe i usluga i isječak najnovijih informacija o trenutnom datumu registra Cijene artikala.

U lijevom dijelu prozora dizajnera pronađite stupac Baza podataka. Sadrži stablo svih metapodataka, pronađimo one koje trebamo. Da biste to učinili, otvorite granu Dokumentacija i pronađite dokument Usluge dolazne robe, proširite ga i pronađite tablični dio Roba, povucite ga u stupac dizajnera upita stolovi. Postoje tri načina povlačenja i ispuštanja: povlačenjem, dvoklikom na tablicu ili odabirom i klikom na gumb ">". Otvorimo poslovnicu Podaci o registrima i tamo nađi stol CijeneStavki.SliceLast, također ga povucite u stupac stolovi. Ove dvije tablice su dovoljne za naš upit.

Odaberimo polja koja su nam potrebna iz dobivenih tablica. Da biste to učinili, u stupcu stolovi otvori stol i pronađite polja: Nomenklatura, iznos, cijena, količina i povucite ih u treći stupac konstruktora - polja. Otvorimo stol , pronađite polje Cijena i također ga povucite na polja.

Struktura tablica i polja našeg zahtjeva je spremna, sada se pozabavimo uvjetima. Trebamo podatke tabelarnog dijela Roba nisu preuzete sa svih potvrda, već samo iz one koju tiskamo. Da bismo to učinili, postavljamo uvjet na stol Ulazna roba Usluge Roba. Idemo na karticu "Uvjeti" alata za izradu upita. U kolumni polja nalaze se tablice koje smo ranije odabrali, za uvjet nam je potrebno polje Veza sa stola Prijem robe, usluga, robe, povucite ga u prozor Uvjeti.

U 1C upitima možete koristiti parametre, oni su potrebni za prijenos podataka u upit. Na primjer, ako želimo ograničiti izbor dokumenata na određeni dokument, tada možemo upotrijebiti parametar za prosljeđivanje poveznice na ovaj dokument zahtjevu i koristiti ovaj parametar u uvjetu. Upravo to ćemo učiniti u našem zahtjevu.

Jednom kroz prozor Uvjeti dodali smo polje Veza, alat za sastavljanje upita će stvoriti parametar s istim imenom i staviti ga iza znaka "=". Po želji se ovaj parametar može preimenovati. U tekstu zahtjeva parametri su označeni znakom “&”, ali u ovom slučaju to nije potrebno, jer se pretpostavlja da je parametar u drugom dijelu uvjeta, samo ga treba zapamtiti. Kako prenijeti vrijednost parametru zahtjeva 1C, raspravljat ćemo u nastavku.

Budući da u upitu ne koristimo punu tablicu cijena artikla, već virtualnu (isječak potonje u ovom slučaju), moramo postaviti uvjete za formiranje ove virtualne tablice, u našem slučaju to je datum reza i uvjet za vrstu cijene (moraju se odabrati cijene koje imaju strogo definiranu vrstu cijene - onu koja je navedena u dokumentu o primitku koji ispisujemo).

Da biste ispunili parametre virtualne tablice, idite na karticu Tablice i polja konstruktor upita, u stupcu stolovi odaberite stol PricesItemsSliceLatest i pritisnite tipku Mogućnosti virtualnog stola koji se nalazi na vrhu. U prozoru koji se otvori, u polju Razdoblje trebate postaviti parametar na koji će prelaziti datum za koji će se napraviti sniženje cijene. U našem slučaju to će biti trenutni datum (odnosno danas), pa ćemo parametar nazvati "&TrenutniDatum". U polju uvjeta ćemo napisati uvjete za tip cijene, također ćemo ga proslijediti u parametar koji ćemo nazvati “&PriceType”. Rezultirajući uvjet će izgledati ovako (gdje Vrsta cijene- registarsko mjerenje Cijene artikala):

PriceType = &PriceType

Parametri virtualne tablice su ispunjeni, kliknite gumb u redu.

Sada kada smo ograničili izbor samo na dokument koji nam je potreban, stvorimo odnose između tablica upita. Ako se to ne učini, cijene iz tablice PricesItemsSliceLast neće biti povezane s artiklom s računa. Idemo na karticu Veze konstruktor upita. Kreirajmo vezu po polju Nomenklatura između naša dva stola. Da biste to učinili, pritisnite gumb Dodati, u polju stol 1 izabrati stol Ulazna roba Usluge Roba, au polju Tablica 2 - Cijene artikala Slice zadnjeg. U uvjetima povezivanja odaberite polja Nomenklatura s oba stola.

Također treba napomenuti da u odabiru upita moramo dobiti sve retke iz tab-dijela Roba a cijene samo ako su dostupne za tekući datum po vrsti cijene dokumenta. Dakle, ovi tabparts Roba su obvezni, ali podaci o graničnoj cijeni nisu. Dakle, u vezama između ovih tablica potrebno je koristiti tzv. LEFT JOIN, a lijeva (ili obavezna) tablica bit će Ulazna roba Usluge Roba, i desno (ili izborno) PriceItemSliceLast. Kako bi lijevo spajanje tablica upita radilo kao što sam gore opisao, morate potvrditi okvir svi nakon polja Stol 1.


Zahtjev je skoro spreman, ostaje još samo malo poraditi na pseudonima polja. Idi na oznaku Unije / aliasi i postavite pseudonim za polje PricesItemsSliceLast.Price. Pseudonim će biti − CijenaZaDanas, potrebno je kako bi se nazivi polja za izbor upita i nazivi parametara u izgledu ispisanog obrasca podudarali.

Rad u dizajneru upita je gotov, pritisnemo tipku OK. Nakon zatvaranja prozora konstruktora, vidjet ćete da je linija s tekstom zahtjeva ispunjena i izgleda ovako:

Query.Text = "SELECT | Dolazne robe ili usluge Robe. Nomenklatura, | Pristigle robe ili usluge Robe. Količina, | Pristigle robe ili usluge Robe. Cijena, | Pristigle robe ili usluge Robe. Količina, | .Robe KAO Dolazne GoodsServicesGoods |LEFT JOIN (| &CurrentDate, PriceType = &PriceType) AS PricesItemsSliceLast | By Incoming GoodsServicesGoods.Nomenclature | = PricesItemsSliceLast.Nomenclature |WHERE | Incoming GoodsServicesGoods.Reference = &Reference";

Izvršenje zahtjeva

Zahtjevu ćemo proslijediti potrebne parametre, za to ćemo koristiti metodu zahtjeva setParameter(<ИмяПараметра>,<Значение>). Da biste dobili trenutni datum, koristite ugrađenu funkciju Trenutačni datum(), vraća datum i vrijeme računala.

Izvršimo upit kako bismo dobili odabir s podacima koji su nam potrebni. Da bismo to učinili, prvo koristimo metodu upita Izvršiti(), a zatim metodu Odaberite ().

Odabir = Upit.Izvrši().Odaberi();

Popunjavanje tablice za ispis

Kao rezultat toga, u varijabli Uzorakće sadržavati izbor rezultata upita, kroz njega se možete kretati pomoću metode Sljedeći(), a za zaobilaženje cijele trebat će vam petlja Pozdrav. Struktura će izgledati ovako:

Dok Selection.Next() Loop EndCycle;

U ovom ciklusu ispunit ćemo i prikazati područje izgleda Podaci. Ali prvo, inicijalizirajmo dvije varijable numeričkog tipa. U njima ćemo skupljati zbrojeve po broju i iznosu koji trebamo prikazati u području Podrum.

Ukupni zbroj = 0; UkupniBroj = 0;

Unutar petlje ispunit ćemo područje Podaci podatke iz trenutnog elementa odabira u varijable TotalSum I Ukupni broj dodati vrijednosti zbroja i količine te na kraju prikazati područje u dokumentu proračunske tablice koristeći nam već poznatu metodu izlaz(). Budući da su nazivi polja našeg zahtjeva potpuno isti kao nazivi parametara polja Podaci, tada ćemo za popunjavanje koristiti ugrađenu proceduru FillPropertyValues(<Приемник>, <Источник>) koji kopira vrijednosti svojstava<Источника>na svojstva<Приемника>.

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

Ispis podnožja tiskovne forme u tablični dokument

Ostaje ispuniti i prikazati posljednje područje izgleda - Podrum. Već smo pripremili podatke za punjenje, punjenje i ispis se provode prema istoj shemi.

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

Tablični dokument je u potpunosti ispunjen, preostaje ga prikazati na ekranu kako bi korisnik mogao pogledati ispisani obrazac i po potrebi ga ispisati. Ali u tipičnim konfiguracijama 1C 8, postupci posebnih modula odgovorni su za ispis vanjskih obrazaca za ispis. Dakle, dovoljno je vratiti se s funkcije Pečat() ispunjena proračunska tablica.

Vrati TabDoc;

U ovoj fazi programiranje je dovršeno i izrada ispisnog obrasca 1c je gotovo dovršena. Cijeli tekst funkcije Pečat() Neću ga dati ovdje, možete ga vidjeti u datoteci za ispis, koju možete preuzeti na dnu članka.

Izrada tiskanog obrasca 1C. Mogućnosti automatske registracije

Prilikom povezivanja vanjskog ispisa s bazom podataka, sustav ne određuje automatski za koji je dokument ili direktorij ispis namijenjen, morate ga odabrati ručno. A ako je druga osoba napisala tiskani obrazac, a vi ste samo upućeni da ga povežete, tada izbor može postati dvosmislen. Kako bi se izbjegli takvi problemi, u svim vanjskim ispisima potrebno je izraditi izgled s parametrima za automatsku registraciju. Ako je kreiran i ispravno formatiran, sustav automatski utvrđuje kojem je dokumentu ili imeniku ispisani obrazac namijenjen.

To se radi na sljedeći način:

  • U vanjskoj obradi izrađujemo novi izgled. Mi to zovemo "Parametri_autoregistracija" (važno je da ne pogriješite!).
  • U prvoj ćeliji izgleda pišemo Dokumentacija.(ili Referentne knjige.) i naziv dokumenta s kojim želite povezati ispis.

Spajanje na bazu vanjske tiskovne forme

  • Pokrenite 1C 8 u načinu rada Društvo;
  • Idite na izbornik Usluga -> Dodatni izvještaji i obrade -> Dodatne vanjske tiskarske forme;
  • Pritisnite gumb Dodati;
  • U prozoru koji se otvori kliknite na ikonu Zamijenite vanjsku datoteku za obradu;
  • Ako ste izradili parametre automatske registracije, pristajemo ih koristiti;
  • Ako niste izradili parametre automatske registracije, tada u tabličnom odjeljku Pribor tiskarske ploče dodajte traženi dokument ili imenik;
  • Pritisnemo gumb U REDU.

Nakon toga će vanjski ispis biti dostupan u izborniku Pečat dokument Isporuka roba i usluga. Stvaranje 1C ispisa na ovome može se smatrati dovršenim.