Parametri obrade eksterne ispisne forme 1c. Ispis ispisanih obrazaca sa zahtjevom za podacima u obrascu "Ispis dokumenata" iz podsustava BSP "Ispis"

Razmotrimo pisanje najjednostavnijeg tiskanog oblika 1s 8.1 - 8.2 koristeći primjer konfiguracije Računovodstvo poduzeća 2.0. Recimo da trebate napisati vanjski tiskani obrazac za dokument: prikazati osnovne podatke dokumenta, kao i iz tabelarnog dijela Roba: nomenklatura, cijena, količina i iznos.

Rezultirajući primjer možete preuzeti s .

U konfiguratoru 1C poduzeća 8 stvoriti vanjsku obradu ( Datoteka->Novo->Vanjska obrada), postavite naziv, kreirajte potrebne podatke za vanjski tiskani obrazac Referenca objekta s tipom DocumentLink Prodaja roba i usluga.

Izrada izgleda tiskanog obrasca

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

Nakon toga počinjemo postavljati tekst i parametre u područja. Stavićemo to u zaglavlje naziv tiskanog obrasca, broj dokumenta I organizacija, te također nacrtati granice zaglavlja tablice i napisati nazive stupaca. Prilikom kreiranja parametra u svojstvima ćelije, na kartici Izgled trebate postaviti svojstvo Punjenje u smislu Parametar.

U području Podaci kreirajmo parametre za prikaz redaka u tabličnom dijelu( Nomenklatura, cijena itd.), i na području Podrum za ukupne iznose po količini i iznosu.

Programiranje

Idemo na objektni modul ispisne forme Akcije->Otvori objektni modul.

Kreirajmo ondje funkciju izvoza koja je obavezna za tiskane obrasce. Pečat().

Ispis funkcije () Izvoz EndFunction

U funkciji za koju ćemo kreirati varijablu dokument proračunske tablice, u koji će biti ispisan ispisani obrazac, dobivamo raspored I područja rasporeda.

TabDoc = novi TabularDocument; Izgled = GetLayout("Izgled" ); HeaderArea = Layout.GetArea("Header" ); AreaData = Layout.GetArea("Podaci" ); AreaFooter = Layout.GetArea("Podnožje" );

Ispunimo parametre šeširi i dovesti do dokument proračunske tablice .

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

Da biste dobili redove tablice Roba koristimo zahtjev.

Zahtjev = novi Zahtjev; Request.SetParameter("Link", ObjectLink); Query.Text = "SELECT | Prodaja roba i usluga Roba Nomenklatura, | Prodaja roba i usluga Roba. Iznos, | Prodaja roba i usluga Roba Cijena, | Prodaja roba i usluga Roba, količina|OD | Dokument Prodaja robe i usluga Roba KAKO Prodaja robe i usluga Roba|GDJE | Prodaja roba i usluga Roba. Link = &Link";

Pojedinosti prosljeđujemo parametru zahtjeva Referenca objekta, naznačiti u stanju GDJE, da su nam potrebni podaci samo iz dokumenta iz kojeg izvodimo tiskani obrazac. Da bismo dobili ogledni upit, prvo ga izvršavamo, a zatim odabiremo retke.

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

