1c parametre spracovania externej tlačovej formy. Výstup tlačených formulárov s požiadavkou na údaje vo formulári "Tlač dokumentov" z podsystému BSP "Tlač"

Zvážme písanie najjednoduchšej tlačenej formy 1s 8,1 - 8,2 pomocou príkladu konfigurácie Podnikové účtovníctvo 2.0. Povedzme, že potrebujete napísať externý tlačený formulár pre dokument: zobrazte základné údaje dokumentu, ako aj z tabuľkovej časti Tovar: nomenklatúra, cena, množstvo a množstvo.

Výsledný príklad si môžete stiahnuť z .

V konfigurátore Podniky 1C 8 vytvoriť externé spracovanie ( Súbor->Nový->Externé spracovanie), nastavte názov, vytvorte požadované detaily pre externý tlačený formulár Odkaz na objekt s typom DocumentLink.Predaj tovaru a služieb.

Vytvorenie rozloženia tlačeného formulára

Pridajte nový rozloženie, ponechajte typ rozloženia tabuľkový dokument. Na rozložení vytvoríme tri oblasti: Hlavička, Údaje A Suterén. Môžete to urobiť výberom požadovaného počtu riadkov a kliknutím na ponuku Tabuľka->Názvy->Priradiť názov (Ctrl+Shift+N).

Potom začneme umiestňovať text a parametre do oblastí. Dáme to do hlavičky názov vytlačeného formulára, číslo dokladu A Organizácia, a tiež nakreslite okraje hlavičky tabuľky a napíšte názvy stĺpcov. Pri vytváraní parametra vo vlastnostiach bunky by ste na karte Rozloženie mali nastaviť vlastnosť Plnenie vo význame Parameter.

V oblasti Údaje vytvorme parametre pre zobrazenie riadkov v tabuľkovej časti( Nomenklatúra, cena atď.) a v oblasti Suterén pre súčty podľa množstva a množstva.

Programovanie

Poďme do modulu objektu tlačového formulára Akcie->Otvoriť modul objektu.

Vytvorme tam funkciu exportu, ktorá je povinná pre tlačené formuláre. Tuleň().

Funkcia Tlač () Export EndFunction

Vo funkcii vytvoríme premennú pre tabuľkový dokument, do ktorého bude vytlačený formulár výstup, dostaneme rozloženie A rozloženie plôch.

TabDoc = nový tabuľkový dokument; Layout = GetLayout("Layout" ); HeaderArea = Layout.GetArea("Header" ); AreaData = Layout.GetArea("Data" ); AreaFooter = Layout.GetArea("Päta" );

Vyplníme parametre klobúky a priniesť to tabuľkový dokument .

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

Ak chcete získať riadky tabuľky Tovar používame žiadosť.

Žiadosť = nová Žiadosť; Request.SetParameter("Link", ObjectLink); Query.Text = "VYBRAŤ | Predaj tovaru a služieb Tovar Nomenklatúra, | Predaj tovaru a služieb Tovar. | Predaj tovaru a služieb Tovar Cena, | Predaj tovaru a služieb Tovar Množstvo|OD | Dokument Predaj tovaru a služieb Tovar AKO Predaj tovaru a služieb Tovar| KDE | Predaj tovaru a služieb Tovar. Odkaz = &Odkaz";

Podrobnosti odovzdáme parametru požiadavky Odkaz na objekt, uviesť v podmienke KDE, že údaje potrebujeme len z dokumentu, z ktorého odvodzujeme tlačenú formu. Aby sme získali vzorový dotaz, najprv ho vykonáme a potom vyberieme riadky.

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

