Išorinė spausdinimo forma, atidaranti formą. Spausdintų formų su prašymu pateikti duomenis formoje „Dokumentų spausdinimas“ išvedimas iš BSP „Spausdinimo“ posistemio. Išorinis apdorojimo failas

Šiame straipsnyje bus išsamiai pasakyta, kaip pradedantysis, mažai išmanantis 1C 8, gali sukurti spausdintą formą. Pavyzdžiui, paimkime vieną iš labiausiai paplitusių 1C 8 konfigūracijų - Apskaita 2.0. Spausdintos formos kūrimas 1C rašymo etapai:

  • Išorinės spausdinimo formos failo kūrimas;
  • Spausdintos formos maketo sukūrimas;
  • Programos kodo rašymas atspausdintų formų duomenims rodyti ekrane;
  • Atspausdintos formos automatinio registravimo parametrų kūrimas;
  • Išorinės spausdinimo formos prijungimas prie pagrindo 1C įmonės.

Spausdintos formos 1C sukūrimas. Problemos formulavimas

Mes esame reikalingi konfigūracijoje Apskaita 2.0 sukurti spausdintą dokumento formą Prekių ir paslaugų gavimas. Išspausdintos formos antraštėje pateikite šiuos duomenis:

  • Organizavimas;
  • Sandorio šalis;
  • Sandorio šalies sutartis;
  • Čekio data.

Rodyti duomenis lentelės skyriuje kaip lentelę Prekės dokumentas. Lentelėje turėtų būti šie stulpeliai:

  • Nomenklatūra;
  • Kiekis;
  • Kaina;
  • Suma;
  • Taip pat prekės kaina einamajai datai (pagal kainos tipą iš dokumento).

Išorinis apdorojimo failas

Pereikime prie problemos sprendimo. Pirmiausia atidarykime 1C 8 režimu Konfigūratorius. Būtent šiuo režimu visi kūrimai atliekami platformoje 1C 8. Dabar turime sukurti išorinį apdorojimo failą. Norėdami tai padaryti, spustelėkite meniu Failas -> Naujas… arba naujo failo piktograma.

Atsidariusiame lange pasirinkite elementą Išorinis apdorojimas.

Toliau lauke vardas Turite įvesti išorinio apdorojimo pavadinimą. Mūsų atveju mes tiesiog pavadinsime jį „PrintForm“; sinonimo laukas bus užpildytas automatiškai. Atkreipkite dėmesį, kad lauke Vardas, išorinis apdorojimas, pavadinimas turėtų būti rašomas be tarpų ar skyrybos ženklų.

Pridėkime išorinio apdorojimo atributus LinkToObject ir pasirinkite tipo jam DocumentLink Prekių ir paslaugų gavimas. Norėdami tai padaryti, 1C išorinio apdorojimo metaduomenų medyje pasirinkite elementą Rekvizitai ir paspauskite mygtuką Papildyti(mygtukas su žaliu pliusu). Atributo ypatybių langas atsidarys dešinėje ekrano pusėje, lauke vardas parašykime - ReferenceToObject. IN lauke Tipas paspauskite mygtuką su trimis taškais.

Išplėskime šaką tipo medyje Dokumento nuoroda, ir ten raskite elementą Prekių ir paslaugų gavimas, pažymėkite šalia jo esantį langelį ir spustelėkite GERAI.

Išsaugokime išorinio apdorojimo failą standžiajame diske; norėdami tai padaryti, naudokite meniu Failas -> Išsaugoti, piktograma Sutaupyti(mėlynas diskelis) arba spartusis klavišas Ctrl + S. Pavadinkime išsaugotą failą „PrintForm“.

Spausdintos formos maketo kūrimas

Pradėkime kurti 1C spausdinimo formos maketą. Maketas tarnauja kaip spausdinimo formos išvesties šablonas, todėl jei norite, kad jūsų spausdinimo forma atrodytų gerai, turėtumėte į tai atkreipti dėmesį.

Pridėkime naują išdėstymą išorinio apdorojimo metaduomenų medyje; maketavimo kūrimo lange nieko nepakeisime ir spustelėkite mygtuką Paruošta.

Atsidariusiame naujame makete sukursime keletą sričių, reikalingų spausdintai formai rodyti. Visos mums reikalingos išdėstymo sritys bus horizontalios, todėl norėdami sukurti naują sritį, pasirinkite reikiamą išdėstymo eilučių skaičių ir eikite į meniu Lentelė -> Vardai -> Priskirti pavadinimą arba naudokite sparčiuosius klavišus Ctrl + Shift + N, tada laukelyje įveskite regiono pavadinimą. Kurdami išdėstymo sritį, nebijokite suklysti su eilučių skaičiumi; visada galite jas pridėti arba pašalinti. Norėdami ištrinti 1C išdėstymo eilutę, pasirinkite norimą eilutę ir pasirinkite elementą kontekstiniame meniu Ištrinti. Norėdami į maketą įtraukti naują eilutę, pasirinkite bet kurią išdėstymo eilutę ir pasirinkite elementą kontekstiniame meniu Išskleisti.

Išdėstymo antraštės pridėjimas

Pirmiausia sukurkime sritį Kepuraitė, bus rodomi spausdintos formos antraštės duomenys. Šiai sričiai mums reikės septynių išdėstymo eilučių. Pažymime juos ir, kaip rašiau aukščiau, paspauskite klavišų kombinaciją Ctrl + Shift + N, lauke vardas parašykite "Kepurę" ir paspauskite mygtuką Gerai.

Užpildykime maketo sritį reikalingais duomenimis. Paprastai nė viena spausdinta forma nėra baigta be pavadinimo, todėl sukurkime ją ir savo maketo antraštėje. Kadangi pavadinime be spausdintos formos pavadinimo dar rodysime ir dokumento, iš kurio jis buvo atspausdintas, numerį, makete kaip parametrą nustatysime pavadinimo tekstą. Išdėstymo parametras yra specialiai paskirtas išdėstymo langelis, į kurį galima išvesti įvairius duomenis naudojant integruotą 1C 8 kalbą. Pavadinimas turi būti rodomas per visą spausdintos formos plotį, todėl nuspręskime, kiek išdėstymo langelių užteks, kad galėtume spausdinti ant standartinės gulsčios lapo orientacijos.

Paprastai pakanka trylikos ar keturiolikos išdėstymo langelių, pažymėkite juos pirmoje srities eilutėje Kepuraitė ir sujungti į vieną ląstelę ( Kontekstinis meniu -> Sujungti). Po to dukart spustelėkite gautą didelę langelį ir parašykite parametro pavadinimą, mūsų atveju „TitleText“. Kad įvestas tekstas taptų visaverčiu parametru, dešiniuoju pelės mygtuku spustelėkite langelį ir kontekstiniame meniu pasirinkite elementą Savybės. Ant žymės Išdėstymas susiraskime lauką Užpildymas ir pasirinkite vertę Parametras. Parametrai 1C išdėstyme pažymėti skliausteliuose “<>».

Spausdintos formos antraštė turi išsiskirti iš kito teksto, todėl dar kartą pasirinkite langelį ir naudokite piktogramas maketo formatavimo skydelyje, kad nustatytumėte teksto lygiavimą Centruota ir šrifto dydis 14.