Zatim u petlji ispunjavamo parametre područja Podaci za svaki redak uzorka dokumenta i prikazati ih u dokument proračunske tablice. Također izračunavamo ukupne vrijednosti u petlji količinama I iznose. Nećemo popunjavati svaki parametar zasebno, već ćemo se pridržavati procedure Ispunite PropertyValues((<Приемник>, <Источник>) 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; TotalQuantity = 0; While Selection.Next() Loop FillPropertyValues(AreaData.Parameters,Selection); TotalSum = TotalSum + Sample.Sum; TotalQuantity = TotalQuantity + Sample.Quantity; TabDoc.Output(AreaData); Kraj ciklusa ;

Ispunite i prikažite područje Podrum.

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

Vraćanje dovršenog tabličnog dokumenta iz funkcije Pečat().

povratak TabDoc;

Ako koristite jednu od standardnih konfiguracija, tada nakon vraćanja dokumenta proračunske tablice 1C prikazat će ispisani obrazac na ekranu. Također možete koristiti metodu proračunske tablice za ispis. Pokazati().

5. Povezivanje ispisanog obrasca s dokumentom

U standardne konfiguracije 1C 8 Postoji imenik za registraciju vanjskih tiskanih obrazaca Vanjska obrada. Za povezivanje idite na izbornik u poslovnom načinu rada Usluga->Dodatna izvješća i obrade->Dodatni eksterni tiskani obrasci.

Dodati novi element imenik, učitajte ispisani obrazac s diska i odaberite vrstu dokumenta.

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

Auto-registracija tiskanog obrasca

Kako biste osigurali da prilikom povezivanja ispisne forme ne morate ručno odabrati vrstu dokumenta, možete konfigurirati automatska registracija. Da biste to učinili, dodajte novi izgled i pozovite ga Postavke_Automatska registracija(to je jedini način) iu njegovu prvu ćeliju upisujemo Dokumentacija.<Наименование документа> (ili Imenici.<Наименование справочника> ).

Sada, kada povezujemo obrazac za ispis, od nas će se tražiti da koristimo parametri 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 "Ispis dokumenata". Ovaj obrazac dio je podsustava "Ispis" iz BSP-a. Prilikom izrade vlastitih tiskanih obrazaca ponekad je potrebno od korisnika zatraž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 pogledati kako implementirati ispis ispisanog obrasca na navedeni obrazac iz podsustava “Ispis”, ukoliko prije ispisa ispisa želimo od korisnika zatražiti dodatne podatke. Ovdje ćemo razmotriti dva slučaja: kada se ispisani obrazac implementira pomoću podsustava „Dodatna izvješća i obrade“ i kada se ispisani obrazac doda konfiguraciji u modu konfiguratora, tj. promjene su napravljene u standardnoj konfiguraciji.

Obrazac "Ispis dokumenata" nudi neke dodatne funkcije kada radite s tiskanim obrascima, 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 s nizom dokumenata.

Ovaj obrazac sada koristi 1C u svim standardnim konfiguracijama za prikaz tiskanih obrazaca dokumenata i elemenata imenika. I naravno, kada razvijamo vlastite tiskane obrasce, kako ne bismo išli izvan okvira prihvaćene prakse, također bismo trebali prikazati svoje tiskane obrasce pomoću ponuđenih alata.

Kod standardnih metoda dodavanja ispisanih obrazaca, podsustav “Ispis” će učiniti sve umjesto nas i po potrebi prikazati ispisani obrazac. Na primjer:

  1. Prilikom dodavanja naredbe za ispis dokumentu pomoću podsustava "Ispis", potrebno je opisati naredbu za ispis u proceduri Dodaj naredbe za ispis, uz naznaku upravitelja ispisa u kojem je implementirana procedura Ispis;
  2. Prilikom kreiranja Dodatne obrade potrebno je u modulu objekta obrade u funkciji InformationOnExternalProcessing opisati naredbu tipa use Poziv poslužiteljske metode i odmah implementirati Print proceduru koja na određeni način implementira poziv za generiranje ispisanog oblik.

U takvim slučajevima, kao što sam već rekao, podsustav za ispis će prema potrebi ispisati ispisani obrazac koji smo sami generirali. Takve metode uključuju izravno oblikovanje tiskovne forme, tj. proslijedio je objekte za ispis proceduri ispisa, generirao dokument proračunske tablice i prikazao ga na ekranu.

Što ako, prije početka generiranja tabličnog dokumenta, trebate zatražiti neke podatke od korisnika? Oni. moramo pokazati formu. U ovom slučaju krši se standardni redoslijed formiranja tiskanog obrasca i moramo razmisliti o tome kako prenijeti naš tiskani obrazac u obrazac "Ispis dokumenata".

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

  1. Kada se tiskarska ploča izradi s promjenom konfiguracije;
  2. Kada se ispisani obrazac kreira bez promjene konfiguracije, tj. Koristi se podsustav "Dodatna izvješća i obrade".

Ispisani obrazac izrađujemo dodavanjem kroz konfigurator.

Prva varijacija. Kroz kreiranje obrade s timom.

Ova opcija uključuje dodavanje obrade izravno u objekte metapodataka:

Razmotrimo opciju kada trebamo implementirati tiskani oblik 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 naš obrazac za ispis;
  2. Napravite sam obrazac;
  3. Napravite izgled tiskanog obrasca;
  4. Napravite promjene u modulu upravitelja obrade.

Stvaranje tima

Navedite u svojstvima naredbe:

  • Grupa u kojoj želimo da se naredba prikaže u formi;
  • Tip parametra je upravo priručnik ili dokument čiji tiskani oblik izrađujemo;
  • Način korištenja parametra je Višestruki. Tako da možete prikazati ispisane obrasce za nekoliko elemenata odabranih na popisu odjednom.

U naredbenom modulu otvaramo formu za obradu, prosljeđujući joj odabrane elemente imenika za koje je potrebno generirati ispisane forme. Nemojmo ovdje cjepidlačiti i malo ispraviti standardni kod koji platforma ubacuje u proceduru obrade naredbi:

&Na postupku obrade naredbe klijenta (parametar naredbe, parametri izvršenja naredbe) //Umetnite sadržaj rukovatelja. FormParameters = Nova struktura("DataForPrinting", CommandParameters); OpenForm("Processing.PrintForm.Form",FormParameters,CommandExecutionParameters.Source,CommandExecutionParameters.Uniqueness,CommandExecutionParameters.Window,CommandExecutionParameters.NavigationLink); Kraj postupka

Parametar procedure Command Parameter upravo sadrži elemente koje smo odabrali za ispis.

Izrada obrasca

Dodajmo obrazac obradi, stvorimo atribut obrasca vrste Popis vrijednosti i potrebne podatke za unos za nas dodatni parametri za ispis formulara:

DataForPrint - tip ListValues;

Broj redaka - tip Broj.

Moj primjer će biti čisto demonstrativan, pa uvjetno odredimo da mi je cilj ispisati prikaz odabranog elementa i broj redaka koje odabiremo kao dodatni parametar na obrascu.

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

&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing)PrintData.LoadValues(Parameters.PrintData); Kraj procedure &Na klijentskoj proceduri Ispis (naredba) Print ManagementClient. Izvrši ispis naredbe("Processing.PrintForm", //Print Manager "PrintForm", //Identifier GetObjectsForPrint(), //PrintObjectsThisObject, //Owner of form - obrazac iz kojeg se ispisuje zove se GetPrintParameters( )); //Opcije ispisa - proizvoljni parametri za prijenos u upravitelj ispisa. Kraj postupka &na funkciji poslužitelja GetObjectsForPrint() Array = DataForPrint.UploadValues(); Povratni niz; EndFunction &OnServer funkcija GetPrintParameters()PrintParameters = Nova struktura; Print Options.Insert("Naslov obrasca", "Ispis obrasca"); //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. PrintOptions.Insert("Broj redaka", Broj redaka); ReturnPrintOptions; EndFunction

Definiramo proceduru WhenCreatingOnServer i u njoj iz parametra koji smo proslijedili iz naredbe prilikom otvaranja obrasca čitamo popis objekata za koje trebamo generirati ispisani obrazac.

U obrascu kreiramo naredbu Print i upišemo njen rukovatelj u kojem pozivamo funkciju općeg modula ManagePrintClient.ExecutePrintCommand, postavili smo traženi parametri ovu funkciju, naime:

  • Upravitelj ispisa - naziv objekta u modulu upravitelja, koji je definiran funkcijom Ispis, koja formira naš ispisani obrazac;
  • Identifikator - identifikator tiskovne forme koju je potrebno ispisati. Koristeći ovaj identifikator, odabrat ćemo u funkciji Ispis modula upravitelja koji obrazac za ispis treba ispisati;
  • Tiskovni objekti su izravno oni objekti za koje se generiraju tiskovne forme;
  • Vlasnik obrasca;
  • Parametri ispisa - ovdje kreiramo i prosljeđujemo strukturu s parametrima ispisa, ovdje prosljeđujemo naše dodatne parametre koje smo tražili od korisnika u obrascu za obradu.

Zapravo, pozivanjem funkcije ExecutePrintCommand iz forme za obradu rješavamo naš problem ispisa ispisane forme u formu “PrintDocuments”. Tada će podsustav “Ispis” izvršiti standardne radnje i izvršiti proceduru ispisa koju moramo definirati u modulu upravitelja naše obrade.

Izrada izgleda tiskanog obrasca

Promjene u modulu upravitelja obrade

Od ovog trenutka provodimo standardne radnje za razvoj tiskanih obrazaca pomoću podsustava „Ispis“ iz BSP-a.

Dodajte sljedeći kod modulu upravitelja:

Procedura Ispis (Niz objekata, Parametri ispisa, Zbirka obrazaca za ispis, Objekti ispisa, Izlazni parametri) Izvoz Ako Kontrola ispisa. Treba ispisati izgled (Zbirka obrazaca za ispis, "Obrazac za ispis") Zatim kontrolirati ispis. Izlazni tabularni dokument u zbirku (Zbirka obrazaca za ispis, Obrazac "Obrazac za ispis", NStr("ru = "Obrazac za ispis""), PrintLayout( Niz objekata, Parametri ispisa), "Obrada.Obrazac za ispis.PF_MXL_Obrazac za ispis",); završi ako; Kraj postupka &na funkciji poslužitelja PrintLayout(niz objekata, opcije ispisa) TabularDocument = Novi tabularDocument; //Stvorite dokument proračunske tablice ///////////////////////////////////////////// /////////////////////////////////////////////// // /////////////// //PREKRIVLJENI DIO MODULA // //Ovdje stvaramo naš ispisani obrazac Layout = GetLayout("PF_MXL_PrintForm"); Za svaki objekt iz niza objekata Loop AreaHeader = Layout.GetArea("Header"); RegionObject = Layout.GetArea("Object"); TabularDocument.Output(HeaderArea); AreaObject.Parameters["Object"] = Objekt; TabularDocument.Output(AreaObject); For Account = 1 ByPrint Options["Number of Rows"] Cycle AreaLine = Layout.GetArea("Line"); AreaString.Parameters["String"] = Broj; TabularDocument.Output(AreaString); EndCycle; TabularDocument.OutputHorizontalPageSeparator(); EndCycle; //PREDEFINIRAN DIO MODULA //////////////////////////////////////////// ///////////////////////////////////////////////// ////////////////// Vrati TabularDocument; //Vrati dokument tablice Kraj funkcije

Druga opcija. Kroz implementaciju naredbe print.

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

U ovom slučaju, prilikom definiranja naredbe za ispis koristimo i podsustav “Ispis” iz BSP-a. Umjesto definiranja naredbe za otvaranje obrade u samoj obradi, potrebno je otići u upravljački modul objekta kojem želimo dodati ispisnu formu, te u proceduri zadati opis naredbe za ispis. AddPrintCommands(PrintCommands):

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

Ovdje dodajemo naredbu za ispis pod nazivom "Ispis tiskanog obrasca" svim obrascima imenika (podsjećam vas da radimo s imenikom ugovornih strana). I ovdje je glavna točka koju treba uzeti u obzir. Formi možete dodati dvije vrste naredbi:

1. Pozivanje procedure ispisa iz modula upravitelja;

2. Pozivanje metode klijenta.

To je upravo ono što trebamo nazvati klijentskom metodom. Metoda klijenta omogućit će nam pozivanje forme za obradu u kojoj ćemo od korisnika prije ispisa zatražiti podatke koji su nam potrebni.

Da bi se implementirao takav poziv, potrebno je navesti Handler za njega prilikom definiranja naredbe (vidi kod iznad). Niz koji sadrži put do klijentske funkcije prosljeđuje se rukovatelju naredbama, tj. put do funkcije Export zajedničkog modula na klijentu. Upravo će se ova funkcija pozvati kada kliknete na naredbu za ispis koju dodajemo u forme.

Kao što razumijete, da bi ovo radilo, trebate stvoriti ovaj isti opći modul i definirati funkciju izvoza. Stoga pišemo sljedeći kod u našem općem modulu:

Funkcija ProcessingPrintCommandPrintForm(PrintParameters) Export //Umetnite sadržaj rukovatelja. FormParameters = Nova struktura("DataForPrint", PrintParameters.PrintObjects); OpenForm("Obrada.PrintForm.Form", FormParameters); EndFunction

Ovdje radimo isto što i tijekom prve implementacije, otvaramo obrazac za ispis, samo što će sada naši podaci za ispis biti sadržani u parametru proslijeđenom funkciji Parametri ispisa, odnosno u polju Ispis objekata.

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

Implementacija ove opcije nalazi se u standardnim konfiguracijama, u mehanizmima povezanim s ispisom privole za obradu osobnih podataka.

Izrađujemo dodatnu obradu.

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

U ovom slučaju moramo koristiti podsustav „Dodatna izvješća i obrada“ iz BSP-a.

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

1. Objektni modul obrade;

2. Modul obrazaca za obradu.

U objektnom modulu pišemo sljedeći kod:

/////////////////////////////////////////////// // ////////////////////////// // PROGRAMSKO SUČELJE #ProgramInterface područje // Vraća informacije o vanjskoj obradi. Funkcija InformationOnExternalProcessing() ExportRegistrationParameters = AdditionalReportsAndProcessing.InformationOnExternalProcessing("2.2.2.1"); Parametri registracije.View = AdditionalReportsAndProcessingClientServer.ProcessingViewPrintedForm(); Parametri registracije.Verzija = "1.0"; NewCommand = Parametri registracije.Commands.Add(); NewCommand.Presentation = NStr("ru = "Vanjski ispisani obrazac s preliminarnim zahtjevom za podatke""); NewCommand.Identifier = "ExternalPrintForm"; NewCommand.Use = AdditionalReportsAndProcessingClientServer.CommandTypeOpenForm(); NewCommand.ShowAlert = True; NewCommand.Modifier = "PrintMXL"; ReturnRegistrationParameters; EndFunctions Procedure Print(Print Data, PrintForms Collection, Print Objects, Output Parameters) Export If PrintManagement.NeedPrintLayout(PrintFormsCollection, "ExternalPrintForm") Then PrintManagement.OutputTabularDocumentIntoCollection(PrintFormsCollection, "ExternalPrintForm" PrintForm", NStr("ru = "Ispitni list" "), PrintLayout(PrintData ),); završi ako; Kraj postupka &na funkciji poslužitelja PrintLayout(PrintData)PrintParameters = PrintData.Value; //Prima parametre ispisa od prvog elementa Popisa vrijednosti Object Array = PrintData.Copy(); //Kopiraj popis vrijednosti ArrayObjects.Delete(0); //Brisanje redaka kopiranog elementa koji sadrži opcije ispisa TabularDocument = New TabularDocument; //Stvorite dokument proračunske tablice ///////////////////////////////////////////// /////////////////////////////////////////////// // /////////////// //NADVOJENI DIO MODULA // //Ovdje kreiramo naš ispisani obrazac Layout = GetLayout("Layout"); Za svaki objekt iz niza objekata Loop AreaHeader = Layout.GetArea("Header"); RegionObject = Layout.GetArea("Object"); TabularDocument.Output(HeaderArea); AreaObject.Parameters["Object"] = Objekt; TabularDocument.Output(AreaObject); For Account = 1 ByPrint Options["Number of Rows"] Cycle AreaLine = Layout.GetArea("Line"); AreaString.Parameters["String"] = Broj; TabularDocument.Output(AreaString); EndCycle; TabularDocument.OutputHorizontalPageSeparator(); EndCycle; //PREDEFINIRAN DIO MODULA //////////////////////////////////////////// ///////////////////////////////////////////////// ////////////////// Vrati TabularDocument; //Vrati dokument proračunske tablice EndFunction #EndArea

Postoje dvije funkcije i jedan postupak.

Standardna funkcija za Dodatnu obradu je InformationOnExternalProcessing(); bez nje sustav neće razumjeti da se radi o dodatnoj obradi. Ovdje važna točka je, indikacija da je naredba implementirana u ovoj obradi tipa 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 slučaj s uobičajenom definicijom naredbe za ispis u modulu upravitelja. U u ovom slučaju Ne postoji parametar za prosljeđivanje postavki ispisa. Stoga ćemo morati biti kreativni kako bismo prenijeli ne samo same objekte za koje se tiskani obrazac generira, već i parametre koje tražimo od korisnika u obrascu.

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 pojedinosti za pohranjivanje vrijednosti koje će nam kasnije trebati. Nazovimo te detalje na sljedeći način:

ID naredbe - tip String

ObjectsAssignments - tip Popis vrijednosti

U modulu ove forme pišemo sljedeći kod:

&O proceduri poslužitelja kada se kreira na poslužitelju (greška, standardna obrada) //Prilikom izrade na poslužitelju zapamtite standardne parametre koje prosljeđuje podsustav AdditionalReportsAndProcessing AdditionalProcessingLink = Parameters.AdditionalProcessingLink; CommandIdentifier = Parametri.CommandIdentifier; Odredišni objekti.Učitaj vrijednosti(Parametri.Odredišni objekti); EndProcedure &OnClient Procedure Print(Command) // Dobivanje ključa jedinstvenosti obrasca koji se otvara. UniqueKey = String(Novi UniqueIdentifier); //Definiranje i ispunjavanje standardnih parametara za opći obrazac PrintDocumentsOpeningParameters = New Structure("DataSource, SourceParameters"); OpeningParameters.DataSource = AdditionalProcessingLink; OpeningParameters.SourceParameters = New Structure("CommandIdentifier, DestinationObjects"); OpeningParameters.SourceParameters.CommandIdentifier = Identifier naredbe; //Objekti za ispis i parametri uneseni u obrazac bit će obrađeni //proći ćemo kroz parametar Source Parameters.Destination ObjectsOpening Parameters.Source Parameters.Destination Objects = GetDestination ObjectsAndPrint Parameters(); OpenForm("GeneralForm.PrintDocuments", OpeningParameters,FormOwner,UniqueKey); Kraj postupka &na funkciji poslužitelja GetDestinationObjectsAndPrintParameters()PrintData = DestinationObjects.Copy(); /////////////////////////////////////////////// // ///////////////////////////////////////////// //// //////// //NADOBOLJENI DIO MODULA // //Ovdje stvaramo strukturu Parametri ispisa i ispunjavamo je parametrima //koje je potrebno proslijediti funkciji ispisa Parametri ispisa = Nova struktura; PrintOptions.Insert("Broj redaka", Broj redaka); IspisPodataka.Umetni(0,Opcije ispisa); //PREDEFINIRAN DIO MODULA //////////////////////////////////////////// ///////////////////////////////////////////////// ////////////////// ReturnPrintData; EndFunction

U postupku When CreateOnServer ispunjavamo naša tri detalja koja smo stvorili 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 parametre otvaranja određene strukture. U ovoj strukturi moraju biti definirana najmanje dva polja:

Izvorni parametri, koji uključuju identifikator naredbe i odredišne ​​objekte:

ID naredbe - također se sprema kada se kreira na poslužitelju, ovo je identifikator naredbe koja je pozvala naš obrazac za obradu. Stoga ćemo pomoću identifikatora odrediti što trebamo ispisati u proceduri Print u objektnom modulu.

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

Kako definiram odredišne ​​objekte može se vidjeti u funkciji GetObjectsDestinationsAndPrintOptions. Ovdje kopiram naše odredišne ​​objekte iz rekvizita obrasca, umjesto elementa polja s indeksom 0, zalijepim naše parametre ispisa.

Ovako definirani niz ubuduće će biti prebačen iz forme “Ispis dokumenata” kao prvi parametar procedure modula Ispis objekta koju smo ranije definirali.

Ako se vratimo na definiciju modula objekta obrade i pogledamo funkciju PrintLayout, u prva tri retka funkcije možete vidjeti kako izdvajam naše parametre i objekte iz podataka prenesenih u proceduru Print i zatim radim s njima.

Takve manipulacije s parametrom Objekti dodjele određene su specifičnostima poziva procedure modula objekta Ispis. Sami možete pratiti kako se prosljeđuju parametri i izvršavaju pozivi funkcija otvaranjem modula obrasca za ispis dokumenata.

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

Izlaz generiranih tiskanih obrazaca u obrazac "Ispis dokumenata".. Upravo ono što smo htjeli:

p.s. Kao predloške, za implementaciju vlastitih tiskanih obrazaca sa zahtjevom za dodatnim parametrima, učitavam oba procesa koji su uključeni u sve tri metode generiranja tiskanog obrasca.

Ovaj članak će vam detaljno reći kako početnik s malo znanja o 1C 8 može stvoriti tiskani obrazac. Na primjer, uzmimo jednu od najčešćih konfiguracija 1C 8 - Računovodstvo 2.0. Izrada tiskanog obrasca 1C faze pisanja:

  • Izrada eksterne datoteke obrasca 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 izraditi tiskani obrazac za dokument Prijem robe i usluga. U zaglavlju ispisanog obrasca prikazati sljedeće podatke:

  • Organizacija;
  • protustranka;
  • Ugovor o drugoj ugovornoj strani;
  • Datum primitka.

Prikažite podatke u tabličnom dijelu kao tablicu Roba dokument. Tablica treba sadržavati sljedeće stupce:

  • Nomenklatura;
  • Količina;
  • Cijena;
  • Iznos;
  • Također i cijenu artikla za tekući datum (prema vrsti cijene iz dokumenta).

Datoteka za vanjsku obradu

Prijeđimo na rješavanje problema. Prvo, otvorimo 1C 8 u modu 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.

Sljedeći na terenu Ime Morate unijeti naziv vanjske obrade. U našem slučaju jednostavno ćemo ga nazvati "PrintForm"; polje za sinonim će se automatski popuniti. Imajte na umu da u polju Ime, vanjske obrade, naziv treba pisati bez razmaka i interpunkcijskih znakova.

Dodajmo vanjske atribute obrade LinkToObject i odaberite tip za njega DocumentLink Prijem robe i usluga. Da biste to učinili, u stablu metapodataka vanjske obrade 1C odaberite stavku Rekviziti i pritisnite tipku Dodati(gumb sa zelenim plusom). Na desnoj strani ekrana, u polju, otvorit će se prozor svojstava atributa Ime idemo pisati - Referenca na objekt. U polje Tip pritisnite gumb s tri točkice.

Proširimo granu u stablu tipa DocumentLink, te tamo pronađite element Prijem robe i usluga, označite kvadratić pored njega i kliknite U REDU.

Spremimo vanjsku datoteku za obradu u HDD, za ovo ćemo koristiti izbornik Datoteka -> Spremi, piktogram Uštedjeti(plava disketa) ili tipkovnički prečac Ctrl+S. Nazovimo spremljenu datoteku “PrintForm”.

Izrada izgleda tiskanog obrasca

Počnimo stvarati izgled 1C tiskarske forme. Izgled služi kao predložak za ispis tiskovne forme, pa ako želite da vaša tiskovna forma dobro izgleda, obratite pažnju na njega.

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

U novom izgledu koji se otvori kreirat ćemo 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. Kada stvarate područje izgleda, nemojte se bojati pogriješiti s brojem redaka; uvijek ih možete dodati ili ukloniti. Da biste izbrisali liniju izgleda 1C, odaberite željenu liniju i odaberite kontekstni izbornik paragraf Izbrisati. Da biste dodali novi red u izgled, odaberite bilo koji redak u rasporedu i odaberite stavku u kontekstnom izborniku Proširiti.

Dodavanje zaglavlja izgleda

Prije svega, stvorimo područje Policajac, prikazat će podatke za zaglavlje ispisanog obrasca. Za ovo područje trebat će nam sedam linija izgleda. Odaberimo ih i, kao što sam gore napisao, pritisnite kombinaciju tipki 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 tiskani obrazac nije potpun bez naslova, stoga stvorimo i jedan u našem zaglavlju izgleda. Budući da ćemo u naslovu osim naziva ispisanog obrasca prikazati i broj dokumenta iz kojeg je ispisan, tekst naslova u prijelomu postavit ćemo kao parametar. Parametar izgleda je posebno određena ćelija izgleda u koju se mogu ispisati različiti podaci pomoću ugrađenog jezika 1C 8. Naslov bi trebao biti prikazan cijelom širinom ispisne forme, pa odlučimo koliko će nam ćelija rasporeda biti dovoljno za ispis na standardnom pejzažna orijentacija list.

Obično je dovoljno trinaest ili četrnaest ćelija rasporeda, odaberite ih u prvom redu područja Policajac i spojite u jednu ćeliju ( Kontekstni izbornik -> Spoji). Nakon toga dvaput kliknite na dobivenu veliku ćeliju i napišite naziv parametra, u našem slučaju “TitleText”. Kako bi uneseni tekst postao punopravni parametar, desnom tipkom miša kliknite ćeliju i odaberite stavku u kontekstnom izborniku Svojstva. Na knjižnoj oznaci Izgled nađimo 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 ponovno odaberite ćeliju i upotrijebite ikone na ploči za oblikovanje izgleda da postavite poravnanje teksta Centrirano i veličina slova 14.

Nakon naslovnog teksta prikazat ćemo ga u području Policajac informacije o organizaciji, drugoj ugovornoj strani, ugovoru druge ugovorne strane i datumu primitka robe. Budući da su svi ti podaci također preuzeti iz dokumenta, formalizirat ćemo ih i parametrima. Osim toga, prije svakog parametra trebate napisati tekst objašnjenja kako bi korisnik mogao lako razumjeti gdje se nalazi organizacija, gdje je druga ugovorna strana itd. Sve te radnje slične su stvaranju naslova, pa se neću detaljno zadržavati na njima, samo ću dati sliku onoga što bi se na kraju trebalo dogoditi.

Slika pokazuje kako se parametri izgleda razlikuju od uobičajenog teksta.

Dodavanje zaglavlja tablice izgleda

Zadnje što trebamo kreirati u ovom području izgleda je zaglavlje tablice u kojem će se prikazivati ​​podaci tabelarnog dijela Roba. Stupci potrebni za tablicu opisani su u odjeljku "Izjava o problemu". Također ćemo stvoriti zaglavlje tablice koristeći kombinaciju ćelija i pisanje teksta (imena stupaca). Pomoću alata odaberite granice zaglavlja tablice Okvir, koji se nalazi na ploči za oblikovanje izgleda.

Dodavanje tablice u izgled

Kreirajmo još jedno područje u izgledu - Podaci. U njemu će se prikazati tablica podataka tabelarnog dijela Roba. Za ovo područje trebamo samo jedan redak rasporeda. Za prikaz svih redaka tabelarnog dijela u tiskanom obliku, ovo područje ispunit ćemo i prikazati potreban broj puta. Kolone u području Podaci treba se podudarati sa stupcima zaglavlja tablice, tako da neće biti teško popuniti ga. Razlika je samo u površini Podaci trebamo parametre, a ne samo tekst. Također imajte na umu da su prema zadanim postavkama numerički parametri oblikovani udesno, a tekstualni ulijevo. Za odabir stupaca također morate koristiti alat Okvir.

Dodavanje podnožja u izgled

Posljednje područje rasporeda koje trebamo je Podrum. Prikazat će ukupne iznose prema količini i iznosu. Stvaranje je slično stvaranju područja Podaci, ali dodatno rezultate treba istaknuti masnim slovima.

Krajnji rezultat trebao bi 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 objektni modul obrasca za vanjski ispis, tu ćemo programirati. Da biste to učinili, u glavnom prozoru za vanjsku obradu kliknite Akcije -> Otvori objektni modul.

Morate kreirati funkciju izvoza u objektnom modulu obrasca za vanjski ispis Pečat().

Funkcija Ispis() Eksport EndFunction

imajte na umu da ovu funkciju obavezan je za vanjske ispisne forme u konfiguracijama koje koriste normalna primjena. Sav kasniji programski kod potreban za prikaz ispisanog obrasca bit će zapisan unutar ove funkcije.

Inicijalizacija osnovnih varijabli

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

TabDoc = novi TabularDocument;

Na varijablu Izgled Dobit ćemo izgled tiskanog obrasca koji smo izradili. Za to koristimo ugrađenu funkciju GetLayout(<ИмяМакета>).

Izgled = GetLayout("Izgled");

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

HeaderArea = Layout.GetArea("Zaglavlje"); AreaData = Layout.GetArea("Podaci"); AreaFooter = Layout.GetArea("Podnožje");

Ispis zaglavlja ispisanog obrasca u dokument 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 obrasca za ispis; za ovo moramo proslijediti parametar Tekst naslova, koji smo izradili u izgledu, tekst koji nam je potreban. Za popunjavanje vrijednosti parametara za područje izgleda postoji posebna zbirka koja se zove - Mogućnosti. Od čega preko "." možete dobiti bilo koji parametar. U tekstu zaglavlja prenijet ćemo tekst: “Tiskani obrazac”, kao i broj dokumenta.

Područje zaglavlja.Parametri.TitleText = "Ispiši obrazac"+VezaNaObjekt.Broj;

Ispunit ćemo preostale parametre zaglavlja na sličan način; iz detalja ćemo dobiti sve potrebne vrijednosti za njih Referenca objekta, koji sadrži poveznicu na dokument za ispis.

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

Svi parametri zaglavlja su popunjeni, prikazat ćemo ga 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 iscrtavati područje Podaci. Stvaranje 1C tiskanog obrasca također uključuje pisanje upita; potreban nam je za dobivanje tabličnih podataka Roba i cijene Nomenklature za trenutni datum koji ćemo koristiti Zahtjev. Jezik upita 1C 8 sličan je SQL-u, odnosno praktički kopira njegove mogućnosti SELECT izjava, ali je cijeli zahtjev napisan na ruskom. Stoga, ako ste barem nejasno 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 bilo moguće bez njega, ali poznavanje jezika upita i sposobnost njegove kompetentne upotrebe jedna je od glavnih vještina 1C programera. Upiti vam omogućuju da dobijete složene uzorke podataka koristeći manje resursa, a tekst upita puno je lakše razumjeti nego programski kod napisano bez upotrebe upita (ili s minimalnom upotrebom istog). Osim toga, 1C 8 ima vrlo dobar dizajner upite, što vam omogućuje interaktivno sastavljanje upita iz potrebnih tablica.

Kreirajmo varijablu koja će sadržavati zahtjev.

Zahtjev = Novi zahtjev;

Tekst zahtjeva ćemo sastaviti pomoću konstruktora zahtjeva. Za početak napišimo:

Zahtjev.Tekst = "";

Postavite kursor miša između navodnika i kliknite desni gumb miševi. U kontekstnom izborniku koji se otvori odaberite stavku Konstruktor zahtjeva, puno će nam pomoći u izradi 1C tiskovne forme. Nakon toga otvorit će se prozor dizajnera upita; sadrži mnogo kartica, ali za naš upit trebat će nam samo četiri: "Tablice i polja", "Relacije", "Uvjeti", "Spoji / aliasi".

Za naš upit trebat će nam dvije tablice: dio tablice Roba dokument Prijem robe i usluga i snimku najnovijih podataka o trenutnom datumu registra Cijene artikala.

Na lijevoj strani prozora dizajnera nalazimo stupac Baza podataka. Sadrži stablo svih metapodataka, pronađimo one koje trebamo. Da bismo to učinili, otvorimo temu Dokumentacija i pronađite dokument Prijem robe i usluga, otvorimo ga i pronađemo tablični dio Roba, povucite ga u stupac dizajnera upita Stolovi. Možete povući na tri načina: stvarnim povlačenjem, dvostruki klik prema tablici ili odabirom i pritiskom na tipku “>”. Otvorimo temu Informacijski registri i tamo nađi stol PricesNomenclature.ShortcutLatest, 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 otvorimo stol i pronađite polja: Nomenklatura, iznos, cijena, količina i povucite ih u treći stupac konstruktora - Polja. Proširimo tablicu , hajdemo pronaći polje Cijena i također ga povucite na Polja.

Struktura tablica i polja našeg zahtjeva je spremna, sada prijeđimo na uvjete. Trebaju nam tablični podaci Roba nisu preuzete sa svih potvrda, već samo iz one koju tiskamo. Da bismo to učinili, nametnut ćemo uvjet na stolu Prijem RobeUslugeRobe. Idemo na karticu "Uvjeti" u dizajneru upita. U kolumni Polja nalaze se tablice koje smo ranije odabrali, za uvjet će nam trebati polje Veza sa stola Prijem robe i usluga Roba, Povucite ga u prozor Uvjeti.

U 1C upitima možete koristiti parametre; oni su potrebni za prijenos podataka u zahtjev. 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.

Nakon prozora Uvjeti dodali smo polje Veza, sam dizajner upita će kreirati parametar s istim imenom i staviti ga iza znaka “=”. Ovaj parametar Možete ga preimenovati ako želite. U tekstu zahtjeva parametri su označeni znakom “&”, ali u ovom slučaju to nije potrebno, jer se pretpostavlja da drugi dio uvjeta sadrži parametar, samo to trebate zapamtiti. Kako prenijeti vrijednost parametru zahtjeva 1C, raspravljat ćemo u nastavku.

Budući da u zahtjevu ne koristimo punu tablicu cijena proizvoda, 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 presjeka i uvjet za vrstu cijene (cijene koje imaju strogo definiranu vrstu cijene je ona navedena u dokumentu primitka koji ispisujemo).

Da biste ispunili parametre virtualne tablice, idite na karticu Tablice i polja konstruktor upita, u stupcu Stolovi odaberite tablicu CijeneNomenklaturaRezanjeNajnovije 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 se prebaciti datum na 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 polje uvjeta ćemo napisati uvjete za tip cijene, također ćemo ga proslijediti u parametar koji ćemo nazvati “&TypePrice”. Rezultirajući uvjet će izgledati ovako (gdje TypePrice- 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 veze između tablica upita. Ako se to ne učini, tada cijene iz tablice PricesNomenclatureSliceLast neće biti povezane s artiklom iz računa. Idemo na karticu Veze dizajner upita. Stvorimo vezu preko polja Nomenklatura između naša dva stola. Da biste to učinili, pritisnite gumb Dodati, u polju stol 1 odaberite stol Prijem RobeUslugeRobe, a u polju Tablica 2 - CijeneNomenklaturaSliceZad. U uvjetima komunikacije odaberite polja Nomenklatura s oba stola.

Također treba napomenuti da u odabiru upita moramo dobiti sve retke iz dijela kartice Roba a cijene samo ako su dostupne na tekući datum za vrstu cijene dokumenta. Dakle, tablični podaci Roba obvezni su, ali podaci o raščlanjivanju cijena nisu dostupni. Dakle, u relacijama između ovih tablica potrebno je koristiti tzv. LEFT JOIN, a lijeva (ili obavezna) tablica bit će Prijem RobeUslugeRobe, i desno (ili izborno) PriceNomenclatureSliceLast. Kako bi lijevo spajanje tablica upita radilo kao što sam gore opisao, trebate potvrditi okvir svi nakon polja Stol 1.


Zahtjev je skoro gotov, još samo treba malo poraditi na terenskim aliasima. Idemo na knjižnu oznaku Unije/pseudonimi i postavite alias za polje PricesNomenclature Slice Latest.Price. Nadimak će biti - Cijena Kao Danas, potrebno je kako bi se nazivi polja za izbor upita i nazivi parametara u izgledu ispisanog obrasca podudarali.

Rad u dizajneru upita je sada završen, kliknite OK. Nakon što se prozor dizajnera zatvori, vidjet ćete da je linija s tekstom zahtjeva ispunjena i izgleda ovako:

Request.Text = "SELECT | Primitak dobara i usluga Roba. Nomenklatura, | Primitak dobara i usluga Roba. Iznos, | Primitak dobara i usluga Roba. Cijena, | Primitak dobara i usluga Roba. Količina, | Odsjek nomenklature cijena od Najnovije. Cijena AS CijenaDanas | OD | Dokument. Primitak robe i usluga. Roba AS Po korakuProizvodiUslugeProizvodi |LIJEVA VEZARegistrirajteInformacije.CijeneNomenklatura.OdsječakZadnji (| &TrenutniDatum,VrstaCijene = &VrstaCijene) KAKO Nomenklatura CijeneOdrezakZadnji | ON Primitak RobeUslugeProizvodi.No menklatura | = CijeneNomenklaturaSliceLast. Nomenklatura |WHERE | Prijem robeUslugeProizvodi.Veza = &Veza";

Izvršavanje zahtjeva

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

Pokrenimo upit da dobijemo uzorak s podacima koji su nam potrebni. Da biste to učinili, prvo upotrijebite metodu zahtjeva Trčanje(), a zatim metodu Odaberite ().

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

Popunjavanje tablice tiskanog obrasca

Kao rezultat toga, u varijabli Uzorakće sadržavati izbor rezultata upita, kroz njega se možete kretati pomoću metode Sljedeći(), a da biste prošli kroz cijelu stvar potrebna vam je petlja Pozdrav. Dizajn će biti sljedeći:

Dok Select.Next() Loop EndLoop;

U ovoj petlji ispunit ćemo i prikazati područje izgleda Podaci. Ali prvo, inicijalizirajmo dvije varijable numeričkog tipa. U njima ćemo prikupiti ukupne iznose po količini i iznosu koji trebamo prikazati u području Podrum.

Ukupni zbroj = 0; TotalQuantity = 0;

Unutar petlje ispunit ćemo područje Podaci podatke iz trenutnog elementa odabira u varijable TotalAmount I Ukupna količina 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 se nazivi polja našeg zahtjeva potpuno podudaraju s nazivima parametara područja Podaci, tada ćemo za popunjavanje koristiti ugrađenu proceduru FillPropertyValues(<Приемник>, <Источник>), koji kopira vrijednosti svojstava<Источника>na svojstva<Приемника>.

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

Izlaz podnožja ispisanog obrasca u dokument proračunske tablice

Ostaje ispuniti i prikazati posljednje područje izgleda - Podrum. Već smo pripremili podatke za punjenje, punjenje i isplata se odvijaju po istoj shemi.

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

Tablični dokument je u potpunosti ispunjen, preostaje ga samo prikazati na ekranu kako bi korisnik mogao vidjeti ispisani obrazac i po potrebi ga ispisati. Ali u tipičnim konfiguracijama 1C 8, postupci posebnih modula odgovorni su za izlaz vanjskih tiskanih obrazaca. Dakle, dovoljno je vratiti se s funkcije Pečat() dovršen dokument proračunske tablice.

Vrati TabDoc;

U ovom trenutku je faza programiranja završena i izrada 1c tiskovne forme je gotovo gotova. Cijeli tekst funkcije Pečat() Neću ga dati ovdje, možete ga pogledati u datoteci obrasca za ispis, koju možete preuzeti na dnu članka.

Izrada tiskanog obrasca 1C. Mogućnosti automatske registracije

Pri povezivanju eksterne ispisne forme s bazom podataka sustav ne utvrđuje automatski za koji dokument ili priručnik je ispisna forma namijenjena, već ju morate ručno odabrati. A ako je druga osoba napisala tiskani obrazac, a vi imate samo zadatak povezati ga, tada izbor može postati dvosmislen. Kako bi se izbjegli takvi problemi, u svim vanjskim tiskanim obrascima potrebno je izraditi izgled s parametrima za autoregistraciju. Ako je kreiran i ispravno formatiran, sustav automatski određuje za koji je dokument ili priručnik namijenjen ispisani obrazac.

To se radi na sljedeći način:

  • U vanjskoj obradi izrađujemo novi izgled. Mi to zovemo "Settings_Auto-Registration" (važno je ne pogriješiti!).
  • U prvoj ćeliji izgleda pišemo Dokumentacija.(ili Imenici.) i naziv dokumenta s kojim trebate povezati ispisani obrazac.

Spajanje vanjske tiskovne forme na bazu

  • Pokrenite 1C 8 u načinu rada Društvo;
  • Idite na izbornik Usluga -> Dodatna izvješća i obrade -> Dodatni eksterni tiskani obrasci;
  • 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 kreirali parametre za autoregistraciju, tada u tabličnom dijelu Pribor za tiskarske ploče dodati traženi dokument ili referentnu knjigu;
  • pritisni gumb U REDU.

Nakon toga, eksterni obrazac za ispis bit će dostupan u izborniku Pečat dokument Prijem robe i usluga. Stvaranje 1C tiskanog obrasca sada se može smatrati dovršenim.