Ulkoinen painolomake avaa lomakkeen. Painettujen lomakkeiden tulostaminen tietopyynnön kanssa "Tulosta asiakirjat" -lomakkeella BSP "Print" -alijärjestelmästä. Ulkoinen käsittelytiedosto

Tämä artikkeli kertoo sinulle yksityiskohtaisesti, kuinka aloittelija, jolla on vähän tietoa 1C 8:sta, voi luoda painetun lomakkeen. Otetaan esimerkiksi yksi yleisimmistä 1C 8 -kokoonpanoista - Kirjanpito 2.0. Painetun lomakkeen luominen 1C kirjoitusvaiheet:

  • Ulkoisen tulostuslomaketiedoston luominen;
  • Painetun lomakkeen asettelun luominen;
  • Ohjelmakoodin kirjoittaminen tulostettujen lomaketietojen näyttämiseksi näytöllä;
  • Parametrien luominen painetun lomakkeen automaattista rekisteröintiä varten;
  • Ulkoisen painolomakkeen liittäminen alustaan 1C Yritykset.

Painetun lomakkeen 1C luominen. Ongelman muotoilu

Meitä vaaditaan kokoonpanossa Kirjanpito 2.0 luoda tulostettu lomake asiakirjalle Tavaroiden ja palveluiden vastaanotto. Näytä tulostetun lomakkeen otsikossa seuraavat tiedot:

  • Organisaatio;
  • Vastapuoli;
  • Vastapuolisopimus;
  • Reseptin päiväys.

Näytä taulukkoosion tiedot taulukkona Tavarat asiakirja. Taulukon tulee sisältää seuraavat sarakkeet:

  • Nimikkeistö;
  • Määrä;
  • Hinta;
  • Summa;
  • Ja myös tuotteen hinta nykyiselle päivälle (asiakirjan hintatyypin mukaan).

Ulkoinen käsittelytiedosto

Siirrytään ongelman ratkaisemiseen. Avataan ensin 1C 8 tilassa Konfiguraattori. Juuri tässä tilassa kaikki kehitystyöt suoritetaan 1C 8 -alustalla. Nyt meidän on luotava ulkoinen käsittelytiedosto. Voit tehdä tämän napsauttamalla valikkoa Tiedosto -> Uusi… tai uuden tiedoston kuvakkeella.

Valitse avautuvasta ikkunasta kohde Ulkoinen käsittely.

Seuraavaksi kentällä Nimi Sinun on annettava ulkoisen käsittelyn nimi. Meidän tapauksessamme kutsumme sitä yksinkertaisesti "PrintForm"; synonyymikenttä täytetään automaattisesti. Huomaa, että kentällä Nimi, ulkoisessa käsittelyssä nimi tulee kirjoittaa ilman välilyöntejä tai välimerkkejä.

Lisätään ulkoiset käsittelyattribuutit LinkToObject ja valitse kirjoita hänelle DocumentLink tavaroiden ja palveluiden vastaanotto. Voit tehdä tämän valitsemalla kohteen 1C:n ulkoisen käsittelyn metatietopuussa Tarvikkeet ja paina painiketta Lisätä(painike, jossa vihreä plus). Attribuutin ominaisuudet -ikkuna avautuu näytön oikealle puolelle, kenttään Nimi kirjoitetaan - ReferenceToObject. SISÄÄN ala Tyyppi paina kolmen pisteen painiketta.

Laajennetaan tyyppipuun haaraa DocumentLink, ja etsi sieltä elementti Tavaroiden ja palveluiden vastaanotto, valitse sen vieressä oleva valintaruutu ja napsauta OK.

Tallenna ulkoinen käsittelytiedosto kiintolevylle tehdäksesi tämän käyttämällä valikkoa Tiedosto -> Tallenna, kuvake Tallentaa(sininen levyke) tai pikanäppäin Ctrl+S. Nimetään tallennettu tiedosto "PrintForm".

Painetun lomakkeen asettelun luominen

Aloitetaan 1C-tulostuslomakkeen asettelun luominen. Taitto toimii mallina painetun lomakkeen tulosteelle, joten jos haluat, että tulostettu lomake näyttää hyvältä, siihen kannattaa kiinnittää huomiota.

Lisätään uusi asettelu ulkoiseen käsittelyn metatietopuuhun, emme muuta mitään asettelun suunnitteluikkunassa ja napsauta painiketta Valmis.

Avautuvaan uuteen ulkoasuun luomme useita painetun lomakkeen näyttämiseen tarvittavia alueita. Kaikki tarvitsemamme asettelualueet ovat vaakasuuntaisia, joten luodaksesi uuden alueen, valitse tarvittava määrä asettelurivejä ja siirry valikkoon Taulukko -> Nimet -> Anna nimi tai käytä pikanäppäintä Ctrl + vaihto + N, kirjoita sitten alueen nimi ruutuun. Kun luot asettelualuetta, älä pelkää tehdä virhettä rivien lukumäärässä, voit aina lisätä tai poistaa niitä. Jos haluat poistaa 1C-asettelurivin, valitse haluamasi rivi ja valitse kohde pikavalikosta Poistaa. Jos haluat lisätä asetteluun uuden rivin, valitse mikä tahansa asettelun rivi ja valitse kohde pikavalikosta Laajentaa.

Asetteluotsikon lisääminen

Ensinnäkin luodaan alue Lippalakki, se näyttää tulostetun lomakkeen otsikon tiedot. Tätä aluetta varten tarvitsemme seitsemän asetteluriviä. Valitaan ne ja, kuten yllä kirjoitin, paina näppäinyhdistelmää Ctrl + Vaihto + N, kentällä Nimi kirjoita "hattu" ja paina -painiketta OK.

Täytä asettelualue tarvitsemillamme tiedoilla. Yleensä mikään painettu lomake ei ole täydellinen ilman otsikkoa, joten luodaan sellainen myös asettelun otsikkoon. Koska otsikossa näytämme painetun lomakkeen nimen lisäksi myös sen asiakirjan numeron, josta se on tulostettu, asetamme otsikon tekstin asettelussa parametriksi. Asetteluparametri on erityisesti määritetty asettelusolu, johon voidaan tulostaa erilaisia ​​tietoja sisäänrakennetulla 1C 8 -kielellä. Otsikko tulee näkyä koko painetun lomakkeen leveydeltä, joten päätetään kuinka monta asettelusolua riittää, jotta voimme tulostaa arkin vakiovaakasuunnassa.

Yleensä kolmetoista tai neljätoista asettelusolua riittää, valitse ne alueen ensimmäiseltä riviltä Lippalakki ja yhdistä yhdeksi soluksi ( Kontekstivalikko -> Yhdistä). Tämän jälkeen kaksoisnapsauta tuloksena olevaa suurta solua ja kirjoita parametrin nimi, tässä tapauksessa "TitleText". Jotta syötetystä tekstistä tulee täysi parametri, napsauta hiiren kakkospainikkeella solua ja valitse kohde pikavalikosta Ominaisuudet. Kirjanmerkissä Layout etsitään kenttä Täyte ja valitse arvo Parametri. 1C-asettelun parametrit on merkitty suluilla "<>».

Painetun lomakkeen otsikon tulee erottua muun tekstin joukosta, joten valitse solu uudelleen ja aseta tekstin tasaus asettelun muotoilupaneelin kuvakkeilla Keskitetty ja fonttikoko 14.