Po pavadinimo teksto mes jį rodysime srityje Kepuraitė informacija apie organizaciją, sandorio šalį, sandorio šalies sutartį ir prekių gavimo datą. Kadangi visi šie duomenys taip pat paimti iš dokumento, tai irgi įforminsime parametrais. Be to, prieš kiekvieną parametrą turėtumėte parašyti aiškinamąjį tekstą, kad vartotojas galėtų lengvai suprasti, kur yra organizacija, kur yra sandorio šalis ir pan. Visi šie veiksmai yra panašūs į pavadinimo kūrimą, todėl apie juos nesigilinsiu, tiesiog pateiksiu vaizdą, kas turėtų nutikti pabaigoje.

Paveikslėlyje parodyta, kaip išdėstymo parametrai skiriasi nuo įprasto teksto.

Išdėstymo lentelės antraštės pridėjimas

Paskutinis dalykas, kurį turime sukurti šioje išdėstymo srityje, yra lentelės antraštė, kurioje bus rodomi lentelės dalies duomenys Prekės. Lentelei reikalingi stulpeliai aprašyti skyriuje „Problemos pareiškimas“. Taip pat sukursime lentelės antraštę naudodami langelių derinį ir rašydami tekstą (stulpelių pavadinimus). Naudodami įrankį pasirinkite lentelės antraštės kraštus Rėmas, kuris yra išdėstymo formatavimo skydelyje.

Lentelės pridėjimas prie maketo

Sukurkime kitą maketo sritį - Duomenys. Joje bus rodoma lentelės dalies duomenų lentelė Prekės.Šioje srityje mums reikia tik vienos išdėstymo eilutės. Kad visos lentelės dalies eilutės būtų rodomos spausdintoje formoje, šią sritį užpildysime ir rodysime reikiamą skaičių kartų. Stulpeliai rajone Duomenys turėtų sutapti su lentelės antraštės stulpeliais, todėl ją užpildyti nebus sunku. Vienintelis skirtumas yra srityje Duomenys mums reikia parametrų, o ne tik teksto. Taip pat atkreipkite dėmesį, kad pagal numatytuosius nustatymus skaitmeniniai parametrai formatuojami dešinėje, o teksto – kairėje. Norėdami pasirinkti stulpelius, taip pat turite naudoti įrankį Rėmas.

Poraštės pridėjimas prie maketo

Paskutinė mums reikalinga išdėstymo sritis yra Rūsys. Jame bus rodomos sumos pagal kiekį ir sumą. Kūrimas panašus į srities kūrimą Duomenys, bet papildomai rezultatai turėtų būti paryškinti pusjuodžiu šriftu.

Galutinis rezultatas turėtų būti toks išdėstymas:

Spausdintos formos 1C sukūrimas. Programavimas

Pradėkime programuoti – tai svarbiausias etapas kuriant spausdintą formą. Visų pirma, eikime į išorinį spausdinimo formos objektų modulį, čia mes užprogramuosime. Norėdami tai padaryti, pagrindiniame išorinio apdorojimo lange spustelėkite Veiksmai -> Atidaryti objekto modulį.

Išoriniame spausdinimo formos objekto modulyje turite sukurti eksportavimo funkciją Antspaudas ().

Funkcija Spausdinti() Eksportuoti EndFunction

Atkreipkite dėmesį, kad ši funkcija reikalinga išorinėms spausdinimo formoms konfigūracijose naudojant įprastą programą. Visas paskesnis programos kodas, reikalingas spausdintai formai rodyti, bus įrašytas šios funkcijos viduje.

Pagrindinių kintamųjų inicijavimas

Sukurkime kintamąjį TabDoc, kuriame bus skaičiuoklės dokumentas – būtent tokia atspausdinta forma, į kurią rodysime užpildytas maketo sritis.

TabDoc = naujas lentelės dokumentas;

Į kintamąjį Išdėstymas Gausime savo sukurtą spausdintos formos maketą. Norėdami tai padaryti, naudojame įmontuotą funkciją GetLayout (<ИмяМакета>).

Išdėstymas = GetLayout("Išdėstymas");

Visas maketo sritis paversime kintamaisiais. Norėdami tai padaryti, naudojame išdėstymo metodą GautiArea(<ИмяОбласти>) .

HeaderArea = Layout.GetArea("Antraštė"); AreaData = Layout.GetArea("Duomenys"); AreaFooter = Layout.GetArea("Poraštė");

Spausdintos formos antraštės išvedimas į skaičiuoklės dokumentą

Visi reikalingi kintamieji inicijuojami. Pradėkime pildyti ir rodyti išdėstymo sritis skaičiuoklės dokumente. Pirmiausia užpildykime spausdinamos formos pavadinimą, tam reikia įvesti parametrą Pavadinimo tekstas, kurį sukūrėme makete, mums reikalingą tekstą. Norėdami užpildyti išdėstymo srities parametrų reikšmes, yra speciali kolekcija, vadinama - Galimybės. Iš kurio per „. galite gauti bet kokį parametrą. Antraštės tekste perkelsime tekstą: „Spausdinta forma“, taip pat dokumento numerį.

Antraštės sritis.Parameters.TitleText = "Spausdinti formą"+LinkToObject.Number;

Likusius antraštės parametrus užpildysime panašiai, visas jiems reikalingas reikšmes gausime iš detalių Objekto nuoroda, kuriame yra nuoroda į spausdintiną dokumentą.

HeaderArea.Parameters.Organization = LinkToObject.Organization; HeaderArea.Parameters.Account = LinkToObject.Account; HeaderArea.Parameters.ReceiptDate = ObjectLink.Date; Antraštės sritis.Parameters.Counterparty Agreement = LinkToObject.Counterparty Agreement;

Užpildyti visi antraštės parametrai, parodysime jį sukurtame skaičiuoklės dokumente, tam naudojame metodą Išvestis (<Область>) .

TabDoc.Output(Antraštės sritis);

Prašymo dėl spausdinto invalidumo rašymas

Pradėkime užpildyti ir piešti plotą Duomenys. Kuriant 1C spausdintą formą taip pat reikia parašyti užklausą; mums jos reikia norint gauti lentelės duomenis Prekės ir kainos Nomenklatūros dabartinei datai naudosime Prašymas. 1C 8 užklausos kalba yra panaši į SQL, tiksliau, praktiškai kopijuoja savo operatoriaus SELECT galimybes, tačiau visa užklausa parašyta rusų kalba. Todėl, jei bent jau miglotai esate susipažinęs su SQL, tuomet nesunkiai suprasite 1C 8 užklausos kalbą.

Šioje spausdintoje formoje užklausa bus gana paprasta ir daugelis sakys, kad būtų galima apsieiti ir be jos, tačiau užklausos kalbos žinios ir gebėjimas ją kompetentingai naudoti yra vienas pagrindinių 1C programuotojo įgūdžių. Užklausos leidžia gauti sudėtingų duomenų pavyzdžius naudojant mažiau išteklių, o užklausos tekstas yra daug lengviau suprantamas nei programos kodas, parašytas nenaudojant užklausos (arba ją naudojant minimaliai). Be to, 1C 8 turi labai gerą užklausų dizainerį, leidžiantį interaktyviai surinkti užklausą iš reikalingų lentelių.

Sukurkime kintamąjį, kuriame bus užklausa.

Užklausa = nauja užklausa;

Užklausos tekstą sudarysime naudodami užklausos konstruktorių. Norėdami pradėti, parašykime:

Request.Text = "";

