1c zunanji tiskani obrazec z vprašanjem. Izpis natisnjenih obrazcev z zahtevo po podatkih na obrazec »Tiskanje dokumentov« iz podsistema BSP »Tisk«

Razmislite o pisanju preprostega zapisa za tiskanje 1s 8.1 - 8.2 na primeru konfiguracije Računovodstvo podjetja 2.0. Recimo, da želite v dokument napisati zunanjo možnost za tiskanje: prikažite glavne podatke dokumenta in tabelarnega dela Blago: nomenklatura, cena, količina in znesek.

Dobljeni primer lahko prenesete z .

V konfiguratorju 1C podjetja 8 ustvari zunanjo obdelavo ( Datoteka->Novo->Zunanja obdelava), nastavite ime, ustvarite atribut, potreben za zunanjo tiskovno formo ReferenceToObject s tipom DocumentReference.Realization of GoodsServices.

Ustvarite postavitev za tiskanje

Dodajanje novega postavitev, pustite vrsto postavitve dokument s preglednico. Na postavitvi ustvarimo tri področja: Glava, podatki in klet. To storite tako, da izberete želeno število vrstic in kliknete meni Tabela->Imena->Dodeli ime (Ctrl+Shift+N).

Po tem začnemo postavljati besedilo in parametre v območja. Dajmo v glavo natisljivo ime, številka dokumenta in organizacija, prav tako narišite robove glave tabele in napišite imena stolpcev. Ko ustvarjate parameter v lastnostih celice, na zavihku Postavitev nastavite lastnost polnjenje v pomen Parameter.

V območju podatki ustvarite parametre za izpis vrstic tabelarnega odseka( Nomenklatura, cena itd.), vendar na območju klet za seštevke po količini in znesku.

Programiranje

Pojdimo k modulu natisljivih predmetov Dejanja->Odpri objektni modul.

Ustvarimo izvozno funkcijo, ki je obvezna za tiskanje obrazcev pečat ().

Funkcija Tiskanje () Izvozi EndFunctions

Ustvarimo spremenljivko v funkciji dokument s preglednico, v katerem bo prikazana tiskana oblika, dobimo postavitev in območje postavitve.

TabDoc = nov SpreadsheetDocument; Postavitev = GetLayout("Postavitev"); Območje glave = Layout.GetArea("Glava"); ScopeData = Layout.GetScope("Podatki"); AreaFooter = Layout.GetArea("Klet");

Izpolnite parametre klobuki in ga odnesite dokument s preglednico.

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

Za pridobitev vrstic tabele Blago uporabite poizvedbo.

Zahteva = nova zahteva; Query.SetParameter("Referenca", ObjectReference); Query.Text = "IZBERI | Realizacija blaga, storitev, blaga. Nomenklatura, | Realizacija blaga, storitev, blaga Znesek, | Realizacija blaga, storitev, blaga Cena, | Prodaja blaga, storitev, blaga. Količina| OD | Dokument.Prodaja blagaStoritve.Blago AS Realizacija blagaStoritveBlago|KJE | ImplementationProductsServicesProducts.Reference = &Reference";

Rekvizite posredujemo parametru zahteve ReferenceToObject navesti v pogoju KJE da potrebujemo podatke le iz dokumenta, iz katerega izpišemo tiskani obrazec. Da dobimo izbor poizvedbe, jo najprej izvedemo in nato izberemo vrstice.

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