Otsikkotekstin jälkeen näytämme sen alueella Lippalakki tiedot organisaatiosta, vastapuolesta, vastapuolisopimuksesta ja tavaroiden vastaanottopäivästä. Koska kaikki nämä tiedot on myös otettu dokumentista, muotoilemme sen myös parametreilla. Lisäksi ennen jokaista parametria tulee kirjoittaa selittävä teksti, jotta käyttäjä ymmärtää helposti missä organisaatio on, missä vastapuoli on jne. Kaikki nämä toimet ovat samanlaisia ​​kuin otsikon luominen, joten en käsittele niitä yksityiskohtaisesti, annan vain kuvan siitä, mitä lopulta pitäisi tapahtua.

Kuvassa näkyy, kuinka asetteluparametrit eroavat tavallisesta tekstistä.

Asettelutaulukon otsikon lisääminen

Viimeinen asia, joka meidän on luotava tälle asettelualueelle, on taulukon otsikko, johon taulukkoosan tiedot näytetään Tavarat. Taulukon tarvittavat sarakkeet on kuvattu "Ongelmaselostus" -osiossa. Luomme myös taulukon otsikon käyttämällä solujen yhdistelmää ja kirjoittamalla tekstiä (sarakkeiden nimet). Valitse työkalulla taulukon otsikon reunat Kehys, joka sijaitsee asettelun muotoilupaneelissa.

Taulukon lisääminen asetteluun

Luodaan asetteluun toinen alue - Data. Taulukkoosan tietotaulukko näytetään siinä Tavarat. Tätä aluetta varten tarvitsemme vain yhden asettelurivin. Jos haluat näyttää kaikki taulukko-osan rivit painetussa muodossa, täytämme ja näytämme tämän alueen tarvittavan määrän kertoja. Pylväät alueella Data pitäisi olla sama kuin taulukon otsikon sarakkeet, joten sen täyttäminen ei ole vaikeaa. Ainoa ero on alueella Data tarvitsemme parametreja, ei vain tekstiä. Huomaa myös, että oletusarvoisesti numeeriset parametrit muotoillaan oikealle ja tekstiparametrit vasemmalle. Jos haluat valita sarakkeita, sinun on myös käytettävä työkalua Kehys.

Alatunnisteen lisääminen asetteluun

Viimeinen tarvitsemamme asettelualue on Kellari. Se näyttää kokonaissummat määrän ja määrän mukaan. Luominen on samanlaista kuin alueen luominen Data, mutta lisäksi tulokset tulee korostaa lihavoituna.

Lopputuloksena pitäisi olla asettelu, joka näyttää tältä:

Painetun lomakkeen 1C luominen. Ohjelmointi

Aloitetaan ohjelmointi - tämä on tärkein vaihe painetun lomakkeen luomisessa. Ensinnäkin, siirrytään ulkoiseen tulostuslomakkeen objektimoduuliin, jossa ohjelmoimme. Voit tehdä tämän napsauttamalla ulkoisen käsittelyn pääikkunassa Toiminnot -> Avaa objektimoduuli.

Sinun on luotava vientitoiminto ulkoiseen tulostuslomakeobjektimoduuliin Tiiviste().

Funktio Print() Vie EndFunction

Huomaa, että tätä ominaisuutta tarvitaan ulkoisille tulostuslomakkeille kokoonpanoissa, joissa käytetään tavallista sovellusta. Kaikki myöhemmät ohjelmakoodit, jotka tarvitaan painetun lomakkeen näyttämiseen, kirjoitetaan tämän toiminnon sisään.

Perusmuuttujien alustaminen

Luodaan muuttuja TabDoc, joka sisältää laskentataulukkoasiakirjan - tämä on juuri se tulostettu lomake, johon näytämme asettelun täytetyt alueet.

TabDoc = uusi taulukkodokumentti;

Muuttujaan Layout Saamme luomamme painetun lomakkeen asettelun. Tätä varten käytämme sisäänrakennettua toimintoa GetLayout(<ИмяМакета>).

Layout = GetLayout("Asettelu");

Muunnamme kaikki asettelun alueet muuttujiksi. Tätä varten käytämme asettelumenetelmää HankiArea(<ИмяОбласти>) .

HeaderArea = Layout.GetArea("Otsikko"); AreaData = Layout.GetArea("Data"); AreaFooter = Layout.GetArea("Alatunniste");

Tulostetun lomakkeen otsikon tulostaminen laskentataulukkoasiakirjaan

Kaikki tarvittavat muuttujat alustetaan. Aloitetaan asettelualueiden täyttäminen ja näyttäminen laskentataulukkoasiakirjassa. Ensinnäkin täytetään tulostettavan lomakkeen otsikko, jota varten meidän on syötettävä parametri Otsikkoteksti, jonka loimme asettelussa, tarvitsemme tekstin. Asettelualueen parametriarvojen täyttämiseksi on olemassa erityinen kokoelma nimeltä - Vaihtoehdot. Mistä "." voit saada minkä tahansa parametrin. Otsikkotekstissä siirrämme tekstin: "Painettu lomake" sekä asiakirjan numeron.

Header Area.Parameters.TitleText = "Tulosta lomake"+LinkToObject.Number;

Täytämme loput otsikon parametrit samalla tavalla, saamme niille kaikki tarvittavat arvot Objektiviittaus, joka sisältää linkin tulostettavaan asiakirjaan.

HeaderArea.Parameters.Organization = LinkToObject.Organization; HeaderArea.Parameters.Account = LinkToObject.Account; HeaderArea.Parameters.ReceiptDate = ObjectLink.Date; Header Area.Parameters.Counterparty Agreement = LinkToObject.Counterparty Agreement;

Kaikki otsikon parametrit on täytetty, näytämme sen luomassamme laskentataulukkoasiakirjassa, tähän käytämme menetelmää Output(<Область>) .

TabDoc.Output(HeaderArea);

Painettu vammapyynnön kirjoittaminen

Aloitetaan alueen täyttäminen ja piirtäminen Data. 1C-painetun lomakkeen luominen edellyttää myös kyselyn kirjoittamista, jotta voimme saada taulukkotietoja Tavarat ja hinnat Nimikkeistöt nykyiselle päivälle, jota käytämme Pyyntö. 1C 8 -kyselykieli on samanlainen kuin SQL, tai pikemminkin käytännössä kopioi sen SELECT-operaattorin ominaisuudet, mutta koko kysely on kirjoitettu venäjäksi. Siksi, jos olet ainakin epämääräisesti perehtynyt SQL:ään, ymmärrät helposti 1C 8 -kyselykielen.

Tässä painetussa muodossa pyyntö on melko yksinkertainen ja monet sanovat, että se olisi mahdollista ilman sitä, mutta kyselykielen tuntemus ja kyky käyttää sitä pätevästi on yksi 1C-ohjelmoijan tärkeimmistä taidoista. Kyselyjen avulla voit saada monimutkaisia ​​tietonäytteitä käyttämällä vähemmän resursseja, ja kyselyn teksti on paljon helpompi ymmärtää kuin ohjelmakoodi, joka on kirjoitettu ilman kyselyä (tai käyttämällä sitä mahdollisimman vähän). Lisäksi 1C 8:ssa on erittäin hyvä kyselysuunnittelija, jonka avulla voit koota interaktiivisesti kyselyn tarvittavista taulukoista.

Luodaan muuttuja, joka sisältää pyynnön.

Pyyntö = Uusi pyyntö;

Kirjoitamme pyyntötekstin pyyntökonstruktorin avulla. Aluksi kirjoitetaan:

Request.Text = "";

