Formulari i printimit të jashtëm që hap formularin. Dalja e formularëve të printuar me kërkesë për të dhëna në formularin "Printo dokumente" nga nënsistemi "Print" BSP. Skedari i jashtëm i përpunimit

Ky artikull do t'ju tregojë në detaje se si një fillestar me pak njohuri për 1C 8 mund të krijojë një formë të shtypur. Për shembull, le të marrim një nga konfigurimet më të zakonshme 1C 8 - Kontabiliteti 2.0. Krijimi i një formulari të shtypur 1C fazat e shkrimit:

  • Krijimi i një skedari të formularit të printimit të jashtëm;
  • Krijimi i një faqosjeje të formës së printuar;
  • Shkrimi i kodit të programit për të shfaqur të dhënat e formës së printuar në ekran;
  • Krijimi i parametrave për regjistrimin automatik të një formulari të printuar;
  • Lidhja e një formulari printimi të jashtëm me bazën 1C Ndërmarrjet.

Krijimi i një formulari të shtypur 1C. Formulimi i problemit

Na kërkohet në konfigurim Kontabiliteti 2.0 krijoni një formë të printuar për një dokument Pranimi i mallrave dhe shërbimeve. Në kokën e formularit të printuar, shfaqni të dhënat e mëposhtme:

  • Organizimi;
  • Kundërpartia;
  • Marrëveshja e kundërpalës;
  • Data e marrjes.

Shfaqni të dhënat në pjesën tabelare si tabelë Mallrat dokument. Tabela duhet të përfshijë kolonat e mëposhtme:

  • Nomenklatura;
  • Sasi;
  • Çmimi;
  • Shuma;
  • Dhe gjithashtu çmimi i artikullit për datën aktuale (sipas llojit të çmimit nga dokumenti).

Skedari i jashtëm i përpunimit

Le të kalojmë në zgjidhjen e problemit. Së pari, le të hapim 1C 8 në modalitet Konfiguruesi. Është në këtë mënyrë që të gjitha zhvillimet kryhen në platformën 1C 8. Tani duhet të krijojmë një skedar përpunimi të jashtëm. Për ta bërë këtë, klikoni në meny Skedari -> I ri… ose nga ikona e një skedari të ri.

Në dritaren që hapet, zgjidhni artikullin Përpunimi i jashtëm.

Tjetra në fushë Emri Duhet të futni emrin e përpunimit të jashtëm. Në rastin tonë, ne thjesht do ta quajmë "Forma e printuar"; fusha sinonimike do të plotësohet automatikisht. Ju lutemi vini re se në terren Emri, përpunimi i jashtëm, emri duhet të shkruhet pa hapësira ose shenja pikësimi.

Le të shtojmë atribute të përpunimit të jashtëm LinkToObject dhe zgjidhni shkruani për të DocumentLink. Pranimi i mallrave dhe shërbimeve. Për ta bërë këtë, në pemën e meta të dhënave të përpunimit të jashtëm 1C, zgjidhni artikullin Kushtet dhe shtypni butonin Shtoni(buton me plus jeshile). Dritarja e vetive të atributeve do të hapet në anën e djathtë të ekranit, në fushë Emri le të shkruajmë - ReferencaToObjekt. NË fushë Lloji shtypni butonin me tre pika.

Le të zgjerojmë degën në pemën e tipit DocumentLink, dhe gjeni aty elementin Pranimi i Mallrave dhe Shërbimeve, kontrolloni kutinë pranë tij dhe klikoni NE RREGULL.

Le ta ruajmë skedarin e përpunimit të jashtëm në hard disk; për ta bërë këtë, përdorni menunë Skedari -> Ruaj, piktogram Ruaj(disket blu), ose një shkurtore tastierë Ctrl+S. Le të emërtojmë skedarin e ruajtur “PrintForm”.

Krijimi i një paraqitjeje të formës së printuar

Le të fillojmë të krijojmë një paraqitje të formularit të printimit 1C. Paraqitja shërben si një shabllon për daljen e formularit të printimit, kështu që nëse dëshironi që forma juaj e printimit të duket mirë, duhet t'i kushtoni vëmendje.

Le të shtojmë një plan urbanistik të ri në pemën e meta të dhënave të përpunimit të jashtëm; ne nuk do të ndryshojmë asgjë në dritaren e projektuesit të paraqitjes dhe klikojmë butonin Gati.

Në paraqitjen e re që hapet, ne do të krijojmë disa zona të nevojshme për shfaqjen e formularit të printuar. Të gjitha zonat e paraqitjes që na duhen do të jenë horizontale, kështu që për të krijuar një zonë të re, zgjidhni numrin e kërkuar të linjave të paraqitjes dhe shkoni te menyja Tabela -> Emrat -> Cakto emrin ose përdorni shkurtoren e tastierës Ctrl + Shift + N, pastaj shkruani emrin e rajonit në kuti. Kur krijoni një zonë paraqitjeje, mos kini frikë të bëni një gabim me numrin e rreshtave; gjithmonë mund t'i shtoni ose hiqni ato. Për të fshirë një linjë të paraqitjes 1C, zgjidhni rreshtin e dëshiruar dhe zgjidhni artikullin në menynë e kontekstit Fshije. Për të shtuar një rresht të ri në paraqitjen, zgjidhni çdo rresht të paraqitjes dhe zgjidhni artikullin në menynë e kontekstit Zgjero.

Shtimi i një kreu të paraqitjes

Para së gjithash, le të krijojmë një zonë Një kapak, do të shfaqë të dhënat për kokën e formularit të printuar. Për këtë zonë do të na duhen shtatë rreshta të paraqitjes. Le t'i zgjedhim ato dhe, siç shkrova më lart, shtypim kombinimin e tastit Ctrl + Shift + N, në fushë Emri shkruani "Hat" dhe shtypni butonin Ne rregull.

Le të mbushim zonën e paraqitjes me të dhënat që na duhen. Zakonisht, asnjë formë e printuar nuk është e plotë pa titull, kështu që le të krijojmë një të tillë edhe në kokën e paraqitjes. Meqenëse në titull, përveç emrit të formularit të printuar, do të afishojmë edhe numrin e dokumentit nga i cili është printuar, tekstin e titullit në layout do ta vendosim si parametër. Një parametër i paraqitjes është një qelizë e caktuar posaçërisht e paraqitjes në të cilën mund të nxirren të dhëna të ndryshme duke përdorur gjuhën e integruar 1C 8. Titulli duhet të shfaqet në të gjithë gjerësinë e formularit të printuar, kështu që le të vendosim se sa qeliza të paraqitjes do të jenë të mjaftueshme që ne të printojmë në një orientim standard të peizazhit të fletës.

Zakonisht mjaftojnë trembëdhjetë ose katërmbëdhjetë qeliza të paraqitjes, zgjidhni ato në rreshtin e parë të zonës Një kapak dhe kombinohen në një qelizë ( Menyja e kontekstit -> Bashko). Pas kësaj, klikoni dy herë në qelizën e madhe që rezulton dhe shkruani emrin e parametrit, në rastin tonë "TitleText". Në mënyrë që teksti i futur të bëhet një parametër i plotë, klikoni me të djathtën në qelizë dhe zgjidhni artikullin në menunë e kontekstit Vetitë. Në faqerojtësin Paraqitja le të gjejmë fushën Mbushje dhe zgjidhni vlerën Parametri. Parametrat në paraqitjen 1C tregohen me kllapa "<>».

Titulli i formularit të printuar duhet të dallohet midis teksteve të tjera, kështu që zgjidhni përsëri qelizën dhe përdorni ikonat në panelin e formatimit të paraqitjes për të vendosur shtrirjen e tekstit Në qendër dhe madhësia e shkronjave 14.