Nato v zanki izpolnite parametre območja podatki za vsako vrstico izbora dokumenta in jih prikažite v dokument s preglednico. Tudi v zanki štejemo skupne vrednosti količine in zneski. Ne bomo izpolnjevali vsakega parametra posebej, ampak bomo uporabili postopek FillPropertyValues((<Приемник>, <Источник>) od globalnem kontekstu, kopira vrednosti lastnosti <Источника> do lastnosti <Приемника> . Ujemanje poteka po imenih lastnosti. Več o tem si lahko preberete v pomočnik za sintakso 1C Enterprise 8.

SkupnaVsota = 0; SkupnoŠtevilo = 0; Medtem ko Selection.Next() Loop FillPropertyValues(DataArea.Parameters, Selection); TotalSum = TotalSum + Sample.Sum; TotalQuantity = TotalQuantity + Sample.Quantity; TabDoc.Output(DataArea); Končni cikel ;

Izpolnite in prikažite območje klet.

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

Iz funkcije vrnemo izpolnjen dokument preglednice pečat ().

vrni TabDoc;

Če uporabljate eno od tipičnih konfiguracij, potem po vrnitvi dokumenta preglednice 1C samodejno prikaže natisnjeni obrazec. Za izpis lahko uporabite tudi metodo preglednice. Prikaži().

5. Povezovanje natisljivega z dokumentom

IN tipične konfiguracije 1C 8 obstaja imenik za registracijo zunanjih tiskarskih obrazcev Zunanja obdelava. Za povezavo pojdite v meni v načinu podjetja Storitev->Dodatna poročila in obdelave->Dodatni eksterni tiskovni obrazci.

Dodamo nov element imenika, naložimo tiskani obrazec z diska in izberemo vrsto dokumenta.

Zdaj v dokumentu Prodaja blaga in storitev pojavil se bo nov natisljiv.

Samodejna registracija obrazca za tiskanje

Da se izognete potrebi po ročni izbiri vrste dokumenta pri povezovanju tiskalnika, lahko konfigurirate samodejna registracija. Če želite to narediti, dodamo novo postavitev in jo pokličemo Parametri_samodejna registracija(samo tako) in v njegovo prvo celico zapišemo Dokumentacija.<Наименование документа> (oz Referenčne knjige.<Наименование справочника> ).

Zdaj bomo pri povezovanju obrazca za tiskanje pozvani k uporabi možnosti samodejne registracije.

Vsi so že večkrat videli, kako se v tipičnih konfiguracijah, zgrajenih na podlagi BSP (knjižnice standardnih podsistemov), natisnjeni obrazci, zgrajeni na podlagi dokumenta preglednice, izpišejo v poseben obrazec "Tiskanje dokumentov". Ta obrazec je del podsistema "Print" BSP. Ko razvijate svoje tiskalnike, morate včasih od uporabnika zahtevati dodatne podatke, potrebne za tiskanje. Tu se postavlja vprašanje, kako v tem primeru prikazati natisnjen obrazec v obrazcu »Natisni dokument«. V tem članku bom razmislil, kako implementirati izpis natisljivega obrazca na omenjeni obrazec iz podsistema »Izpis«, če želimo od uporabnika zahtevati dodatne podatke pred izpisom natisljivega obrazca. Tukaj bosta obravnavana dva primera: ko je printable implementiran s pomočjo podsistema "Dodatna poročila in obdelave" in ko je printable dodan konfiguraciji v načinu konfiguratorja, tj. se spremeni privzeta konfiguracija.

Obrazec »PrintDocuments« ponuja nekatere dodatne funkcije pri delu z obrazci za tiskanje, kot so:

  • gumb za tiskanje na tiskalnik, neposredno v obrazec;
  • navedba števila izvodov, tiskana oblika;
  • urejanje generirane tiskovine;
  • možnost shranjevanja natisnjenega obrazca v različnih podatkovnih formatih (Excel, Word, PDF itd.);
  • pošiljanje natisnjenega obrazca po elektronski pošti;
  • priročno delo z nizom dokumentov.

Ta obrazec zdaj uporablja 1C v vseh standardnih konfiguracijah za prikaz tiskanih oblik dokumentov in elementov imenika. In seveda, pri razvoju naših tiskovnih form, da ne bi presegli sprejete prakse, moramo naše tiskovne forme tudi prikazati s pomočjo priloženih orodij.

Pri standardnih metodah dodajanja tiskovnih obrazcev bo podsistem »Tisk« naredil vse namesto nas in prikazal tiskovno formo, kot je treba. Na primer:

  1. Pri dodajanju ukaza za tiskanje v dokument s pomočjo podsistema "Print" moramo opisati ukaz za tiskanje v proceduri AddPrintCommands z navedbo upravljalnika tiskanja, v katerem je implementirana procedura Print;
  2. Pri kreiranju Dodatne obdelave moramo v modulu objekta obdelave v funkciji DetailOnExternalProcessing opisati ukaz z vrsto uporabe Klicanje metode strežnika in takoj implementirati proceduro Print, ki na določen način implementira klic za oblikovanje tiskovne forme.

V takšnih primerih, kot sem že povedal, nam bo tiskarski podsistem po potrebi prikazal tiskovno formo, ki smo jo oblikovali sami. Takšni načini pomenijo neposredno oblikovanje tiskovne forme, t.j. predal objekte za tiskanje v proceduro tiskanja, oblikoval dokument preglednice in ga prikazal na zaslonu.

Kaj pa, če morate pred začetkom oblikovanja tabelarnega dokumenta od uporabnika zahtevati nekaj podatkov? Tisti. pokazati moramo obrazec. V tem primeru je kršen standardni vrstni red oblikovanja tiskovne forme in razmisliti moramo, kako našo tiskovno formo prenesti v obrazec »Tiskovni dokumenti«.

V tem primeru sta možni dve situaciji:

  1. Ko je natisljivo ustvarjeno s spremembo konfiguracije;
  2. Ko je izdelek za tiskanje ustvarjen brez spreminjanja konfiguracije, tj. Uporablja se podsistem »Dodatna poročila in obdelave«.

Izdelamo tisk tako, da ga dodamo prek konfiguratorja.

Prva varianta. Skozi ustvarjanje obdelave z ekipo.

Ta možnost omogoča dodajanje obdelave neposredno objektom metapodatkov:

Razmislimo o možnosti, ko moramo implementirati tiskovno obliko določenega predmeta, na primer element imenika. Za to moramo delati na štirih območjih obdelave:

  1. Ustvarite ukaz, ki bo poklical obliko našega tiskanja;
  2. Ustvarite sam obrazec;
  3. Ustvarite postavitev za tiskanje;
  4. Izvedite spremembe v modulu upravitelja obdelave.

Ustvarimo ekipo

V lastnostih ukaza določite:

  • Skupina, kjer želimo, da se ukaz prikaže v obrazcu;
  • Vrsta parametra je samo referenčna knjiga ali dokument, katerega tiskano obliko izdelujemo;
  • Način uporabe parametrov - Več. Za možnost prikaza natisnjenih obrazcev hkrati za več elementov izbranih na seznamu.

V ukaznem modulu odpremo obrazec za obdelavo tako, da mu posredujemo izbrane elemente imenika, za katere je potrebno generirati tiskovne obrazce. Ne bomo premeteno filozofirali in nekoliko popravili tipično kodo, ki jo platforma nadomešča v proceduro obdelave ukazov:

&Pri upravljanju ukazov odjemalskega postopka (parameter ukaza, parametri izvajanja ukaza) //Vstavite vsebino upravljalnika. FormParameters = Nova struktura ("PrintData", CommandParameter); OpenForm("Obdelava.PrintForm.Form", FormParameters,CommandExecutionParameters.Source,CommandExecutionParameters.Uniqueness,CommandExecutionParameters.Window, CommandExecutionParameters.NavigationLink); EndProcedure

Parameter postopka, parameter ukaza, vsebuje samo elemente, ki smo jih izbrali za tiskanje.

Ustvarite obrazec

Dodajmo obrazec v obdelavo, ustvarimo atribut obrazca tipa ValueList in potrebne atribute za vnos dodatnih parametrov za printable:

DataToPrint - vnesite ValueList;

Število vrstic - tip Število.

Moj primer bo zgolj demonstrativen, zato pogojno določimo, kaj je moj cilj prikazati predstavitev izbranega elementa v natisnjeni vrstici in število vrstic, ki jih izberemo kot dodatni parameter na obrazcu.

Pojdite na modul obrazca in napišite naslednjo kodo:

&OnServerCreateProcedureOnServer(Failure, StandardProcessing)PrintData.LoadValues(Parameters.PrintData); EndProcedure &AtClient Procedure Print(Command)PrintControlClient.ExecutePrintCommand("Processing.PrintForm", //Upravitelj tiskanja "PrintForm", //Identifier GetObjectsToPrint(), //Print Objects ThisObject, //Lastnik obrazca, iz katerega se tiska, se imenuje GetPrintParameters()); //Parametri tiskanja - poljubni parametri, ki se posredujejo upravitelju tiskanja Povratni niz; EndFunction &AtServer funkcija GetPrintSettings() PrintSettings = Nova struktura; PrintParameters.Insert("Glava obrazca", "Natisni obrazec"); //Eden od parametrov za obrazec "Natisni dokument". //Podaja naslov izhodnega obrazca za tiskanje. //Tu dodamo svoje parametre, ki jih želimo dodatno prenesti v upravitelja tiskanja. PrintParameters.Insert("Število vrstic", Število vrstic); Povratni parametriPrint; EndFunctions

Definiramo proceduro OnCreateAtServer in v njej iz parametra, ki smo ga posredovali iz ukaza ob odpiranju obrazca, preberemo seznam objektov, za katere moramo generirati printable.

V obrazcu izdelamo ukaz Print in zapišemo njegov handler, v katerem pokličemo funkcijo skupnega modula ManagePrintClient.RunPrintCommand, nastavimo potrebne parametre te funkcije, in sicer:

  • Upravitelj tiskanja - ime objekta v modulu upravitelja, ki definira funkcijo Tiskanje, ki oblikuje naš tisk;
  • Identifikator - identifikator tiskanja, ki ga želite natisniti. S tem identifikatorjem bomo v funkciji Natisni upravljalnega modula izbrali, kateri obrazec za tiskanje je treba natisniti;
  • Tiskovni objekti so neposredno tisti objekti, za katere se oblikujejo tiskovne forme;
  • Lastnik obrazca;
  • Tiskalni parametri - tukaj oblikujemo in posredujemo strukturo s tiskalnimi parametri, prav tja posredujemo naše dodatne parametre, ki smo jih zahtevali od uporabnika v procesu obdelave.

Pravzaprav s klicem funkcije ExecutePrintCommand iz obrazca za obdelavo rešimo problem prikaza obrazca za tiskanje v obrazcu "PrintDocuments". Nato bo podsistem "Print" izvedel standardna dejanja in pripeljal izvedbo do procedure Tiskanje, ki jo moramo definirati v upravitelju modulov naše obdelave.

Ustvarjanje postavitve za tiskanje

Izvajanje sprememb v modulu upravitelja obdelave

Od tega trenutka naprej izvajamo standardna dejanja za razvoj tiskarskih obrazcev s podsistemom "Print" podjetja BSP.

V modul upravitelja dodajte naslednjo kodo:

Procedure Print(ObjectsArray,PrintParameters,PrintFormCollection,PrintObjects,OutputParameters) ket(ObjectArray,PrintParameters), "Processing.PrintForm.PF_MXL_PrintForm",); EndIf; Funkcija EndProcedure &AtServer PrintLayout(ObjectArray,PrintSettings) SpreadsheetDocument = New SpreadsheetDocument; //Ustvari dokument s preglednico MODULARNI DEL // //Tu oblikujemo naš natisnjeni obrazec Layout = GetLayout("PF_MXL_PrintForm"); Za vsak Object From Objects Array Loop AreaHeader = Layout.GetArea("Header"); AreaObject = Layout.Get Area("Object"); SpreadsheetDocument.Output(RegionHeader); AreaObject.Parameters["Object"] = Objekt; SpreadsheetDocument.Output(RegionObject); For Count = 1 ByPrintSettings["Number of Lines"] Loop AreaString = Layout.GetArea("String"); RegionString.Parameters["String"] = Count; SpreadsheetDocument.Output(AreaString); EndCycle; SpreadsheetDocument.OutputHorizontalPageSeparator(); EndCycle; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////// ///// Vrni SpreadsheetDocument; //Vrni dokument preglednice EndFunction

Druga možnost. Z implementacijo ukaza za tiskanje.

Ta možnost je glede tiska zelo podobna prvi. Njegova razlika je v načinu ustvarjanja ukaza, ki bo izpisan v vmesnik in zagnal naše tiskanje.

V tem primeru pri definiranju ukaza za tiskanje uporabimo tudi podsistem »Print« iz BSP. Namesto da definiramo ukaz za odpiranje obdelave v sami obdelavi, moramo iti v modul manager, objekt v katerega želimo dodati printable in nastaviti opis ukaza za tiskanje v proceduri AddPrintCommands(PrintCommands):

Postopek AddPrintCommands(PrintCommands) ExportPrintCommand = PrintCommands.Add(); PrintCommand.Identifier = "PrintForm"; PrintCommand.View = НStr("ru = "Obrazec za tiskanje""); PrintCommand.Handler = "CommonModulePrintForm.ProcessingPrintFormCommand"; PrintCommand.Order = 100; EndProcedure

Tukaj vsem obrazcem imenika (spominjam vas, da delamo z imenikom nasprotnih strank) dodamo ukaz za tiskanje, imenovan »Natisni obrazec za tiskanje«. In tukaj je glavna točka, ki jo je treba upoštevati. V obrazec lahko dodate dve vrsti ukazov:

1. Priklic postopka tiskanja iz upravljalnega modula;

2. Klicanje odjemalske metode.

To je ravno metoda klica odjemalca, ki jo potrebujemo. Metoda odjemalca nam bo omogočila, da prikličemo obrazec za obdelavo, v katerem bomo od uporabnika zahtevali podatke, ki jih potrebujemo pred tiskanjem.

Če želite izvesti tak klic, pri definiranju ukaza zanj nastavite Handler (glejte kodo zgoraj). Niz, ki vsebuje pot do odjemalske funkcije, se posreduje upravljalniku ukazov, tj. pot do funkcije izvoza skupnega modula na odjemalcu. To je funkcija, ki jo bomo priklicali ob kliku na ukaz za tiskanje, ki ga dodamo v obrazce.

Kot razumete, morate, da bo to delovalo, ustvariti prav ta CommonModule in definirati funkcijo Export. Zato v našem skupnem modulu napišemo naslednjo kodo:

Funkcija HandlingPrintCommandPrintForm(PrintParameters) Izvoz //Vstavite vsebino upravljalnika. FormParameters = Nova struktura("PrintData",PrintParameters.PrintObjects); OpenForm("Obdelava.PrintForm.Form", FormParameters); EndFunctions

Tukaj naredimo enako kot v prvi izvedbi, odpremo obrazec za tiskanje, le da bodo zdaj naši PrintData vsebovani v parametru, posredovanem funkciji PrintParameters, oziroma v njenem polju PrintObjects.

Ko odpremo obrazec za obdelavo, so vsa dejanja podobna prvi možnosti.

Izvedbo te možnosti najdemo v tipičnih konfiguracijah, v mehanizmih, povezanih s tiskanjem soglasja za obdelavo osebnih podatkov.

Izdelamo dodatno obdelavo.

Kaj pa, če to ni naša konfiguracija in je podprta? In na splošno ne želimo plezati v konfiguracijo in jo urejati?

V tem primeru moramo uporabiti podsistem "Dodatna poročila in obdelave" iz BSP.

S to rešitvijo moramo kodo napisati samo na dveh mestih in vsa so v naši prihodnji dodatni obdelavi:

1. Obdelovalni objektni modul;

2. Modul obrazca za obdelavo.

V objektnem modulu napišite naslednjo kodo:

///////////////////////////////////////////////////////////////////////// // PROGRAMSKI VMESNIK #API območje // Vrne informacije o zunanji obdelavi. FunctionExternalProcessingDetails() ExportRegistrationParameters = AdditionalReportsAndProcessing.ExternalProcessingDetails("2.2.2.1"); RegistrationParameters.View = AdditionalReportsAndProcessingClientServer.ProcessingViewPrintForm(); RegistrationParameters.Version = "1.0"; NewCommand = RegistrationParameters.Commands.Add(); NewCommand.View = НStr("ru = "Zunanji obrazec za tisk s predhodno zahtevo po podatkih""); NewCommand.Identifier = "ExternalPrintForm"; NewCommand.Usage = AdditionalReportsAndProcessesClientServer.CommandTypeOpenForm(); NewCommand.ShowAlert = res; NewCommand.Modifier = "PrintMXL"; Povratni parametriRegistration; Postopek EndFunction Natisni(PrintData,PrintFormCollection,PrintObjects,OutputParameters) Izvozi IfPrintControl.NeedPrintLayout(PrintFormCollection, "ExternalPrintForm") ThenPrintControl.OutputSpreadsheetDocumentToCollection(PrintFormCollection, "ExternalPrintForm", nstr("ru = "Izpitni list" ""), PrintLayout(PrintData),); EndIf; Funkcija EndProcedure &AtServer PrintLayout(PrintData)PrintParameters = PrintData.Value; //Pridobite nastavitve tiskanja iz prvega elementa ValuesListObjectArray = PrintData.Copy(); //Kopiraj seznam vrednosti ArrayObjects.Delete(0); //Brisanje vrstic kopiranega elementa, ki vsebujePrintSettings SpreadsheetDocument = New SpreadsheetDocument; //Ustvari dokument s preglednico MODULARNI DEL // //Tu oblikujemo naš natisnjeni obrazec Layout = GetLayout("Layout"); Za vsak Object From Objects Array Loop AreaHeader = Layout.GetArea("Header"); AreaObject = Layout.Get Area("Object"); SpreadsheetDocument.Output(RegionHeader); AreaObject.Parameters["Object"] = Objekt; SpreadsheetDocument.Output(RegionObject); For Count = 1 ByPrintSettings["Number of Lines"] Loop AreaString = Layout.GetArea("String"); RegionString.Parameters["String"] = Count; SpreadsheetDocument.Output(AreaString); EndCycle; SpreadsheetDocument.OutputHorizontalPageSeparator(); EndCycle; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////// ///// Vrni SpreadsheetDocument; //Vrni dokument preglednice EndFunction #EndArea

Obstajata dve funkciji in en postopek.

Standardna funkcija za dodatno obdelavo je ExternalProcessingInfo(), brez katere sistem ne bo razumel, da gre za dodatno obdelavo. Tukaj je pomembna točka navedba, da ima ukaz, implementiran v tej obdelavi, tip Odpiranje obrazca. Tisti. obrazec bomo odprli, kot ga potrebujemo. Sledi definicija postopka tiskanja in funkcije, ki neposredno ustvari naš dokument preglednice.

Pri tem morate biti pozorni na to, da mora ukaz za tiskanje v tem primeru vsebovati samo 4 parametre in ne 5, kot je to pri običajni definiciji ukaza za tiskanje v modulu upravitelja. V tem primeru ni možnosti za posredovanje možnosti tiskanja. Zato bomo morali pokazati iznajdljivost, da poleg samih objektov, za katere se oblikuje tiskani obrazec, posredujemo tudi parametre, ki jih v obrazcu zahtevamo od uporabnika.

In tako smo definirali dodatno obdelavo, ukaz iz katere odpre obrazec za obdelavo. Zato je naslednji korak izdelava obrazca za obdelavo.

V tej obliki moramo ustvariti tri atribute za shranjevanje vrednosti, ki jih bomo potrebovali v prihodnosti. Poimenujmo te podrobnosti na naslednji način:

CommandID - tip String

Ciljni objekti - vnesite Seznam vrednosti

V modul tega obrazca vpišite naslednjo kodo:

&AtServer Procedure WhenCreatingAtServer(Failure, StandardProcessing) //Pri ustvarjanju na strežniku si zapomnite standardne parametre, ki jih posreduje podsistem AdditionalReportsAndProcessing AdditionalProcessingReference = Parameters.AdditionalProcessingReference; CommandId = Parameters.CommandId; DestinationObjects.LoadValues(Parameters.DestinationObjects); EndProcedure &AtClient Procedure Print(Command) // Pridobite ključ edinstvenosti odprtega obrazca. UniqueKey = String(Nov UniqueIdentifier); //Določite in izpolnite standardne parametre za splošni obrazec PrintDocumentsOpenParameters = New Structure("DataSource, SourceParameters"); OpenParameters.DataSource = AdditionalProcessingReference; OpenParameters.SourceParameters = New Structure("CommandIdentifier, Destination Objects"); OpenParameters.SourceParameters.CommandId = CommandId; //Objekti za tiskanje in parametri, vneseni v obrazec za obdelavo //bodo posredovani skozi parameter SourceParameters.DestinationObjectsOpeningParameters.SourceParameters.DestinationObjects = GetDestinationObjectsAndPrintParameters(); OpenForm("CommonForm.PrintingDocuments",OpenParameters,FormOwner,UniqueKey); Funkcija EndProcedure &AtServer GetDestinationObjectsAndPrintParameters()PrintData = DestinationObjects.Copy(); //////////////////////////////////////////////////////////////////////////////////////////////////////// // IZFIGIRANI URNI MODULI // //Tukaj ustvarjamo strukturo PrintSettings in jo napolnite s parametri // ki jih je treba posredovati funkciji tiskanja PrintSettings = New Structure; PrintParameters.Insert("Število vrstic", Število vrstic); PrintData.Insert(0, PrintSettings); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////// ///// ReturnPrintData; EndFunctions

V postopku OnCreateOnServer izpolnimo tri podrobnosti, ki smo jih ustvarili za shranjevanje parametrov, posredovanih obrazcu za obdelavo.

Nato definiramo upravljalnik za gumb za tiskanje na obrazcu. V tem upravljalniku moramo sami odpreti obrazec »Natisni dokumente«, za to moramo pripraviti možnosti odpiranja določene strukture. V tej strukturi morata biti definirani vsaj dve polji:

SourceParameters, ki vključujejo CommandId in DestinationObjects:

Identifikator ukaza - prav tako shranjen pri ustvarjanju na strežniku, to je identifikator ukaza, ki je poklical obrazec naše obdelave. Zato bomo identifikator določili, kaj moramo natisniti v postopku Print v objektnem modulu.

Ciljni objekti - v to polje moramo posredovati niz objektov, za katere se oblikuje natisnjeni obrazec, kot tudi parametre, ki jih uporabnik zahteva v obrazcu.

Kako definiram ciljne objekte, lahko vidite v funkciji GetDestinationObjectsAndPrintParameters. Tukaj kopiram naše cilje iz obrazca prop, namesto elementa matrike pri indeksu 0 prilepim naše možnosti tiskanja.

V prihodnje se bo tako definirana matrika posredovala iz obrazca »Tiskanje dokumentov«, kot prvi parameter Print procedure objektnega modula, ki smo ga prej definirali.

Če se vrnemo k definiciji modula obdelovalnega objekta in pogledamo funkcijo PrintLayout, lahko v prvih treh vrsticah funkcije vidite, kako ekstrahiram naše parametre in objekte iz podatkov, posredovanih proceduri Print, in nato delam z njimi.

Takšne manipulacije s parametrom DestinationObjects so posledica posebnosti klica postopka tiskanja objektnega modula. Kako se posredujejo parametri in kličejo funkcije, lahko spremljate tako, da odprete modul obrazca PrintDocuments.

Rezultat.

Kot rezultat takšnih manipulacij bomo na obrazcu, iz katerega želimo prikazati natisnjeni obrazec, dobili tri ukaze:

Oštevilčenje ukazov ustreza vrstnemu redu izvedbenih možnosti.

Vsi ti ukazi bodo naredili isto:

Prikaži obrazec za zahtevo dodatnih parametrov

Prikažite ustvarjene natisljive v obrazcu »Natisni dokumente«.. Ravno to, kar smo želeli:

P.S. Kot predloge za implementacijo svojih printables z zahtevo po dodatnih parametrih razbremenim obe obdelavi, ki sodelujeta pri vseh treh metodah oblikovanja printable.

Ta članek bo podrobno opisal, kako lahko začetnik, ki ne pozna dobro 1C 8, ustvari tiskalnik. Na primer, vzemimo eno najpogostejših konfiguracij 1C 8 - Računovodstvo 2.0. Ustvarjanje natisljivega 1C faze pisanja:

  • Ustvarjanje zunanje datoteke za tiskanje;
  • Izdelava postavitve tiskanega obrazca;
  • Pisanje programske kode za prikaz podatkov natisnjenega obrazca na ekranu;
  • Izdelava parametrov za samodejno registracijo tiskanega obrazca;
  • Priključitev zunanje tiskovne forme na podlago 1C podjetja.

Izdelava tiskanega obrazca 1C. Oblikovanje problema

Zahtevani smo v konfiguraciji Računovodstvo 2.0 ustvarite dokument za tiskanje Prejem blaga in storitev. V glavi natisnjenega obrazca izpišite naslednje podatke:

  • organizacija;
  • Nasprotna stranka;
  • pogodba o nasprotni stranki;
  • Datum prejema.

Prikaz podatkov tabele v obliki tabele Blago dokument. Tabela mora vsebovati naslednje stolpce:

  • Nomenklatura;
  • Količina;
  • Cena;
  • vsota;
  • Kot tudi cena artikla za trenutni datum (po vrstah cen iz dokumenta).

Datoteka za zunanjo obdelavo

Pojdimo k reševanju problema. Za začetek odprite 1C 8 v načinu Konfigurator. V tem načinu se izvajajo vsi dogodki na platformi 1C 8. Zdaj moramo ustvariti zunanjo datoteko za obdelavo. Če želite to narediti, kliknite na meni Datoteka -> Novo ... ali z ikono nove datoteke.

V oknu, ki se odpre, izberite element Zunanja obdelava.

Še naprej na polje Ime vnesti morate ime zunanje obdelave. V našem primeru ga poimenujmo preprosto: "Tiskarska forma", polje za sinonim se bo samodejno izpolnilo. Upoštevajte, da na terenu Ime, zunanja obdelava naj bo ime zapisano brez presledkov in ločil.

Dodajte atribut zunanje obdelave ObjectReference in izberite zanj tip Referenca dokumenta. Prejem blagaStoritve. Če želite to narediti, v drevesu metapodatkov zunanje obdelave 1C izberite element Rekviziti in pritisnite gumb Dodaj(zeleni gumb plus). V desnem delu zaslona se odpre okno lastnosti atributa, v polju Ime pisati - LinkToObject. IN polje Vrsta pritisnite gumb s tremi pikami.

Razširite vejo v drevesu tipov DocumentLink, in tam poiščite postavko Prejem blaga in storitev, potrdite polje zraven in kliknite V REDU.

Shranimo zunanjo datoteko za obdelavo na trdi disk, za to bomo uporabili meni Datoteka -> Shrani, ikona Shrani(modra disketa) ali bližnjico na tipkovnici ctrl+s. Poimenujmo shranjeno datoteko "PrintForm".

Ustvarite postavitev za tiskanje

Začnimo ustvarjati postavitev za tiskanje 1C. Postavitev služi kot predloga za izpis natisljivega, zato morate biti pozorni nanj, če želite, da je natisnjen videti dobro.

Dodajmo novo postavitev v drevo metapodatkov za zunanjo obdelavo, v oknu oblikovalca postavitve ne bomo spremenili ničesar in pritisnite gumb pripravljena.

V novi postavitvi, ki se odpre, ustvarimo več področij, potrebnih za prikaz natisnjenega obrazca. Vsa področja postavitve, ki jih potrebujemo, bodo vodoravna, zato, če želite ustvariti novo območje, izberite potrebno število vrstic postavitve in pojdite v meni Tabela -> Imena -> Dodeli ime ali uporabite bližnjico na tipkovnici Ctrl+Shift+N nato vnesite ime regije v polje. Ko ustvarjate območje postavitve, se ne bojte narediti napake s številom vrstic, vedno jih lahko dodate ali odstranite. Če želite izbrisati vrstico postavitve 1C, izberite želeno vrstico in v kontekstnem meniju izberite element Izbriši. Če želite postavitvi dodati novo vrstico, izberite katero koli vrstico postavitve in v kontekstnem meniju izberite element potisnite narazen.

Dodajanje glave postavitve

Najprej ustvarimo območje. Kapa, bo prikazal podatke za glavo natisnjenega obrazca. Za to področje potrebujemo sedem vrstic postavitve. Izberite jih in, kot sem napisal zgoraj, pritisnite bližnjico na tipkovnici Ctrl+Shift+N, na terenu Ime napišite "Klobuk" in pritisnite gumb v redu.

Izpolnimo območje postavitve s podatki, ki jih potrebujemo. Običajno noben natisnjen obrazec ni popoln brez glave, zato ga bomo ustvarili tudi v naši glavi postavitve. Ker bomo v glavi poleg imena natisnjenega obrazca izpisali tudi številko dokumenta, iz katerega je izpisan, bomo kot parameter nastavili besedilo glave v postavitvi. Parameter postavitve je posebej določena celica postavitve, v katero je mogoče prikazati različne podatke z uporabo vgrajenega jezika 1C 8. Naslov naj bo prikazan po celotni širini tiskane forme, zato se odločimo, koliko celic postavitve nam bo zadostovalo za tiskanje na standardni ležeči orientaciji lista.

Običajno je dovolj trinajst ali štirinajst celic postavitve, izberite jih v prvi vrstici območja Kapa in se združi v eno celico ( Kontekstni meni -> Združi). Po tem dvokliknite na nastalo veliko celico in napišite ime parametra, v našem primeru "HeaderText". Če želite, da vneseno besedilo postane polnopravni parameter, z desno tipko miške kliknite celico in v kontekstnem meniju izberite element Lastnosti. Zaznamek Postavitev poiščite polje polnjenje in izberite vrednost Parameter. Parametri v postavitvi 1C so označeni z oklepaji "<>».

Naslov natisnjenega obrazca mora izstopati med drugim besedilom, zato ponovno izberite celico in uporabite ikone na plošči za oblikovanje postavitve, da nastavite poravnavo besedila Središče in velikost pisave 14.

Za besedilom naslova bomo prikazali v območju Kapa podatke o organizaciji, nasprotni stranki, pogodbeni pogodbi in datumu prevzema blaga. Ker so vsi ti podatki tudi vzeti iz dokumenta, jih bomo opremili še s parametri. Poleg tega morate pred vsakim parametrom napisati pojasnjevalno besedilo, tako da bo uporabnik zlahka razumel, kje je organizacija in kje je nasprotna stranka itd. Vsa ta dejanja so podobna ustvarjanju glave, zato se na njih ne bom podrobno zadrževal, dal bom samo sliko s tem, kar naj bi se na koncu izkazalo.

Slika prikazuje, kako se možnosti postavitve razlikujejo od navadnega besedila.

Dodajanje glave tabele postavitve

Zadnja stvar, ki jo moramo ustvariti v tem območju postavitve, je glava tabele, v kateri bodo prikazani podatki tabelarnega dela. Blago. Stolpci, potrebni za tabelo, so bili opisani v razdelku »Izjava o težavi«. Ustvarili bomo tudi glavo tabele z združevanjem celic in pisanjem besedila (imena stolpcev). Z orodjem izberite obrobe glave tabele Okvir, ki se nahaja v vrstici za oblikovanje postavitve.

Dodajanje tabele k postavitvi

Ustvarimo še eno področje v postavitvi - podatki. Prikazala bo podatkovno tabelo tabelarnega dela Blago. Za to področje potrebujemo samo eno vrstico postavitve. Za prikaz vseh vrstic tabelarnega dela v tiskani obliki bomo to področje izpolnili in prikazali zahtevano število krat. Govorci v okolici podatki se mora ujemati s stolpci glave tabele, zato izpolnjevanje ne bo težko. Razlika je le v površini podatki potrebujemo možnosti, ne le besedilo. Upoštevajte tudi, da so številski parametri privzeto oblikovani na desnem robu, besedilni parametri pa na levem. Za izbiro stolpcev morate uporabiti tudi orodje Okvir.

Dodajanje noge k postavitvi

Zadnje področje postavitve, ki ga potrebujemo, je klet. Prikazal bo skupne zneske po količini in znesku. Ustvarjanje je podobno ustvarjanju območja podatki, poleg tega pa naj bodo rezultati označeni s krepkim tiskom.

Rezultat mora biti postavitev, ki izgleda takole:

Izdelava tiskanega obrazca 1C. Programiranje

Začnimo programirati - to je najpomembnejša faza pri ustvarjanju tiskanega obrazca. Najprej pojdimo k modulu objekta zunanje tiskarske plošče, tu bomo programirali. Če želite to narediti, v glavnem oknu zunanje obdelave pritisnite Dejanja -> Odpri objektni modul.

V objektnem modulu obrazca za zunanji tisk morate ustvariti izvozno funkcijo Pečat().

Funkcija Print() Export EndFunction

Upoštevajte, da je ta funkcija potrebna za zunanje tiskalnike v konfiguracijah, ki uporabljajo običajno aplikacijo. Napisali bomo vso nadaljnjo programsko kodo, potrebno za prikaz natisnjenega obrazca znotraj te funkcije.

Inicializacija osnovnih spremenljivk

Ustvarimo spremenljivko TabDoc, ki bo vseboval dokument preglednice - on je tista oblika, v katero bomo prikazali zapolnjena področja postavitve.

TabDoc = nov SpreadsheetDocument;

v spremenljivko Postavitev prejmemo tiskano postavitev obrazca, ki jo izdelamo sami. Za to uporabljamo vgrajeno funkcijo GetLayout(<ИмяМакета>).

Postavitev = GetLayout("Postavitev");

Vsa področja postavitve bomo spravili v spremenljivke. Za to uporabimo metodo postavitve GetRegion(<ИмяОбласти>) .

Območje glave = postavitev GetArea("Glava"); AreaData = Layout.GetArea("Podatki"); AreaFooter = Layout.GetArea("Klet");

Prikaz natisljive glave v dokumentu preglednice

Vse potrebne spremenljivke so inicializirane. Začnimo izpolnjevati in prikazovati območja postavitve v dokumentu preglednice. Najprej izpolnimo naslov natisnjenega obrazca, za to moramo posredovati parameter Besedilo naslova, ki smo ga ustvarili v postavitvi, besedilo, ki ga potrebujemo. Za vnos vrednosti parametrov ima območje postavitve posebno zbirko, ki se imenuje - Opcije. Od koder prek "." lahko dobite kateri koli parameter. V naslovnem besedilu bomo posredovali besedilo: “Tiskarska forma” in številko dokumenta.

Header Area.Parameters.HeaderText = "Obrazec za tiskanje"+ReferenceToObject.Number;

Preostali parametri glave bodo izpolnjeni na podoben način, vse zahtevane vrednosti zanje bodo pridobljene iz rekvizitov ReferenceToObject, ki vsebuje povezavo do dokumenta, ki ga želite natisniti.

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

Vsi parametri glave so izpolnjeni, prikazali jih bomo v dokumentu preglednice, ki smo ga ustvarili, za to uporabimo metodo izhod(<Область>) .

TabDoc.Output(HeaderArea);

Pisanje prošnje za natisnjen hendikep

Začnimo izpolnjevati in prikazovati območje podatki. Ustvarjanje tiskalnika 1C vključuje tudi pisanje poizvedbe, potrebujemo jo za pridobitev podatkov tabelarnega dela Blago in cene Nomenklature za trenutni datum, ki ga bomo uporabili Prošnja. Poizvedbeni jezik 1C 8 je podoben SQL, ali bolje rečeno, praktično kopira zmožnosti njegove izjave SELECT, vendar je celotna poizvedba napisana v ruščini. Torej, če vsaj malo poznate SQL, boste zlahka razumeli jezik poizvedb 1C 8.

V tej tiskani obliki bo zahteva precej preprosta in mnogi bodo rekli, da bi lahko brez nje, vendar je poznavanje poizvedbenega jezika in zmožnost njegove pravilne uporabe ena glavnih veščin programerja 1C. Poizvedbe omogočajo uporabo manj sredstev za pridobivanje najkompleksnejših izborov podatkov, poleg tega pa je veliko lažje razumeti besedilo poizvedbe kot v programski kodi, ki je napisana brez uporabe poizvedbe (ali z njeno minimalno uporabo). Poleg tega ima 1C 8 zelo dober graditelj poizvedb, ki vam omogoča interaktivno zbiranje poizvedbe iz potrebnih tabel.

Ustvarimo spremenljivko, ki bo vsebovala zahtevo.

Zahteva = Nova zahteva;

Besedilo zahteve bo sestavljeno z graditeljem poizvedb. Začnimo s pisanjem:

Request.Text = "";

Kazalec miške postavite med narekovaje, pritisnite desni gumb miške. V kontekstnem meniju, ki se odpre, izberite element Konstruktor zahtev, zelo nam bo pomagal pri ustvarjanju 1C tiskanja. Po tem se odpre okno oblikovalca poizvedbe, ki vsebuje veliko zavihkov, vendar bo naša poizvedba potrebovala le štiri: "Tabele in polja", "Relacije", "Pogoji", "Združitve / vzdevki".

Za našo poizvedbo potrebujemo dve tabeli: tabelarični del Blago dokument Prejem blaga in storitev in delček najnovejših informacij na trenutni datum registra Cene artiklov.

V levem delu okna oblikovalca poiščite stolpec Baza podatkov. Vsebuje drevo vseh metapodatkovnih objektov, poiščimo tiste, ki jih potrebujemo. Če želite to narediti, odprite podružnico Dokumentacija in poiščite dokument Storitve vhodnega blaga, ga razširite in poiščite tabelarični del Blago, povlecite v stolpec oblikovalca poizvedbe mize. Na voljo so trije načini vlečenja in spuščanja: z vlečenjem, z dvojnim klikom na tabelo ali z izbiro in klikom na gumb ">". Odpremo podružnico Informacije o registrih in tam najdi mizo PricesItems.SliceLast, prav tako povlecite v stolpec mize. Ti dve tabeli sta dovolj za našo poizvedbo.

Iz nastalih tabel izberimo polja, ki jih potrebujemo. Če želite to narediti, v stolpcu mize odpri mizo in poiščite polja: Nomenklatura, znesek, cena, količina in jih povlecite v tretji stolpec konstruktorja - polja. Odprimo mizo , poiščite polje Cena in ga tudi povlecite na polja.

Struktura tabel in polj naše zahteve je pripravljena, zdaj pa se ukvarjamo s pogoji. Potrebujemo podatke tabelarnega dela Blago niso bili vzeti iz vseh potrdil, ampak samo iz tistega, ki ga tiskamo. Da bi to naredili, na tabelo postavimo pogoj Vhodno blago Storitve Blago. Pojdimo na zavihek "Pogoji" graditelja poizvedb. V kolumni polja tabele, ki smo jih izbrali prej, se nahajajo, za pogoj potrebujemo polje Povezava iz mize Prejem blaga, storitev, blaga, povlecite v okno Pogoji.

V poizvedbah 1C lahko uporabite parametre, potrebni so za prenos podatkov v poizvedbo. Na primer, če želimo omejiti izbiro dokumentov na določen dokument, lahko uporabimo parameter za posredovanje povezave do tega dokumenta v zahtevo in ta parameter uporabimo v pogoju. Točno to bomo storili v naši zahtevi.

Enkrat skozi okno Pogoji smo dodali polje Povezava, bo graditelj poizvedb ustvaril parameter z enakim imenom in ga postavil za znak "=". Ta parameter lahko po želji preimenujete. V besedilu zahteve so parametri označeni z znakom “&”, vendar v tem primeru to ni potrebno, saj se predpostavlja, da je parameter v drugem delu pogoja, le zapomniti si ga morate. Kako posredovati vrednost parametru zahteve 1C, bomo obravnavali spodaj.

Ker v poizvedbi ne uporabljamo celotne tabele cen artikla, temveč virtualno (v tem primeru izrez slednje), moramo nastaviti pogoje za oblikovanje te virtualne tabele, v našem primeru je to datum razreza in pogoj za tip cene (izbrati je treba cene, ki imajo strogo določen tip cene - tisto, ki je določena v potrdilu o prevzemu, ki ga natisnemo).

Če želite izpolniti parametre virtualne tabele, pojdite na zavihek Tabele in polja konstruktor poizvedbe, v stolpcu mize izberite mizo PricesItemsSliceLatest in pritisnite gumb Možnosti virtualne mize ki se nahaja na vrhu. V oknu, ki se odpre, v polju Pika morate nastaviti parameter, na katerega bo prešel datum, za katerega bo opravljeno znižanje cene. V našem primeru bo to trenutni datum (to je danes), zato bomo parameter poimenovali "&TrenutniDatum". V polje pogoj bomo zapisali pogoje za tip cene, podali ga bomo tudi v parameter, ki ga bomo imenovali “&PriceType”. Nastali pogoj bo videti tako (kje Vrsta cene- meritev registra Cene artiklov):

PriceType = &PriceType

Parametri virtualne tabele so izpolnjeni, kliknite gumb v redu.

Zdaj, ko smo omejili izbor samo na dokument, ki ga potrebujemo, ustvarimo relacije med poizvedbenimi tabelami. Če tega ne storite, cene iz tabele PricesItemsSliceLast ne bodo povezane z artiklom iz računa. Pojdimo na zavihek Povezave graditelj poizvedb. Ustvarimo povezavo po polju Nomenklatura med najini dve mizi. Če želite to narediti, pritisnite gumb Dodaj, na terenu Tabela 1 izberite mizo Vhodno blago Storitve Blago, in v polju Tabela 2 - PricesItemsSliceLast. V pogojih povezave izberite polja Nomenklatura iz obeh miz.

Upoštevati je treba tudi, da moramo pri izbiri poizvedbe pridobiti vse vrstice iz zavihka Blago in cene samo, če so na voljo za tekoči datum po tipu cene dokumenta. Tako ti zavihki Blago so obvezni, podatki o mejni ceni pa ne. Zato je v povezavah med temi tabelami potrebno uporabiti tako imenovani LEFT JOIN, leva (ali obvezna) tabela pa bo Vhodno blago Storitve Blago in desno (ali neobvezno) PriceItemSliceLast. Če želite, da levo združevanje tabel poizvedbe deluje, kot sem opisal zgoraj, morate potrditi polje Vse po polju Tabela 1.


Zahteva je skoraj pripravljena, ostalo je le še malo delati na vzdevkih polja. Pojdi na zaznamek Zveze / vzdevki in nastavite vzdevek za polje PricesItemsSliceLast.Price. Vzdevek bo − PriceForToday, je potrebno, da se imena izbirnih polj poizvedbe in imena parametrov v postavitvi natisnjenega obrazca ujemajo.

Delo v oblikovalcu poizvedb je končano, pritisnimo tipko OK. Ko se okno konstruktorja zapre, boste videli, da je vrstica z besedilom zahteve izpolnjena in izgleda takole:

Query.Text = "IZBERI | Dohodno blago storitvenega blaga. Nomenklatura, | Prejem blaga storitvenega blaga. Količina, | Prejem blaga storitvenega blaga. Cena, | Prejem blaga storitvenega blaga. .Blago KOT Dohodno blagoStoritveEleme | LEVO PRIDRUŽI DataRegister.NomenclaturePrices.SliceLast(| &CurrentDate ,PriceType = &PriceType) AS ItemPricesSliceLast | By IncomingGoodsServicesGoods.Nomenclature | = PricesNomenclatureLastSlice.Nomenclature |WHERE |IncomingGoods ServicesProducts.Link = &Link";

Izvedba zahteve

Zahtevi bomo posredovali potrebne parametre, za to bomo uporabili metodo zahteve setParameter(<ИмяПараметра>,<Значение>). Za pridobitev trenutnega datuma uporabite vgrajeno funkcijo Trenutni datum (), vrne datum in čas računalnika.

Izvedimo poizvedbo, da dobimo izbor s podatki, ki jih potrebujemo. Za to najprej uporabimo metodo poizvedbe Izvedi(), nato pa še metoda Izberite ().

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

Izpolnjevanje tabele za tiskanje

Kot rezultat, v spremenljivki Vzorec bo vseboval izbor rezultatov poizvedbe, lahko po njej krmarite z metodo Naslednji(), in za obhod celotnega bo potrebna zanka adijo. Struktura bo izgledala takole:

Medtem ko Selection.Next() Loop EndCycle;

V tem ciklu bomo zapolnili in prikazali območje postavitve podatki. Najprej pa inicializirajmo dve spremenljivki številskega tipa. V njih bomo zbirali vsote po številu in znesku, ki ga moramo prikazati v območju klet.

TotalSum = 0; SkupnoŠtevilo = 0;

Znotraj zanke bomo zapolnili območje podatki podatke iz trenutnega izbirnega elementa v spremenljivke TotalSum in TotalNumber dodajte vrednosti vsote in količine ter na koncu prikažite območje v dokumentu preglednice na nam že poznan način izhod(). Ker so imena polj naše zahteve popolnoma enaka imenom parametrov polj podatki, potem bomo za polnjenje uporabili vgrajeno proceduro FillPropertyValues(<Приемник>, <Источник>), ki kopira vrednosti lastnosti<Источника>do lastnosti<Приемника>.

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

Izpis noge tiskovne forme v pregledniški dokument

Ostaja še zapolniti in prikazati zadnje območje postavitve - klet. Podatke za polnjenje smo že pripravili, polnjenje in izpis potekata po isti shemi.

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

Dokument preglednice je v celoti izpolnjen, ostane ga še prikazati na zaslonu, da si lahko uporabnik ogleda natisnjeni obrazec in ga po potrebi natisne. Toda v tipičnih konfiguracijah 1C 8 so za izpis zunanjih tiskarskih obrazcev odgovorni postopki posebnih modulov. Zato je dovolj, da se vrnete s funkcije pečat () izpolnjeno preglednico.

Vrni TabDoc;

Na tej stopnji je programiranje zaključeno in izdelava natisljivega obrazca 1c je skoraj končana. Celotno besedilo funkcije pečat () Ne bom ga dal tukaj, lahko si ga ogledate v datoteki za tiskanje, ki jo lahko prenesete na dnu članka.

Izdelava tiskanega obrazca 1C. Možnosti samodejne registracije

Pri povezovanju zunanjega tiskalnika z bazo podatkov sistem ne določi samodejno, za kateri določen dokument ali imenik je namenjen tiskalnik, temveč ga morate izbrati ročno. In če je druga oseba napisala tiskani obrazec in vam je naročeno le, da ga povežete, potem lahko izbira postane dvoumna. Da bi se izognili takšnim težavam, je treba v vseh zunanjih tiskalnikih ustvariti postavitev s parametri samodejne registracije. Če je ustvarjen in pravilno oblikovan, sistem samodejno določi, kateremu dokumentu ali imeniku je natisnjeni obrazec namenjen.

Izvaja se na naslednji način:

  • Pri zunanji obdelavi izdelamo novo postavitev. Imenujemo ga »Parametri_samodejna registracija« (pomembno, da se ne zmotite!).
  • V prvo celico postavitve pišemo Dokumentacija.(oz Referenčne knjige.) in ime dokumenta, s katerim želite povezati tiskalnik.

Priključitev na podlago zunanje tiskovne forme

  • Zaženite 1C 8 v načinu Podjetje;
  • Pojdite v meni Storitev -> Dodatna poročila in obdelave -> Dodatni zunanji tiskovni obrazci;
  • Kliknite gumb Dodaj;
  • V oknu, ki se odpre, kliknite ikono Zamenjajte datoteko za zunanjo obdelavo;
  • Če ste ustvarili parametre samodejne registracije, se strinjamo z njihovo uporabo;
  • Če niste ustvarili parametrov samodejne registracije, potem v tabelarnem delu Dodatek tiskarske plošče dodajte zahtevani dokument ali imenik;
  • Pritisnemo gumb V REDU.

Po tem bo zunanji natisljiv na voljo v meniju Pečat dokument Dostava blaga in storitev. Ustvarjanje tiskalnika 1C na tem se lahko šteje za zaključeno.