Aseta hiiren osoitin lainausmerkkien väliin ja paina hiiren oikeaa painiketta. Valitse kohde avautuvasta pikavalikosta Pyydä rakentaja, se auttaa meitä paljon 1C-tulostuslomakkeen luomisessa. Tämän jälkeen avautuu kyselyn suunnitteluikkuna, jossa on useita välilehtiä, mutta kyselyämme varten tarvitsemme vain neljä: "Taulot ja kentät", "Suhteet", "Ehdot", "Liittymät / Alias".

Kyselyämme varten tarvitsemme kaksi taulukkoa: taulukkoosa Tavarat asiakirja Tavaroiden ja palveluiden vastaanotto ja tilannekuva viimeisimmistä tiedoista rekisterin nykyisestä päivämäärästä Kohteiden hinnat.

Suunnitteluikkunan vasemmasta reunasta löytyy sarake Tietokanta. Se sisältää puun kaikista metatieto-objekteista, etsitään tarvitsemamme. Tätä varten avataan ketju Dokumentointi ja etsi asiakirja Tavaroiden ja palveluiden vastaanotto, avataan se ja etsitään taulukkoosa Tavarat, vedä se kyselyn suunnittelijan sarakkeeseen Taulukot. Voit vetää kolmella tavalla: vetämällä, kaksoisnapsauttamalla taulukkoa tai valitsemalla sen ja napsauttamalla ”>”-painiketta. Avataan lanka Tietorekisterit ja etsi pöytä sieltä Hinnat Nimikkeistö.PikanäppäinViimeisin, vedä se myös sarakkeeseen Taulukot. Nämä kaksi taulukkoa riittävät kyselyymme.

Valitsemme tarvittavat kentät tuloksena olevista taulukoista. Voit tehdä tämän sarakkeessa Taulukot avataan pöytä ja etsi kentät: Nimikkeistö, määrä, hinta, määrä ja vedä ne konstruktorin kolmanteen sarakkeeseen - Kentät. Laajennetaan taulukkoa , etsitään kenttä Hinta ja vedä se myös Kentät.

Pyyntömme taulukoiden ja kenttien rakenne on valmis, siirrytään nyt ehtoihin. Tarvitsemme taulukkotietoja Tavarat ei otettu kaikista kuiteista, vaan vain tulostamme. Tätä varten asetamme pöydälle ehdon Tavaroiden vastaanottoPalvelutTavarat. Siirrytään kyselyn suunnittelijan "Ehdot"-välilehteen. Kolumnissa Kentät aiemmin valitsemamme taulukot sijaitsevat, ehtoa varten tarvitsemme kentän Linkki pöydältä Tavaroiden ja palveluiden vastaanotto, Vedetään se Ehdot-ikkunaan.

1C-pyynnöissä voit käyttää parametreja, joita tarvitaan tietojen siirtämiseen pyyntöön. Jos esimerkiksi haluamme rajoittaa asiakirjojen valinnan tiettyyn asiakirjaan, voimme käyttää parametria välittämään linkin tähän asiakirjaan pyyntöön ja käyttää tätä parametria ehdossa. Juuri näin teemme pyynnöstämme.

Ikkunan jälkeen ehdot lisäsimme kentän Linkki, kyselyn suunnittelija luo itse samannimisen parametrin ja sijoittaa sen =-merkin jälkeen. Tämä parametri voidaan haluttaessa nimetä uudelleen. Pyyntötekstissä parametrit on merkitty &-merkillä, mutta tässä tapauksessa tämä ei ole välttämätöntä, koska oletetaan, että ehdon toinen osa sisältää parametrin, sinun on vain muistettava tämä. Alla käsitellään arvon välittämistä 1C-pyyntöparametrille.

Koska pyynnössä emme käytä täyttä tuotteiden hintataulukkoa, vaan virtuaalista (tässä tapauksessa siivu jälkimmäisestä), meidän on asetettava ehdot tämän virtuaalitaulukon muodostamiselle, meidän tapauksessamme tämä on katkaisupäivä ja hintatyypin ehto (hinnat, joilla on tiukasti määritelty hintatyyppi, on ilmoitettu tulostetussa kuittitositteessa).

Täytä virtuaalitaulukon parametrit siirtymällä välilehteen Pöydät ja kentät kyselyn rakentaja, sarakkeessa Taulukot valitse taulukko Hinnat NimikkeistöLeikkausViimeisin ja paina painiketta Virtuaalipöydän asetukset, joka sijaitsee yläosassa. Avautuvassa ikkunassa kentällä Kausi sinun tulee asettaa parametri, johon hinnanalennuksen päivämäärä siirretään. Meidän tapauksessamme tämä on nykyinen päivämäärä (eli tänään), joten kutsumme parametria "&CurrentDate". Ehdot-kenttään kirjoitamme hintatyypin ehdot, välitämme sen myös parametriin, jota kutsumme nimellä "&TypePrice". Tuloksena oleva ehto näyttää tältä (jos Tyyppi Hinta- rekisteröi mittaus Kohteiden hinnat):

PriceType = &Hintatyyppi

Virtuaalitaulukon parametrit on täytetty, napsauta painiketta OK.

Nyt kun olemme rajoittaneet valinnan vain tarvitsemaani dokumenttiin, luodaan yhteyksiä kyselytaulukoiden välille. Jos näin ei tehdä, PricesNomenclatureSliceLast-taulukon hintoja ei yhdistetä kuitin tuotteeseen. Siirrytään välilehteen Liitännät kyselyn suunnittelija. Luodaan yhteys kentän yli Nimikkeistö kahden pöytämme välissä. Voit tehdä tämän painamalla -painiketta Lisätä, kentällä pöytä 1 valitse pöytä Tavaroiden vastaanottoPalvelutTavarat, ja kentässä Taulukko 2 - PricesNomenclatureSliceLast. Valitse viestintäehdoissa kentät Nimikkeistö molemmista pöydistä.

On myös huomattava, että kyselyn valinnassa meidän on saatava kaikki rivit välilehtiosasta Tavarat ja hinnat vain, jos ne ovat saatavilla kyseisenä päivänä asiakirjan hintatyypillä. Näin ollen taulukkotiedot Tavarat ovat pakollisia, mutta hintaerittelytietoja ei ole saatavilla. Siksi näiden taulukoiden välisissä suhteissa on tarpeen käyttää ns. LEFT JOINia, ja vasen (tai pakollinen) taulukko on Tavaroiden vastaanottoPalvelutTavarat, ja oikea (tai valinnainen) PriceNomenclatureSliceLast. Jotta kyselytaulukoiden vasen liitos toimisi yllä kuvatulla tavalla, sinun on valittava valintaruutu Kaikki kentän jälkeen Pöytä 1.


Pyyntö on melkein valmis, jäljellä on vain työstää hieman kenttäaliaksia. Mennään kirjanmerkkiin Liitot/aliakset ja aseta kentälle alias Hinnat Nimikkeistö Slice Latest.Price. Lempinimi tulee olemaan - HintaTänään, sitä tarvitaan, jotta kyselyn valintakenttien nimet ja tulostetun lomakkeen asettelun parametrien nimet täsmäävät.

Työ kyselyn suunnittelijassa on nyt valmis, napsauta OK. Kun suunnittelijaikkuna sulkeutuu, näet, että pyyntötekstirivi on täytetty ja näyttää tältä:

Request.Text = "VALITSE | Tavaroiden vastaanottoPalvelutTuotteet.Nimikkeistö, | Tavaroiden vastaanottoPalvelutTuotteet.Määrä, | Tavaroiden vastaanottoPalvelutTuotteet.Hinta, | Tavaroiden vastaanottoPalvelutTuotteet.Määrä, | ASHinnat.Vastaanottopäivä | GoodsServices.Goods AS Kuitti TuotteetPalvelutTuotteet |. LEFT CONNECTION RegisterInformation.HinnatNomenclature.SliceLast (| &NykyinenPvm, HintaTyyppi = &Hintatyyppi) AS HinnatSliceLast ON Receipt of GoodsductatureSer

Pyynnön toteuttaminen

Välitetään tarvittavat parametrit pyyntöön, käytämme pyyntömenetelmää SetParameter(<ИмяПараметра>,<Значение>). Saat nykyisen päivämäärän käyttämällä sisäänrakennettua toimintoa Nykyinen päivämäärä (), se palauttaa tietokoneen päivämäärän ja kellonajan.

Suoritetaan kysely saadaksemme näytteen tarvitsemistamme tiedoista. Käytä tätä varten ensin pyyntömenetelmää Juosta() ja sitten menetelmä Valita().

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

Painetun lomaketaulukon täyttäminen

Tämän seurauksena muuttujassa Näyte sisältää valikoiman kyselyn tuloksia, voit selata sitä menetelmällä Seuraava(), ja käydäksesi läpi koko asian, tarvitset silmukan Hei hei. Suunnittelu tulee olemaan seuraava:

Vaikka Select.Next() Loop EndLoop;

Juuri tässä silmukassa täytämme ja näytämme asettelualueen Data. Mutta ensin alustetaan kaksi numeerista muuttujaa. Niissä keräämme kokonaissummat määrien ja summien mukaan, jotka meidän on näytettävä alueella Kellari.

Kokonaissumma = 0; TotalQuantity = 0;

Silmukan sisällä täytämme alueen Data tiedot nykyisestä valintaelementistä muuttujiksi Kokonaismäärä Ja Kokonaismäärä lisää summa- ja määräarvot ja lopuksi näytä alue laskentataulukkodokumentissa meille jo tutulla menetelmällä Lähtö(). Koska pyyntömme kenttien nimet ovat täysin samat kuin alueparametrien nimet Data, käytämme täyttämiseen sisäänrakennettua menettelyä FillPropertyValues(<Приемник>, <Источник>), joka kopioi kiinteistöjen arvot<Источника>kiinteistöihin<Приемника>.

While Selection.Next() Loop FillPropertyValues(AreaData.Parameters,Selection); TotalSum = Kokonaissumma + Näyte.Summa; TotalQuantity = TotalQuantity + Sample.Quantity; TabDoc.Output(AreaData); EndCycle;

Tulostetun lomakkeen alatunnisteen tulostaminen laskentataulukkoasiakirjaan

On vielä täytettävä ja näytettävä asettelun viimeinen alue - Kellari. Olemme jo laatineet tiedot täyttämistä varten, täyttö ja nosto suoritetaan saman järjestelmän mukaisesti.

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

Laskentataulukkoasiakirja on täytetty kokonaan. Jäljelle jää vain sen näyttäminen näytöllä, jotta käyttäjä voi tarkastella tulostettua lomaketta ja tulostaa sen tarvittaessa. Mutta tyypillisissä 1C 8 -kokoonpanoissa erikoismoduulien menettelyt ovat vastuussa ulkoisten painettujen lomakkeiden tulostamisesta. Siksi funktiosta palaaminen riittää Tiiviste() valmis laskentataulukkoasiakirja.

Palauta TabDoc;

Tässä vaiheessa ohjelmointivaihe on valmis ja 1c-tulostuslomakkeen luominen on melkein valmis. Toiminnon koko teksti Tiiviste() En anna sitä tänne, voit katsoa sen tulostettavasta tiedostosta, jonka voit ladata artikkelin alalaidasta.

Painetun lomakkeen 1C luominen. Automaattisen rekisteröinnin vaihtoehdot

Kun liität ulkoisen painolomakkeen tietokantaan, järjestelmä ei automaattisesti määritä, mille asiakirjalle tai hakuteokselle painolomake on tarkoitettu, se on valittava manuaalisesti. Ja jos toinen henkilö kirjoitti painetun lomakkeen, ja sinun tehtäväsi on vain yhdistää se, valinnasta voi tulla epäselvä. Tällaisten ongelmien välttämiseksi kaikissa ulkoisissa painetuissa lomakkeissa on luotava asettelu automaattisella rekisteröintiparametreilla. Jos se on luotu ja muotoiltu oikein, järjestelmä määrittää automaattisesti, mille asiakirjalle tai hakuteokselle painettu lomake on tarkoitettu.

Se tehdään seuraavasti:

  • Ulkoisessa käsittelyssä luomme uuden asettelun. Kutsumme sitä "Settings_Auto-Registration" (on tärkeää, ettet tee virhettä!).
  • Kirjoitamme asettelun ensimmäiseen soluun Dokumentointi.(tai Hakemistot.) ja sen asiakirjan nimi, johon sinun on liitettävä painettu lomake.

Ulkoisen painolomakkeen liittäminen alustaan

  • Käynnistä 1C 8 tilassa Yhtiö;
  • Siirry valikkoon Palvelu -> Lisäraportit ja -käsittely -> Muita ulkoisia painettuja lomakkeita;
  • Napsauta painiketta Lisätä;
  • Napsauta avautuvassa ikkunassa kuvaketta Korvaa ulkoinen käsittelytiedosto;
  • Jos olet luonut automaattisen rekisteröinnin parametreja, suostumme käyttämään niitä;
  • Jos et ole luonut automaattisen rekisteröinnin parametreja, niin taulukkoosassa Tulostuslevyn lisävaruste lisää vaadittu asiakirja tai hakuteos;
  • painaa nappia OK.

Tämän jälkeen ulkoinen tulostuslomake on käytettävissä valikossa Tiiviste asiakirja Tavaroiden ja palveluiden vastaanotto. 1C painetun lomakkeen luomista voidaan nyt pitää valmiina.

Jokainen on nähnyt useammin kuin kerran, kuinka tyypillisissä BSP:n (Library of Standard Subsystems) pohjalta rakennetuissa konfiguraatioissa laskentataulukkodokumentin pohjalta rakennetut painetut lomakkeet tulostetaan erikoislomakkeelle “Print Documents”. Tämä lomake on osa BSP:n Print-alijärjestelmää. Omia painettuja lomakkeita kehitettäessä on joskus tarpeen pyytää käyttäjältä tulostamiseen tarvittavia lisätietoja. Tässä herää kysymys, kuinka tässä tapauksessa tulostettu lomake näytetään "Tulosta asiakirja" -lomakkeessa. Tässä artikkelissa tarkastelen, kuinka painetun lomakkeen tulostaminen mainitulle lomakkeelle toteutetaan "Tulosta"-alijärjestelmästä, jos haluamme pyytää käyttäjältä lisätietoja ennen painetun lomakkeen tulostamista. Tässä tarkastellaan kahta tapausta: kun painettu lomake toteutetaan "Lisäraportit ja -käsittely" -alijärjestelmällä ja kun painettu lomake lisätään konfigurointiin konfigurointitilassa, ts. vakiokokoonpanoon tehdään muutoksia.

"Print Documents" -lomake tarjoaa joitain lisätoimintoja, kun työskentelet painettujen lomakkeiden kanssa, kuten:

  • painike tulostaaksesi tulostimelle suoraan lomakkeessa;
  • ilmoitus kopioiden lukumäärästä, painettu lomake;
  • luodun painetun lomakkeen muokkaaminen;
  • kyky tallentaa painettu lomake eri tietomuodoissa (Excel, Word, PDF jne.);
  • painetun lomakkeen lähettäminen sähköpostitse;
  • Kätevä työskentely asiakirjojen kanssa.