Pas tekstit të titullit do ta shfaqim atë në zonë Një kapak informacion në lidhje me organizatën, palën tjetër, marrëveshjen e palës tjetër dhe datën e marrjes së mallrave. Duke qenë se të gjitha këto të dhëna janë marrë edhe nga dokumenti, do ta zyrtarizojmë edhe me parametra. Përveç kësaj, para çdo parametri duhet të shkruani tekst shpjegues në mënyrë që përdoruesi të kuptojë lehtësisht se ku është organizata, ku është pala tjetër, etj. Të gjitha këto veprime janë të ngjashme me krijimin e një titulli, kështu që nuk do të ndalem në to në detaje, do të jap vetëm një pamje të asaj që duhet të ndodhë në fund.

Figura tregon se si ndryshojnë parametrat e paraqitjes nga teksti i zakonshëm.

Shtimi i një titulli të tabelës së paraqitjes

Gjëja e fundit që duhet të krijojmë në këtë zonë të paraqitjes është kreu i tabelës, në të cilin do të shfaqen të dhënat e pjesës tabelare. Mallrat. Kolonat e kërkuara për tabelën u përshkruan në seksionin "Deklarata e Problemit". Ne gjithashtu do të krijojmë një kokë tabele duke përdorur një kombinim të qelizave dhe shkrimin e tekstit (emrat e kolonave). Zgjidhni kufijtë e kokës së tabelës duke përdorur mjetin Kornizë, i cili ndodhet në panelin e formatimit të paraqitjes.

Shtimi i një tabele në një plan urbanistik

Le të krijojmë një zonë tjetër në paraqitjen - Të dhënat. Tabela e të dhënave të pjesës tabelare do të shfaqet në të Mallrat. Për këtë zonë, na duhet vetëm një rresht i paraqitjes. Për të shfaqur të gjitha rreshtat e pjesës tabelare në një formë të printuar, do të plotësojmë dhe shfaqim këtë zonë sa herë që kërkohet. Kolonat në zonë Të dhënat duhet të përkojë me kolonat e kokës së tabelës, kështu që plotësimi i tij nuk do të jetë i vështirë. Dallimi i vetëm është në zonë Të dhënat na duhen parametra, jo vetëm tekst. Gjithashtu vini re se si parazgjedhje, parametrat numerikë janë të formatuar në të djathtë dhe parametrat e tekstit janë formatuar në të majtë. Për të zgjedhur kolonat, duhet të përdorni gjithashtu mjetin Kornizë.

Shtimi i një Footer në një Layout

Zona e fundit e paraqitjes që na nevojitet është Bodrum. Ai do të shfaqë totalet sipas sasisë dhe sasisë. Krijimi është i ngjashëm me krijimin e një zone Të dhënat, por gjithashtu rezultatet duhet të theksohen me shkronja të zeza.

Rezultati përfundimtar duhet të jetë një plan urbanistik që duket si ky:

Krijimi i një formulari të shtypur 1C. Programimi

Le të fillojmë programimin - kjo është faza më e rëndësishme në krijimin e një forme të printuar. Para së gjithash, le të shkojmë te moduli i objektit të formularit të printimit të jashtëm, këtu do të programojmë. Për ta bërë këtë, në dritaren kryesore të përpunimit të jashtëm, klikoni Veprimet -> Hap modulin e objektit.

Duhet të krijoni një funksion eksporti në modulin e objektit të formularit të printimit të jashtëm Vula ().

Funksioni Print() Eksporto EndFunction

Ju lutemi vini re se kjo veçori kërkohet për format e jashtme të printimit në konfigurime që përdorin aplikacionin e rregullt. I gjithë kodi i programit pasues i nevojshëm për të shfaqur formularin e printuar do të shkruhet brenda këtij funksioni.

Inicializimi i variablave bazë

Le të krijojmë një ndryshore TabDoc, i cili do të përmbajë një dokument spreadsheet - kjo është pikërisht forma e printuar në të cilën do të shfaqim zonat e mbushura të paraqitjes.

TabDoc = TabularDocument i ri;

Tek një ndryshore Paraqitja Do të marrim paraqitjen e formës së printuar që krijuam. Për ta bërë këtë ne përdorim funksionin e integruar GetLayout (<ИмяМакета>).

Layout = GetLayout("Layout");

Ne do t'i konvertojmë të gjitha zonat e paraqitjes në variabla. Për ta bërë këtë, ne përdorim metodën e paraqitjes GetArea(<ИмяОбласти>) .

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

Dalja e kokës së një forme të printuar në një dokument fletëllogaritëse

Të gjitha variablat e nevojshme janë inicializuar. Le të fillojmë të plotësojmë dhe të shfaqim zonat e paraqitjes në një dokument fletëllogaritëse. Para së gjithash, le të plotësojmë titullin e formularit të printueshëm; për këtë duhet të kalojmë në parametrin Teksti i titullit, të cilin e krijuam në layout, teksti që na nevojitet. Për të plotësuar vlerat e parametrave për zonën e paraqitjes, ekziston një koleksion i veçantë i quajtur - Opsione. Nga e cila përmes "." ju mund të merrni çdo parametër. Në tekstin e titullit do të transferojmë tekstin: "Forma e printuar", si dhe numrin e dokumentit.

Header Area.Parameters.TitleText = "Formulari i printimit"+LinkToObject.Number;

Ne do të plotësojmë parametrat e mbetur të kokës në një mënyrë të ngjashme; do të marrim të gjitha vlerat e nevojshme për to nga detajet Referenca e objektit, i cili përmban një lidhje me dokumentin që do të printohet.

HeaderArea.Parameters.Organization = LinkToObject.Organization; HeaderArea.Parameters.Account = LinkToObject.Account; HeaderArea.Parameters.ReceiptDate = ObjectLink.Date; Header Area.Parameters.Marrëveshja e kundërpartisë = LinkToObject.Marrëveshja e kundërpartisë;

Të gjithë parametrat e kokës janë plotësuar, ne do ta shfaqim atë në dokumentin e tabelës që krijuam, për këtë përdorim metodën Prodhimi (<Область>) .

TabDoc.Output(Header Area);

Shkrimi i një kërkese për një handikap të printuar

Le të fillojmë të mbushim dhe tërheqim zonën Të dhënat. Krijimi i një forme të printuar 1C përfshin gjithashtu shkrimin e një pyetjeje; na nevojitet për të marrë të dhëna tabelare Mallrat dhe çmimet Nomenklaturat për datën aktuale që do të përdorim Kërkesë. Gjuha e pyetjeve 1C 8 është e ngjashme me SQL, ose më saktë kopjon praktikisht aftësitë e operatorit të saj SELECT, por e gjithë pyetja është shkruar në Rusisht. Prandaj, nëse jeni të paktën paksa të njohur me SQL, atëherë do ta kuptoni lehtësisht gjuhën e pyetjeve 1C 8.

Në këtë formë të shtypur, kërkesa do të jetë mjaft e thjeshtë dhe shumë do të thonë se do të ishte e mundur të bëhej pa të, por njohja e gjuhës së pyetjes dhe aftësia për ta përdorur atë me kompetencë është një nga aftësitë kryesore të një programuesi 1C. Pyetjet ju lejojnë të merrni mostra komplekse të të dhënave duke përdorur më pak burime, dhe teksti i pyetjes është shumë më i lehtë për t'u kuptuar sesa kodi i programit i shkruar pa përdorur një pyetje (ose me përdorim minimal të tij). Për më tepër, 1C 8 ka një projektues shumë të mirë të pyetjeve që ju lejon të mblidhni në mënyrë interaktive një pyetje nga tabelat e nevojshme.

Le të krijojmë një variabël që do të përmbajë kërkesën.

Kërkesë = Kërkesë e re;

Ne do të kompozojmë tekstin e kërkesës duke përdorur konstruktorin e kërkesës. Për të filluar, le të shkruajmë:

Kërkesë.Text = "";

Vendosni kursorin e miut midis thonjëzave dhe shtypni butonin e djathtë të miut. Në menynë e kontekstit që hapet, zgjidhni artikullin Konstruktori i kërkesës, do të na ndihmojë shumë në krijimin e një formulari printimi 1C. Pas kësaj, dritarja e projektuesit të pyetjeve do të hapet; ajo përmban shumë skeda, por për pyetjen tonë do të na duhen vetëm katër: "Tabelat dhe fushat", "Marrëdhëniet", "Kushtet", "Bashkimet / Pseudonimet".

Për pyetjen tonë do të na duhen dy tabela: pjesa e tabelës Mallrat dokument Pranimi i mallrave dhe shërbimeve dhe një fotografi të informacionit më të fundit në datën aktuale të regjistrit Çmimet e artikujve.

Në anën e majtë të dritares së projektuesit gjejmë kolonën Baza e të dhënave. Ai përmban një pemë të të gjitha objekteve të meta të dhënave, le të gjejmë ato që na duhen. Për ta bërë këtë, le të hapim fillin Dokumentacioni dhe gjeni dokumentin Pranimi i Mallrave dhe Shërbimeve, e hapim dhe gjejmë pjesën tabelare Mallrat, tërhiqeni atë në kolonën e projektuesit të pyetjes Tabelat. Ju mund të tërhiqni në tre mënyra: duke zvarritur, duke klikuar dy herë në tabelë ose duke e zgjedhur atë dhe duke klikuar butonin ">". Le të hapim fillin Regjistrat e Informacionit dhe gjeni një tryezë atje Nomenklatura e Çmimeve.Shkurtorja e fundit, tërhiqeni gjithashtu në kolonë Tabelat. Këto dy tabela janë të mjaftueshme për pyetjen tonë.

Le të zgjedhim fushat që na duhen nga tabelat që rezultojnë. Për ta bërë këtë, në kolonën Tabelat le të hapim tryezën dhe gjeni fushat: Nomenklatura, Sasia, Çmimi, Sasia dhe tërhiqni ato në kolonën e tretë të konstruktorit - Fushat. Le të zgjerojmë tabelën , le të gjejmë fushën Çmimi dhe gjithashtu tërhiqeni atë në Fushat.

Struktura e tabelave dhe e fushave të kërkesës sonë është gati, tani le të kalojmë te kushtet. Na duhen të dhënat tabelare Mallrat nuk janë marrë nga të gjitha faturat, por vetëm nga ajo që printojmë. Për ta bërë këtë, ne do të vendosim një kusht në tryezë Marrja e MallraveShërbimetMallrat. Le të shkojmë te skeda "Kushtet" e projektuesit të pyetjeve. Në një kolonë Fushat tabelat që kemi zgjedhur më herët janë të vendosura, për gjendjen do të na duhet një fushë Lidhje nga tavolina Pranimi i mallrave dhe shërbimeve të mallrave, Le ta tërhiqni atë në dritaren e Kushteve.

Në pyetjet 1C mund të përdorni parametra; ato nevojiten për të transferuar të dhëna në kërkesë. Për shembull, nëse duam të kufizojmë përzgjedhjen e dokumenteve në një dokument specifik, atëherë mund të përdorim një parametër për të kaluar një lidhje në këtë dokument në kërkesë dhe ta përdorim këtë parametër në kusht. Kjo është pikërisht ajo që ne do të bëjmë në kërkesën tonë.

Pas dritares Kushtet kemi shtuar një fushë Lidhje, vetë projektuesi i pyetjes do të krijojë një parametër me të njëjtin emër dhe do ta vendosë pas shenjës "=". Ky parametër mund të riemërtohet nëse dëshironi. Në tekstin e kërkesës, parametrat shënohen me shenjën "&", por në këtë rast kjo nuk është e nevojshme, pasi supozohet se pjesa e dytë e kushtit përmban një parametër, ju vetëm duhet ta mbani mend këtë. Si t'i kaloni një vlerë një parametri të kërkesës 1C do të diskutohet më poshtë.

Meqenëse në kërkesë nuk përdorim një tabelë të plotë të çmimeve të produkteve, por një virtuale (një pjesë e kësaj të fundit në këtë rast), duhet të vendosim kushtet për formimin e kësaj tabele virtuale, në rastin tonë kjo është data e mbylljes dhe kushti për llojin e çmimeve (çmimet që kanë një lloj çmimi të përcaktuar rreptësisht është ai i specifikuar në dokumentin e faturës që printojmë).

Për të plotësuar parametrat e tabelës virtuale, shkoni te skeda Tabelat dhe fushat konstruktori i pyetjeve, në kolonë Tabelat zgjidhni tabelën ÇmimetNomenklaturaPrerjeTë fundit dhe shtypni butonin Opsionet e tabelës virtuale, i vendosur në krye. Në dritaren që hapet, në fushë Periudha duhet të vendosni një parametër në të cilin do të kalohet data në të cilën do të bëhet ulja e çmimit. Në rastin tonë, kjo do të jetë data aktuale (d.m.th., sot), kështu që ne do ta quajmë parametrin "&Data aktuale". Në fushën e kushteve do të shkruajmë kushtet për llojin e çmimit, do ta kalojmë edhe në parametrin, të cilin do ta quajmë “&TypePrice”. Gjendja që rezulton do të duket kështu (ku LlojiÇmimi- matje regjistër Çmimet e artikujve):

Lloji i çmimit = &Lloji i çmimit

Plotësohen parametrat e tabelës virtuale, klikoni butonin Ne rregull.

Tani që e kemi kufizuar zgjedhjen vetëm në dokumentin që na nevojitet, le të krijojmë lidhje midis tabelave të pyetjeve. Nëse kjo nuk bëhet, atëherë çmimet nga tabela PricesNomenclatureSliceLast nuk do të shoqërohen me artikullin nga fatura. Le të shkojmë te skeda Lidhjet projektuesi i pyetjeve. Le të krijojmë një lidhje në të gjithë fushën Nomenklatura mes dy tavolinave tona. Për ta bërë këtë, shtypni butonin Shtoni, në fushë Tabela 1 zgjidhni një tabelë Marrja e MallraveShërbimetMallrat, dhe në fushën Tabela 2 - ÇmimetNomenklaturaFetaFundi. Në kushtet e komunikimit, zgjidhni fushat Nomenklatura nga të dyja tabelat.

Duhet të theksohet gjithashtu se në përzgjedhjen e pyetjes duhet të marrim të gjitha rreshtat nga pjesa e skedës Mallrat dhe çmimet vetëm nëse ato janë të disponueshme në datën aktuale për llojin e çmimit të dokumentit. Kështu, të dhënat tabelare Mallrat janë të detyrueshme, por të dhënat e ndarjes së çmimeve nuk janë të disponueshme. Prandaj, në marrëdhëniet ndërmjet këtyre tabelave, është e nevojshme të përdoret i ashtuquajturi LEFT JOIN, dhe tabela e majtë (ose e kërkuar) do të jetë Marrja e MallraveShërbimetMallrat, dhe të drejtën (ose opsionale) PriceNomenclatureSliceLast. Në mënyrë që bashkimi i majtë i tabelave të pyetjeve të funksionojë siç përshkrova më sipër, duhet të kontrolloni kutinë Të gjitha pas fushës Tabela 1.


Kërkesa është pothuajse gati, mbetet vetëm të punohet pak për pseudonimet në terren. Le të shkojmë te faqerojtësi Sindikatat/Personatet dhe vendos një pseudonim për fushën Çmimet Nomenklatura Fetë e fundit.Çmimi. pseudonimi do të jetë - ÇmimiSot, është e nevojshme që emrat e fushave të përzgjedhjes së pyetjes dhe emrat e parametrave në paraqitjen e formularit të printuar të përputhen.