Padėkite pelės žymeklį tarp kabučių ir paspauskite dešinįjį pelės mygtuką. Atsidariusiame kontekstiniame meniu pasirinkite elementą Prašyti konstruktoriaus, tai mums labai padės kuriant 1C spausdinimo formą. Po to atsidarys užklausos kūrėjo langas, kuriame yra daug skirtukų, tačiau mūsų užklausai reikės tik keturių: „Lentelės ir laukai“, „Ryšiai“, „Sąlygos“, „Prisijungimai / slapyvardžiai“.

Mūsų užklausai mums reikės dviejų lentelių: lentelės dalies Prekės dokumentas Prekių ir paslaugų gavimas ir naujausios informacijos apie esamą registro datą momentinę nuotrauką Prekių kainos.

Kairėje dizainerio lango pusėje randame stulpelį Duomenų bazė. Jame yra visų metaduomenų objektų medis, suraskime tuos, kurių mums reikia. Norėdami tai padaryti, atidarykime temą Dokumentacija ir suraskite dokumentą Prekių ir paslaugų gavimas, atidarykime jį ir raskime lentelės dalį Prekės, vilkite jį į užklausos kūrėjo stulpelį Lentelės. Galite vilkti trimis būdais: vilkdami, dukart spustelėdami lentelę arba pažymėdami ją ir spustelėdami mygtuką „>“. Atidarykime giją Informaciniai registrai ir susirask ten staliuką KainosNomenklatūra.Shortcut Naujausi, taip pat vilkite jį į stulpelį Lentelės. Šių dviejų lentelių pakanka mūsų užklausai.

Iš gautų lentelių išsirinkime mums reikalingus laukus. Norėdami tai padaryti, stulpelyje Lentelės atidarykime stalą ir raskite laukus: Nomenklatūra, kiekis, kaina, kiekis ir vilkite juos į trečiąjį konstruktoriaus stulpelį - Laukai. Išplėskime lentelę , suraskime lauką Kaina ir taip pat vilkite jį į Laukai.

Mūsų užklausos lentelių ir laukų struktūra yra paruošta, dabar pereikime prie sąlygų. Mums reikia lentelės duomenų Prekės buvo paimti ne iš visų kvitų, o tik iš to, kurį spausdiname. Norėdami tai padaryti, mes nustatysime lentelę sąlygą Prekių gavimasPaslaugosPrekės. Eikime į užklausų kūrėjo skirtuką „Sąlygos“. Stulpelyje Laukai lentelės, kurias pasirinkome anksčiau, yra, tokiai sąlygai mums reikės lauko Nuoroda nuo stalo Prekių ir paslaugų prekių gavimas, Nuvilkime jį į langą Sąlygos.

1C užklausose galite naudoti parametrus; jie reikalingi duomenims perkelti į užklausą. Pavyzdžiui, jei norime apriboti dokumentų pasirinkimą iki konkretaus dokumento, tada galime naudoti parametrą, kad pateiktume nuorodą į šį dokumentą į užklausą ir naudoti šį parametrą sąlygoje. Būtent tai ir padarysime savo prašyme.

Po langu Sąlygos pridėjome lauką Nuoroda, pats užklausos kūrėjas sukurs parametrą tuo pačiu pavadinimu ir įdės jį po „=“ ženklo. Jei pageidaujama, šį parametrą galima pervardyti. Prašymo tekste parametrai pažymėti „&“ ženklu, tačiau šiuo atveju tai nėra būtina, nes daroma prielaida, kad antroje sąlygos dalyje yra parametras, tereikia tai atsiminti. Kaip perduoti reikšmę 1C užklausos parametrui, bus aptarta toliau.

Kadangi užklausoje naudojame ne pilną prekių kainų lentelę, o virtualią (šiuo atveju pastarosios gabaliuką), turime nustatyti šios virtualios lentelės formavimo sąlygas, mūsų atveju tai yra atsiskaitymo data ir kainų tipo sąlyga (kainos turi griežtai apibrėžtą kainos tipą yra nurodytos kvito dokumente, kurį spausdiname).

Norėdami užpildyti virtualiosios lentelės parametrus, eikite į skirtuką Lentelės ir laukai užklausos konstruktorius, stulpelyje Lentelės pasirinkite lentelę KainosNomenklatūraPjovimasVėliau ir paspauskite mygtuką Virtualios lentelės parinktys, esantis viršuje. Atsidariusiame lange, lauke Laikotarpis turėtumėte nustatyti parametrą, iki kurio bus pereita data, kada bus sumažinta kaina. Mūsų atveju tai bus dabartinė data (tai yra šiandien), todėl parametrą vadinsime „&CurrentDate“. Sąlygų laukelyje rašysime sąlygas kainos tipui, taip pat perduosime parametre, kurį pavadinsime „&TypePrice“. Gauta sąlyga atrodys taip (kur TipasKaina- registruokite matavimą Prekių kainos):

Kainos tipas = &Kainos tipas

Užpildyti virtualios lentelės parametrai, spustelėkite mygtuką Gerai.

Dabar, kai apribojome pasirinkimą tik mums reikalingu dokumentu, sukurkime ryšius tarp užklausų lentelių. Jei to nepadarysite, kainos iš lentelės PricesNomenclatureSliceLast nebus susietos su preke iš kvito. Eikime į skirtuką Jungtys užklausų dizaineris. Sukurkime ryšį visoje srityje Nomenklatūra tarp mūsų dviejų stalų. Norėdami tai padaryti, paspauskite mygtuką Papildyti, lauke 1 lentelė pasirinkite lentelę Prekių gavimasPaslaugosPrekės, o lauke 2 lentelė – PricesNomenclature SliceLast. Ryšio sąlygose pasirinkite laukus Nomenklatūra iš abiejų lentelių.

Taip pat reikia pažymėti, kad užklausos pasirinkime turime gauti visas eilutes iš skirtuko dalies Prekės ir kainas tik tuo atveju, jei jos yra prieinamos esamą dokumento kainos tipo datą. Taigi, lentelės duomenys Prekės yra privalomi, tačiau kainų paskirstymo duomenų nėra. Todėl ryšiuose tarp šių lentelių būtina naudoti vadinamąjį LEFT JOIN, o kairioji (arba reikalinga) lentelė bus Prekių gavimasPaslaugosPrekės, ir teisingą (arba pasirenkamą) PriceNomenclatureSliceLast. Kad kairysis užklausų lentelių sujungimas veiktų taip, kaip aprašiau aukščiau, turite pažymėti langelį Visi po lauko 1 lentelė.


Prašymas beveik paruoštas, belieka šiek tiek padirbėti su lauko slapyvardžiais. Eikime į žymę Sąjungos/slapyvardžiai ir nustatykite lauko slapyvardį Kainos Nomenklatūra Slice Naujausias.Kaina. Slapyvardis bus - KainaŠiandien, jis reikalingas, kad sutaptų užklausos pasirinkimo laukų pavadinimai ir parametrų pavadinimai spausdintos formos makete.

Užklausų kūrėjo darbas baigtas, spustelėkite Gerai. Uždarius dizainerio langą pamatysite, kad eilutė su užklausos tekstu yra užpildyta ir atrodo taip:

Request.Text = "SELECT | Prekių ir paslaugų prekių gavimas. Nomenklatūra, | Prekių ir paslaugų prekių gavimas. Suma, | Prekių ir paslaugų prekių gavimas. Kaina, | Prekių ir paslaugų prekių gavimas. Kiekis, | Kainos Nomenklatūros pjūvis Paskutinė kaina AS KainaŠiandien | NUO menklatūra | = KainosNomenklatūraSliceLast. Nomenklatūra |KUR | Prekių gavimasPaslaugosProduktai.Nuoroda = &Nuoroda";

Prašymo vykdymas

Perduokime reikalingus parametrus užklausai, tam naudosime užklausos metodą SetParameter(<ИмяПараметра>,<Значение>). Norėdami gauti dabartinę datą, naudokite įtaisytąją funkciją Dabartinė data (), jis grąžina kompiuterio datą ir laiką.

Vykdykime užklausą, kad gautume pavyzdį su reikalingais duomenimis. Norėdami tai padaryti, pirmiausia naudokite užklausos metodą Vykdyti () o tada metodas Pasirinkite ().

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

Atspausdintos formos lentelės pildymas

Dėl to kintamajame Pavyzdys bus užklausos rezultatų pasirinkimas, galite naršyti jį naudodami metodą Kitas(), o norint pereiti visą reikalą, reikia kilpos Ate. Dizainas bus toks:

Nors Select.Next() Loop EndLoop;

Būtent šioje kilpoje užpildysime ir parodysime išdėstymo sritį Duomenys. Bet pirmiausia inicijuokime du skaitinio tipo kintamuosius. Juose mes surinksime sumas pagal kiekį ir sumą, kurią turime rodyti srityje Rūsys.

Bendra suma = 0; TotalQuantity = 0;

Kilpos viduje užpildysime plotą Duomenys duomenis iš dabartinio pasirinkimo elemento į kintamuosius Visas kiekis Ir TotalQuantity pridėkite sumos ir kiekio reikšmes ir galiausiai parodykite sritį skaičiuoklės dokumente naudodami mums jau žinomą metodą Išvestis (). Kadangi mūsų užklausos laukų pavadinimai visiškai sutampa su srities parametrų pavadinimais Duomenys, tada užpildymui naudosime įmontuotą procedūrą FillPropertyValues(<Приемник>, <Источник>), kuris kopijuoja nuosavybės vertes<Источника>į nuosavybes<Приемника>.

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

Spausdintos formos poraštės išvedimas į skaičiuoklės dokumentą

Belieka užpildyti ir parodyti paskutinę maketo sritį - Rūsys. Duomenis pildymui jau paruošėme, pildymas ir išėmimas vykdomi pagal tą pačią schemą.

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

Skaičiuoklės dokumentas yra visiškai užpildytas, belieka jį parodyti ekrane, kad vartotojas galėtų peržiūrėti atspausdintą formą ir, jei reikia, ją atsispausdinti. Tačiau įprastose 1C 8 konfigūracijose specialių modulių procedūros yra atsakingos už išorinių spausdintų formų išvedimą. Todėl pakanka grįžti iš funkcijos Antspaudas () užpildytas skaičiuoklės dokumentas.

Grąžinti TabDoc;

Šiuo metu programavimo etapas baigtas ir 1c spausdinimo formos sukūrimas beveik baigtas. Visas funkcijos tekstas Antspaudas ()Čia jo nepateiksiu, galite pažiūrėti spausdinamame faile, kurį galite atsisiųsti straipsnio apačioje.

Spausdintos formos 1C sukūrimas. Automatinės registracijos parinktys

Prijungiant išorinę spausdinimo formą prie duomenų bazės, sistema automatiškai nenustato, kuriam dokumentui ar žinynui skirta spausdinimo forma, ją reikia pasirinkti rankiniu būdu. Ir jei kitas asmuo parašė spausdintą formą, o jums pavesta tik ją sujungti, pasirinkimas gali tapti dviprasmiškas. Norint išvengti tokių problemų, visose išorinėse spausdintose formose būtina sukurti maketą su automatinio registravimo parametrais. Jei ji sukurta ir teisingai suformatuota, sistema automatiškai nustato, kuriam dokumentui ar žinynui skirta spausdinta forma.

Tai daroma taip:

  • Išorinio apdorojimo metu sukuriame naują maketą. Mes tai vadiname „Settings_Auto-Registration“ (svarbu nesuklysti!).
  • Pirmajame maketo langelyje rašome Dokumentacija.(arba Katalogai.) ir dokumento, prie kurio reikia prijungti spausdintą formą, pavadinimą.

Išorinės spausdinimo formos prijungimas prie pagrindo

  • Paleiskite 1C 8 režimu Bendrovė;
  • Eikite į meniu Paslauga -> Papildomos ataskaitos ir apdorojimas -> Papildomos išorinės spausdintos formos;
  • Spustelėkite mygtuką Papildyti;
  • Atsidariusiame lange spustelėkite piktogramą Pakeiskite išorinį apdorojimo failą;
  • Jei sukūrėte automatinės registracijos parametrus, sutinkame juos naudoti;
  • Jei nesukūrėte automatinės registracijos parametrų, tada lentelės dalyje Spausdinimo plokštės priedas pridėti reikiamą dokumentą ar žinyną;
  • Paspausk mygtuką GERAI.

Po to išorinė spausdinimo forma bus pasiekiama meniu Antspaudas dokumentas Prekių ir paslaugų gavimas. Dabar 1C spausdintos formos sukūrimas gali būti laikomas baigtu.

Visi ne kartą matė, kaip tipinėse konfigūracijose, sukurtose BSP (Standartinių posistemių bibliotekos) pagrindu, spausdintos formos, sukurtos remiantis skaičiuoklės dokumentu, išvedamos į specialią formą „Spausdinti dokumentai“. Ši forma yra BSP posistemio „Spausdinti“ dalis. Kuriant savo spausdintas formas, kartais reikia iš vartotojo paprašyti papildomų spausdinimui reikalingų duomenų. Čia kyla klausimas, kaip tokiu atveju pateikti atspausdintą formą formoje „Spausdinti dokumentą“. Šiame straipsnyje pažiūrėsiu, kaip realizuoti spausdintos formos išvedimą į minėtą formą iš posistemio „Spausdinti“, jei norime iš vartotojo paprašyti papildomų duomenų prieš išvedant spausdintą formą. Čia bus nagrinėjami du atvejai: kai spausdinta forma realizuojama naudojant „Papildomos ataskaitos ir apdorojimas“ posistemį ir kai spausdinta forma į konfigūraciją pridedama konfigūratoriaus režimu, t.y. atliekami standartinės konfigūracijos pakeitimai.

Forma "SpausdintiDokumentai" suteikia keletą papildomų funkcijų dirbant su spausdintomis formomis, pavyzdžiui:

  • mygtukas spausdinti į spausdintuvą tiesiai formoje;
  • egzempliorių skaičiaus nurodymas, spausdinta forma;
  • sugeneruotos spausdintos formos redagavimas;
  • galimybė išsaugoti spausdintą formą įvairiais duomenų formatais (Excel, Word, PDF ir kt.);
  • spausdintos formos siuntimas el. paštu;
  • Patogus darbas su dokumentų rinkiniu.

Dabar šią formą 1C naudoja visose standartinėse konfigūracijose, kad būtų rodomos spausdintos dokumentų formos ir katalogo elementai. Ir, žinoma, kurdami savo spausdintas formas, kad neperžengtume priimtos praktikos ribų, mes taip pat turėtume rodyti savo spausdintas formas naudodami pateiktus įrankius.