1C käyttää nyt tätä lomaketta kaikissa vakiokokoonpanoissa asiakirjojen ja hakemistoelementtien painettujen muotojen näyttämiseen. Ja tietysti, kun kehitämme omia painettuja lomakkeitamme, jotta emme ylittäisi hyväksyttyä käytäntöä, meidän tulee näyttää myös painettuja lomakkeitamme mukana tulevilla työkaluilla.

Kun käytetään vakiomenetelmiä painettujen lomakkeiden lisäämiseen, "Tulosta"-alijärjestelmä tekee kaiken puolestamme ja näyttää painetun lomakkeen tarpeen mukaan. Esimerkiksi:

  1. Kun lisäät tulostuskomennon dokumenttiin "Tulosta"-alijärjestelmän avulla, meidän on kuvattava tulostuskomento Lisää tulostuskomennot -menettelyssä, mikä osoittaa tulostushallinnan, jossa Print-toiminto on toteutettu;
  2. Lisäkäsittelyä luotaessa meidän tulee InformationOnExternalProcessing-funktion käsittelyobjektimoduulissa kuvata komento, jonka käyttötyyppi on Call of a server method ja heti toteutettava Print-proseduuri, joka tietyllä tavalla toteuttaa kutsun tuottaa tulostettu muodossa.

Tällaisissa tapauksissa, kuten jo sanoin, tulostusalijärjestelmä tulostaa itse luomamme painetun lomakkeen tarpeen mukaan. Tällaisiin menetelmiin kuuluu suora painomuodon muodostaminen, ts. välitti tulostettavat objektit tulostusproseduuriin, loi laskentataulukkoasiakirjan ja näytti sen näytöllä.

Entä jos sinun on pyydettävä tietoja käyttäjältä ennen laskentataulukkoasiakirjan luomista? Nuo. meidän on näytettävä lomake. Tässä tapauksessa rikotaan painetun lomakkeen muodostamisen vakiojärjestystä ja meidän on pohdittava, kuinka painetun lomakkeemme siirretään "Tulosta asiakirjat" -lomakkeeseen.

Tässä tapauksessa kaksi mahdollista tilannetta:

  1. Kun painolevy luodaan konfiguraatiomuutoksella;
  2. Kun painettava lomake luodaan konfiguraatiota muuttamatta, ts. Käytössä on "Lisäraportit ja -käsittely"-alijärjestelmä.

Luomme painetun lomakkeen lisäämällä sen konfiguraattorin kautta.

Ensimmäinen variaatio. Luomalla käsittely joukkueen kanssa.

Tämä vaihtoehto sisältää käsittelyn lisäämisen suoraan metatietoobjekteihin:

Ajatellaanpa vaihtoehtoa, kun joudumme toteuttamaan tietyn objektin painetun muodon, esimerkiksi hakemistoelementin. Tätä varten meidän on työskenneltävä neljällä käsittelyalueella:

  1. Luo komento, joka kutsuu tulostettavaa lomakettamme;
  2. Luo itse lomake;
  3. Luo painetun lomakkeen asettelu;
  4. Tee muutokset käsittelynhallintamoduuliin.

Joukkueen luominen

Määritä komennon ominaisuudet:

  • Ryhmä, jossa haluamme joukkueen näkyvän lomakkeessa;
  • Parametrityyppi on juuri se hakuteos tai asiakirja, jonka painettua muotoa teemme;
  • Parametrin käyttötapa on Multiple. Jotta voit näyttää painetut lomakkeet useille luettelossa valituille elementeille kerralla.

Komentomoduulissa avaamme käsittelylomakkeen välittäen sen valitut hakemistoelementit, joille on tarpeen luoda painettuja lomakkeita. Älkäämme halkoko hiuksia tässä ja korjaamme hieman standardikoodia, jonka alusta lisää komentokäsittelyyn:

&ClientCommand-käsittelymenettelystä (komentoparametri, komennon suoritusparametrit) //Lisää käsittelijän sisältö. FormParameters = Uusi rakenne("DataForPrinting", CommandParameters); OpenForm("Käsittely.Tulostalomake.Lomake",Lomaparametrit,Komennonsuoritusparametrit.Lähde,CommandExecutionParameters.Aiqueness,CommandExecutionParameters.Window,CommandExecutionParameters.NavigationLink); EndProcedure

Toimenpideparametri Komentoparametri sisältää tarkasti ne elementit, jotka olemme valinneet tulostettaviksi.

Lomakkeen luominen

Lisätään lomake käsittelyyn, luodaan List of Values ​​-tyyppinen muotoattribuutti ja tarvittavat tiedot, jotta voimme syöttää lisäparametreja painetulle lomakkeelle:

DataForPrint - kirjoita ListValues;

Rivien lukumäärä - kirjoita Number.

Esimerkkini on puhtaasti havainnollistava, joten määritetään ehdollisesti, että tavoitteeni on tulostaa valitun elementin esitys ja rivien lukumäärä, jotka valitsemme lomakkeen lisäparametriksi.

Siirry lomakemoduuliin ja kirjoita seuraava koodi:

&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing)PrintData.LoadValues(Parameters.PrintData); Toimenpiteen päättyminen &Asiakasohjelmassa Proseduuri Tulosta (komento) TulostuksenhallintaClient.ExecutePrintCommand("Processing.PrintForm", //Print Manager "PrintForm", //Identifier GetObjectsForPrint(), //PrintObjectsThisObject, //lomakkeen omistaja josta tulostusta kutsutaan GetPrintParameters( )); //Tulosta parametrit - mielivaltaiset parametrit siirrettäväksi tulostushallintaan Toimenpiteen loppu &On Palvelintoiminto GetObjectsForPrint() Array = DataForPrint.UploadValues(); Return Array; EndFunction &OnServer-funktio GetPrintParameters()PrintParameters = Uusi rakenne; Tulostusasetukset.Insert("Lomakkeen otsikko", "Tulosta lomake"); //Yksi "Tulosta asiakirja" -lomakkeen parametreista. //Määrittää tulostettavan tulosteen otsikon. //Tähän lisäämme parametrimme, jotka haluamme lisäksi siirtää tulostushallintaan. PrintOptions.Insert("Rivien määrä", Rivien määrä); ReturnPrintOptions; EndFunction

Määrittelemme WhenCreatingOnServer-proseduurin ja luemme siinä lomaketta avattaessa komennosta välittämästämme parametrista listan objekteista, joille meidän täytyy luoda painettu lomake.

Luomme lomakkeeseen Print-komennon ja kirjoitamme sen käsittelijän, jossa kutsumme yleismoduulin funktiota ManagePrintClient.ExecutePrintCommand, aseta tämän toiminnon tarvittavat parametrit, nimittäin:

  • Print Manager - hallintamoduulissa olevan objektin nimi, jonka määrittää Print-toiminto, joka muodostaa painetun lomakkeemme;
  • Tunniste - tulostettavan painolomakkeen tunniste. Tämän tunnisteen avulla valitsemme hallintamoduulin Tulosta-toiminnossa, mikä tulostuslomake on tulostettava;
  • Tulostusobjektit ovat suoraan niitä objekteja, joille luodaan tulostuslomakkeet;
  • Lomakkeen omistaja;
  • Tulostusparametrit - tässä luomme ja välitämme rakenteen tulostusparametreineen, tässä välitämme lisäparametreja, joita pyysimme käyttäjältä käsittelylomakkeessa.

Itse asiassa, kutsumalla funktiota ExecutePrintCommand käsittelylomakkeesta, ratkaisemme ongelmamme tulostetun lomakkeen tulostamisesta "PrintDocuments" -lomakkeelle. Sitten "Tulosta"-alijärjestelmä suorittaa vakiotoiminnot ja vie suorituksen Print-menettelyyn, joka meidän on määritettävä käsittelymme hallintamoduulissa.

Painetun lomakkeen asettelun luominen

Muutosten tekeminen käsittelynhallintamoduuliin

Tästä hetkestä lähtien suoritamme vakiotoimenpiteitä painettujen lomakkeiden kehittämiseksi käyttämällä BSP:n Print-alijärjestelmää.

Lisää seuraava koodi managerimoduuliin:

Menettelytapa Tulosta (Objektit, Tulostusasetukset, Tulostuslomakkeiden kokoelma, Tulostusobjektit, Tulostusasetukset) Vie, jos tulostuksen ohjausobjekti on tulostettava (tulostuslomakkeiden kokoelma, "tulostuslomake") ja tulosta sitten taulukkomuotoinen asiakirja (Tulostuslomakkeiden kokoelma, "Tulosta lomake" -lomake", NStr("ru = "Tulosta lomake""), PrintLayout (objektien joukko, tulostusparametrit), "Processing.PrintForm.PF_MXL_PrintForm",); loppu Jos; Toimenpiteen loppu &Palvelintoiminto PrintLayout(Object Array, Print Options) TabularDocument = Uusi taulukkodokumentti; //Luo laskentataulukkoasiakirja ///////////////////////////////////////////// ////////////////////////////////////////////////// /////////////// //MODUULIN YLIKURVATTU OSA // //Tässä luomme painetun lomakkeemme Layout = GetLayout("PF_MXL_PrintForm"); Jokaiselle objektijoukosta olevalle objektille Loop AreaHeader = Layout.GetArea("Otsikko"); RegionObject = Layout.GetArea("Objekti"); Taulukkoasiakirja.Output(Otsikkoalue); AreaObject.Parameters["Object"] = Objekti; Taulukkoasiakirja.Output(AreaObject); Tilille = 1 ByPrint Options["Rivien määrä"] Cycle AreaLine = Layout.GetArea("Line"); AreaString.Parameters["String"] = Määrä; Taulukkodokumentti.Output(AreaString); EndCycle; TabularDocument.OutputHorizontalPageSeparator(); EndCycle; //YLIMÄÄRITELTY MODULI OSA ///////////////////////////////////////////// // ////////////////////////////////////////////////// ///////////////// Palauta taulukkodokumentti; //Palauta taulukkodokumentti Function End of Function

Toinen vaihtoehto. Tulostuskomennon toteuttamisen kautta.

Tämä vaihtoehto on hyvin samanlainen kuin ensimmäinen tulostustoteutuksen suhteen. Sen ero on tavassa luoda komento, joka näytetään käyttöliittymässä ja aloitetaan tulostus.

Tässä tapauksessa käytämme tulostuskomentoa määritettäessä myös BSP:n "Tulosta"-alijärjestelmää. Sen sijaan, että määrittäisimme käskyn käsittelyn avaamiseksi itse käsittelyssä, meidän on mentävä sen objektin hallintamoduuliin, johon haluamme lisätä tulostuslomakkeen, ja määritettävä tulostuskomennon kuvaus menettelyssä. AddPrintCommands (PrintCommands):

Toimenpide AddPrintCommands(PrintCommands) ExportPrintCommand = TulostaCommands.Add(); PrintCommand.Identifier = "Tulostalomake"; PrintCommand.View = NStr("ru = "Tulosta painettu lomake""); PrintCommand.Handler = "GeneralModulePrintForm.ProcessingPrintFormCommand"; PrintCommand.Order = 100; EndProcedure

Tässä lisäämme kaikkiin hakemistolomakkeisiin tulostuskomennon nimeltä "Tulosta painettu lomake" (muistutan, että teemme yhteistyötä vastapuolihakemiston kanssa). Ja tässä on tärkein seikka, joka on otettava huomioon. Voit lisätä lomakkeeseen kahdenlaisia ​​komentoja:

1. Tulosta-proseduurin kutsuminen hallintamoduulista;

2. Asiakasmenetelmän kutsuminen.

Juuri tätä meidän täytyy kutsua asiakasmenetelmäksi. Asiakasmenetelmän avulla voimme kutsua käsittelylomakkeen, jossa pyydämme käyttäjältä tarvitsemamme tiedot ennen tulostusta.

Tällaisen kutsun toteuttamiseksi on välttämätöntä määrittää sille Käsittelijä komentoa määritettäessä (katso koodi yllä). Asiakasfunktion polun sisältävä merkkijono välitetään komentokäsittelijälle, ts. polku asiakkaan yhteisen moduulin vientitoimintoon. Tämä toiminto kutsutaan, kun napsautat lomakkeisiin lisäämäämme tulostuskomentoa.

Kuten ymmärrät, jotta tämä toimisi, sinun on luotava tämä hyvin yleinen moduuli ja määritettävä vientitoiminto. Siksi kirjoitamme seuraavan koodin yleiseen moduuliimme:

Function ProcessingPrintCommandPrintForm(PrintParameters) Vie //Lisää käsittelijän sisältö. FormParameters = Uusi rakenne("DataForPrint", PrintParameters.PrintObjects); OpenForm("Processing.PrintForm.Form", FormParameters); EndFunction

Täällä tehdään samoin kuin ensimmäisessä toteutuksessa, avataan tulostuslomake, mutta nyt Print Datamme sisältyvät Print Parameters -funktiolle välitettyyn parametriin tai pikemminkin sen Print Objects -kenttään.

Käsittelylomakkeen avaamisen jälkeen kaikki toiminnot ovat samanlaisia ​​kuin ensimmäisessä vaihtoehdossa.

Tämän vaihtoehdon toteutus löytyy vakiokokoonpanoista, mekanismeista, jotka liittyvät henkilötietojen käsittelyn suostumuksen tulostamiseen.

Luomme lisäkäsittelyä.

Entä jos tämä ei ole kokoonpanomme ja sitä tuetaan? Ja yleensä, emme halua mennä kokoonpanoon ja muokata sitä?

Tässä tapauksessa meidän on käytettävä BSP:n "Lisäraportit ja -käsittely" -alijärjestelmää.

Tällä ratkaisulla meidän on kirjoitettava koodi vain kahteen paikkaan, ja ne kaikki ovat tulevassa lisäkäsittelyssämme:

1. Käsittelyobjektimoduuli;

2. Lomakemoduulin käsittely.

Objektimoduuliin kirjoitamme seuraavan koodin:

////////////////////////////////////////////////// ////////////////////////// // OHJELMALIITTYMÄ #OhjelmaLiitäntäalue // Palauttaa tiedot ulkoisesta käsittelystä. Function InformationOnExternalProcessing() ExportRegistrationParameters = AdditionalReportsAndProcessing.InformationOnExternalProcessing("2.2.2.1"); Rekisteröintiparametrit.View = AdditionalReportsAndProcessingClientServer.ProcessingViewPrintedForm(); Rekisteröintiparametrit.Versio = "1.0"; NewCommand = Rekisteröintiparametrit.Commands.Add(); NewCommand.Presentation = NStr("ru = "Ulkoinen painettu lomake alustavalla tietopyynnöllä""); NewCommand.Identifier = "ExternalPrintForm"; NewCommand.Use = AdditionalReportsAndProcessingClientServer.CommandTypeOpenForm(); NewCommand.ShowAlert = Tosi; NewCommand.Modifier = "PrintMXL"; ReturnRegistrationParameters; EndFunctions Procedure Tulosta (tulostustiedot, tulostuslomakkeiden kokoelma, tulostusobjektit, tulostusparametrit) Vie If PrintManage.NeedPrintLayout(PrintFormsCollection, "ExternalPrintForm") Sitten PrintManage.OutputTabularDocumentIntoCollection(PrintFormsCollection, "Nexternal" sheet, "External" "), PrintLayout(PrintData ),); loppu Jos; Toimenpiteen loppu &On Palvelintoiminto PrintLayout(PrintData)PrintParameters = PrintData.Value; //Vastaanottaa tulostusparametrit arvoluettelon Object Array ensimmäisestä elementistä = PrintData.Copy(); //Kopioi arvoluettelo ArrayObjects.Delete(0); //Poista tulostusasetukset sisältävän kopioidun elementin rivit TabularDocument = New TabularDocument; //Luo laskentataulukkoasiakirja ///////////////////////////////////////////// ////////////////////////////////////////////////// /////////////// //MODUULIN YLIKUVAUTETTU OSA // //Tässä luomme painetun lomakkeemme Layout = GetLayout("Layout"); Jokaiselle objektijoukosta olevalle objektille Loop AreaHeader = Layout.GetArea("Otsikko"); RegionObject = Layout.GetArea("Objekti"); Taulukkoasiakirja.Output(Otsikkoalue); AreaObject.Parameters["Object"] = Objekti; Taulukkoasiakirja.Output(AreaObject); Tilille = 1 ByPrint Options["Rivien määrä"] Cycle AreaLine = Layout.GetArea("Line"); AreaString.Parameters["String"] = Määrä; Taulukkoasiakirja.Output(AreaString); EndCycle; TabulaarinenDocument.OutputHorizontalPageSeparator(); EndCycle; //YLIMÄÄRITELTY MODULI OSA ///////////////////////////////////////////// // ////////////////////////////////////////////////// ///////////////// Palauta taulukkodokumentti; //Palauta laskentataulukkodokumentti EndFunction #EndArea

Siinä on kaksi toimintoa ja yksi menettely.

Lisäkäsittelyn vakiotoiminto on InformationOnExternalProcessing(); ilman sitä järjestelmä ei ymmärrä, että tämä on lisäkäsittelyä. Tärkeä asia tässä on osoittaa, että tässä käsittelyssä toteutettu komento on tyyppiä Lomakkeen avaaminen. Nuo. Avaamme lomakkeen tarpeen mukaan. Seuraavaksi määritellään Print-menettely ja funktio, joka luo suoraan laskentataulukkoasiakirjamme.

Tässä sinun on kiinnitettävä huomiota siihen, että tulostuskomennon tulisi tässä tapauksessa sisältää vain 4 parametria, ei 5, kuten hallintamoduulissa on tavallinen tulostuskomennon määritelmä. Tässä tapauksessa tulostusasetusten välittämiseen ei ole parametria. Siksi meidän on oltava luovia välittääksemme paitsi itse objektit, joille painettu lomake luodaan, myös parametrit, joita pyydämme käyttäjältä lomakkeessa.

Ja niin olemme määrittäneet lisäkäsittelyn, jonka komento avaa käsittelylomakkeen. Siksi seuraava vaihe on luoda käsittelylomake.

Tässä muodossa meidän on luotava kolme yksityiskohtaa tallentaaksemme arvot, joita tarvitsemme myöhemmin. Kutsutaan näitä yksityiskohtia seuraavasti:

Komentotunnus - kirjoita String

ObjectsAssignments - tyyppi List of Values

Tämän lomakkeen moduuliin kirjoitamme seuraavan koodin:

&Palvelinmenettelyssä Luodessasi palvelimelle (virhe, StandardProcessing) //Palvelimella luodessasi muista Standardiparametrit, jotka AdditionalReportsAndProcessing-alijärjestelmä on lähettänyt AdditionalProcessingLink = Parameters.AdditionalProcessingLink; CommandIdentifier = Parameters.CommandIdentifier; Destination Objects.LoadValues(Parameters.Destination Objects); EndProcedure &OnClient Procedure Print(Command) // Hanki avattavan lomakkeen yksilöllisyysavain. UniqueKey = Merkkijono(uusi yksilöllinen tunniste); //Yleisen lomakkeen vakioparametrien määrittäminen ja täyttäminen Print DocumentsOpening Parameters = New Structure("DataSource, SourceParameters"); OpeningParameters.DataSource = AdditionalProcessingLink; OpeningParameters.SourceParameters = Uusi rakenne("Komentotunniste, KohdeObjects"); OpeningParameters.SourceParameters.CommandIdentifier = CommandIdentifier; //Tulostettavat objektit ja lomakkeelle syötetyt parametrit käsitellään //käymme parametrin Lähdeparametrit.KohdeobjektitAvaamisparametrit.Lähdeparametrit.Destination Objects = GetDestination ObjectsAndPrint Parameters(); OpenForm("GeneralForm.Print Documents", OpeningParameters,FormOwner,UniqueKey); Toimenpiteen loppu &Palvelintoiminnossa GetDestinationObjectsAndPrintParameters()PrintData = DestinationObjects.Copy(); ////////////////////////////////////////////////// //////////////////////////////////////////////////// //////// //MODUULIN OVERRIGGED OSA // //Tässä luodaan Print Parameters -rakenne ja täytetään se parametreilla //jotka on välitettävä tulostusfunktiolle Print Parameters = New Structure; PrintOptions.Insert("Rivien määrä", Rivien määrä); PrintData.Insert(0, Tulostusasetukset); //YLIMÄÄRITELTY MODULI OSA ///////////////////////////////////////////// // ////////////////////////////////////////////////// ////////////////// ReturnPrintData; EndFunction

Kun CreatingOnServer -menettelyssä täytämme kolme tietomme, jotka loimme tallentaaksemme käsittelylomakkeelle välitetyt parametrit.

Seuraavaksi määritämme lomakkeen tulostuspainikkeen käsittelijän. Tässä käsittelijässä meidän on avattava "Tulosta asiakirjat" -lomake tätä varten meidän on valmisteltava tietyn rakenteen avausparametrit. Tässä rakenteessa on määritettävä vähintään kaksi kenttää:

Lähdeparametrit, jotka sisältävät komentotunnisteen ja kohdeobjektit:

Komentotunnus - tallennetaan myös palvelimelle luodessaan. Tämä on käsittelylomakkeemme kutsuneen komennon tunniste. Siksi määritämme tunnisteen avulla, mitä meidän on tulostettava objektimoduulin Print-menettelyssä.

Assignment Objects - tässä kentässä meidän on välitettävä joukko objekteja, joille tulostettu lomake luodaan, sekä lomakkeessa käyttäjältä pyydetyt parametrit.

Kuinka määritän kohdeobjekteja, näkyy funktiossa GetObjectsDestinationsAndPrintOptions. Tänne kopioin kohdeobjektit lomakkeen rekvisiittasta, taulukon elementin tilalle indeksillä 0, liitän tulostusparametrimme.

Jatkossa tällä tavalla määritetty taulukko siirretään "Tulosta asiakirjat" -lomakkeesta aiemmin määrittämämme Print object module -proseduurin ensimmäisenä parametrina.

Jos palaamme käsittelyobjektimoduulin määritelmään ja katsomme PrintLayout-funktiota, funktion kolmella ensimmäisellä rivillä näet kuinka poimimme parametrimme ja objektimme Print-proseduuriin siirretystä tiedosta ja työskentelen niiden kanssa.

Tällaiset Assignment Objects -parametrin käsittelyt määräytyvät Print object module -proseduurin kutsumisen erityispiirteiden mukaan. Voit itse seurata parametrien välitystä ja funktiokutsuja avaamalla Asiakirjan tulostus -lomakemoduulin.

Tulos.

Tällaisten manipulointien seurauksena saamme kolme komentoa lomakkeelle, josta haluamme näyttää tulostetun lomakkeen:

Komentojen numerointi vastaa toteutusvaihtoehtojen järjestystä.

Kaikki nämä komennot tekevät saman asian:

Näytä lisäparametrien pyyntölomake

Tulosta tulostetut lomakkeet "Tulosta asiakirjat" -lomakkeelle. Juuri mitä halusimme:

P.S. Malleina omien tulostettujen lomakkeiden toteuttamiseksi lisäparametreja pyytäen lataan molemmat prosessit, jotka ovat mukana kaikissa kolmessa painetun lomakkeen luontitavassa.

Harkitse yksinkertaisimman painetun lomakkeen kirjoittamista 1s 8.1 - 8.2 käyttämällä konfigurointiesimerkkiä Yrityskirjanpito 2.0. Oletetaan, että sinun on kirjoitettava asiakirjalle ulkoinen painettu lomake: näytä asiakirjan perustiedot sekä taulukkoosasta Tavarat: nimikkeistö, hinta, määrä ja määrä.

Voit ladata tuloksena olevan esimerkin osoitteesta.

Konfiguraattorissa 1C Yritykset 8 luo ulkoinen käsittely ( Tiedosto-> Uusi->ulkoinen käsittely), aseta nimi, luo tarvittavat tiedot ulkoiselle painetulle lomakkeelle Objektiviittaus tyypin kanssa DocumentLink: Tavaroiden ja palveluiden myynti.

Painetun lomakkeen asettelun luominen

Lisää uusi layout, jätä asettelutyyppi laskentataulukkoasiakirja. Luomme asetteluun kolme aluetta: Otsikko, tiedot Ja Kellari. Tämä voidaan tehdä valitsemalla tarvittava määrä rivejä ja napsauttamalla valikkoa Taulukko->Nimet->Anna nimi (Ctrl+Shift+N).

Tämän jälkeen alamme sijoittaa tekstiä ja parametreja alueille. Laitamme sen otsikkoon painetun lomakkeen nimi, asiakirjan numero Ja organisaatio, ja myös piirrä taulukon otsikon rajat ja kirjoita sarakkeiden nimet. Kun luot parametria solun ominaisuuksiin, sinun tulee asettaa ominaisuus Layout-välilehdellä Täyte merkityksessä Parametri.

Alueella Data luodaan parametrit rivien näyttämiseksi taulukkoosassa( Nimikkeistö, hinta jne.) ja alueella Kellari kokonaissummat määrän ja määrän mukaan.

Ohjelmointi

Siirrytään tulostuslomakkeen objektimoduuliin Toiminnot->Avaa objektimoduuli.

Luodaan sinne vientifunktio, joka on pakollinen painetuille lomakkeille. Tiiviste().

Toiminto Tulosta () Viedä EndFunction

Funktiossa luomme muuttujan for laskentataulukkoasiakirja, johon painettu lomake tulostetaan, saamme layout Ja asettelualueet.

TabDoc = uusi taulukkodokumentti; Layout = GetLayout("Asettelu" ); HeaderArea = Layout.GetArea("Otsikko" ); AreaData = Layout.GetArea("Data" ); AreaFooter = Layout.GetArea("Alatunniste" );

Täytetään parametrit hatut ja tuo se sinne laskentataulukkoasiakirja.

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

Saadaksesi taulukon rivit Tavarat käytämme pyyntöä.

Pyyntö = uusi pyyntö; Request.SetParameter("Link", ObjectLink); Query.Text = "VALITSE | Tavaroiden ja palveluiden tavaroiden nimikkeistö. | Tavaroiden ja palveluiden tavaroiden määrä, | Tavaroiden ja palveluiden myyntihinta, | Tavaroiden ja palveluiden myynti määrä|FROM | Asiakirja tavaroiden ja palveluiden myyntiin| MISSÄ | Tavaroiden ja palveluiden myynti Link = &Linkki";

Välitämme tiedot pyyntöparametriin Objektiviittaus, ilmoittaa tilassa MISSÄ, että tarvitsemme tietoja vain siitä asiakirjasta, josta johdamme painetun lomakkeen. Saadaksesi esimerkkikyselyn suoritamme sen ensin ja valitsemme sitten rivit.

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

Seuraavaksi silmukassa täytämme alueen parametrit Data jokaiselle asiakirjanäytteen riville ja näytä ne laskentataulukkoasiakirja. Laskemme myös silmukan kokonaisarvot määriä Ja määriä. Emme täytä jokaista parametria erikseen, vaan käytämme menettelyä Täytä inPropertyValues((<Приемник>, <Источник>) alkaen globaalissa kontekstissa, se kopioi kiinteistöjen arvot <Источника> kiinteistöihin <Приемника> . Vastaaminen tapahtuu ominaisuuksien nimillä. Voit lukea tästä lisää kohdasta syntaksiavustaja 1C Enterprise 8.

Kokonaissumma = 0; Kokonaismäärä = 0; While Selection.Next() Loop FillPropertyValues(AreaData.Parameters,Selection); TotalSum = Kokonaissumma + Näyte.Summa; TotalQuantity = TotalQuantity + Sample.Quantity; TabDoc.Output(AreaData); EndCycle ;

Täytä ja näytä alue Kellari.

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

Täydellisen laskentataulukkoasiakirjan palauttaminen funktiosta Tiiviste().

palauta TabDoc;

Jos käytät jotakin vakiokokoonpanoista, laskentataulukkoasiakirjan palauttamisen jälkeen 1C näyttää tulostetun lomakkeen näytöllä. Voit käyttää tulostukseen myös taulukkolaskentamenetelmää. Näytä().

5. Painetun lomakkeen liittäminen asiakirjaan

SISÄÄN vakiokokoonpanot 1C 8 Ulkoisten painettujen lomakkeiden rekisteröintiä varten on hakemisto Ulkoinen käsittely. Muodosta yhteys siirtymällä valikkoon yritystilassa Palvelu->Lisäraportit ja -käsittely->Lisä ulkoiset painetut lomakkeet.

Lisää uusi hakemistoelementti, lataa tulostettu lomake levyltä ja valitse asiakirjan tyyppi.

Nyt dokumentissa Tavaroiden ja palveluiden myynti Uusi tulostettava tulee näkyviin.

Painetun lomakkeen automaattinen rekisteröinti

Varmistaaksesi, että sinun ei tarvitse valita asiakirjatyyppiä manuaalisesti tulostuslomaketta liitettäessä, voit määrittää automaattinen rekisteröinti. Voit tehdä tämän lisäämällä uuden asettelun ja kutsumalla sitä Asetukset_Automaattinen rekisteröinti(tämä on ainoa tapa) ja sen ensimmäiseen soluun kirjoitamme Dokumentointi.<Наименование документа> (tai Hakemistot.<Наименование справочника> ).

Nyt kun yhdistämme painolomakkeen, meitä pyydetään käyttämään automaattisen rekisteröinnin parametrit.