Puna në projektuesin e pyetjeve tani ka përfunduar, klikoni OK. Pasi të mbyllet dritarja e projektuesit, do të shihni se rreshti me tekstin e kërkesës është plotësuar dhe duket kështu:

Kërkesë.Text = "ZGJIDH | Marrja e MallraveShërbimetProduktet.Nomenklatura, | Marrja e MallraveShërbimetMallrat.Shuma, | Pranimi i MallraveShërbimetProduktet.Çmimi, | Marrja e MallraveShërbimetProduktet.Sasia, |ÇmimetRiçmimetNumri i ditës. ipt i MallratShërbimet.Mallrat SI MarrëPër varsShërbimetProduktet LIDHJA E LËNTË RegjistroInformacion.ÇmimetNomenklatura.Fetë e fundit (| &Data aktuale, Lloji i çmimit = &Lloji i çmimit) SI Nomenklatura ÇmimetFetëFundi | NË FUNKSIONIMNËRregullimin e ProdukteveNr. menklature |KU | Marrja e MallraveShërbimetProdukte.Lidhja = &Lidhja";

Ekzekutimi i kërkesës

Le t'i kalojmë kërkesës parametrat e nevojshëm; për këtë do të përdorim metodën e kërkesës SetParameter (<ИмяПараметра>,<Значение>). Për të marrë datën aktuale, përdorni funksionin e integruar Data aktuale (), kthen datën dhe orën e kompjuterit.

Le të bëjmë një pyetje për të marrë një mostër me të dhënat që na duhen. Për ta bërë këtë, së pari përdorni metodën e kërkesës Vraponi (), dhe më pas metodën Zgjidhni ().

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

Plotësimi i tabelës së formularit të printuar

Si rezultat, në variablin Mostra do të përmbajë një përzgjedhje të rezultateve të pyetjes, mund të lundroni nëpër të duke përdorur metodën Tjetra (), dhe për të kaluar nëpër të gjithë gjë ju duhet një lak Mirupafshim. Dizajni do të jetë si më poshtë:

Ndërsa Select.Next() Loop EndLoop;

Është në këtë lak që ne do të mbushim dhe shfaqim zonën e paraqitjes Të dhënat. Por së pari, le të inicializojmë dy variabla të llojit numerik. Në to do të mbledhim totalet sipas sasisë dhe sasisë që duhet të shfaqim në zonë Bodrum.

Shuma totale = 0; Sasia totale = 0;

Brenda lakut do të mbushim zonën Të dhënat të dhënat nga elementi aktual i përzgjedhjes në variabla Shuma totale Dhe Sasia totale shtoni vlerat e shumës dhe sasisë dhe më në fund shfaqni zonën në një dokument spreadsheet duke përdorur metodën tashmë të njohur për ne Prodhimi (). Meqenëse emrat e fushave të kërkesës sonë përkojnë plotësisht me emrat e parametrave të zonës Të dhënat, më pas për të plotësuar do të përdorim procedurën e integruar FillPropertyValues(<Приемник>, <Источник>), i cili kopjon vlerat e pasurisë<Источника>ndaj pronave<Приемника>.

Ndërsa Selection.Next() Loop FillPropertyValues(AreaData.Parameters,Selection); TotalSum = TotalSum + Sample.Sum; Sasia totale = Sasia totale + Sasia e mostrës; TabDoc.Output(AreaData); Cikli i Fundit;

Dalja e fundit të një forme të printuar në një dokument fletëllogaritëse

Mbetet për të mbushur dhe shfaqur zonën e fundit të paraqitjes - Bodrum. Ne kemi përgatitur tashmë të dhënat për plotësimin, plotësimi dhe tërheqja kryhen sipas të njëjtës skemë.

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

Dokumenti i fletëllogaritjes është plotësuar plotësisht; mbetet vetëm ta shfaqni atë në ekran në mënyrë që përdoruesi të shikojë formularin e printuar dhe ta printojë nëse është e nevojshme. Por në konfigurimet tipike 1C 8, procedurat e moduleve speciale janë përgjegjëse për prodhimin e formave të printuara të jashtme. Prandaj, mjafton të ktheheni nga funksioni Vula () dokument i plotësuar i tabelës.

Kthehu TabDoc;

Në këtë pikë, faza e programimit ka përfunduar dhe krijimi i formularit të printimit 1c pothuajse ka përfunduar. Teksti i plotë i funksionit Vula () Nuk do ta jap këtu, mund ta shikoni në skedarin e formularit të printueshëm, të cilin mund ta shkarkoni në fund të artikullit.

Krijimi i një formulari të shtypur 1C. Opsionet e regjistrimit automatik

Kur lidhni një formular printimi të jashtëm me bazën e të dhënave, sistemi nuk përcakton automatikisht se për cilin dokument ose libër referimi është menduar formulari i printimit; ju duhet ta zgjidhni atë manualisht. Dhe nëse një person tjetër ka shkruar formularin e shtypur, dhe ju keni për detyrë vetëm ta lidhni atë, atëherë zgjedhja mund të bëhet e paqartë. Për të shmangur probleme të tilla, në të gjitha format e printuara të jashtme është e nevojshme të krijohet një plan urbanistik me parametrat e regjistrimit automatik. Nëse është krijuar dhe formatuar saktë, sistemi automatikisht përcakton se për cilin dokument ose libër referimi është menduar forma e printuar.

Bëhet si më poshtë:

  • Në përpunimin e jashtëm ne krijojmë një plan urbanistik të ri. Ne e quajmë atë "Settings_Auto-Registration" (është e rëndësishme të mos bëni një gabim!).
  • Në qelizën e parë të paraqitjes shkruajmë Dokumentacioni.(ose Drejtoritë.) dhe emrin e dokumentit me të cilin duhet të lidhni formularin e printuar.

Lidhja e një formulari printimi të jashtëm me bazën

  • Niseni 1C 8 në modalitet Kompania;
  • Shkoni te menuja Shërbimi -> Raporte dhe përpunim shtesë -> Forma shtesë të printuara të jashtme;
  • Klikoni butonin Shtoni;
  • Në dritaren që hapet, klikoni ikonën Zëvendësoni skedarin e jashtëm të përpunimit;
  • Nëse keni krijuar parametra të regjistrimit automatik, atëherë ne pranojmë t'i përdorim ato;
  • Nëse nuk keni krijuar parametra të regjistrimit automatik, atëherë në pjesën tabelare Aksesorë për pllakë printimi shtoni dokumentin e kërkuar ose librin e referencës;
  • Shtyp butonin NE RREGULL.

Pas kësaj, formulari i printimit të jashtëm do të jetë i disponueshëm në meny Vulë dokument Pranimi i mallrave dhe shërbimeve. Krijimi i formularit të printuar 1C tani mund të konsiderohet i përfunduar.

Të gjithë kanë parë më shumë se një herë se si, në konfigurimet tipike të ndërtuara në bazë të BSP (Biblioteka e Nënsistemeve Standarde), formularët e printuar të ndërtuar mbi bazën e një dokumenti Spreadsheet nxirren në një formë të veçantë "Print Documents". Ky formular është pjesë e nënsistemit “Print” nga BSP. Kur zhvilloni formularët tuaj të printuar, ndonjëherë është e nevojshme të kërkoni nga përdoruesi të dhëna shtesë të nevojshme për printim. Këtu lind pyetja se si në këtë rast të shfaqet formulari i printuar në formularin “Print Document”. Në këtë artikull, unë do të shikoj se si të implementojmë daljen e një formulari të printuar në formularin e përmendur nga nënsistemi "Print", nëse duam të kërkojmë të dhëna shtesë nga përdoruesi përpara se të nxjerrim formularin e printuar. Këtu do të shqyrtohen dy raste: kur një formular i printuar zbatohet duke përdorur nënsistemin "Raporte shtesë dhe përpunim" dhe kur një formular i printuar i shtohet konfigurimit në modalitetin e konfiguruesit, d.m.th. bëhen ndryshime në konfigurimin standard.