Ďalej v slučke vyplníme parametre oblasti Údaje pre každý riadok vzoru dokumentu a zobraziť ich v tabuľkový dokument. Vypočítame aj celkové hodnoty v slučke množstvá A sumy. Nebudeme vypĺňať každý parameter samostatne, ale použijeme postup VyplňtePropertyValues((<Приемник>, <Источник>) od globálny kontext, kopíruje hodnoty vlastností <Источника> na vlastnosti <Приемника> . Priraďovanie sa vykonáva podľa názvov vlastností. Viac si o tom môžete prečítať v asistent syntaxe 1C Enterprise 8.

Celkový súčet = 0 ; Celkové množstvo = 0 ; While Selection.Next() Loop FillPropertyValues(AreaData.Parameters,Selection); TotalSum = TotalSum + Sample.Sum; Celkové množstvo = Celkové množstvo + Vzorka. Množstvo; TabDoc.Output(AreaData); EndCycle ;

Vyplňte a zobrazte oblasť Suterén.

AreaFooter.Parameters.TotalQuantity = Celkové množstvo; AreaFooter.Parameters.TotalSum = TotalSum; TabDoc.Output(AreaFooter);

Vrátenie vyplneného tabuľkového dokumentu z funkcie Tuleň().

vrátiť TabDoc;

Ak používate jednu zo štandardných konfigurácií, potom po vrátení dokumentu tabuľky 1C zobrazí vytlačený formulár na obrazovke. Na výstup môžete použiť aj metódu tabuľkového dokumentu. Šou().

5. Pripojenie vytlačeného formulára k dokumentu

IN štandardné konfigurácie 1C 8 K dispozícii je adresár na registráciu externých tlačených formulárov Externé spracovanie. Ak sa chcete pripojiť, prejdite do ponuky v podnikovom režime Servis->Dodatočné zostavy a spracovanie->Dodatočné externé tlačené formuláre.

Pridať nový prvok adresár, načítajte vytlačený formulár z disku a vyberte typ dokumentu.

Teraz v dokumente Predaj tovaru a služieb Objaví sa nová tlač.

Automatická registrácia tlačeného formulára

Aby ste zabezpečili, že pri pripájaní tlačového formulára nebudete musieť manuálne vyberať typ dokumentu, môžete ho nakonfigurovať automatická registrácia. Ak to chcete urobiť, pridajte nové rozloženie a zavolajte ho Nastavenia_Automatická registrácia(toto je jediný spôsob) a do jeho prvej bunky napíšeme Dokumentácia.<Наименование документа> (alebo Adresáre.<Наименование справочника> ).

Teraz pri pripájaní tlačového formulára sa nám zobrazí výzva na použitie parametre automatickej registrácie.

Každý už viac ako raz videl, ako sa v typických konfiguráciách vybudovaných na báze BSP (Library of Standard Subsystems) tlačené formuláre postavené na základe tabuľkového dokumentu vypisujú do špeciálneho formulára „Tlač dokumentov“. Tento formulár je súčasťou podsystému „Print“ z BSP. Pri vývoji vlastných tlačených formulárov je niekedy potrebné vyžiadať si od používateľa dodatočné údaje potrebné pre tlač. Tu vyvstáva otázka, ako v tomto prípade zobraziť tlačený formulár vo formulári „Tlač dokumentu“. V tomto článku sa pozriem na to, ako implementovať výstup tlačeného formulára do spomínaného formulára z podsystému “Tlač”, ak si chceme od používateľa vyžiadať ďalšie údaje ešte pred výstupom tlačeného formulára. Tu budú uvažované dva prípady: keď je tlačený formulár implementovaný pomocou podsystému „Dodatočné výkazy a spracovanie“ a keď je tlačený formulár pridaný do konfigurácie v režime konfigurátora, t.j. zmeny sa vykonajú v štandardnej konfigurácii.

Formulár „PrintDocuments“ niektoré poskytuje doplnkové funkcie pri práci s tlačenými formulármi, ako sú:

  • tlačidlo pre tlač na tlačiarni, priamo vo formulári;
  • údaj o počte kópií, tlačená forma;
  • úprava vygenerovaného tlačeného formulára;
  • možnosť uložiť vytlačený formulár v rôznych dátových formátoch (Excel, Word, PDF atď.);
  • odoslanie vytlačeného formulára e-mailom;
  • Pohodlná práca so súborom dokumentov.

Tento formulár teraz používa 1C vo všetkých štandardných konfiguráciách na zobrazenie tlačených formulárov dokumentov a prvkov adresára. A, samozrejme, pri vývoji vlastných tlačených formulárov, aby sme neprekročili akceptovanú prax, by sme mali naše tlačené formuláre zobrazovať aj pomocou nástrojov, ktoré sú k dispozícii.

Pri použití štandardných metód pridávania tlačených formulárov za nás všetko urobí subsystém „Tlač“ a vytlačený formulár zobrazí podľa potreby. Napríklad:

  1. Pri pridávaní príkazu na tlač do dokumentu pomocou podsystému „Tlač“ musíme príkaz na tlač opísať v procedúre Add Print Commands s uvedením správcu tlače, v ktorom je implementovaná procedúra Print;
  2. Pri vytváraní dodatočného spracovania potrebujeme v module spracovania vo funkcii InformationOnExternalProcessing popísať príkaz s typom použitia Call serverovej metódy a okamžite implementovať procedúru Print, ktorá určitým spôsobom implementuje volanie na vygenerovanie tlačeného formulár.

V takýchto prípadoch, ako som už povedal, tlačový subsystém podľa potreby sám vygeneruje tlačenú formu, ktorú sme vygenerovali. Takéto spôsoby zahŕňajú priamu tvorbu tlačovej formy, t.j. odovzdal objekty na tlač do tlačovej procedúry, vygeneroval tabuľkový dokument a zobrazil ho na obrazovke.

Čo ak si pred začatím generovania tabuľkového dokumentu potrebujete od používateľa vyžiadať nejaké údaje? Tie. musíme ukázať formulár. V tomto prípade je porušené štandardné poradie tvorby tlačeného formulára a musíme sa zamyslieť nad tým, ako preniesť náš tlačený formulár do formulára „Tlač dokumentov“.

V tomto prípade sú možné dve situácie:

  1. Keď sa vytvorí tlačová platňa so zmenou konfigurácie;
  2. Pri vytvorení tlačeného formulára bez zmeny konfigurácie, t.j. Používa sa podsystém "Dodatočné výkazy a spracovanie".

Tlačený formulár vytvoríme pridaním cez konfigurátor.

Prvá variácia. Prostredníctvom tvorby spracovania s tímom.

Táto možnosť zahŕňa pridanie spracovania priamo do objektov metadát:

Uvažujme o možnosti, keď potrebujeme implementovať tlačenú formu určitého objektu, napríklad prvku adresára. Aby sme to dosiahli, musíme pracovať v štyroch oblastiach spracovania:

  1. Vytvorte príkaz, ktorý zavolá náš vytlačiteľný formulár;
  2. Vytvorte samotný formulár;
  3. Vytvorte rozloženie tlačeného formulára;
  4. Vykonajte zmeny v module správcu spracovania.

Vytvorenie tímu

Vo vlastnostiach príkazu zadajte:

  • Skupina, kde chceme, aby sa príkaz zobrazil vo formulári;
  • Typ parametra je presne referenčná kniha alebo dokument, ktorého tlačenú podobu vytvárame;
  • Režim použitia parametra je Multiple. Aby ste mohli zobraziť tlačené formuláre pre niekoľko prvkov vybratých v zozname naraz.

V príkazovom module otvoríme spracovateľský formulár, prejdeme jeho vybranými adresárovými prvkami, pre ktoré je potrebné vygenerovať tlačené formuláre. Nerozdeľme tu chĺpky a mierne opravme štandardný kód, ktorý platforma vkladá do postupu spracovania príkazov:

&V procedúre spracovania príkazu Client(Parameter príkazu, Parametre vykonania príkazu) //Vložte obsah obsluhy. FormParameters = New Structure("DataForPrinting", CommandParameters); OpenForm("Processing.PrintForm.Form",FormParameters,CommandExecutionParameters.Source,CommandExecutionParameters.Uniqueness,CommandExecutionParameters.Window,CommandExecutionParameters.NavigationLink); Koniec procedúry

Parameter procedúry Parameter príkazu presne obsahuje prvky, ktoré sme vybrali na tlač.

Vytvorenie formulára

Pridajte formulár do spracovania, vytvorte atribút formulára typu Zoznam hodnôt a potrebné vstupné údaje pre nás dodatočné parametre pre tlačovú formu:

DataForPrint - zadajte ListValues;

Počet riadkov - typ Číslo.

Môj príklad bude čisto demonštratívny, takže podmienečne určme, že mojím cieľom je vytlačiť reprezentáciu vybraného prvku a počet riadkov, ktoré vyberieme ako ďalší parameter vo formulári.

Prejdite do modulu formulára a napíšte nasledujúci kód:

&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing)PrintData.LoadValues(Parameters.PrintData); Koniec procedúry &Na klientovi Tlač (príkaz) Tlač ManagementClient. Spustite príkaz Print("Processing.PrintForm", //Správca tlače "PrintForm", //Identifikátor GetObjectsForPrint(), //PrintObjectsThisObject, //Vlastník formulára - formulár, z ktorého sa tlačí, sa nazýva GetPrintParameters()); //Možnosti tlače - ľubovoľné parametre na prenos do správcu tlače Koniec procedúry &Na serveri Funkcia GetObjectsForPrint() Array = DataForPrint.UploadValues(); Return Array; Funkcia EndFunction &OnServer GetPrintParameters()PrintParameters = Nová štruktúra; Možnosti tlače.Insert("Názov formulára", "Tlač formulára"); //Jeden z parametrov formulára "Tlač dokumentu". //Určuje názov výstupného formulára pre tlač. //Tu pridáme naše parametre, ktoré chceme dodatočne preniesť do správcu tlače. PrintOptions.Insert("Počet riadkov", Počet riadkov); ReturnPrintMožnosti; EndFunction

Definujeme procedúru WhenCreatingOnServer a v nej načítame z parametra, ktorý sme odovzdali z príkazu pri otváraní formulára, zoznam objektov, pre ktoré potrebujeme vygenerovať tlačený formulár.

Vo formulári vytvoríme príkaz Print a napíšeme jeho handler, v ktorom zavoláme funkciu všeobecného modulu ManagePrintClient.ExecutePrintCommand, nastavili sme požadované parametre túto funkciu, konkrétne:

  • Správca tlače - názov objektu v module manažéra, ktorý je definovaný funkciou Tlač, ktorá tvorí náš tlačený formulár;
  • Identifikátor - identifikátor tlačovej formy, ktorú je potrebné vytlačiť. Pomocou tohto identifikátora vo funkcii Tlač modulu manažéra vyberieme, ktorý tlačový formulár je potrebné vytlačiť;
  • Tlačové objekty sú priamo tie objekty, pre ktoré sa generujú tlačové formuláre;
  • Vlastník formulára;
  • Parametre tlače - tu vytvárame a odovzdávame štruktúru s parametrami tlače, tu odovzdávame naše dodatočné parametre, ktoré sme od užívateľa požadovali vo formulári spracovania.

Vlastne zavolaním funkcie ExecutePrintCommand zo spracovateľského formulára riešime náš problém s výstupom vytlačeného formulára do formulára „PrintDocuments“. Potom podsystém „Tlač“ vykoná štandardné akcie a privedie spustenie do procedúry Tlač, ktorú musíme definovať v manažérskom module nášho spracovania.

Vytvorenie rozloženia tlačeného formulára

Vykonávanie zmien v module správcu spracovania

Od tohto momentu vykonávame štandardné akcie pre vývoj tlačených formulárov pomocou podsystému „Tlač“ z BSP.

Pridajte nasledujúci kód do modulu manažéra:

Postup Tlač (Pole objektov, Parametre tlače, Kolekcia tlačových formulárov, Tlačové objekty, Výstupné parametre) Exportovať, ak je kontrola tlače. Potreba rozloženia tlače (zbierka tlačových formulárov, "tlačový formulár"), potom kontrola tlače. Výstup tabuľkového dokumentu do kolekcie (Kolekcia tlačových formulárov, Formulár "Tlač", NStr("ru = "Tlačový formulár""), PrintLayout (Pole objektov, Parametre tlače), "Processing.PrintForm.PF_MXL_PrintForm",); koniec Ak; Koniec procedúry &Na serveri Funkcia PrintLayout(Object Array, Print Options) TabularDocument = Nový tabularDocument; //Vytvoriť tabuľkový dokument /////////////////////////////////////////// ///////////////////////////////////////////////// /////////////// //PREPRIGGEOVANÁ ČASŤ MODULU // //Tu vytvoríme náš tlačený formulár Layout = GetLayout("PF_MXL_PrintForm"); Pre každý objekt z poľa objektov slučka AreaHeader = Layout.GetArea("Header"); RegionObject = Layout.GetArea("Object"); TabularDocument.Output(HeaderArea); AreaObject.Parameters["Object"] = Objekt; TabularDocument.Output(AreaObject); Pre účet = 1 Možnosti tlače ["Počet riadkov"] Cyklus AreaLine = Layout.GetArea("Line"); AreaString.Parameters["String"] = Počet; TabularDocument.Output(AreaString); EndCycle; TabularDocument.OutputHorizontalPageSeparator(); EndCycle; //PREDEFINOVANÁ ČASŤ MODULU ////////////////////////////////////////// // //////////////////////////////////////////////// ///////////////// Return TabularDocument; //Vrátenie dokumentu tabuľky End of Function

Druhá možnosť. Prostredníctvom implementácie príkazu print.

Táto možnosť je z hľadiska implementácie tlače veľmi podobná prvej. Jeho rozdiel je v spôsobe vytvorenia príkazu, ktorý sa zobrazí v rozhraní a spustí našu tlač.

V tomto prípade pri definovaní tlačového príkazu používame aj podsystém „Tlač“ z BSP. Namiesto definovania príkazu na otvorenie spracovania v samotnom spracovaní musíme prejsť do manažérskeho modulu objektu, do ktorého chceme pridať tlačový formulár, a zadať popis príkazu na tlač v procedúre AddPrintCommands(PrintCommands):

Procedúra AddPrintCommands(PrintCommands) ExportPrintCommand = PrintCommands.Add(); PrintCommand.Identifier = "PrintForm"; PrintCommand.View = NStr("ru = "Vytlačiť tlačený formulár""); PrintCommand.Handler = "GeneralModulePrintForm.ProcessingPrintFormCommand"; PrintCommand.Order = 100; Koniec procedúry

Tu pridávame príkaz na tlač s názvom „Vytlačiť tlačený formulár“ do všetkých formulárov adresára (pripomínam, že pracujeme s adresárom protistrán). A tu je hlavný bod, ktorý treba vziať do úvahy. Do formulára môžete pridať dva typy príkazov:

1. Vyvolanie procedúry Tlač z modulu manažéra;

2. Volanie klientskej metódy.

Presne tak musíme nazvať metódu klienta. Klientsky spôsob nám umožní vyvolať spracovateľský formulár, v ktorom si pred tlačou vyžiadame od užívateľa údaje, ktoré potrebujeme.

Na implementáciu takéhoto volania je potrebné pri definovaní príkazu preň špecifikovať Handler (pozri kód vyššie). Reťazec obsahujúci cestu ku klientskej funkcii sa odovzdá Command Handler, t.j. cestu k funkcii Export spoločného modulu na klientovi. Práve táto funkcia sa zavolá po kliknutí na príkaz tlače, ktorý pridávame do formulárov.

Ako viete, aby to fungovalo, musíte vytvoriť tento veľmi všeobecný modul a definovať funkciu Export. Preto do nášho všeobecného modulu napíšeme nasledujúci kód:

Funkcia ProcessingPrintCommandPrintForm(PrintParameters) Export //Vloženie obsahu handlera. FormParameters = New Structure("DataForPrint", PrintParameters.PrintObjects); OpenForm("Processing.PrintForm.Form", FormParameters); EndFunction

Tu urobíme to isté ako pri prvej implementácii, otvoríme tlačový formulár, len teraz budú naše Tlačové údaje obsiahnuté v parametri odovzdanom funkcii Print Parameters, respektíve v jej poli Print Objects.

Po otvorení formulára na spracovanie sú všetky akcie podobné prvej možnosti.

Implementáciu tejto možnosti nájdete v štandardných konfiguráciách, v mechanizmoch spojených s tlačou súhlasu so spracovaním osobných údajov.

Vytvárame dodatočné spracovanie.

Čo ak toto nie je naša konfigurácia a je podporovaná? A vo všeobecnosti nechceme ísť do konfigurácie a upravovať ju?

V tomto prípade musíme použiť podsystém „Dodatočné hlásenia a spracovanie“ z BSP.

S týmto riešením potrebujeme písať kód iba na dvoch miestach a všetky sú v budúcom ďalšom spracovaní:

1. Modul spracovania objektu;

2. Modul spracovania formulára.

V objektovom module napíšeme nasledujúci kód:

///////////////////////////////////////////////// ////////////////////////// // ROZHRANIE PROGRAMU #Oblasť Rozhranie programu // Vráti informácie o externom spracovaní. Funkcia InformationOnExternalProcessing() ExportRegistrationParameters = AdditionalReportsAndProcessing.InformationOnExternalProcessing("2.2.2.1"); Registration Parameters.View = AdditionalReportsAndProcessingClientServer.ProcessingViewPrintedForm(); Registračné parametre.Verzia = "1.0"; NewCommand = Registration Parameters.Commands.Add(); NewCommand.Presentation = NStr("ru = "Externý tlačený formulár s predbežnou žiadosťou o údaje""); 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") Potom PrintManagement.OutputTabularDocumentIntoCollection =(PrintFormsCollection, "External"Stram"PrintForm"ru "), PrintLayout(PrintData),); koniec Ak; Koniec procedúry &Na serveri Funkcia PrintLayout(PrintData)PrintParameters = PrintData.Value; //Prijme parametre tlače z prvého prvku poľa objektov zoznamu hodnôt = PrintData.Copy(); //Skopírujte zoznam hodnôt ​​ArrayObjects.Delete(0); //Vymaže riadky skopírovaného prvku obsahujúceho Možnosti tlače TabularDocument = New TabularDocument; //Vytvoriť tabuľkový dokument /////////////////////////////////////////// ///////////////////////////////////////////////// /////////////// //PREPRIGNENÁ ČASŤ MODULU // //Tu vytvoríme náš tlačený formulár Layout = GetLayout("Layout"); Pre každý objekt z poľa objektov slučka AreaHeader = Layout.GetArea("Header"); RegionObject = Layout.GetArea("Object"); TabularDocument.Output(HeaderArea); AreaObject.Parameters["Object"] = Objekt; TabularDocument.Output(AreaObject); Pre účet = 1 Možnosti tlače ["Počet riadkov"] Cyklus AreaLine = Layout.GetArea("Line"); AreaString.Parameters["String"] = Počet; TabularDocument.Output(AreaString); EndCycle; TabularDocument.OutputHorizontalPageSeparator(); EndCycle; //PREDEFINOVANÁ ČASŤ MODULU ////////////////////////////////////////// // //////////////////////////////////////////////// ///////////////// Return TabularDocument; //Vrátenie dokumentu tabuľky EndFunction #EndArea

Existujú dve funkcie a jeden postup.

Štandardnou funkciou pre dodatočné spracovanie je InformationOnExternalProcessing(), bez ktorej systém nepochopí, že ide o dodatočné spracovanie. Tu dôležitý bod znamená, že príkaz implementovaný v tomto spracovaní je typu Otvorenie formulára. Tie. otvoríme formulár podľa potreby. Ďalej nasleduje definícia tlačovej procedúry a funkcie, ktorá priamo generuje náš tabuľkový dokument.

Tu si treba dať pozor na to, že príkaz na tlač by v tomto prípade mal obsahovať iba 4 parametre a nie 5 ako je to pri bežnej definícii príkazu na tlač v module manažéra. IN v tomto prípade Neexistuje žiadny parameter na odovzdanie nastavenia tlače. Preto budeme musieť byť kreatívni, aby sme sprostredkovali nielen samotné objekty, pre ktoré sa generuje tlačená forma, ale aj parametre, ktoré od používateľa vo formulári požadujeme.

A tak sme zadefinovali dodatočné spracovanie, príkaz, z ktorého otvoríte formulár spracovania. Ďalším krokom je preto vytvorenie spracovateľského formulára.

V tomto formulári musíme vytvoriť tri detaily na uloženie hodnôt, ktoré budeme potrebovať neskôr. Nazvime tieto podrobnosti takto:

ID príkazu - zadajte reťazec

ObjectsAssignments - typ Zoznam hodnôt

V module tohto formulára napíšeme nasledujúci kód:

&Na serverovej procedúre pri vytvorení na serveri (zlyhanie, StandardProcessing) //Pri vytváraní na serveri si zapamätajte štandardné parametre odovzdané subsystémom AdditionalReportsAndProcessing AdditionalProcessingLink = Parameters.AdditionalProcessingLink; CommandIdentifier = Parametre.CommandIdentifier; Destination Objects.LoadValues(Parameters.Destination Objects); EndProcedure &OnClient Procedure Print(Command) // Získanie kľúča jedinečnosti formulára, ktorý sa otvára. UniqueKey = String(Nový jedinečný identifikátor); //Definovanie a vyplnenie štandardných parametrov pre všeobecný formulár Print DocumentsOpening Parameters = New Structure("DataSource, SourceParameters"); OpeningParameters.DataSource = AdditionalProcessingLink; OpeningParameters.SourceParameters = New Structure("CommandIdentifier, DestinationObjects"); OpeningParameters.SourceParameters.CommandIdentifier = CommandIdentifier; //Objekty na tlač a parametre zadané do formulára budú spracované //prejdeme cez parameter Source Parameters.Destination ObjectsOpening Parameters.Source Parameters.Destination Objects = GetDestination ObjectsAndPrint Parameters(); OpenForm("GeneralForm.PrintDocuments", OpeningParameters,FormOwner,UniqueKey); Koniec procedúry &Na serveri Funkcia GetDestinationObjectsAndPrintParameters()PrintData = DestinationObjects.Copy(); ///////////////////////////////////////////////// ////////////////////////////////////////////////// //////// //PREPRIGEDOVANÁ ČASŤ MODULU // //Tu vytvoríme štruktúru Parametre tlače a naplníme ju parametrami //ktoré je potrebné odovzdať funkcii tlače Parametre tlače = Nová štruktúra; PrintOptions.Insert("Počet riadkov", Počet riadkov); PrintData.Insert(0, PrintOptions); //PREDEFINOVANÁ ČASŤ MODULU ////////////////////////////////////////// // //////////////////////////////////////////////// ///////////////// ReturnPrintData; EndFunction

V procedúre When CreateOnServer vyplníme naše tri údaje, ktoré sme vytvorili na uloženie parametrov odovzdaných do formulára na spracovanie.

Ďalej definujeme handler pre tlačidlo tlače vo formulári. V tomto obslužnom programe musíme sami otvoriť formulár „Tlač dokumentov“, na to musíme pripraviť Otváracie parametre určitej štruktúry. V tejto štruktúre musia byť definované minimálne dve polia:

Zdrojové parametre, ktoré zahŕňajú identifikátor príkazu a cieľové objekty:

ID príkazu – ukladá sa aj pri vytváraní na serveri, ide o identifikátor príkazu, ktorý volal náš spracovateľský formulár. Pomocou identifikátora si teda v procedúre Tlač v objektovom module určíme, čo potrebujeme vytlačiť.

Objekty priradenia - práve do tohto poľa musíme odovzdať pole objektov, pre ktoré sa vygeneruje tlačený formulár, ako aj parametre požadované od používateľa vo formulári.

Ako definujem cieľové objekty, môžete vidieť vo funkcii GetObjectsDestinationsAndPrintOptions. Tu skopírujem naše cieľové objekty z formulárových rekvizít, namiesto prvku poľa s indexom 0 vložím naše parametre tlače.

Takto definované pole sa v budúcnosti prenesie z formulára „Tlač dokumentov“ ako prvý parameter procedúry Print object module, ktorú sme definovali skôr.

Ak sa vrátime k definícii modulu spracovania objektu a pozrieme sa na funkciu PrintLayout, v prvých troch riadkoch funkcie môžete vidieť, ako z dát prenesených do procedúry Print extrahujem naše parametre a objekty a následne s nimi pracujem.

Takéto manipulácie s parametrom Assignment Objects sú určené špecifikami volania procedúry Print object module. Otvorením modulu formulára Tlač dokumentov môžete sami sledovať, ako sa odovzdávajú parametre a vykonávajú volania funkcií.

Výsledok.

V dôsledku takýchto manipulácií dostaneme tri príkazy na formulár, z ktorého chceme zobraziť tlačený formulár:

Číslovanie príkazov zodpovedá poradiu možností implementácie.

Všetky tieto príkazy budú robiť to isté:

Zobraziť formulár žiadosti o ďalšie parametre

Výstup vygenerovaných tlačených formulárov do formulára „Tlač dokumentov“.. Presne to, čo sme chceli:

P.S. Ako šablóny na implementáciu vlastných tlačených formulárov s požiadavkou na dodatočné parametre nahrávam oba procesy, ktoré sa podieľajú na všetkých troch spôsoboch generovania tlačeného formulára.

Tento článok vám podrobne povie, ako môže začiatočník s malými znalosťami 1C 8 vytvoriť tlačenú formu. Zoberme si napríklad jednu z najbežnejších konfigurácií 1C 8 - Účtovníctvo 2.0. Vytvorenie tlačenej formy 1C fázy písania:

  • Vytvorenie externého súboru tlačového formulára;
  • Vytvorenie rozloženia tlačeného formulára;
  • Zápis programového kódu na zobrazenie údajov vytlačeného formulára na obrazovke;
  • Vytváranie parametrov pre automatickú registráciu vytlačeného formulára;
  • Pripojenie externej tlačovej formy k základni 1C podniky.

Vytvorenie tlačeného formulára 1C. Formulácia problému

V konfigurácii sme povinní Účtovníctvo 2.0 vytvoriť tlačený formulár pre dokument Príjem tovaru a služieb. V záhlaví vytlačeného formulára zobrazte nasledujúce údaje:

  • Organizácia;
  • protistrana;
  • Dohoda protistrany;
  • Dátum prijatia.

Zobrazte údaje v tabuľkovej časti ako tabuľku Tovar dokument. Tabuľka by mala obsahovať nasledujúce stĺpce:

  • nomenklatúra;
  • množstvo;
  • Cena;
  • súčet;
  • A tiež cenu položky k aktuálnemu dátumu (podľa typu ceny z dokladu).

Externý súbor spracovania

Prejdime k riešeniu problému. Najprv otvorme 1C 8 v režime Konfigurátor. V tomto režime sa všetok vývoj vykonáva na platforme 1C 8. Teraz musíme vytvoriť externý súbor na spracovanie. Ak to chcete urobiť, kliknite na ponuku Súbor -> Nový… alebo ikonou nového súboru.

V okne, ktoré sa otvorí, vyberte položku Externé spracovanie.

Ďalej v teréne názov Musíte zadať názov externého spracovania. V našom prípade to nazveme jednoducho „PrintedForm“; pole so synonymom sa vyplní automaticky. Upozorňujeme, že v teréne Názov, externé spracovanie, názov by sa mal písať bez medzier alebo interpunkčných znamienok.

Pridajme atribúty externého spracovania LinkToObject a vyberte typ pre neho DocumentLink. Príjem tovaru a služieb. Ak to chcete urobiť, v strome metadát externého spracovania 1C vyberte položku Požiadavky a stlačte tlačidlo Pridať(tlačidlo so zeleným plusom). Na pravej strane obrazovky v poli sa otvorí okno vlastností atribútu názov píšme - ReferenceToObject. IN lúka Typ stlačte tlačidlo s tromi bodkami.

Rozviňme vetvu v strome typov Odkaz na dokument, a nájdite tam prvok Príjem tovaru a služieb, zaškrtnite políčko vedľa neho a kliknite OK.

Uložme súbor externého spracovania do HDD, na to použijeme menu Súbor -> Uložiť, piktogram Uložiť(modrá disketa), alebo klávesová skratka Ctrl+S. Uložený súbor pomenujeme „PrintForm“.

Vytvorenie rozloženia tlačeného formulára

Začnime vytvárať rozloženie tlačového formulára 1C. Rozloženie slúži ako predloha pre výstup tlačovej formy, takže ak chcete, aby vaša tlačová forma vyzerala dobre, mali by ste jej venovať pozornosť.

Pridajme nové rozloženie do stromu metadát externého spracovania; v okne návrhára rozloženia nič nezmeníme a klikneme na tlačidlo Pripravený.

V novom rozložení, ktoré sa otvorí, vytvoríme niekoľko oblastí potrebných na zobrazenie tlačeného formulára. Všetky oblasti rozloženia, ktoré potrebujeme, budú horizontálne, takže ak chcete vytvoriť novú oblasť, vyberte požadovaný počet riadkov rozloženia a prejdite do ponuky Tabuľka -> Názvy -> Priradiť názov alebo použite klávesovú skratku Ctrl + Shift + N, potom do poľa zadajte názov regiónu. Pri vytváraní oblasti rozloženia sa nebojte urobiť chybu v počte riadkov; vždy ich môžete pridať alebo odstrániť. Ak chcete odstrániť čiaru rozloženia 1C, vyberte požadovanú čiaru a vyberte obsahové menu odsek Odstrániť. Ak chcete do rozloženia pridať nový riadok, vyberte ľubovoľný riadok rozloženia a vyberte položku v kontextovej ponuke Rozbaliť.

Pridanie hlavičky rozloženia

V prvom rade si vytvoríme oblasť Čiapka, zobrazí údaje pre hlavičku vytlačeného formulára. Pre túto oblasť budeme potrebovať sedem čiar rozloženia. Vyberieme ich a ako som písal vyššie, stlačte kombináciu klávesov Ctrl + Shift + N, v teréne názov napíšte „Hat“ a stlačte tlačidlo OK.

Vyplňte oblasť rozloženia údajmi, ktoré potrebujeme. Žiadna tlačená forma zvyčajne nie je úplná bez názvu, preto si ho vytvorte aj v hlavičke rozloženia. Keďže v nadpise okrem názvu tlačeného formulára zobrazíme aj číslo dokumentu, z ktorého bol vytlačený, ako parameter nastavíme text nadpisu v rozložení. Parameter rozloženia je špeciálne určená bunka rozloženia, do ktorej možno pomocou vstavaného jazyka 1C 8 vydávať rôzne údaje. Názov by mal byť zobrazený po celej šírke tlačeného formulára, takže sa rozhodneme, koľko buniek rozloženia nám bude stačiť na tlač na štandardnom orientácia na šírku list.

Zvyčajne stačí trinásť alebo štrnásť buniek rozloženia, vyberte ich v prvom riadku oblasti Čiapka a spojiť do jednej bunky ( Kontextové menu -> Zlúčiť). Potom dvakrát kliknite na výslednú veľkú bunku a napíšte názov parametra, v našom prípade „TitleText“. Aby sa zadaný text stal plnohodnotným parametrom, kliknite pravým tlačidlom myši na bunku a vyberte položku v kontextovej ponuke Vlastnosti. Na záložke Rozloženie nájdime pole Plnenie a vyberte hodnotu Parameter. Parametre v rozložení 1C sú označené zátvorkami “<>».

Nadpis vytlačeného formulára by mal vyčnievať medzi ostatným textom, preto znova vyberte bunku a pomocou ikon na paneli formátovania rozloženia nastavte zarovnanie textu Vycentrované a veľkosť písma 14.

Za textom nadpisu ho zobrazíme v oblasti Čiapka informácie o organizácii, protistrane, dohode protistrany a dátume prijatia tovaru. Keďže všetky tieto údaje sú tiež prevzaté z dokumentu, formalizujeme ich aj parametrami. Okrem toho by ste pred každým parametrom mali napísať vysvetľujúci text, aby používateľ ľahko pochopil, kde sa nachádza organizácia, kde je protistrana atď. Všetky tieto akcie sú podobné vytváraniu titulku, takže sa im nebudem podrobne venovať, len nakreslím, čo by sa malo nakoniec stať.

Obrázok ukazuje, ako sa parametre rozloženia líšia od bežného textu.

Pridanie hlavičky tabuľky rozloženia

Posledná vec, ktorú musíme v tejto oblasti rozloženia vytvoriť, je hlavička tabuľky, do ktorej sa zobrazia údaje tabuľkovej časti Tovar. Stĺpce požadované pre tabuľku boli popísané v časti „Problémové vyhlásenie“. Vytvoríme aj hlavičku tabuľky pomocou kombinácie buniek a písania textu (názvov stĺpcov). Pomocou nástroja vyberte okraje hlavičky tabuľky Rám, ktorý sa nachádza na paneli formátovania rozloženia.

Pridanie tabuľky do rozloženia

Vytvorme ďalšiu oblasť v rozložení - Údaje. Zobrazí sa v nej tabuľka údajov tabuľkovej časti Tovar. Pre túto oblasť potrebujeme iba jeden riadok rozloženia. Pre zobrazenie všetkých riadkov tabuľkovej časti v tlačenej forme vyplníme a zobrazíme túto oblasť potrebný počet krát. Kolóny v oblasti Údaje by sa mali zhodovať so stĺpcami hlavičky tabuľky, takže vyplnenie nebude ťažké. Rozdiel je len v oblasti Údaje potrebujeme parametre, nielen text. Všimnite si tiež, že predvolene sú číselné parametre formátované vpravo a textové parametre sú formátované vľavo. Na výber stĺpcov je tiež potrebné použiť nástroj Rám.

Pridanie päty do rozloženia

Posledná oblasť rozloženia, ktorú potrebujeme, je Suterén. Zobrazí súčty podľa množstva a množstva. Tvorba je podobná vytváraniu oblasti Údaje, ale navyše by mali byť výsledky zvýraznené tučným písmom.

Konečným výsledkom by malo byť rozloženie, ktoré vyzerá takto:

Vytvorenie tlačeného formulára 1C. Programovanie

Začnime programovať - ​​to je najdôležitejšia fáza pri vytváraní tlačeného formulára. V prvom rade poďme k externému objektovému modulu tlačového formulára, tu budeme programovať. Ak to chcete urobiť, v hlavnom okne externého spracovania kliknite na Akcie -> Otvoriť modul objektu.

V externom objektovom module tlačového formulára musíte vytvoriť funkciu exportu Tuleň().

Funkcia Print() Export EndFunction

poznač si to túto funkciu je povinný pre externé tlačové formuláre v konfiguráciách s použitím normálna aplikácia. Do tejto funkcie sa zapíše všetok nasledujúci programový kód potrebný na zobrazenie vytlačeného formulára.

Inicializácia základných premenných

Vytvorme premennú TabDoc, ktorý bude obsahovať tabuľkový dokument - to je presne tlačená forma, do ktorej zobrazíme vyplnené oblasti rozloženia.

TabDoc = nový tabuľkový dokument;

Do premennej Rozloženie Dostaneme rozloženie tlačeného formulára, ktorý sme vytvorili. Na tento účel používame vstavanú funkciu GetLayout(<ИмяМакета>).

Layout = GetLayout("Layout");

Všetky oblasti rozloženia prevedieme na premenné. Na tento účel používame metódu rozloženia GetArea(<ИмяОбласти>) .

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

Výstup hlavičky vytlačeného formulára do tabuľkového dokumentu

Všetky potrebné premenné sú inicializované. Začnime vyplňovať a zobrazovať oblasti rozloženia v tabuľkovom dokumente. Najprv vyplníme názov tlačiteľného formulára, na to musíme zadať parameter Text nadpisu, ktorý sme vytvorili v rozložení, text, ktorý potrebujeme. Na vyplnenie hodnôt parametrov pre oblasť rozloženia existuje špeciálna kolekcia s názvom - Možnosti. Z ktorého cez „.“ môžete získať ľubovoľný parameter. Do textu hlavičky prenesieme text: „Vytlačený formulár“, ako aj číslo dokladu.

Header Area.Parameters.TitleText = "Vytlačiť formulár"+LinkToObject.Number;

Zvyšné parametre hlavičky vyplníme podobným spôsobom, všetky potrebné hodnoty pre ne získame z detailov Odkaz na objekt, ktorý obsahuje odkaz na dokument, ktorý sa má vytlačiť.

HeaderArea.Parameters.Organization = LinkToObject.Organization; HeaderArea.Parameters.Account = LinkToObject.Account; HeaderArea.Parameters.ReceiptDate = ObjectLink.Date; Oblasť hlavičky.Parametre.Dohoda protistrany = LinkToObject.Dohoda protistrany;

Všetky parametre hlavičky sú vyplnené, zobrazíme ju v tabuľkovom dokumente, ktorý sme vytvorili, na to používame metódu Výkon(<Область>) .

TabDoc.Output(HeaderArea);

Vypísanie žiadosti o vytlačený handicap

Začneme vyplňovať a kresliť oblasť Údaje. Vytvorenie tlačeného formulára 1C zahŕňa aj napísanie dotazu, potrebujeme ho na získanie tabuľkových údajov Tovar a ceny Nomenklatúry pre aktuálny dátum použijeme Žiadosť. Dotazovací jazyk 1C 8 je podobný SQL, alebo skôr prakticky kopíruje jeho možnosti príkaz SELECT, ale celá žiadosť je napísaná v ruštine. Preto, ak ste aspoň matne oboznámení s SQL, potom ľahko pochopíte dopytovací jazyk 1C 8.

V tejto tlačenej podobe bude požiadavka celkom jednoduchá a mnohí si povedia, že by sa to dalo zaobísť aj bez nej, ale znalosť dopytovacieho jazyka a schopnosť ho kompetentne používať je jednou z hlavných zručností 1C programátora. Dotazy vám umožňujú získať zložité vzorky údajov s použitím menšieho množstva zdrojov a text dotazu je oveľa ľahšie pochopiteľný ako programový kód napísané bez použitia dotazu (alebo s jeho minimálnym využitím). Okrem toho má 1C 8 veľmi dobrý dizajnér dotazov, čo umožňuje interaktívne zostaviť dotaz z potrebných tabuliek.

Vytvorme premennú, ktorá bude obsahovať požiadavku.

Žiadosť = Nová požiadavka;

Text požiadavky zostavíme pomocou konštruktora požiadavky. Na začiatok si napíšme:

Request.Text = "";

Umiestnite kurzor myši medzi úvodzovky a kliknite pravé tlačidlo myši. V kontextovej ponuke, ktorá sa otvorí, vyberte položku Žiadosť o konštruktéra, veľmi nám to pomôže pri vytváraní 1C tlačovej formy. Potom sa otvorí okno návrhára dotazov, ktoré obsahuje veľa kariet, ale pre náš dotaz budeme potrebovať iba štyri: „Tabuľky a polia“, „Vzťahy“, „Podmienky“, „Spojenie / Aliasy“.

Pre náš dotaz budeme potrebovať dve tabuľky: časť tabuľky Tovar dokument Príjem tovaru a služieb a prehľad najnovších informácií o aktuálnom dátume registra Ceny položiek.

Na ľavej strane okna dizajnéra nájdeme stĺpec Databáza. Obsahuje strom všetkých metadátových objektov, poďme nájsť tie, ktoré potrebujeme. Ak to chcete urobiť, otvorme vlákno Dokumentácia a nájdite dokument Príjem tovaru a služieb, otvoríme ho a nájdeme tabuľkovú časť Tovar, presuňte ho do stĺpca návrhára dotazu Tabuľky. Ťahať môžete tromi spôsobmi: skutočným ťahaním dvojité kliknutie podľa tabuľky alebo jeho výberom a stlačením tlačidla „>“. Otvorme vlákno Informačné registre a nájsť tam stôl Ceny Nomenklatúra.SkratkaNajnovšie, tiež ho presuňte do stĺpca Tabuľky. Tieto dve tabuľky stačia pre náš dopyt.

Z výsledných tabuliek si vyberieme polia, ktoré potrebujeme. Ak to chcete urobiť, v stĺpci Tabuľky otvoríme stôl a nájdite polia: Nomenklatúra, množstvo, cena, množstvo a pretiahnite ich do tretieho stĺpca konštruktora - Polia. Rozšírime tabuľku , nájdime pole cena a tiež ho potiahnite do Polia.

Štruktúra tabuliek a polí našej požiadavky je pripravená, teraz prejdime k podmienkam. Potrebujeme tabuľkové údaje Tovar neboli prevzaté zo všetkých účteniek, ale iba z tej, ktorú tlačíme. Aby sme to urobili, položíme na stôl podmienku Príjem tovaruSlužbyTovar. Poďme na kartu „Podmienky“ návrhára dotazov. V stĺpci Polia tabuľky, ktoré sme vybrali skôr, sa nachádzajú, pre podmienku budeme potrebovať pole Link od stola Príjem tovaru a služieb tovaru, Presuňte ho do okna Podmienky.

V dotazoch 1C môžete použiť parametre, ktoré sú potrebné na prenos údajov do požiadavky. Napríklad, ak chceme obmedziť výber dokumentov na konkrétny dokument, tak môžeme pomocou parametra odovzdať odkaz na tento dokument do požiadavky a použiť tento parameter v podmienke. To je presne to, čo urobíme v našej žiadosti.

Po okne Podmienky pridali sme pole Link, návrhár dotazu sám vytvorí parameter s rovnakým názvom a umiestni ho za znak „=“. Tento parameter Ak chcete, môžete ho premenovať. V texte požiadavky sú parametre označené znakom „&“, ale v tomto prípade to nie je potrebné, pretože sa predpokladá, že druhá časť podmienky obsahuje parameter, stačí si to zapamätať. O tom, ako odovzdať hodnotu parametru požiadavky 1C, sa bude diskutovať nižšie.

Keďže v požiadavke nepoužívame celú tabuľku cien produktov, ale virtuálnu (v tomto prípade výrez z druhej), musíme nastaviť podmienky na vytvorenie tejto virtuálnej tabuľky, v našom prípade ide o uzávierka a podmienka pre typ cien (ceny, ktoré majú presne definovaný cenový typ, je ten, ktorý je uvedený na príjmovom doklade, ktorý vytlačíme).

Ak chcete vyplniť parametre virtuálnej tabuľky, prejdite na kartu Tabuľky a polia konštruktor dotazu v stĺpci Tabuľky vyberte tabuľku Ceny Nomenklatúra RezanieNajnovšie a stlačte tlačidlo Možnosti virtuálneho stola, ktorý sa nachádza v hornej časti. V okne, ktoré sa otvorí, v poli Obdobie mali by ste nastaviť parameter, na ktorý sa prenesie dátum, ku ktorému dôjde k zníženiu ceny. V našom prípade to bude aktuálny dátum (teda dnešný), takže parameter nazveme “&CurrentDate”. Do poľa podmienky napíšeme podmienky pre typ ceny, prejdeme ich aj v parametri, ktorý nazveme „&TypCena“. Výsledný stav bude vyzerať takto (kde Typ Cena- meranie registra Ceny položiek):

PriceType = &PriceType

Parametre virtuálnej tabuľky sú vyplnené, kliknite na tlačidlo OK.

Teraz, keď sme výber obmedzili len na dokument, ktorý potrebujeme, poďme vytvoriť spojenia medzi tabuľkami dotazov. Ak tak neurobíte, ceny z tabuľky Ceny NomenklatúraSlicePosledný nebudú priradené k položke z účtenky. Poďme na kartu Spojenia návrhár dopytov. Vytvorme spojenie cez pole Nomenklatúra medzi našimi dvoma stolmi. Ak to chcete urobiť, stlačte tlačidlo Pridať, v teréne stôl 1 vyberte tabuľku Príjem tovaruSlužbyTovar, a v poli Tabuľka 2 - Ceny NomenklatúraPlátokPosled. V podmienkach komunikácie vyberte polia Nomenklatúra z oboch stolov.

Treba tiež poznamenať, že pri výbere dotazu musíme získať všetky riadky z časti karty Tovar a ceny iba vtedy, ak sú k dispozícii k aktuálnemu dátumu pre typ ceny dokladu. Teda tabuľkové údaje Tovar sú povinné, ale údaje o rozpise cien nie sú k dispozícii. Preto je vo vzťahoch medzi týmito tabuľkami potrebné použiť takzvaný LEFT JOIN a ľavá (alebo povinná) tabuľka bude Príjem tovaruSlužbyTovar a pravé (alebo voliteľné) PriceNomenclatureSliceLast. Aby ľavé spojenie tabuliek dotazov fungovalo tak, ako som opísal vyššie, musíte začiarknuť políčko Všetky po poli Stôl 1.


Požiadavka je takmer hotová, zostáva už len trochu popracovať na terénnych aliasoch. Poďme na záložku Odbory/Aliasy a nastavte alias pre pole Ceny Nomenklatúra Slice Latest.Price. Prezývka bude - PriceAsToday, je potrebné, aby sa názvy polí výberu dotazu a názvy parametrov v rozložení tlačeného formulára zhodovali.

Práca v návrhárovi dotazov je teraz dokončená, kliknite na tlačidlo OK. Po zatvorení okna návrhára uvidíte, že riadok s textom požiadavky je vyplnený a vyzerá takto:

Request.Text = "SELECT | Príjem tovaru a služieb Tovar. Nomenklatúra, | Príjem tovaru a služieb Tovar. Suma, | Príjem tovaru a služieb Tovar. Cena, | Príjem tovaru a služieb Tovar. Množstvo, | Ceny Výsek nomenklatúry Najnovšia. Cena AS Cena dnes | OD | Dokument. Príjem tovaru a služieb Tovar AS PostupneProduktySlužbyProdukty |ĽAVÉ PRIPOJENIERegistráciaInformácie.CenyNomenklatúra.Posledný diel (| &Aktuálny dátum, Typ ceny = &CenyTyp) AKO Nomenklatúra Recenzia Nomenklatúra TovaruPosledný | všiPosledný. Nomenklatúra |KDE | Príjem tovaruSlužbyProdukty.Odkaz = &Odkaz";

Vykonanie žiadosti

Odovzdajme žiadosti potrebné parametre, na to použijeme metódu žiadosti NastaviťParameter(<ИмяПараметра>,<Значение>). Ak chcete získať aktuálny dátum, použite vstavanú funkciu Aktuálny dátum (), vráti dátum a čas počítača.

Spustite dotaz na získanie vzorky s údajmi, ktoré potrebujeme. Ak to chcete urobiť, najskôr použite metódu žiadosti spustiť() a potom metóda Vybrať ().

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

Vyplnenie tabuľky vytlačeného formulára

V dôsledku toho v premennej Ukážka bude obsahovať výber výsledkov dotazu, môžete sa v ňom pohybovať pomocou metódy Ďalšie() a na to, aby ste to celé prešli, potrebujete slučku Zbohom. Dizajn bude nasledovný:

Kým Select.Next() Loop EndLoop;

Práve v tejto slučke vyplníme a zobrazíme oblasť rozloženia Údaje. Najprv však inicializujme dve premenné číselného typu. V nich budeme zbierať súčty podľa množstva a množstva, ktoré potrebujeme zobraziť v oblasti Suterén.

Celkový súčet = 0; Celkové množstvo = 0;

Vo vnútri slučky vyplníme oblasť Údajeúdaje z aktuálneho výberového prvku do premenných Celková suma A Celkové množstvo pridajte hodnoty súčtu a množstva a nakoniec zobrazte oblasť v tabuľkovom dokumente pomocou nám už známej metódy Výkon(). Keďže názvy polí našej požiadavky sa úplne zhodujú s názvami parametrov oblasti Údaje, potom na vyplnenie použijeme vstavanú procedúru FillPropertyValues(<Приемник>, <Источник>), ktorý kopíruje hodnoty majetku<Источника>na vlastnosti<Приемника>.

While Selection.Next() Loop FillPropertyValues(AreaData.Parameters,Selection); TotalSum = TotalSum + Sample.Sum; Celkové množstvo = Celkové množstvo + Vzorka. Množstvo; TabDoc.Output(AreaData); EndCycle;

Výstup päty vytlačeného formulára do tabuľkového dokumentu

Zostáva vyplniť a zobraziť poslednú oblasť rozloženia - Suterén. Údaje na plnenie sme už pripravili, plnenie a vyberanie sa vykonáva podľa rovnakej schémy.

AreaFooter.Parameters.TotalQuantity = Celkové množstvo; AreaFooter.Parameters.TotalSum = TotalSum; TabDoc.Output(AreaFooter);

Tabuľkový dokument je kompletne vyplnený, zostáva ho už len zobraziť na obrazovke, aby si užívateľ mohol prezrieť vytlačený formulár a v prípade potreby ho vytlačiť. Ale v typických konfiguráciách 1C 8 sú za výstup externých tlačených formulárov zodpovedné postupy špeciálnych modulov. Preto sa stačí vrátiť z funkcie Tuleň() vyplnený tabuľkový dokument.

Return TabDoc;

V tomto bode je fáza programovania dokončená a vytvorenie tlačovej formy 1c je takmer dokončené. Úplné znenie funkcie Tuleň() Nebudem to sem dávať, môžete si to pozrieť v súbore formulára na tlač, ktorý si môžete stiahnuť v spodnej časti článku.

Vytvorenie tlačeného formulára 1C. Možnosti automatickej registrácie

Pri pripojení externej tlačovej formy k databáze systém automaticky neurčuje, pre ktorý dokument alebo referenčnú knihu je tlačová forma určená, musíte ju vybrať manuálne. A ak vytlačený formulár napísala iná osoba a vy máte za úlohu ho iba spojiť, výber môže byť nejednoznačný. Aby sa predišlo takýmto problémom, vo všetkých externých tlačených formulároch je potrebné vytvoriť rozloženie s parametrami automatickej registrácie. Ak je vytvorený a správne naformátovaný, systém automaticky určí, pre ktorý dokument alebo referenčnú knihu je tlačený formulár určený.

Vykonáva sa nasledovne:

  • Pri externom spracovaní vytvoríme nový layout. Nazývame to „Nastavenia_Automatická registrácia“ (je dôležité neurobiť chybu!).
  • V prvej bunke rozloženia píšeme Dokumentácia.(alebo Adresáre.) a názov dokumentu, ku ktorému potrebujete pripojiť vytlačený formulár.

Pripojenie externej tlačovej formy k základni

  • Spustite 1C 8 v režime Spoločnosť;
  • Prejdite do ponuky Servis -> Doplnkové zostavy a spracovanie -> Doplnkové externé tlačené formuláre;
  • Kliknite na tlačidlo Pridať;
  • V okne, ktoré sa otvorí, kliknite na ikonu Nahradiť súbor externého spracovania;
  • Ak ste vytvorili parametre automatickej registrácie, súhlasíme s ich použitím;
  • Ak ste nevytvorili parametre automatickej registrácie, potom v tabuľkovej časti Príslušenstvo tlačovej dosky pridajte požadovaný dokument alebo referenčnú knihu;
  • stlač tlačidlo OK.

Potom bude v ponuke dostupný externý tlačový formulár Tuleň dokument Príjem tovaru a služieb. Vytvorenie tlačeného formulára 1C možno teraz považovať za dokončené.