1c eksterni štampani formular sa pitanjem. Izlaz štampanih obrazaca sa zahtevom za podatke u obrazac "Štampaj dokumenata" iz BSP podsistema "Štampanje"

Razmislite o pisanju jednostavnog za ispis 1s 8.1 - 8.2 na primjeru konfiguracije Računovodstvo preduzeća 2.0. Pretpostavimo da želite da upišete eksterni ispis u dokument: prikažite glavne podatke dokumenta, kao i iz tabelarnog dela Roba: nomenklatura, cijena, količina i količina.

Dobijeni primjer možete preuzeti pomoću .

U konfiguratoru 1C preduzeća 8 kreirati eksternu obradu ( Fajl->Novo->Spoljna obrada), postavite ime, kreirajte atribut potreban za eksterni obrazac za štampanje ReferenceToObject sa tipom Referenca dokumenta. Realizacija robnih usluga.

Kreirajte izgled za štampanje

Dodavanje novog raspored, ostavite tip izgleda tabelarni dokument. Na rasporedu kreiramo tri oblasti: Zaglavlje, podaci I Podrum. To možete učiniti odabirom željenog broja linija i klikom na meni Tabela->Imena->Dodijeli ime (Ctrl+Shift+N).

Nakon toga počinjemo postavljati tekst i parametre u područja. Stavimo to u zaglavlje naziv za štampanje, broj dokumenta I organizacija, kao i nacrtati granice zaglavlja tabele i napisati nazive kolona. Kada kreirate parametar u svojstvima ćelije, na kartici Layout postavite svojstvo punjenje u značenje Parametar.

U području Podaci kreirajte parametre za izlaz redova tabelarnog odeljka ( Nomenklatura, cijena itd.), ali na tom području Podrum za zbrojeve po količini i iznosu.

Programiranje

Idemo na modul za štampani objekt Akcije->Otvori objektni modul.

Kreirajmo funkciju izvoza koja je obavezna za štampanje obrazaca pečat().

Funkcija Print () Izvoz EndFunctions

Kreirajmo varijablu u funkciji tabelarni dokument, u kojoj će biti prikazana štampana forma, dobijamo raspored I layout area.

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

Popunite parametre šeširi i odnesi to tabelarni dokument.

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

Da dobijete redove tabele Roba koristite upit.

Zahtjev = novi zahtjev; Query.SetParameter("Referenca", ObjectReference); Query.Text = "ODABIR | Realizacija robe, usluga, robe. nomenklatura, | Realizacija robe, usluga, robe iznos, | Realizacija robe, usluga, robe.Cijena, | Prodaja robe, usluga, robe OD | Dokument.Prodaja RobeUsluge.Robe AS Realizacija RobeUslugeRobe|WHERE | ImplementationProductsServicesProducts.Reference = &Reference";

Prosljeđujemo props parametru zahtjeva ReferenceToObject navesti u uslovu GDJE da su nam potrebni podaci samo iz dokumenta iz kojeg prikazujemo štampanu formu. Da bismo dobili izbor upita, prvo ga izvršavamo, a zatim biramo redove.

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