Naudojant standartinius spausdintų formų papildymo būdus, „Spausdinimo“ posistemis viską padarys už mus ir pagal poreikį parodys spausdintą formą. Pavyzdžiui:

  1. Pridėdami spausdinimo komandą prie dokumento naudodami posistemį „Spausdinti“, procedūroje Add Print Commands turime aprašyti spausdinimo komandą, nurodant spausdinimo tvarkyklę, kurioje yra įdiegta Spausdinimo procedūra;
  2. Kurdami Papildomą apdorojimą, apdorojimo objekto modulyje, esantį funkcijoje InformationOnExternalProcessing, turime aprašyti komandą, kurios naudojimo tipas yra serverio metodo iškvietimas ir nedelsiant įdiegti procedūrą Print, kuri tam tikru būdu įgyvendina iškvietimą generuoti spausdintą forma.

Tokiais atvejais, kaip jau sakiau, spausdinimo posistemis pagal poreikį išves mūsų pačių sugeneruotą spausdintą formą. Tokie metodai apima tiesioginį spausdinimo formos formavimą, t.y. perdavė spausdintinus objektus spausdinimo procedūrai, sugeneravo skaičiuoklės dokumentą ir atvaizdavo jį ekrane.

Ką daryti, jei prieš pradedant generuoti skaičiuoklės dokumentą reikia paprašyti vartotojo duomenų? Tie. turime parodyti formą. Tokiu atveju pažeidžiama standartinė spausdintos formos formavimo tvarka ir reikia galvoti, kaip savo spausdintą formą perkelti į formą „Dokumentai spausdinti“.

Šiuo atveju galimos dvi situacijos:

  1. Kai spausdinimo plokštė sukuriama pakeitus konfigūraciją;
  2. Kai spausdinta forma sukuriama nekeičiant konfigūracijos, t.y. Naudojamas posistemis „Papildomos ataskaitos ir apdorojimas“.

Spausdintą formą sukuriame pridedant per konfigūratorių.

Pirma variacija. Kuriant apdorojimą su komanda.

Ši parinktis apima apdorojimo pridėjimą tiesiai prie metaduomenų objektų:

Apsvarstykime galimybę, kai reikia įdiegti spausdintą tam tikro objekto formą, pavyzdžiui, katalogo elementą. Norėdami tai padaryti, turime dirbti keturiose apdorojimo srityse:

  1. Sukurkite komandą, kuri iškvies mūsų spausdinamą formą;
  2. Sukurkite pačią formą;
  3. Sukurti spausdintos formos maketą;
  4. Atlikite apdorojimo tvarkyklės modulio pakeitimus.

Komandos kūrimas

Komandos ypatybėse nurodykite:

  • Grupė, kurioje norime, kad komanda būtų rodoma formoje;
  • Parametrų tipas yra būtent tas žinynas arba dokumentas, kurio spausdintą formą darome;
  • Parametro naudojimo būdas yra Keli. Kad galėtumėte vienu metu rodyti kelių sąraše pasirinktų elementų spausdintas formas.

Komandų modulyje atidarome apdorojimo formą, perduodame jos pasirinktus katalogo elementus, kuriems reikia sugeneruoti spausdintas formas. Neskaidykime čia plaukų ir šiek tiek pataisykime standartinį kodą, kurį platforma įterpia į komandų apdorojimo procedūrą:

&Apie ClientCommand apdorojimo procedūrą (komandos parametras, komandų vykdymo parametrai) //Įterpkite tvarkyklės turinį. FormParameters = New Structure("DataForPrinting", CommandParameters); OpenForm("Apdorojama.SpausdintiForma.Forma",FormosParameters,Komandų vykdymo parametrai.Šaltinis,Komandų vykdymo parametrai.Unikalumas,Komandos vykdymo parametrai.Langas,Komandų vykdymo parametrai.Navigacijos nuoroda); Procedūros pabaiga

Procedūros parametras Command Parameter tiksliai apima elementus, kuriuos pasirinkome spausdinti.

Formos kūrimas

Pridėkime formą prie apdorojimo, sukurkime Vertybių sąrašo tipo formos atributą ir reikalingą informaciją, kad galėtume įvesti papildomus spausdintos formos parametrus:

DataForPrint - įveskite ListValues;

Eilučių skaičius – tipas Skaičius.

Mano pavyzdys bus tik demonstracinis, todėl sąlyginai nustatykime, kad mano tikslas yra atspausdinti pasirinkto elemento atvaizdą ir eilučių skaičių, kurį pasirenkame kaip papildomą parametrą formoje.

Eikite į formos modulį ir parašykite šį kodą:

&OnServerProcedureCreatingOnServer(gedimas, standartinis apdorojimas)PrintData.LoadValues(Parameters.PrintData); Procedūros pabaiga &Kliente Procedūra Spausdinti (komandą) Spausdinimo valdymasClient. Vykdykite spausdinimo komandą ("Processing.PrintForm", //Spausdinimo tvarkyklė "PrintForm", //Identifier GetObjectsForPrint(), //PrintObjectsThisObject, //Formos savininkas - forma, iš kurios spausdinama, vadinama GetPrintParameters( )); //Spausdinimo parametrai – savavališki parametrai, skirti perkelti į spausdinimo tvarkyklę Procedūros pabaiga &On Serverio funkcija GetObjectsForPrint() Array = DataForPrint.UploadValues(); Return Array; EndFunction &OnServer funkcija GetPrintParameters()PrintParameters = nauja struktūra; Spausdinimo parinktys.Insert("Formos pavadinimas", "Spausdinimo forma"); //Vienas iš formos „Spausdinti dokumentą“ parametrų. //Nurodo spausdinamos išvesties formos pavadinimą. //Čia pridedame savo parametrus, kuriuos norime papildomai perkelti į spausdinimo tvarkyklę. PrintOptions.Insert("Eilučių skaičius", Eilučių skaičius); ReturnPrintOptions; EndFunction

Apibrėžiame procedūrą WhenCreatingOnServer ir joje iš parametro, kurį perdavėme iš komandos atidarydami formą, perskaitome sąrašą objektų, kuriems reikia sugeneruoti spausdintą formą.

Formoje sukuriame komandą Print ir parašome jos tvarkyklę, kurioje vadiname bendrojo modulio funkciją ManagePrintClient.ExecutePrintCommand, nustatykite reikiamus šios funkcijos parametrus, būtent:

  • Spausdinimo tvarkyklė – objekto pavadinimas tvarkyklės modulyje, kurį apibrėžia funkcija Print, kuri sudaro mūsų spausdintą formą;
  • Identifikatorius – spausdinimo formos, kurią reikia atspausdinti, identifikatorius. Naudodami šį identifikatorių, tvarkyklės modulio funkcijoje Spausdinti pasirinksime, kurią spausdinimo formą reikia spausdinti;
  • Spausdinimo objektai yra tiesiogiai tie objektai, kuriems generuojamos spausdinimo formos;
  • Formos savininkas;
  • Spausdinimo parametrai - čia sukuriame ir perduodame struktūrą su spausdinimo parametrais, čia perduodame papildomus parametrus, kurių paprašėme iš vartotojo apdorojimo formoje.

Tiesą sakant, iš apdorojimo formos iškviečiame funkciją ExecutePrintCommand, išsprendžiame spausdintos formos išvedimo į formą „PrintDocuments“ problemą. Tada „Spausdinimo“ posistemis atliks standartinius veiksmus ir perves vykdymą į spausdinimo procedūrą, kurią turime apibrėžti savo apdorojimo tvarkyklės modulyje.

Spausdintos formos maketo kūrimas

Apdorojimo tvarkyklės modulio pakeitimai

Nuo šio momento mes atliekame standartinius spausdintų formų kūrimo veiksmus naudodami BSP posistemį „Spausdinti“.

Pridėkite šį kodą prie valdytojo modulio:

Procedūros spausdinimas (objektų masyvas, spausdinimo parametrai, spausdinimo formų rinkinys, spausdinimo objektai, išvesties parametrai) eksportuoti, jei spausdinimo valdymas. reikia spausdinti maketą (spausdinimo formų rinkinys, "spausdinimo forma"), tada valdykite spausdinimą. Lentelinį dokumentą išveskite į rinkinį (Spausdinimo formų rinkinys, forma "Spausdinimo forma", NStr("ru = "Spausdinimo forma""), PrintLayout(Objektų masyvas, Spausdinimo parametrai), "Apdorojama.Spausdinimo forma.PF_MXL_Spausdinimo forma",); endIf; Procedūros pabaiga &Įjungta serverio funkcija Spausdinimo išdėstymas (Objektų masyvas, spausdinimo parinktys) TabularDocument = naujas lentelės dokumentas; //Sukurti skaičiuoklės dokumentą ///////////////////////////////////////////// ////////////////////////////////////////////////// /////////////// //PERŽIŪRINTOJI MODULO DALIS // //Čia sukuriame savo spausdintą formą Layout = GetLayout("PF_MXL_PrintForm"); Kiekvienam objektui iš objektų masyvo Loop AreaHeader = Layout.GetArea("Antraštė"); RegionObject = Layout.GetArea("Objektas"); LentelinisDokumentas.Išvestis(Antraštės sritis); AreaObject.Parameters["Object"] = Objektas; LentelinisDocument.Output(AreaObject); Paskyrai = 1 ByPrint Options["Eilučių skaičius"] Cycle AreaLine = Layout.GetArea("Eilutė"); AreaString.Parameters["String"] = Skaičius; TabularDocument.Output(AreaString); EndCycle; TabularDocument.OutputHorizontalPageSeparator(); EndCycle; //PERTEIKTA MODULIO DALIS //////////////////////////////////////////// // ///////////////////////////////////////////////// ///////////////// Grąžinti lentelės dokumentą; //Grąžinti lentelės dokumentą Funkcijos pabaiga

Antras variantas. Įgyvendinant spausdinimo komandą.

Ši parinktis labai panaši į pirmąją spausdinimo įgyvendinimo požiūriu. Jos skirtumas yra būdas sukurti komandą, kuri bus rodoma sąsajoje ir pradės spausdinti.

Šiuo atveju, apibrėždami spausdinimo komandą, taip pat naudojame BSP posistemį „Spausdinti“. Užuot apibrėžę apdorojimo atidarymo komandą pačiame apdorojime, turime eiti į objekto, prie kurio norime pridėti spausdinimo formą, tvarkyklės modulį ir procedūroje nurodyti spausdinimo komandos aprašymą. AddPrintCommands (PrintCommands):

Procedūra AddPrintCommands(PrintCommands) ExportPrintCommand = PrintCommands.Add(); PrintCommand.Identifier = "Spausdinimo forma"; PrintCommand.View = NStr("ru = "Spausdinti spausdintą formą""); PrintCommand.Handler = "GeneralModulePrintForm.ProcessingPrintFormCommand"; PrintCommand.Order = 100; Procedūros pabaiga

Čia prie visų katalogų formų pridedame spausdinimo komandą „Spausdinti spausdintą formą“ (primenu, kad dirbame su sandorio šalių katalogu). Ir čia yra pagrindinis dalykas, į kurį reikia atsižvelgti. Formoje galite pridėti dviejų tipų komandas:

1. Spausdinimo procedūros iškvietimas iš tvarkyklės modulio;

2. Kliento metodo iškvietimas.

Būtent tai turime vadinti kliento metodu. Kliento metodas leis mums iškviesti apdorojimo formą, kurioje prieš spausdindami iš vartotojo paprašysime mums reikalingų duomenų.

Norint įgyvendinti tokį iškvietimą, apibrėžiant komandą būtina nurodyti jo tvarkyklę (žr. kodą aukščiau). Eilutę, kurioje yra kelias į kliento funkciją, perduodama komandų tvarkyklei, t.y. kelias į kliento bendro modulio eksportavimo funkciją. Būtent ši funkcija bus iškviesta spustelėjus spausdinimo komandą, kurią pridedame prie formų.

Kaip suprantate, kad tai veiktų, turite sukurti šį patį bendrąjį modulį ir apibrėžti funkciją Eksportuoti. Todėl bendrame modulyje rašome šį kodą:

Funkcija ProcessingPrintCommandPrintForm(PrintParameters) Eksportuoti //Įterpti tvarkyklės turinį. FormParameters = New Structure("DataForPrint", PrintParameters.PrintObjects); OpenForm ("Apdorojimas. Spausdinimo forma. Forma", FormParameters); EndFunction

Čia darome tą patį, kaip ir pirmojo diegimo metu, atidarome spausdinimo formą, tik dabar mūsų spausdinimo duomenys bus parametre, perduotame funkcijai Print Parameters, arba, tiksliau, jos lauke Print Objects.

Kai atidarome apdorojimo formą, visi veiksmai yra panašūs į pirmąją parinktį.

Šios parinkties įgyvendinimą galima rasti standartinėse konfigūracijose, mechanizmuose, susijusiuose su sutikimo tvarkyti asmens duomenis spausdinimu.

Sukuriame papildomą apdorojimą.

Ką daryti, jei tai nėra mūsų konfigūracija ir ji palaikoma? Ir apskritai, mes nenorime eiti į konfigūraciją ir jos redaguoti?

Tokiu atveju turime naudoti BSP posistemį „Papildomos ataskaitos ir apdorojimas“.

Naudodami šį sprendimą turime įrašyti kodą tik dviejose vietose ir visos jos bus toliau apdorojamos:

1. Apdorojimo objekto modulis;

2. Apdorojimo formos modulis.

Objekto modulyje rašome šį kodą:

////////////////////////////////////////////////// ////////////////////////// // PROGRAMOS SĄSAJA #Programos sąsajos sritis // Grąžina informaciją apie išorinį apdorojimą. Funkcija InformationOnExternalProcessing() ExportRegistrationParameters = AdditionalReportsAndProcessing.InformationOnExternalProcessing("2.2.2.1"); Registracijos parametrai.View = AdditionalReportsAndProcessingClientServer.ProcessingViewPrintedForm(); Registracijos parametrai.Versija = "1.0"; NewCommand = Registracijos parametrai.Commands.Add(); NewCommand.Presentation = NStr("ru = "Išorinė spausdinta forma su išankstine duomenų užklausa""); NewCommand.Identifier = "Išorinė spausdinimo forma"; NewCommand.Use = AdditionalReportsAndProcessingClientServer.CommandTypeOpenForm(); NewCommand.ShowAlert = Tiesa; NewCommand.Modifier = "PrintMXL"; ReturnRegistrationParameters; „EndFunctions“ procedūra Spausdinti (spausdinimo duomenys, spausdinimo formų rinkinys, spausdinimo objektai, išvesties parametrai) eksportuoti, jei spausdinimo valdymas. reikia spausdinimo išdėstymas (spausdinimo formų kolekcija, "išorinė spausdinimo forma") tada spausdinimo valdymas. išvesties lentelės dokumentas "), PrintLayout(PrintData ),); endIf; Procedūros pabaiga &Įjungta serverio funkcija PrintLayout(PrintData)PrintParameters = PrintData.Value; //Gauna spausdinimo parametrus iš pirmojo reikšmių sąrašo objekto elemento Array = PrintData.Copy(); //Nukopijuokite reikšmių sąrašą „ArrayObjects.Delete(0); //Ištrinti nukopijuoto elemento, kuriame yra spausdinimo parinktys, eilutes TabularDocument = New TabularDocument; //Sukurti skaičiuoklės dokumentą ///////////////////////////////////////////// ////////////////////////////////////////////////// /////////////// //PERŽIŪRINTA MODULO DALIS // //Čia sukuriame savo spausdintą formą Layout = GetLayout("Layout"); Kiekvienam objektui iš objektų masyvo Loop AreaHeader = Layout.GetArea("Antraštė"); RegionObject = Layout.GetArea("Objektas"); LentelinisDokumentas.Išvestis(Antraštės sritis); AreaObject.Parameters["Object"] = Objektas; LentelinisDocument.Output(AreaObject); Paskyrai = 1 ByPrint Options["Eilučių skaičius"] Cycle AreaLine = Layout.GetArea("Eilutė"); AreaString.Parameters["String"] = Skaičius; TabularDocument.Output(AreaString); EndCycle; TabularDocument.OutputHorizontalPageSeparator(); EndCycle; //PERTEIKTA MODULIO DALIS //////////////////////////////////////////// // ///////////////////////////////////////////////// ///////////////// Grąžinti lentelės dokumentą; //Grąžinkite skaičiuoklės dokumentą EndFunction #EndArea

Yra dvi funkcijos ir viena procedūra.

Standartinė papildomo apdorojimo funkcija yra InformationOnExternalProcessing(); be jos sistema nesupras, kad tai yra papildomas apdorojimas. Čia svarbu nurodyti, kad šiame apdorojime įdiegta komanda yra tipo Formos atidarymas. Tie. atidarysime anketą pagal poreikį. Toliau pateikiamas spausdinimo procedūros apibrėžimas ir funkcija, kuri tiesiogiai generuoja mūsų skaičiuoklės dokumentą.

Čia reikia atkreipti dėmesį į tai, kad spausdinimo komandoje šiuo atveju turėtų būti tik 4 parametrai, o ne 5, kaip tai yra įprasta spausdinimo komandos apibrėžimas tvarkyklės modulyje. Šiuo atveju nėra spausdinimo parametrų perdavimo parametro. Todėl turėsime būti kūrybingi, kad perteiktume ne tik pačius objektus, kuriems generuojama spausdinta forma, bet ir parametrus, kurių formoje prašome iš vartotojo.

Taigi mes apibrėžėme papildomą apdorojimą, kurio komanda atidarys apdorojimo formą. Todėl kitas žingsnis – sukurti apdorojimo formą.

Šioje formoje turime sukurti tris detales, kad išsaugotume vertybes, kurių mums prireiks vėliau. Pavadinkime šias detales taip:

Komandos ID – įveskite String

ObjectsAssignments – tipas Vertybių sąrašas

Šios formos modulyje rašome šį kodą:

&Serverio procedūroje Kuriant serveryje (gedimas, standartinis apdorojimas) //Kurdami serveryje atsiminkite standartinius parametrus, kuriuos perduoda Papildomos ataskaitosAndProcessing posistemis AdditionalProcessingLink = Parameters.AdditionalProcessingLink; CommandIdentifier = Parameters.CommandIdentifier; Destination Objects.LoadValues(Parameters.Destination Objects); EndProcedure &OnClient Procedūrų spausdinimas(komanda) // Gaukite atidaromos formos unikalumo raktą. UniqueKey = Eilutė(Naujas unikalusIdentifier); //Standartinių bendrosios formos parametrų apibrėžimas ir pildymas Print DocumentsOpening Parameters = New Structure("DataSource, SourceParameters"); OpeningParameters.DataSource = AdditionalProcessingLink; OpeningParameters.SourceParameters = New Structure("CommandIdentifier, DestinationObjects"); OpeningParameters.SourceParameters.CommandIdentifier = CommandIdentifier; //Bus apdorojami spausdinami objektai ir formoje įvesti parametrai //pereisime per parametrą Source Parameters.Destination ObjectsOpening Parameters.Source Parameters.Destination Objects = GetDestination ObjectsAndPrint Parameters(); OpenForm ("GeneralForm.PrintDocuments", OpeningParameters,FormOwner,UniqueKey); Procedūros pabaiga &Serverio funkcija GetDestinationObjectsAndPrintParameters()PrintData = DestinationObjects.Copy(); ////////////////////////////////////////////////// //////////////////////////////////////////////////// //////// //OVERRIGGED MODULE DALIS // //Čia sukuriame Print Parameters struktūrą ir užpildome ją parametrais //kurius reikia perduoti spausdinimo funkcijai Print Parameters = New Structure; PrintOptions.Insert("Eilučių skaičius", Eilučių skaičius); PrintData.Insert(0, Spausdinimo parinktys); //PERTEIKTA MODULIO DALIS //////////////////////////////////////////// // ///////////////////////////////////////////////// ///////////////// ReturnPrintData; EndFunction

Procedūroje When CreateOnServer užpildome tris detales, kurias sukūrėme, kad išsaugotume parametrus, perduotus į apdorojimo formą.

Toliau apibrėžiame formoje esančio spausdinimo mygtuko tvarkyklę. Šioje tvarkyklėje turime patys atidaryti formą „Spausdinti dokumentus“, tam turime paruošti tam tikros struktūros atidarymo parametrus. Šioje struktūroje turi būti apibrėžti bent du laukai:

Šaltinio parametrai, įskaitant komandos identifikatorių ir paskirties objektus:

Komandos ID – taip pat išsaugomas sukūrus serveryje, tai yra komandos, kuri iškvietė mūsų apdorojimo formą, identifikatorius. Todėl, naudodami identifikatorių, objekto modulio procedūroje Print nustatysime, ką turime spausdinti.

Priskyrimo objektai – būtent šiame lauke turime perduoti objektų masyvą, kuriam sugeneruojama spausdinta forma, bei parametrus, kurių prašoma iš vartotojo formoje.

Kaip apibrėžiu paskirties objektus, galima pamatyti funkcijoje GetObjectsDestinationsAndPrintOptions. Čia nukopijuoju mūsų paskirties objektus iš formos rekvizitų, vietoje masyvo elemento su indeksu 0 įklijuoju mūsų spausdinimo parametrus.

Ateityje tokiu būdu apibrėžtas masyvas bus perkeltas iš formos „Print Documents“ kaip pirmasis spausdinimo objekto modulio procedūros parametras, kurį apibrėžėme anksčiau.

Jei grįšime prie apdorojimo objekto modulio apibrėžimo ir pažvelgsime į funkciją PrintLayout, tai pirmose trijose funkcijos eilutėse matote, kaip aš ištraukiu mūsų parametrus ir objektus iš duomenų, perkeltų į Print procedūrą, ir tada dirbu su jais.

Tokias manipuliacijas su parametru Assignment Objects lemia Print object module procedūros iškvietimo specifika. Galite patys stebėti, kaip perduodami parametrai ir atliekami funkcijų iškvietimai, atidarę dokumentų spausdinimo formos modulį.

Rezultatas.

Dėl tokių manipuliacijų formoje, iš kurios norime rodyti spausdintą formą, gausime tris komandas:

Komandų numeracija atitinka įgyvendinimo parinkčių tvarką.

Visos šios komandos atliks tą patį:

Rodyti papildomų parametrų užklausos formą

Sugeneruotas spausdintas formas išveskite į formą „Spausdinti dokumentus“.. Būtent tai, ko norėjome:

P.S. Kaip šablonus, norėdamas įdiegti savo spausdintas formas su papildomų parametrų užklausa, įkeliu abu procesus, kurie yra susiję su visais trimis spausdintos formos generavimo būdais.

Apsvarstykime galimybę parašyti paprasčiausią spausdintą formą 1s 8,1–8,2 naudojant konfigūracijos pavyzdį Įmonės apskaita 2.0. Tarkime, kad reikia parašyti išorinę spausdintą dokumento formą: rodyti pagrindinius dokumento duomenis, taip pat iš lentelės dalies Prekės: nomenklatūra, kaina, kiekis ir suma.

Gautą pavyzdį galite atsisiųsti iš .

Konfigūratoriuje 1C įmonės 8 sukurti išorinį apdorojimą ( Failas->Naujas->Išorinis apdorojimas), nustatykite pavadinimą, sukurkite reikiamus išorinės spausdintos formos duomenis Objekto nuoroda su tipu DocumentLink Prekių ir paslaugų pardavimas.

Spausdintos formos maketo kūrimas

Pridėkite naują išdėstymas, palikite išdėstymo tipą skaičiuoklės dokumentas. Makete sukuriame tris sritis: Antraštė, duomenys Ir Rūsys. Tai galima padaryti pasirinkus reikiamą eilučių skaičių ir spustelėjus meniu Lentelė->Vardai->Priskirti pavadinimą (Ctrl+Shift+N).

Po to mes pradedame dėti tekstą ir parametrus srityse. Įdėsime jį į antraštę spausdintos formos pavadinimas, dokumento numeris Ir organizacija, taip pat nubrėžkite lentelės antraštės kraštus ir parašykite stulpelių pavadinimus. Kurdami parametrą langelio ypatybėse, skirtuke Layout turėtumėte nustatyti ypatybę Užpildymas prasme Parametras.

Teritorijoje Duomenys sukurkime parametrus, rodančius eilutes lentelės skyriuje ( Nomenklatūra, kaina ir tt), ir rajone Rūsys sumos pagal kiekį ir sumą.

Programavimas

Eikime į spausdinimo formos objekto modulį Veiksmai->Atidaryti objekto modulį.

Ten sukurkime eksporto funkciją, kuri yra privaloma spausdintoms formoms. Antspaudas ().

Funkcija Spausdinti () Eksportuoti EndFunction

Funkcijoje sukursime kintamąjį skaičiuoklės dokumentas, į kurią bus išvesta spausdinta forma, gauname išdėstymas Ir išdėstymo zonos.

TabDoc = naujas lentelės dokumentas; Išdėstymas = GetLayout("Išdėstymas" ); HeaderArea = Layout.GetArea("Antraštė" ); AreaData = Layout.GetArea("Duomenys" ); AreaFooter = Layout.GetArea("Poraštė" );

Užpildome parametrus skrybėlės ir atneškite į skaičiuoklės dokumentas.

HeaderArea.Parameters.HeaderText = +LinkToObject.Number; HeaderArea.Parameters.Organization = LinkToObject.Organization; TabDoc.Output(Antraštės sritis);

Norėdami gauti lentelės eilutes Prekės mes naudojame prašymą.

Užklausa = nauja užklausa; Request.SetParameter("Link", ObjectLink); Query.Text = "PASIRINKITE | Prekių ir paslaugų pardavimas Prekės. Nomenklatūra, | Prekių ir paslaugų prekių pardavimas. Suma, | Prekių ir paslaugų pardavimas Prekės. Kaina, | Prekių ir paslaugų pardavimas Prekės Kiekis|NUO | Dokumentas. Prekių ir paslaugų pardavimas Prekės KAIP parduoti prekes ir paslaugas Prekės|KUR | Prekių ir paslaugų prekių pardavimas. Nuoroda = &Nuoroda";

Išsamią informaciją perduodame užklausos parametrui Objekto nuoroda, nurodyti sąlygoje KUR, kad mums reikia duomenų tik iš dokumento, iš kurio gauname spausdintą formą. Norėdami gauti pavyzdinę užklausą, pirmiausia ją vykdome ir tada pasirenkame eilutes.

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

Toliau kilpoje užpildome ploto parametrus Duomenys kiekvienai dokumento pavyzdžio eilutei ir rodyti juos skaičiuoklės dokumentas. Taip pat apskaičiuojame bendras kilpos vertes kiekiai Ir sumos. Kiekvieno parametro atskirai neužpildysime, o naudosime procedūrą Užpildykite inPropertyValues((<Приемник>, <Источник>) pasaulinis kontekstas, jis kopijuoja nuosavybės vertes <Источника> į nuosavybes <Приемника> . Atitikimas atliekamas pagal nuosavybės pavadinimus. Daugiau apie tai galite perskaityti sintaksės asistentas 1C Enterprise 8.

BendraSuma = 0; Visas kiekis = 0; Nors Selection.Next() Loop FillPropertyValues(AreaData.Parameters,Selection); TotalSum = TotalSum + Sample.Sum; TotalQuantity = TotalQuantity + Sample.Quantity; TabDoc.Output(AreaData); EndCycle ;

Užpildykite ir parodykite sritį Rūsys.

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

Užpildyto skaičiuoklės dokumento grąžinimas iš funkcijos Antspaudas ().

grąžinti TabDoc;

Jei naudojate vieną iš standartinių konfigūracijų, tada grąžinkite skaičiuoklės dokumentą 1C ekrane bus rodoma atspausdinta forma. Taip pat išvesties galite naudoti skaičiuoklės dokumento metodą. Rodyti().

5. Spausdintos formos prijungimas prie dokumento

IN standartinės konfigūracijos 1C 8 Yra išorinių spausdintų formų registravimo katalogas Išorinis apdorojimas. Norėdami prisijungti, eikite į meniu įmonės režimu Paslauga->Papildomos ataskaitos ir apdorojimas->Papildomos išorinės spausdintos formos.

Pridėkite naują katalogo elementą, įkelkite spausdintą formą iš disko ir pasirinkite dokumento tipą.

Dabar dokumente Prekių ir paslaugų pardavimas Bus rodomas naujas spausdinimas.

Automatinis spausdintos formos registravimas

Norėdami užtikrinti, kad jungiant spausdinimo formą nereikėtų rankiniu būdu pasirinkti dokumento tipo, galite konfigūruoti automatinė registracija. Norėdami tai padaryti, pridėkite naują išdėstymą ir paskambinkite Nustatymai_Automatinis registravimas(tai vienintelis būdas) ir pirmoje jo langelyje rašome Dokumentacija.<Наименование документа> (arba Katalogai.<Наименование справочника> ).

Dabar, jungiant spausdinimo formą, mūsų bus paprašyta naudoti automatinės registracijos parametrai.