Formulari "PrintDocuments" ofron disa funksione shtesë kur punoni me formularë të printuar, si p.sh.

  • butoni për të printuar në një printer, direkt në formë;
  • shënimi i numrit të kopjeve, formulari i printuar;
  • redaktimi i formës së printuar të krijuar;
  • aftësia për të ruajtur një formë të shtypur në formate të ndryshme të të dhënave (Excel, Word, PDF, etj.);
  • dërgimi i një formulari të printuar me email;
  • Punë e përshtatshme me një sërë dokumentesh.

Ky formular tani përdoret nga 1C në të gjitha konfigurimet standarde për të shfaqur format e printuara të dokumenteve dhe elementët e drejtorisë. Dhe sigurisht, kur zhvillojmë formularët tanë të printuar, për të mos shkuar përtej praktikës së pranuar, ne duhet të shfaqim edhe formularët tanë të printuar duke përdorur mjetet e ofruara.

Kur përdorni metoda standarde për shtimin e formularëve të printuar, nënsistemi "Print" do të bëjë gjithçka për ne dhe do të shfaqë formularin e printuar sipas nevojës. Për shembull:

  1. Kur shtojmë një komandë printimi në një dokument duke përdorur nënsistemin "Print", duhet të përshkruajmë komandën e printimit në procedurën Add Print Commands, duke treguar menaxherin e printimit në të cilin zbatohet procedura e Printimit;
  2. Gjatë krijimit të Përpunimit Shtesë, në modulin e objektit të përpunimit në funksionin InformationOnExternalProcessing, duhet të përshkruajmë një komandë me llojin e përdorimit Call of a server metodë dhe të zbatojmë menjëherë procedurën Print, e cila në një mënyrë të caktuar zbaton thirrjen për të gjeneruar një të printuar. formë.

Në raste të tilla, siç thashë tashmë, nënsistemi i printimit do të nxjerrë formën e printuar që kemi krijuar vetë, sipas nevojës. Metoda të tilla përfshijnë formimin e drejtpërdrejtë të një forme printimi, d.m.th. i kaloi objektet që do të printoheshin në procedurën e printimit, krijoi një dokument spreadsheet dhe e shfaqi atë në ekran.

Po sikur, përpara se të filloni të gjeneroni një dokument spreadsheet, ju duhet të kërkoni disa të dhëna nga përdoruesi? ato. duhet të tregojmë formën. Në këtë rast, rendi standard i formimit të një formulari të shtypur është shkelur dhe ne duhet të mendojmë se si ta transferojmë formularin tonë të printuar në formularin "Shtypni Dokumentet".

Në këtë rast, dy situata janë të mundshme:

  1. Kur krijohet një pllakë printimi me një ndryshim konfigurimi;
  2. Kur krijohet një formë e printuar pa ndryshuar konfigurimin, d.m.th. Përdoret nënsistemi "Raporte dhe përpunim shtesë".

Ne krijojmë një formë të printuar duke e shtuar atë përmes konfiguruesit.

Variacioni i parë. Nëpërmjet krijimit të përpunimit me ekipin.

Ky opsion përfshin shtimin e përpunimit drejtpërdrejt në objektet e meta të dhënave:

Le të shqyrtojmë opsionin kur duhet të implementojmë një formë të printuar të një objekti të caktuar, për shembull, një element drejtorie. Për ta bërë këtë, ne duhet të punojmë në katër fusha të përpunimit:

  1. Krijoni një komandë që do të thërrasë formën tonë të printueshme;
  2. Krijo vetë formularin;
  3. Krijoni një paraqitje të një forme të printuar;
  4. Bëni ndryshime në modulin e menaxherit të përpunimit.

Krijimi i një ekipi

Specifikoni në vetitë e komandës:

  • Grupi ku dëshirojmë që komanda të shfaqet në formë;
  • Lloji i parametrit është pikërisht libri ose dokumenti i referencës, forma e shtypur e të cilit po bëjmë;
  • Mënyra e përdorimit të parametrit është e shumëfishtë. Kështu që ju mund të shfaqni formularët e printuar për disa elementë të përzgjedhur në listë menjëherë.

Në modulin e komandës, ne hapim formularin e përpunimit, duke kaluar elementët e tij të zgjedhur të drejtorisë për të cilat është e nevojshme të gjenerohen formularë të printuar. Le të mos ndajmë qimet këtu dhe të korrigjojmë pak kodin standard që platforma fut në procedurën e përpunimit të komandës:

&Në procedurën e përpunimit të komandës së klientit (Parametri i komandës, parametrat e ekzekutimit të komandës) //Futni përmbajtjen e mbajtësit. FormParameters = Struktura e re ("DataForPrinting", CommandParameters); OpenForm("Processing.PrintForm.Form",FormParameters,CommandExecutionParameters.Burimi,CommandExecutionParameters.Uniqueness,CommandExecutionParameters.Window,CommandExecutionParameters.NavigationLink); Fundi i procedurës

Parametri i procedurës Command Parameter përmban saktësisht elementet që kemi zgjedhur për printim.

Krijimi i një forme

Le të shtojmë një formë në përpunim, të krijojmë një atribut të formës së llojit të Listës së Vlerave dhe detajet e nevojshme që ne të vendosim parametra shtesë për formularin e printuar:

DataForPrint - shkruani ListValues;

Numri i rreshtave - shkruani Numri.

Shembulli im do të jetë thjesht demonstrues, kështu që le të përcaktojmë me kusht që qëllimi im është të printoj paraqitjen e elementit të zgjedhur dhe numrin e rreshtave që zgjedhim si një parametër shtesë në formular.

Shkoni te moduli i formularit dhe shkruani kodin e mëposhtëm:

&OnServerProcedureWhenCreatingOnServer(Dështim,Përpunimi standard)PrintData.LoadValues(Parameters.PrintData); Fundi i procedurës &Në procedurën e klientit Printoni (komandën) Print ManagementClient. Ekzekutoni komandën e printimit ("Processing.PrintForm", //Menaxheri i printimit "PrintForm", //Identifikuesi GetObjectsForPrint(), //PrintObjectsThisObject, //Owner of the form forma nga e cila printimi quhet GetPrintParameters( )); //Parametrat e printimit - parametra arbitrare për transferim te menaxheri i printimit Fundi i procedurës &Funksioni në server GetObjectsForPrint() Array = DataForPrint.UploadValues(); Array e kthimit; EndFunction &OnServer Funksioni GetPrintParameters()PrintParameters = Strukturë e re; Print Options.Insert("Titulli i formularit", "Print Form"); //Një nga parametrat për formularin "Print dokument". //Specifikon titullin e formularit të daljes së printueshme. //Këtu shtojmë parametrat tanë, të cilët duam t'i transferojmë gjithashtu te menaxheri i printimit. PrintOptions.Insert("Numri i rreshtave", Numri i rreshtave); ReturnPrintOptions; Funksioni i Fundit

Përcaktojmë procedurën WhenCreatingOnServer dhe në të lexojmë nga parametri që kemi kaluar nga komanda gjatë hapjes së formularit, listën e objekteve për të cilat duhet të gjenerojmë një formular të printuar.

Ne krijojmë një komandë Print në formë dhe shkruajmë mbajtësin e saj, në të cilin thërrasim funksionin e modulit të përgjithshëm ManagePrintClient.ExecutePrintCommand, vendosni parametrat e nevojshëm të këtij funksioni, përkatësisht:

  • Print Manager - emri i objektit në modulin e menaxherit, i cili përcaktohet nga funksioni Print, i cili formon formën tonë të printuar;
  • Identifikues - identifikues i formularit të printimit që duhet të printohet. Duke përdorur këtë identifikues, ne do të zgjedhim në funksionin Print të modulit të menaxherit se cili formular printimi duhet të printohet;
  • Objektet printuese janë drejtpërdrejt ato objekte për të cilat krijohen formularët e printimit;
  • Pronari i formularit;
  • Parametrat e printimit - këtu krijojmë dhe kalojmë një strukturë me parametra printimi, këtu kalojmë parametrat tanë shtesë që kërkuam nga përdoruesi në formularin e përpunimit.

Në fakt, duke thirrur funksionin ExecutePrintCommand nga forma e përpunimit, ne zgjidhim problemin tonë të nxjerrjes së formularit të printuar në formularin "PrintDocuments". Më pas nënsistemi “Print” do të kryejë veprime standarde dhe do ta sjellë ekzekutimin në procedurën Print, të cilën duhet ta përcaktojmë në modulin e menaxherit të përpunimit tonë.

Krijimi i një paraqitjeje të formës së printuar

Bërja e ndryshimeve në modulin e menaxherit të përpunimit

Nga ky moment, ne kryejmë veprime standarde për zhvillimin e formularëve të printuar duke përdorur nënsistemin "Print" nga BSP.

Shtoni kodin e mëposhtëm në modulin e menaxherit:

Procedura Printimi (Grupi i objekteve, parametrat e printimit, koleksioni i formularëve të printimit, objektet e printimit, parametrat e daljes) Eksportoni nëse kontrolli i printimit. Nevojë për të printuar paraqitjen (koleksionin e formularëve të printimit, "Formularin e printimit") Pastaj kontrolloni Printimin. Nxjerrja e dokumentit tabelor në koleksion (Koleksioni i formularëve të printimit, "Print Form" ma", NStr("ru = "Printform""), PrintLayout( Array of Objects, Print Parametrat), "Processing.PrintForm.PF_MXL_PrintForm",); fundNëse; Fundi i procedurës &Në funksionin e serverit PrintLayout(Array Object, Opsionet e Printimit) TabularDocument = TabularDocument i ri; //Krijoni një dokument spreadsheet /////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// /////////////// //PJESË E SHUMË TË MODULIT // //Këtu krijojmë formën tonë të printuar Layout = GetLayout("PF_MXL_PrintForm"); Për çdo objekt nga grupi i objekteve Loop AreaHeader = Layout.GetArea("Header"); RegionObject = Layout.GetArea("Objekt"); TabularDocument.Output(Header Area); AreaObject.Parameters["Object"] = Objekti; TabularDocument.Output(AreaObject); Për llogari = 1 Opsione ByPrint["Numri i rreshtave"] Cikli AreaLine = Layout.GetArea("Linja"); AreaString.Parameters["String"] = Numërimi; TabularDocument.Output(AreaString); Cikli i Fundit; TabularDocument.OutputHorizontalPageSeparator(); Cikli i Fundit; //PJESË E MBIPERDEFINUAR E MODULIT ///////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////// ///////////////// Return TabularDocument; //Ktheni dokumentin e tabelës Fundi i Funksionit

Opsioni i dytë. Nëpërmjet zbatimit të komandës print.

Ky opsion është shumë i ngjashëm me të parën për sa i përket zbatimit të printimit. Dallimi i tij është në mënyrën e krijimit të një komande që do të shfaqet në ndërfaqe dhe do të fillojë printimin tonë.

Në këtë rast, kur përcaktojmë një komandë printimi, ne përdorim edhe nënsistemin "Print" nga BSP. Në vend që të përcaktojmë një komandë për hapjen e përpunimit në vetë përpunimin, duhet të shkojmë në modulin e menaxherit të objektit të cilit duam t'i shtojmë një formular printimi dhe të specifikojmë një përshkrim të komandës së printimit në procedurë. AddPrintCommands (PrintCommands):

Procedura AddPrintCommands(PrintCommands) ExportPrintCommand = PrintCommands.Add(); PrintCommand.Identifier = "PrintForm"; PrintCommand.View = NStr("ru = "Print një formular të printuar""); PrintCommand.Handler = "GeneralModulePrintForm.ProcessingPrintFormCommand"; PrintCommand.Order = 100; Fundi i procedurës

Këtu shtojmë një komandë printimi të quajtur “Print printed form” në të gjitha format e direktorive (ju kujtoj se ne jemi duke punuar me direktorinë e palëve). Dhe këtu është pika kryesore që duhet marrë parasysh. Ju mund të shtoni dy lloje komandash në formular:

1. Thirrja e procedurës Print nga moduli i menaxherit;

2. Metoda e thirrjes së një klienti.

Kjo është pikërisht ajo që duhet të quajmë metodë klienti. Metoda e klientit do të na lejojë të thërrasim një formular përpunimi në të cilin do të kërkojmë të dhënat që na nevojiten nga përdoruesi përpara printimit.

Për të zbatuar një thirrje të tillë, është e nevojshme të specifikoni një Handler për të kur përcaktoni një komandë (shih kodin më lart). Një varg që përmban shtegun drejt funksionit të klientit i kalohet Trajtuesit të Komandës, d.m.th. rrugën drejt funksionit Export të modulit të përbashkët në klient. Është ky funksion që do të thirret kur klikoni në komandën print që ne shtojmë në formularë.

Siç e kuptoni, që kjo të funksionojë, ju duhet të krijoni këtë Modul shumë të Përgjithshëm dhe të përcaktoni funksionin Export. Prandaj, ne shkruajmë kodin e mëposhtëm në modulin tonë të përgjithshëm:

Funksioni ProcessingPrintCommandPrintForm(PrintParameters) Eksporto //Fut përmbajtjen e mbajtësit. FormParameters = Struktura e re ("DataForPrint", PrintParameters.PrintObjects); OpenForm ("Processing.PrintForm.Form", FormParameters); Funksioni i Fundit

Këtu bëjmë të njëjtën gjë si gjatë zbatimit të parë, hapim formularin e printimit, vetëm tani të dhënat tona të printimit do të përmbahen në parametrin e kaluar në funksionin Parametrat e printimit, ose më mirë në fushën e tij Print Objects.

Pasi të hapim formularin e përpunimit, të gjitha veprimet janë të ngjashme me opsionin e parë.

Zbatimi i këtij opsioni mund të gjendet në konfigurimet standarde, në mekanizmat që lidhen me printimin e pëlqimit për përpunimin e të dhënave personale.

Ne krijojmë përpunim shtesë.

Po nëse ky nuk është konfigurimi ynë dhe po mbështetet? Dhe në përgjithësi, ne nuk duam të hyjmë në konfigurim dhe ta modifikojmë atë?

Në këtë rast, duhet të përdorim nënsistemin “Raporte shtesë dhe përpunim” nga BSP.

Me këtë zgjidhje, ne duhet të shkruajmë kodin vetëm në dy vende dhe të gjitha janë në përpunimin tonë të ardhshëm shtesë:

1. Moduli i objektit përpunues;

2. Moduli i formularit të përpunimit.

Në modulin e objektit shkruajmë kodin e mëposhtëm:

///////////////////////////////////////////////////////////////// //////////////////////// // NDËRFAQJA E PROGRAMIT #Zona e Ndërfaqes së Programit // Kthen informacione rreth përpunimit të jashtëm. Funksioni InformationOnExternalProcessing() ExportRegistrationParameters = AdditionalReportsAndProcessing.InformationOnExternalProcessing("2.2.2.1"); Parametrat e Regjistrimit.View = AdditionalReportsAndProcessingClientServer.ProcessingViewPrintedForm(); Parametrat e Regjistrimit.Versioni = "1.0"; NewCommand = Parametrat e Regjistrimit.Commands.Add(); NewCommand.Presentation = NStr("ru = "Forma e jashtme e printuar me kërkesë të të dhënave paraprake""); NewCommand.Identifier = "ExternalPrintForm"; NewCommand.Use = AdditionalReportsAndProcessingClientServer.CommandTypeOpenForm(); NewCommand.ShowAlert = E vërtetë; NewCommand.Modifier = "PrintMXL"; Parametrat e Regjistrimit të Kthimit; Procedura e EndFunctions Print (Print Data, PrintForms Collection, Print Objects, Output Parametrat) Eksporto If PrintManagement.NeedPrintLayout(PrintFormsCollection, "ExternalPrintForm") Pastaj PrintManagement.OutputTabularDocumentIntoCollection",(PnayaxForm"Form. Fleta e provimit" "), PrintLayout(Print Data ),); fundNëse; Fundi i procedurës &Në funksionin e serverit PrintLayout(PrintData)PrintParameters = PrintData.Value; //Merr parametrat e printimit nga elementi i parë i Listës së Vlerave Object Array = PrintData.Copy(); //Kopjo listën e vlerave ArrayObjects.Delete(0); //Fshini rreshtat e elementit të kopjuar që përmban Opsionet e Printimit TabularDocument = New TabularDocument; //Krijoni një dokument spreadsheet /////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// /////////////// //PJESË E SHUMË TË MODULIT // //Këtu krijojmë formën tonë të printuar Layout = GetLayout("Layout"); Për çdo objekt nga grupi i objekteve Loop AreaHeader = Layout.GetArea("Header"); RegionObject = Layout.GetArea("Objekt"); TabularDocument.Output(Header Area); AreaObject.Parameters["Object"] = Objekti; TabularDocument.Output(AreaObject); Për llogari = 1 Opsione ByPrint["Numri i rreshtave"] Cikli AreaLine = Layout.GetArea("Linja"); AreaString.Parameters["String"] = Numërimi; TabularDocument.Output(AreaString); Cikli i Fundit; TabularDocument.OutputHorizontalPageSeparator(); Cikli i Fundit; //PJESË E MBIPERDEFINUAR E MODULIT ///////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////// ///////////////// Return TabularDocument; //Kthejeni dokumentin e fletëllogaritjes EndFunction #EndArea

Ka dy funksione dhe një procedurë.

Funksioni standard për përpunimin shtesë është InformationOnExternalProcessing(); pa të, sistemi nuk do ta kuptojë që ky është përpunim shtesë. Pika e rëndësishme këtu është të tregohet se komanda e zbatuar në këtë përpunim është e llojit Hapja e një formulari. ato. do ta hapim formularin sipas nevojës. Më pas vjen përkufizimi i procedurës Print dhe funksioni që gjeneron drejtpërdrejt dokumentin tonë të fletëllogaritjes.

Këtu duhet t'i kushtoni vëmendje faktit që komanda e printimit në këtë rast duhet të përmbajë vetëm 4 parametra, dhe jo 5 siç është rasti me përkufizimin e zakonshëm të komandës së printimit në modulin e menaxherit. Në këtë rast, nuk ka asnjë parametër për kalimin e Cilësimeve të Printimit. Prandaj, do të duhet të jemi krijues në mënyrë që të përcjellim jo vetëm vetë objektet për të cilat krijohet forma e printuar, por edhe parametrat që kërkojmë nga përdoruesi në formular.

Dhe kështu ne kemi përcaktuar përpunimin shtesë, komanda nga e cila do të hapë formularin e përpunimit. Prandaj, hapi tjetër është krijimi i një formulari përpunimi.

Në këtë formë, ne duhet të krijojmë tre detaje për të ruajtur vlerat që do të na duhen më vonë. Le t'i quajmë këto detaje si më poshtë:

ID e komandës - shkruani String

ObjectsAssignments - lloji Lista e vlerave

Në modulin e këtij formulari shkruajmë kodin e mëposhtëm:

&Në procedurën e serverit Kur krijohet në server (Dështim, përpunim standard) //Kur krijoni në server, mbani mend parametrat standard të kaluar nga nënsistemi AdditionalReportsAndProcessing AdditionalProcessingLink = Parameters.AdditionalProcessingLink; CommandIdentifier = Parametrat.CommandIdentifier; Objektet e destinacionit.LoadValues(Parametrat.Objektet e destinacionit); EndProcedura &Procedura OnClient Print(Command) // Merrni çelësin e unike të formularit që hapet. UniqueKey = String(New UniqueIdentifier); //Përcaktimi dhe plotësimi i parametrave standardë për formularin e përgjithshëm Printo dokumentet Hapja e parametrave = Struktura e re ("Burimi i të dhënave, Parametrat e burimit"); OpeningParameters.DataSource = AdditionalProcessingLink; OpeningParameters.SourceParameters = Strukturë e re("Identifikuesi i komandës, objektet e destinacionit"); OpeningParameters.SourceParameters.CommandIdentifier = CommandIdentifier; //Objektet që do të printohen dhe parametrat e futur në formë do të përpunohen //do të kalojmë përmes parametrit Parametrat e burimit.Objektet e destinacionit Hapja e parametrave.Parametrat e burimit.Objektet e destinacionit = GetDestination ObjectsAndPrint Parametrat(); OpenForm("GeneralForm.PrintDocuments", OpeningParameters,FormOwner,UniqueKey); Fundi i procedurës &Në funksionin e serverit GetDestinationObjectsAndPrintParameters()PrintData = DestinationObjects.Copy(); ///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// //////// //PJESË E MBIRREGULLAR E MODULIT // //Këtu krijojmë strukturën Parametrat e Printimit dhe e plotësojmë me parametrat //që duhen kaluar në funksionin e printimit Parametrat e printimit = Struktura e re; PrintOptions.Insert("Numri i rreshtave", Numri i rreshtave); PrintData.Insert(0, PrintOptions); //PJESË E MBIPERDEFINUAR E MODULIT ///////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////////// ///////////////// ReturnPrintData; Funksioni i Fundit

Në procedurën When CreateOnServer, ne plotësojmë tre detajet tona që krijuam për të ruajtur parametrat e kaluar në formularin e përpunimit.

Më pas, ne përcaktojmë një mbajtës për butonin e printimit në formular. Në këtë mbajtës, ne duhet të hapim vetë formularin "Print Documents"; për këtë ne duhet të përgatisim Parametrat e Hapjes së një strukture të caktuar. Në këtë strukturë, duhet të përcaktohen të paktën dy fusha:

Parametrat e burimit, të cilat përfshijnë identifikuesin e komandës dhe objektet e destinacionit:

ID-ja e komandës - ruhet gjithashtu kur krijohet në server, ky është identifikuesi i komandës që thirri formularin tonë të përpunimit. Prandaj, duke përdorur identifikuesin, do të përcaktojmë se çfarë duhet të printojmë në procedurën Print në modulin e objektit.

Objektet e caktimit - pikërisht në këtë fushë duhet të kalojmë një grup objektesh për të cilat krijohet forma e printuar, si dhe parametrat e kërkuar nga përdoruesi në formular.

Si i përcaktoj objektet e destinacionit mund të shihet në funksion GetObjectsDestinationsAndPrintOptions. Këtu kopjoj objektet tona të destinacionit nga mbështetësit e formularit, në vend të elementit të grupit me indeksin 0, ngjis parametrat tanë të printimit.

Në të ardhmen, grupi i përcaktuar në këtë mënyrë do të transferohet nga formulari “Print Documents” si parametër i parë i procedurës së modulit të objektit Print, të cilin e përcaktuam më herët.

Nëse kthehemi te përkufizimi i modulit të objektit përpunues dhe shikojmë funksionin PrintLayout, në tre rreshtat e parë të funksionit mund të shihni se si i nxjerr parametrat dhe objektet tona nga të dhënat e transferuara në procedurën Print dhe më pas punoj me to.

Manipulime të tilla me parametrin Assignment Objects përcaktohen nga specifikat e thirrjes së procedurës së modulit të objektit Print. Mund të gjurmoni vetë se si kalohen parametrat dhe si kryhen thirrjet e funksioneve duke hapur modulin e formularit të printimit të dokumentit.

Rezultati.

Si rezultat i manipulimeve të tilla, ne do të marrim tre komanda në formularin nga i cili duam të shfaqim formën e printuar:

Numërimi i komandave korrespondon me radhën e opsioneve të zbatimit.

Të gjitha këto komanda do të bëjnë të njëjtën gjë:

Shfaq formularin e kërkesës për parametra shtesë

Nxjerrja e formave të printuara të gjeneruara në formularin "Printo dokumente".. Pikërisht ajo që donim:

P.S. Si shabllone, për të zbatuar format e mia të printuara me një kërkesë për parametra shtesë, ngarkoj të dy proceset që përfshihen në të tre metodat e gjenerimit të një formulari të printuar.

Le të shqyrtojmë të shkruajmë formën më të thjeshtë të shtypur 1s 8.1 - 8.2 duke përdorur shembullin e konfigurimit Kontabiliteti i ndërmarrjes 2.0. Le të themi se duhet të shkruani një formë të jashtme të printuar për një dokument: shfaqni të dhënat bazë të dokumentit, si dhe nga pjesa tabelare Mallrat: nomenklatura, çmimi, sasia dhe sasia.

Ju mund ta shkarkoni shembullin që rezulton nga.

Në konfigurues 1C Ndërmarrjet 8 krijoni përpunim të jashtëm ( Skedar->I ri->Përpunim i jashtëm), vendosni emrin, krijoni detajet e kërkuara për formularin e printuar të jashtëm Referenca e objektit me llojin DocumentLink Shitjet e mallrave dhe shërbimeve.

Krijimi i një paraqitjeje të formës së printuar

Shto një të re faqosje, lini llojin e paraqitjes dokumenti i tabelës. Ne krijojmë tre zona në paraqitje: Kreu, të dhënat Dhe Bodrum. Kjo mund të bëhet duke zgjedhur numrin e kërkuar të rreshtave dhe duke klikuar menunë Tabela->Emrat->Cakto emrin (Ctrl+Shift+N).

Pas kësaj, ne fillojmë të vendosim tekstin dhe parametrat në zona. Ne do ta vendosim atë në kokë emri i formularit të printuar, numri i dokumentit Dhe organizimi, dhe gjithashtu vizatoni kufijtë e kokës së tabelës dhe shkruani emrat e kolonave. Kur krijoni një parametër në vetitë e qelizës, në skedën Layout duhet të vendosni vetinë Mbushje në kuptim Parametri.

Në zonë Të dhënat le të krijojmë parametra për shfaqjen e rreshtave në seksionin tabelor ( Nomenklatura, çmimi etj.), dhe në zonë Bodrum për totalet sipas sasisë dhe sasisë.

Programimi

Le të shkojmë te moduli i objektit të formularit të printimit Veprimet->Hap modulin e objektit.

Le të krijojmë një funksion eksporti atje që është i detyrueshëm për format e printuara. Vula ().

Printimi i funksionit () Eksporti Funksioni i Fundit

Në funksion do të krijojmë një variabël për dokumenti i tabelës, në të cilën do të dalë forma e shtypur, marrim faqosje Dhe zonat e paraqitjes.

TabDoc = TabularDocument i ri; Layout = GetLayout("Layout" ); HeaderArea = Layout.GetArea("Header" ); AreaData = Layout.GetArea("Data" ); AreaFooter = Layout.GetArea("Footer" );

Le të plotësojmë parametrat kapele dhe sillni atë në dokumenti i tabelës.

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

Për të marrë rreshtat e tabelës Mallrat ne përdorim kërkesën.

Kërkesë = Kërkesë e re; Request.SetParameter("Lidhje", ObjectLink); Query.Text = "ZGJEDH | Shitjet e mallrave dhe shërbimeve të mallrave Nomenklatura, | Shitjet e mallrave dhe shërbimeve të mallrave. | Shitjet e mallrave dhe shërbimeve të mallrave. | Shitjet e mallrave dhe shërbimeve të mallrave.sasia|NGA | Dokument.Shitjet e mallrave dhe shërbimeve.Mallrat SI të shiten mallra dhe shërbime mallra| KU | Shitjet e mallrave dhe shërbimeve të mallrave. Link = &Link";

Ne i kalojmë detajet në parametrin e kërkesës Referenca e objektit, për të treguar në gjendje KU, se na duhen të dhëna vetëm nga dokumenti nga i cili nxjerrim formën e printuar. Për të marrë një pyetje shembull, ne fillimisht e ekzekutojmë atë dhe më pas zgjedhim rreshtat.

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

Më pas në lak plotësojmë parametrat e zonës Të dhënat për çdo rresht të mostrës së dokumentit dhe shfaqini ato në dokumenti i tabelës. Ne gjithashtu llogarisim vlerat totale në lak sasive Dhe shumat. Ne nuk do të plotësojmë secilin parametër veç e veç, por përdorim procedurën Plotësoni vlerat e vetive ((<Приемник>, <Источник>) nga konteksti global, kopjon vlerat e pronës <Источника> ndaj pronave <Приемника> . Përputhja bëhet sipas emrave të pronave. Ju mund të lexoni më shumë rreth kësaj në asistenti i sintaksës 1C Enterprise 8.

Shuma totale = 0 ; Sasia totale = 0 ; Ndërsa Selection.Next() Loop FillPropertyValues(AreaData.Parameters,Selection); TotalSum = TotalSum + Sample.Sum; Sasia totale = Sasia totale + Sasia e mostrës; TabDoc.Output(AreaData); Cikli i Fundit ;

Plotësoni dhe shfaqni zonën Bodrum.

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

Kthimi i dokumentit të plotë të fletëllogaritës nga funksioni Vula ().

kthimi TabDoc;

Nëse jeni duke përdorur një nga konfigurimet standarde, atëherë pas kthimit të dokumentit të tabelës 1C do të shfaqë formën e printuar në ekran. Ju gjithashtu mund të përdorni metodën e dokumentit të fletëllogaritjes për dalje. Shfaqje().

5. Lidhja e një formulari të printuar me një dokument

konfigurimet standarde 1C 8 Ekziston një direktori për regjistrimin e formularëve të printuar të jashtëm Përpunimi i jashtëm. Për t'u lidhur, shkoni te menyja në modalitetin e ndërmarrjes Shërbimi->Raporte shtesë dhe përpunim->Forma shtesë të printuara të jashtme.

Shtoni një element të ri drejtorie, ngarkoni formularin e printuar nga disku dhe zgjidhni llojin e dokumentit.

Tani në dokument Shitjet e mallrave dhe shërbimeve Do të shfaqet një printim i ri.

Regjistrimi automatik i formularit të printuar

Për t'u siguruar që kur lidhni një formular printimi, nuk keni nevojë të zgjidhni manualisht llojin e dokumentit, mund ta konfiguroni regjistrim automatik. Për ta bërë këtë, shtoni një plan urbanistik të ri dhe telefononi atë Settings_Auto-regjistrimi(kjo është mënyra e vetme) dhe në qelizën e parë të saj shkruajmë Dokumentacioni.<Наименование документа> (ose Drejtoritë.<Наименование справочника> ).

Tani, kur lidhim një formular printimi, do të na kërkohet të përdorim parametrat e regjistrimit automatik.