Zatim, u petlji, popunite parametre područja Podaci za svaki red odabira dokumenta i prikazati ih u tabelarni dokument. Također u petlji brojimo ukupne vrijednosti količine I iznosi. Nećemo popunjavati svaki parametar posebno, ali ćemo koristiti proceduru FillPropertyValues((<Приемник>, <Источник>) od globalnom kontekstu, kopira vrijednosti svojstva <Источника> na svojstva <Приемника> . Uparivanje se vrši po imenima svojstava. Više o ovome možete pročitati u pomoćnik za sintaksu 1C Enterprise 8.

TotalSum = 0 ; Ukupan broj = 0; Dok Selection.Next() Loop FillPropertyValues(DataArea.Parameters, Selection); TotalSum = TotalSum + Sample.Sum; TotalQuantity = TotalQuantity + Sample.Quantity; TabDoc.Output(područje podataka); EndCycle ;

Popunite i prikažite područje Podrum.

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

Vraćamo ispunjeni dokument proračunske tablice iz funkcije pečat().

return TabDoc;

Ako koristite jednu od tipičnih konfiguracija, onda nakon vraćanja dokumenta proračunske tablice 1Cće automatski prikazati odštampani obrazac. Za izlaz možete koristiti i metod proračunske tablice. Prikaži().

5. Povezivanje štampanog sa dokumentom

IN tipične konfiguracije 1C 8 postoji direktorij za registraciju eksternih obrazaca za štampu ExternalProcessing. Da biste se povezali, idite na meni u režimu preduzeća Usluga->Dodatni izvještaji i obrada->Dodatni eksterni obrasci za štampu.

Dodamo novi element direktorija, učitavamo ispisani obrazac sa diska i biramo vrstu dokumenta.

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

Ispis obrasca za automatsku registraciju

Kako biste izbjegli potrebu ručnog odabira vrste dokumenta prilikom povezivanja štampača, možete konfigurirati automatska registracija. Da bismo to učinili, dodajemo novi izgled i pozivamo ga Parametri_Autoregistracija(samo tako) i u njegovu prvu ćeliju upisujemo Dokumentacija.<Наименование документа> (ili Referentne knjige.<Наименование справочника> ).

Sada, kada povezujemo obrazac za štampanje, od nas će biti zatraženo da ga koristimo opcije automatske registracije.

Svi su više puta vidjeli kako se u tipičnim konfiguracijama izgrađenim na bazi BSP-a (Biblioteka standardnih podsistema), štampani obrasci izgrađeni na osnovu tabelarnog dokumenta izlaze u poseban obrazac "Štampanje dokumenata". Ovaj obrazac je dio podsistema "Štampanje" BSP-a. Kada razvijate svoje printable, ponekad morate zatražiti od korisnika dodatne podatke potrebne za ispis. Ovdje se postavlja pitanje, kako u ovom slučaju ispisati odštampani obrazac u obrascu "Print Document". U ovom članku ću razmotriti kako implementirati izlaz forme za štampanje u pomenutu formu iz podsistema „Print“, ukoliko želimo da zahtevamo dodatne podatke od korisnika pre izlaza obrasca za štampanje. Ovdje će se razmatrati dva slučaja: kada se printable implementira korištenjem podsistema "Dodatni izvještaji i obrada" i kada se printable dodaje u konfiguraciju u modu konfiguratora, tj. promjene su napravljene u zadanoj konfiguraciji.

Obrazac "PrintDocuments" pruža neke dodatne funkcije kada radite sa obrascima za štampanje, kao što su:

  • dugme za štampanje na štampaču, direktno u obrascu;
  • naznaka broja primjeraka, štampana forma;
  • uređivanje generiranog štampanog obrasca;
  • mogućnost spremanja štampanog obrasca u različitim formatima podataka (Excel, Word, PDF, itd.);
  • slanje štampanog obrasca e-mailom;
  • zgodan rad sa setom dokumenata.

Ovaj obrazac sada koristi 1C u svim standardnim konfiguracijama za prikaz ispisanih oblika dokumenata i elemenata direktorija. I naravno, kada razvijamo naše štamparske forme, kako ne bismo išli dalje od prihvaćene prakse, trebalo bi da prikažemo i naše štamparske forme koristeći priložene alate.

Kada koristite standardne metode za dodavanje obrazaca za štampanje, podsistem "Print" će učiniti sve umesto nas i prikazati formu za štampanje kako treba. Na primjer:

  1. Kada dodajemo naredbu za štampanje u dokument koristeći podsistem "Print", moramo opisati naredbu za štampanje u proceduri AddPrintCommands ukazujući na menadžera za štampanje u kojem je implementirana procedura Print;
  2. Prilikom kreiranja Dodatne obrade potrebno je da u modulu objekta obrade u funkciji DetailOnExternalProcessing opišemo naredbu tipa upotrebe Pozivanje metode servera i odmah implementiramo Print proceduru koja na određeni način implementira poziv forme štamparska forma.

U takvim slučajevima, kao što sam već rekao, štamparski podsistem će po potrebi prikazati štampanu formu koju smo mi sami formirali. Takve metode podrazumijevaju direktno formiranje štamparske forme, tj. prosledio objekte za štampanje u proceduru štampanja, formirao tabelarni dokument i prikazao ga na ekranu.

Ali šta ako, prije početka formiranja dokumenta proračunske tablice, trebate zatražiti neke podatke od korisnika? One. moramo pokazati obrazac. U ovom slučaju se krši standardni redosled formiranja štamparske forme i moramo razmisliti o tome kako preneti našu štamparsku formu u obrazac „Štampanje dokumenata“.

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

  1. Kada se kreira ispis sa promjenom konfiguracije;
  2. Kada je ispis kreiran bez promjene konfiguracije, tj. Koristi se podsistem "Dodatni izvještaji i obrada".

Kreiramo ispis tako što ga dodajemo kroz konfigurator.

Prva varijanta. Kroz kreiranje obrade sa timom.

Ova opcija omogućava dodavanje obrade direktno objektima metapodataka:

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

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

Mi stvaramo tim

Navedite u svojstvima naredbe:

  • Grupirajte gde želimo da se komanda prikaže u obrascu;
  • Tip parametra je samo referentna knjiga ili dokument čiji štampani oblik pravimo;
  • Način korištenja parametara - Višestruko. Da biste mogli da prikažete štampane obrasce, odjednom za nekoliko elemenata izabranih na listi.

U komandnom modulu otvaramo formu za obradu tako što ćemo joj proslijediti odabrane elemente direktorija za koje je potrebno generirati forme za ispis. Nemojmo ovdje lukavo filozofirati i malo ispraviti tipični kod koji je platforma zamijenjena u proceduru obrade naredbi:

&O rukovanju naredbama klijentske procedure (parametar naredbe, parametri izvršenja naredbe) //Ubacite sadržaj rukovatelja. FormParameters = Nova struktura("PrintData", CommandParameter); OpenForm("Processing.PrintForm.Form", FormParameters,CommandExecutionParameters.Source,CommandExecutionParameters.Uniqueness,CommandExecutionParameters.Window, CommandExecutionParameters.NavigationLink); EndProcedure

Parametar procedure, Parametar komande, sadrži samo elemente koje smo odabrali za štampanje.

Kreirajte obrazac

Dodajmo obrazac u obradu, kreiramo atribut obrasca tipa ValueList i potrebne atribute da unesemo dodatne parametre za ispis:

DataToPrint - tip ValueList;

Broj redova - tip Broj.

Moj primjer će biti isključivo demonstrativan, pa hajde da uslovno odredimo šta mi je cilj da prikažem reprezentaciju izabranog elementa u ispisanoj liniji i broj redova koje biramo kao dodatni parametar na obrascu.

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

&OnServerCreateProcedureOnServer(Failure, StandardProcessing)PrintData.LoadValues(Parameters.PrintData); Kraj procedure &na klijentu Procedura Print(Command) ControlPrintClient.ExecutePrintCommand("Processing.PrintForm", //Print Manager "PrintForm", //Identifier GetObjectsToPrint(), //Print Objects ThisObject, //Vlasnik obrasca iz kojeg štampanje se zove GetPrintParameters( )); //Parametri ispisa - proizvoljni parametri koji se prosljeđuju upravitelju ispisa Return Array; EndFunction &AtServer funkcija GetPrintSettings() PrintSettings = Nova struktura; PrintParameters.Insert("Zaglavlje obrasca", "Odštampaj obrazac"); //Jedan od parametara za obrazac "Ispis dokumenta". //Određuje naslov obrasca za ispis. //Ovdje dodajemo naše parametre koje želimo dodatno prenijeti na print manager. PrintParameters.Insert("Broj redova", Količina redova); Return ParametersPrint; EndFunctions

Definiramo proceduru OnCreateAtServer iu njoj iz parametra koji smo prenijeli iz naredbe prilikom otvaranja obrasca čitamo listu objekata za koje trebamo generirati ispis.

Naredbu Print kreiramo u formi i napišemo njen rukovatelj, u kojem pozivamo funkciju zajedničkog modula ManagePrintClient.RunPrintCommand, postavljamo potrebne parametre ove funkcije, i to:

  • Print manager - naziv objekta u modulu menadžera, koji definiše funkciju Print koja formira naš printable;
  • Identifikator - identifikator štampe za štampanje. Ovim identifikatorom izabraćemo u funkciji Print modula menadžera koji obrazac za štampanje treba da se odštampa;
  • Štampani objekti su direktno oni objekti za koje se formiraju štamparske forme;
  • Vlasnik obrasca;
  • Parametri ispisa - ovdje formiramo i prosljeđujemo strukturu sa parametrima printanja, tu prosljeđujemo naše dodatne parametre koje smo tražili od korisnika u obrascu za obradu.

Zapravo, pozivanjem funkcije ExecutePrintCommand iz obrasca za obradu rješavamo naš problem prikazivanja obrasca za štampanje u obrascu "PrintDocuments". Zatim će podsistem "Print" izvršiti standardne akcije i dovesti izvršenje do procedure Print, koju moramo definirati u modul manageru naše obrade.

Kreiranje izgleda za štampanje

Izmjena u modulu menadžera obrade

Od ovog trenutka vršimo standardne radnje za razvoj štamparskih formi koristeći podsistem "Print" iz BSP-a.

Dodajte sljedeći kod u modul menadžera:

Procedura Print(ObjectsArray,PrintParameters,PrintFormCollection,PrintObjects,OutputParameters) ket(ObjectsArray,PrintParameters), "Processing.PrintForm.PF_MXL_PrintForm",); EndIf; EndProcedure &AtServer funkcija PrintLayout(ObjectArray,PrintSettings) SpreadsheetDocument = New SpreadsheetDocument; //Kreiraj dokument sa proračunskom tablicom //////////////////////////////////////////// / /////////////////////////////////////////////////////////////////////////// // ///////////////// //REDETERMINIRANI DIO MODULA // //Ovdje formiramo naš Layout za ispis = GetLayout("PF_MXL_PrintForm"); Za svaki objekat iz niza objekata Loop AreaHeader = Layout.GetArea("Header"); AreaObject = Layout.Get Area("Object"); SpreadsheetDocument.Output(RegionHeader); AreaObject.Parameters["Object"] = Objekat; SpreadsheetDocument.Output(RegionObject); Za Count = 1 ByPrintSettings["Number of Lines"] Loop AreaString = Layout.GetArea("String"); RegionString.Parameters["String"] = Broj; SpreadsheetDocument.Output(AreaString); EndCycle; SpreadsheetDocument.OutputHorizontalPageSeparator(); EndCycle; //REDETERMINIRANI DIO MODULA /////////////////////////////////////////// // /////////////////////////////////////////////// /// ////////////////// Return SpreadsheetDocument; //Vrati dokument proračunske tablice EndFunction

Druga opcija. Kroz implementaciju naredbe print.

Ova opcija je vrlo slična prvoj po pitanju štampe. Njena razlika je u načinu kreiranja komande koja će biti izlazna u interfejs i pokrenuti naše štampanje.

U ovom slučaju, prilikom definiranja naredbe print koristimo i podsistem "Print" iz BSP-a. Umjesto da definišemo naredbu za otvaranje obrade u samoj obradi, potrebno je da odemo do modula menadžera, objekta u koji želimo da dodamo printable, i podesimo opis naredbe print u proceduri AddPrintCommands(PrintCommands):

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

Ovdje svim obrascima imenika (podsjećam da radimo sa imenikom druge strane) dodajemo naredbu za ispis pod nazivom "Odštampaj obrazac za štampanje". I ovdje je glavna stvar koja se mora uzeti u obzir. Možete dodati dvije vrste naredbi u obrazac:

1. Pozivanje procedure Print iz modula menadžera;

2. Pozivanje klijentske metode.

To je upravo poziv klijentskoj metodi koji nam je potreban. Klijentska metoda će nam omogućiti da pozovemo obrazac za obradu u kojem ćemo od korisnika tražiti podatke koji su nam potrebni prije štampanja.

Da biste implementirali takav poziv, kada definirate naredbu, postavite Handler za nju (pogledajte kod iznad). Niz koji sadrži putanju do funkcije klijenta se prosljeđuje rukovatelju naredbi, tj. put do funkcije za izvoz zajedničkog modula na klijentu. Ovo je funkcija koja će se pozvati kada kliknete na naredbu print koju dodamo u obrasce.

Kao što razumete, da bi ovo funkcionisalo, morate da kreirate ovaj CommonModule i definišete funkciju za izvoz. Stoga pišemo sljedeći kod u našem zajedničkom modulu:

Funkcija HandlingPrintCommandPrintForm(PrintParameters) Export //Ubacite sadržaj rukovaoca. FormParameters = Nova struktura("PrintData",PrintParameters.PrintObjects); OpenForm("Processing.PrintForm.Form", FormParameters); EndFunctions

Ovdje radimo isto kao u prvoj implementaciji, otvaramo obrazac za ispis, samo što će sada naši PrintData biti sadržani 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 sa štampanjem saglasnosti za obradu ličnih podataka.

Izrađujemo dodatnu obradu.

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

U ovom slučaju trebamo koristiti podsistem "Dodatni izvještaji i obrada" iz BSP-a.

Sa ovim rješenjem trebamo napisati kod na samo dva mjesta, a sva su u našoj budućoj dodatnoj obradi:

1. Modul objekta obrade;

2. Modul obrada obrasca.

U objektnom modulu napišite sljedeći kod:

////////////////////////////////////////////////// / ///////////////////////////// // PROGRAMSKO INTERFEJS #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"; NewCommand = RegistrationParameters.Commands.Add(); NewCommand.View = NStr("ru = "Spoljni obrazac za štampanje sa preliminarnim zahtevom za podatke""); NewCommand.Identifier = "ExternalPrintForm"; NewCommand.Usage = AdditionalReportsAndProcessesClientServer.CommandTypeOpenForm(); NewCommand.ShowAlert = istina; NewCommand.Modifier = "PrintMXL"; Return ParametersRegistration; EndFunction Procedure Print(PrintData,PrintFormCollection,PrintObjects,OutputParameters) Izvoz IfPrintControl.NeedPrintLayout(PrintFormCollection, "ExternalPrintForm") ThenPrintControl.OutputSpreadsheetDocumentToFormCollection(ExrumPrintCollection(ExrumPrintForm) List" ""), PrintLayout(PrintData) ); EndIf; EndProcedure & AtServer funkcija PrintLayout(PrintData)PrintParameters = PrintData.Value; //Nabavite postavke ispisa iz prvog elementa ValuesListObjectArray = PrintData.Copy(); //Kopiraj listu vrijednosti ArrayObjects.Delete(0); //Brisanje redaka kopiranog elementa koji sadržiPrintSettings SpreadsheetDocument = New SpreadsheetDocument; //Kreiraj dokument sa proračunskom tablicom //////////////////////////////////////////// / /////////////////////////////////////////////////////////////////////////// // ///////////////// //REDETERMINIRANI DIO MODULA // //Ovdje formiramo naš štampani obrazac Layout = GetLayout("Layout"); Za svaki objekat iz niza objekata Loop AreaHeader = Layout.GetArea("Header"); AreaObject = Layout.Get Area("Object"); SpreadsheetDocument.Output(RegionHeader); AreaObject.Parameters["Object"] = Objekat; SpreadsheetDocument.Output(RegionObject); Za Count = 1 ByPrintSettings["Number of Lines"] Loop AreaString = Layout.GetArea("String"); RegionString.Parameters["String"] = Broj; SpreadsheetDocument.Output(AreaString); EndCycle; SpreadsheetDocument.OutputHorizontalPageSeparator(); EndCycle; //REDETERMINIRANI DIO MODULA /////////////////////////////////////////// // /////////////////////////////////////////////// /// ////////////////// Return SpreadsheetDocument; //Vrati dokument proračunske tablice EndFunction #EndArea

Postoje dvije funkcije i jedna procedura.

Standardna funkcija za dodatnu obradu je ExternalProcessingInfo(), bez nje sistem neće shvatiti da je ovo dodatna obrada. Ovdje je važna tačka indikacija da komanda implementirana u ovoj obradi ima tip Otvaranje formulara. One. otvorićemo obrazac po potrebi. Slijedi definicija procedure Print i funkcije koja direktno generiše naš tabelarni dokument.

Ovdje treba obratiti pažnju da naredba print u ovom slučaju treba da sadrži samo 4 parametra, a ne 5 kao što je uobičajena definicija naredbe print u modulu menadžera. U ovom slučaju, ne postoji opcija za prosleđivanje opcija štampanja. Stoga ćemo morati pokazati domišljatost kako bismo, pored samih objekata, za koje se formira štampana forma, prošli i parametre koje tražimo od korisnika u obrascu.

I tako smo definirali dodatnu obradu, naredba iz koje će otvoriti obrazac za obradu. Stoga je sljedeći korak kreiranje obrasca za obradu.

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

CommandID - tip String

Odredišni objekti - upišite ValueList

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

&AtServer procedura WhenCreatingAtServer(Failure, StandardProcessing) //Prilikom kreiranja na serveru, zapamtite standardne parametre koje je proslijedio podsistem AdditionalReportsAndProcessing AdditionalProcessingReference = Parameters.AdditionalProcessingReference; CommandId = Parameters.CommandId; DestinationObjects.LoadValues(Parameters.DestinationObjects); EndProcedure &AtClient Procedure Print(Command) // Dobivate ključ jedinstvenosti otvorenog obrasca. UniqueKey = String(Novi jedinstveni identifikator); //Definirajte i popunite standardne parametre za opći obrazac PrintDocumentsOpenParameters = New Structure("DataSource, SourceParameters"); OpenParameters.DataSource = AdditionalProcessingReference; OpenParameters.SourceParameters = Nova struktura("CommandIdentifier, Destination Objects"); OpenParameters.SourceParameters.CommandId = CommandId; //Objekti za ispis i parametri uneseni u obrazac za obradu //proći će kroz parametar SourceParameters.DestinationObjectsOpeningParameters.SourceParameters.DestinationObjects = GetDestinationObjectsAndPrintParameters(); OpenForm("CommonForm.PrintingDocuments",OpenParameters,FormOwner,UniqueKey); EndProcedure & AtServer funkcija GetDestinationObjectsAndPrintParameters()PrintData = DestinationObjects.Copy(); ////////////////////////////////////////////////// / /////////////////////////////////////////////////////////////////////////// // //////////// //PONOVNO ODREĐENI DIO MODULA // //Ovdje kreiramo strukturuPrintParameters i popunjavamo je parametrima //koji se moraju proslijediti funkciji printaPrintParameters = New Structure; PrintParameters.Insert("Broj redova", Količina redova); PrintData.Insert(0, PrintSettings); //REDETERMINIRANI DIO MODULA /////////////////////////////////////////// // /////////////////////////////////////////////// /// ////////////////// ReturnPrintData; EndFunctions

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

Zatim definišemo rukovalac za dugme za štampanje na obrascu. U ovom rukovaocu trebamo sami otvoriti obrazac "Ispis dokumenata", za to trebamo pripremiti opcije otvaranja određene strukture. U ovoj strukturi moraju biti definirana najmanje dva polja:

SourceParameters, koji uključuju CommandId i DestinationObjects:

Identifikator komande - takođe se čuva prilikom kreiranja na serveru, ovo je identifikator komande koja je pozvala formu naše obrade. Stoga ćemo identifikatorom odrediti šta trebamo ispisati u proceduri Print u modulu objekta.

Odredišni objekti - upravo u ovo polje treba da prođemo niz objekata za koje se formira štampana forma, 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 forme prop, umjesto elementa niza na indeksu 0, nalijepim naše opcije za ispis.

Ovako definisan niz će ubuduće biti prosleđen iz forme „Štampaj dokumente“, kao prvi parametar Print procedure modula objekta, koji smo ranije definisali.

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

Takve manipulacije s parametrom DestinationObjects su zbog specifičnosti pozivanja Print procedure modula objekta. Možete pratiti kako se prosljeđuju parametri i obavljaju pozivi funkcija otvaranjem modula obrasca PrintDocuments.

Rezultat.

Kao rezultat ovakvih manipulacija, dobićemo tri komande na obrascu iz koje želimo da prikažemo štampani obrazac:

Numeracija naredbi odgovara redoslijedu opcija implementacije.

Sve ove naredbe će raditi istu stvar:

Prikaži obrazac zahtjeva za dodatnim parametrima

Prikažite generirane ispise u obrascu "Štampaj dokumente".. Upravo ono što smo htjeli:

P.S. Kao šablone, da implementiram svoje printables sa zahtjevom za dodatnim parametrima, istovarujem obje obrade koje učestvuju u sve tri metode formiranja printablea.

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

  • Kreiranje eksterne datoteke za štampanje;
  • Izrada izgleda tiskanog obrasca;
  • Pisanje programskog koda za prikaz štampanih podataka obrasca na ekranu;
  • Kreiranje parametara za automatsku registraciju štampanog obrasca;
  • Povezivanje eksterne štamparske forme na bazu 1C preduzeća.

Izrada štampanog obrasca 1C. Formulacija problema

Potrebni smo u konfiguraciji Računovodstvo 2.0 kreirajte ispis za dokument Prijem robe i usluga. U zaglavlju štampanog obrasca prikažite sledeće podatke:

  • Organizacija;
  • Counterparty;
  • ugovor o drugoj strani;
  • Datum prijema.

Prikaz podataka tabele u tabelarnom obliku Roba dokument. Tabela treba da sadrži sljedeće kolone:

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

Eksterna datoteka za obradu

Pređimo na rješavanje problema. Za početak otvorite 1C 8 u načinu rada Konfigurator. U ovom načinu rada se odvijaju svi razvoji na platformi 1C 8. Sada trebamo kreirati eksternu datoteku za obradu. Da biste to učinili, kliknite na meni Fajl -> Novo... ili ikonom nove datoteke.

U prozoru koji se otvori odaberite stavku Eksterna obrada.

Dalje u polje Ime morate unijeti naziv eksterne obrade. U našem slučaju, nazovimo to jednostavno: "Obrazac za štampanje", polje za sinonim će se automatski popuniti. Imajte na umu da na terenu ime, eksternu obradu, naziv treba pisati bez razmaka i znakova interpunkcije.

Dodajte vanjski atribut obrade ObjectReference i odaberite za njega tip Referenca dokumenta. Prijem robe usluga. Da biste to učinili, u stablu metapodataka vanjske obrade 1C odaberite stavku Requisites i pritisnite dugme Dodati(zeleno dugme plus). U desnom dijelu ekrana otvorit će se prozor sa svojstvima atributa, u polju Ime pisati - LinkToObject. IN polje Tip pritisnite dugme sa tri tačke.

Proširite granu u stablu tipa DocumentLink, i tamo pronađite stavku Prijem robe i usluga, označite polje pored nje i kliknite UREDU.

Spremimo eksternu datoteku za obradu na tvrdi disk, za to ćemo koristiti meni Datoteka -> Sačuvaj, ikona Sačuvaj(plava disketa) ili prečica na tastaturi ctrl+s. Nazovimo sačuvanu datoteku "PrintForm".

Kreirajte izgled za štampanje

Počnimo kreirati 1C raspored za ispis. Izgled služi kao predložak za izlaz ispisa, tako da ako želite da vaš printable izgleda dobro, obratite pažnju na njega.

Dodajmo novi izgled u stablo metapodataka za eksternu obradu, nećemo ništa mijenjati u prozoru dizajnera izgleda i pritisnite dugme Spreman.

U novom izgledu koji se otvori, napravimo nekoliko područja potrebnih za prikaz odštampanog obrasca. Sva područja rasporeda koja su nam potrebna bit će horizontalna, tako da da biste kreirali novo područje, odaberite potreban broj linija rasporeda i idite na meni Tabela -> Imena -> Dodijeli ime ili koristite prečicu na tastaturi Ctrl+Shift+N zatim unesite naziv regije u polje. Kada kreirate područje rasporeda, nemojte se bojati pogriješiti s brojem linija; uvijek ih možete dodati ili ukloniti. Da biste izbrisali red 1C izgleda, odaberite željeni red i odaberite stavku u kontekstnom izborniku Izbriši. Da biste dodali novu liniju u izgled, odaberite bilo koju liniju izgleda i odaberite stavku u kontekstnom izborniku razdvojiti.

Dodavanje zaglavlja izgleda

Prvo napravimo područje. Kapa, prikazaće podatke za zaglavlje štampanog obrasca. Za ovo područje nam je potrebno sedam linija rasporeda. Odaberite ih i, kao što sam gore napisao, pritisnite prečicu na tastaturi Ctrl+Shift+N, na terenu Ime napišite "šešir" i pritisnite dugme uredu.

Popunimo područje rasporeda podacima koji su nam potrebni. Obično nijedan štampani obrazac nije potpun bez zaglavlja, pa ćemo ga kreirati iu zaglavlju našeg izgleda. Pošto ćemo u zaglavlju pored naziva odštampanog obrasca prikazati i broj dokumenta iz kojeg je odštampan, kao parametar ćemo postaviti tekst zaglavlja u izgledu. Parametar rasporeda je posebno određena ćelija rasporeda u koju se mogu prikazati različiti podaci pomoću ugrađenog 1C 8 jezika. Naslov bi trebao biti prikazan na cijeloj širini odštampanog obrasca, pa odlučimo koliko će nam ćelija izgleda biti dovoljno za štampanje na standardnoj pejzažnoj orijentaciji lista.

Obično je dovoljno trinaest ili četrnaest ćelija rasporeda, odaberite ih u prvom redu područja Kapa i spojiti u jednu ćeliju ( Kontekstni meni -> Spajanje). Nakon toga, dvaput kliknite na rezultirajuću veliku ćeliju i upišite naziv parametra, u našem slučaju "HeaderText". Da bi uneseni tekst postao punopravni parametar, desnom tipkom miša kliknite ćeliju i odaberite stavku u kontekstnom izborniku Svojstva. Bookmark Layout nađi polje punjenje i odaberite vrijednost Parametar. Parametri u 1C izgledu označeni su zagradama "<>».

Naslov štampanog obrasca treba da se ističe među ostalim tekstom, pa još jednom izaberite ćeliju i pomoću ikona na panelu za oblikovanje rasporeda postavite poravnanje teksta Centrirano i veličina fonta 14.

Nakon teksta naslova, prikazat ćemo se u području Kapa podatke o organizaciji, ugovornoj strani, ugovoru o drugoj strani i datumu prijema robe. Budući da su svi ovi podaci također preuzeti iz dokumenta, mi ćemo ih također ukrasiti parametrima. Osim toga, prije svakog parametra treba napisati tekst objašnjenja kako bi korisnik mogao lako razumjeti gdje se nalazi organizacija, a gdje druga strana itd. Sve ove radnje su slične kreiranju zaglavlja, tako da se neću detaljnije 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 tabele rasporeda

Posljednja stvar koju trebamo kreirati u ovoj oblasti izgleda je zaglavlje tabele, u kojem će biti prikazani podaci tabelarnog dijela. Roba. Kolone potrebne za tabelu opisane su u odjeljku "Izjava o problemu". Također ćemo kreirati zaglavlje tabele koristeći spajanje ćelija i pisanje teksta (imena kolona). Odaberite ivice zaglavlja tabele pomoću alata Okvir, koji se nalazi u traci za formatiranje izgleda.

Dodavanje tabele u izgled

Kreirajmo još jedno područje u rasporedu - Podaci. Prikazaće tabelu podataka tabelarnog dela Roba. Potrebna nam je samo jedna linija rasporeda za ovu oblast. Da bismo sve redove tabelarnog dela prikazali u štampanom obliku, ovo područje ćemo popuniti i prikazati potreban broj puta. Zvučnici u okolini Podaci mora odgovarati kolonama zaglavlja tabele, tako da njegovo popunjavanje neće biti teško. Jedina razlika je u području Podaci potrebne su nam opcije, ne samo tekst. Također imajte na umu da su po defaultu numerički parametri formatirani na desnoj margini, a tekstualni parametri na lijevoj. Da biste odabrali kolone, također morate koristiti alat Okvir.

Dodavanje podnožja u izgled

Posljednja oblast rasporeda koja nam je potrebna je Podrum. Prikazaće ukupne vrednosti po količini i količini. Kreiranje je slično stvaranju područja Podaci, ali pored toga, rezultate treba istaknuti podebljanim slovima.

Rezultat bi trebao biti raspored koji izgleda ovako:

Izrada štampanog obrasca 1C. Programiranje

Počnimo sa programiranjem - ovo je najvažnija faza u kreiranju štampane forme. Prije svega, idemo na modul eksternog objekta za štampanje, tu ćemo programirati. Da biste to učinili, u glavnom prozoru eksterne obrade pritisnite Akcije -> Otvori modul objekta.

U modulu objekta eksternog obrasca za štampanje morate kreirati funkciju za izvoz Seal().

Funkcija Print() Izvoz EndFunction

Imajte na umu da je ova funkcija potrebna za eksterne ispise u konfiguracijama koje koriste redovnu aplikaciju. Napisat ćemo sav naredni programski kod potreban za prikaz ispisane forme unutar ove funkcije.

Inicijalizacija osnovnih varijabli

Kreirajmo varijablu TabDoc, koji će sadržavati tabelarni dokument - on je taj koji je štampani obrazac u koji ćemo prikazati popunjena područja izgleda.

TabDoc = novi SpreadsheetDocument;

u varijablu Layout dobićemo odštampani izgled obrasca koji smo kreirali. Da bismo to učinili, koristimo ugrađenu funkciju GetLayout(<ИмяМакета>).

Layout = GetLayout("Layout");

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

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

Prikazivanje zaglavlja za štampanje u dokumentu tabele

Sve potrebne varijable su inicijalizirane. Počnimo da popunjavamo i prikazujemo područja rasporeda u dokumentu proračunske tabele. Prije svega, popunimo naslov štampanog obrasca, za to moramo proći parametar Naslov teksta, koji smo kreirali u izgledu, tekst koji nam je potreban. Za popunjavanje vrijednosti parametara, područje izgleda ima posebnu kolekciju, koja se zove - Opcije. Od čega kroz "." možete dobiti bilo koji parametar. U tekstu naslova prosledit ćemo tekst: „Obrazac za štampu“, kao i broj dokumenta.

Header Area.Parameters.HeaderText = "Obrazac za štampanje"+ReferenceToObject.Number;

Preostali parametri zaglavlja će biti popunjeni na sličan način, sve vrijednosti koje su potrebne za njih dobiće se iz props-a ReferenceToObject, koji sadrži vezu do dokumenta koji treba odštampati.

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

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

TabDoc.Output(HeaderArea);

Pisanje zahteva za štampani hendikep

Počnimo sa popunjavanjem i prikazivanjem područja Podaci. Kreiranje 1C printable također podrazumijeva pisanje upita, potrebno nam je da dobijemo podatke 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 cijeli upit je napisan na ruskom. Stoga, ako ste barem izbliza upoznati sa SQL-om, onda ćete lako razumjeti 1C 8 jezik upita.

U ovom štampanom 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ćavaju korištenje manje resursa za dobivanje najsloženijih selekcija podataka, a također je mnogo lakše razumjeti tekst upita nego u programskom kodu napisanom bez korištenja upita (ili uz minimalnu upotrebu). Osim toga, 1C 8 ima vrlo dobar kreator upita koji vam omogućava da interaktivno prikupljate upit iz potrebnih tabela.

Kreirajmo varijablu koja će sadržavati zahtjev.

Zahtjev = Novi zahtjev;

Tekst zahtjeva će biti sastavljen pomoću alata za pravljenje upita. Počnimo sa pisanjem:

Request.Text = "";

Stavite kursor miša između navodnika, pritisnite desnu tipku miša. U kontekstnom meniju koji se otvori izaberite stavku Zahtjev za konstruktora, to će nam puno pomoći u kreiranju 1C printable. Nakon toga će se otvoriti prozor dizajnera upita, koji sadrži mnogo kartica, ali za naš upit će biti potrebno samo četiri: "Tabele i polja", "Relacije", "Uslovi", "Pridruživanja / aliasi".

Za naš upit potrebne su nam dvije tabele: tabelarni dio Roba dokument Prijem robe i usluga i dio najnovijih informacija o trenutnom datumu registra Cijene artikala.

U lijevom dijelu prozora dizajnera pronađite kolonu Baza podataka. Sadrži stablo svih metapodataka objekata, hajde da pronađemo one koji su nam potrebni. Da biste to učinili, otvorite granu Dokumentacija i pronađite dokument Usluge dolazne robe, proširite ga i pronađite tabelarni dio Roba, prevucite ga u kolonu dizajnera upita stolovi. Postoje tri načina za povlačenje i ispuštanje: prevlačenjem, dvostrukim klikom na tablicu ili odabirom i klikom na dugme ">". Hajde da otvorimo filijalu RegistersInformation i nađi sto tamo PricesItems.SliceLast, također ga prevucite u kolonu stolovi. Ove dvije tabele su dovoljne za naš upit.

Odaberimo polja koja su nam potrebna iz rezultirajućih tabela. Da biste to učinili, u koloni stolovi otvori sto i pronađite polja: Nomenklatura, količina, cijena, količina i prevucite ih u treću kolonu konstruktora - polja. Hajde da otvorimo sto , pronađite polje Cijena i prevucite ga na polja.

Struktura tabela i polja našeg zahteva je spremna, sada se pozabavimo uslovima. Potrebni su nam podaci tabelarnog dela Roba nisu uzeti sa svih računa, već samo iz one koju štampamo. Da bismo to učinili, postavljamo uslov na sto Incoming Goods Usluge Roba. Idemo na karticu "Uvjeti" alata za pravljenje upita. U koloni polja tabele koje smo ranije odabrali se nalaze, za uslov nam je potrebno polje Veza sa stola Prijem robe, usluga, robe, prevucite ga u prozor Uslovi.

U 1C upitima možete koristiti parametre, oni su potrebni za prijenos podataka u upit. Na primjer, ako želimo da ograničimo izbor dokumenata na određeni dokument, onda možemo koristiti parametar da prosledimo vezu na ovaj dokument u zahtev i koristimo ovaj parametar u uslovu. Upravo to ćemo učiniti u našem zahtjevu.

Jednom kroz prozor Uslovi dodali smo polje Veza, kreator upita će kreirati parametar sa istim imenom i postaviti ga iza znaka "=". Ovaj parametar se po želji može preimenovati. U tekstu zahtjeva parametri su označeni znakom “&”, ali u ovom slučaju to nije potrebno, jer se pretpostavlja da se parametar nalazi u drugom dijelu uvjeta, samo ga trebate zapamtiti. Kako proslijediti vrijednost parametru zahtjeva 1C bit će razmotreno u nastavku.

Budući da u upitu ne koristimo punu tablicu cijena artikla, već virtuelnu (u ovom slučaju isječak potonje), moramo postaviti uslove za formiranje ove virtuelne tabele, u našem slučaju to je datum sečenja i uslov za vrstu cene (moraju se izabrati cene koje imaju strogo definisanu vrstu cene – onu koja je navedena u prijemnom dokumentu koji štampamo).

Da biste popunili parametre virtuelne tabele, idite na karticu Tabele i polja konstruktor upita, u koloni stolovi odaberite sto PricesItemsSliceLatest i pritisnite dugme Opcije virtuelne tabele nalazi se na vrhu. U prozoru koji se otvori, u polju Period treba postaviti parametar na koji će biti proslijeđen datum za koji će se izvršiti sniženje cijene. U našem slučaju, ovo će biti trenutni datum (odnosno danas), pa ćemo parametar nazvati "&TrenutniDatum". U polje uvjet upisaćemo uslove za tip cijene, također ćemo ga proslijediti u parametar koji ćemo nazvati “&PriceType”. Rezultat će izgledati ovako (gdje Cijena Tip- mjerenje registra Cijene artikala):

Vrsta cijene = &Tip cijene

Parametri virtuelne tabele su popunjeni, kliknite na dugme uredu.

Sada kada smo ograničili izbor samo na dokument koji nam je potreban, kreirajmo odnose između tabela upita. Ako se to ne učini, onda cijene iz tablice PricesItemsSliceLast neće biti povezane s artiklom iz računa. Idemo na karticu Veze query builder. Kreirajmo vezu po polju Nomenklatura između naša dva stola. Da biste to uradili, pritisnite dugme Dodati, na terenu Tabela 1 izaberite sto Incoming Goods Usluge Roba, a u polju Tabela 2 - PricesItemsSliceLast. U uslovima veze izaberite polja Nomenklatura sa oba stola.

Također treba napomenuti da u odabiru upita moramo dobiti sve redove iz tab-dijela Roba a cijene samo ako su dostupne za tekući datum prema vrsti cijene dokumenta. Dakle, ovi tabpartovi Roba su obavezni, ali podaci o graničnim cijenama nisu. Stoga je u vezama između ovih tabela potrebno koristiti tzv. LEFT JOIN, a lijeva (ili obavezna) tabela će biti Incoming Goods Usluge Roba, i desni (ili opcioni) PriceItemSliceLast. Da bi lijevo spajanje tabela upita funkcionisalo kao što sam gore opisao, potrebno je da označite polje Sve nakon terena Tabela 1.


Zahtjev je skoro spreman, ostaje samo malo poraditi na pseudonimima na terenu. Idi na obeleživač Sindikati / Aliasi i postavite pseudonim za polje PricesItemsSliceLast.Price. Alias ​​će biti − PriceForToday, potrebno je kako bi se nazivi polja za odabir upita i nazivi parametara u izgledu odštampanog obrasca poklapali.

Posao u dizajneru upita je završen, pritisnite dugme OK. Nakon što se prozor konstruktora zatvori, vidjet ćete da je red s tekstom zahtjeva popunjen i izgleda ovako:

Query.Text = "SELECT | Dolazne robe usluga Robe. Nomenklatura, | Dolazne robe usluga Robe. Količina, | Pristigle robe usluga Robe. Cijena, | Dolazne robe usluga Robe. .Roba AS Dolazne robe Usluge Robe |LEVO PRIDRUŽITE (| &TrenutniDatum, Vrsta cijene = &Tip cijene) AS PricesItemsSliceLast | Po dolaznoj robiUslugeGoods.Nomenklatura | = 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 Trenutni datum(), vraća datum i vrijeme računara.

Hajde da izvršimo upit da bismo dobili selekciju sa podacima koji su nam potrebni. Da bismo to učinili, prvo koristimo metodu upita Izvrši(), a zatim metodu Odaberi().

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

Popunjavanje tabele za štampanje

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

Dok Selection.Next() Loop EndCycle;

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

TotalSum = 0; Ukupan broj = 0;

Unutar petlje popunit ćemo područje Podaci podatke iz trenutnog elementa selekcije u varijable TotalSum I TotalNumber dodajte vrijednosti sume i količine, i na kraju, prikažite područje u dokumentu proračunske tablice koristeći metod koji nam je već poznat Izlaz(). Budući da su imena polja našeg zahtjeva potpuno ista kao imena parametara polja Podaci, tada ćemo za popunjavanje koristiti ugrađenu proceduru FillPropertyValues(<Приемник>, <Источник>) koji kopira vrijednosti svojstva<Источника>na svojstva<Приемника>.

Dok Selection.Next() Loop FillPropertyValues(DataArea.Parameters, Selection); TotalSum = TotalSum + Sample.Sum; TotalQuantity = TotalQuantity + Sample.Quantity; TabDoc.Output(područje podataka); EndCycle;

Izlaz podnožja obrasca za štampanje u tabelarni dokument

Ostaje popuniti i prikazati posljednje područje izgleda - Podrum. Već smo pripremili podatke za punjenje, punjenje i izlaz se vrši po istoj šemi.

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

Tablični dokument je u potpunosti popunjen, ostaje ga prikazati na ekranu kako bi korisnik mogao vidjeti ispisani obrazac i, ako je potrebno, ispisati ga. Ali u tipičnim 1C 8 konfiguracijama, procedure posebnih modula su odgovorne za izlaz eksternih obrazaca za štampanje. Stoga je dovoljno vratiti se iz funkcije pečat() popunjena tabela.

Return TabDoc;

U ovoj fazi, programiranje je završeno i kreiranje obrasca za štampanje 1c je skoro završeno. Cijeli tekst funkcije pečat() Neću je davati ovdje, možete je vidjeti u datoteci za ispis, koju možete preuzeti na dnu članka.

Izrada štampanog obrasca 1C. Opcije automatske registracije

Prilikom povezivanja eksternog štampača sa bazom podataka, sistem ne određuje automatski za koji određeni dokument ili direktorijum je štampano rešenje namenjeno, morate ga odabrati ručno. A ako je druga osoba napisala štampani obrazac, a vi ste samo upućeni da ga povežete, onda izbor može postati dvosmislen. Kako bi se izbjegli ovakvi problemi, u svim eksternim printableima potrebno je kreirati raspored sa parametrima auto-registracije. Ako je kreiran i pravilno formatiran, sistem automatski određuje za koji dokument ili direktorij je ispisani obrazac namijenjen.

Radi se na sljedeći način:

  • U vanjskoj obradi kreiramo novi izgled. Mi to zovemo “Parameters_Autoregistration” (važno da ne pogriješite!).
  • U prvoj ćeliji izgleda pišemo Dokumentacija.(ili Referentne knjige.) i naziv dokumenta na koji želite da povežete štampač.

Povezivanje na bazu eksterne štamparske forme

  • Pokrenite 1C 8 u modu Kompanija;
  • Idi na meni Usluga -> Dodatni izvještaji i obrada -> Dodatne eksterne štampane forme;
  • Kliknite na dugme Dodati;
  • U prozoru koji se otvori kliknite na ikonu Zamijenite eksternu datoteku za obradu;
  • Ako ste kreirali parametre automatske registracije, slažemo se da ih koristimo;
  • Ako niste kreirali parametre automatske registracije, onda u tabelarnom dijelu Dodatak štamparske ploče dodajte potreban dokument ili imenik;
  • Pritisnemo dugme UREDU.

Nakon toga, eksterno štampanje će biti dostupno u meniju Pečat dokument Isporuka robe i usluga. Stvaranje 1C ispisa na ovome može se smatrati završenim.