Paglikha ng napi-print na form sa 1C 8. Pagdaragdag ng panlabas na napi-print na form sa database. Pagkonekta ng panlabas na form sa pag-print sa base

Isinasagawa ayon sa karaniwang layout nakalimbag na anyo, na binuo sa application ng mga developer (ito ay tinatawag na "naihatid" na layout).

Kung kinakailangan, maaari mong baguhin ang karaniwang layout at, sa hinaharap, mag-print ng dokumento batay sa iyong personal na layout ("custom"). Upang i-edit ang layout ng naka-print na form, isang mekanismo ang ibinigay para sa pag-upload sa isang lokal na computer. Ang pag-edit ng layout ay isinasagawa sa lokal na bersyon ng 1C:Enterprise system application (sa partikular, maaari mong gamitin libreng aplikasyon 1C:Enterprise - Paggawa gamit ang mga file).


Para baguhin ang napi-print na layout:




Ang pag-edit ng layout ng naka-print na form ay nakumpleto kapag nagpi-print ng dokumento, ang layout kung saan ginawa ang mga pagbabago ay gagamitin.

Kung gusto mong bumalik sa dating napi-print na layout, i-click ang button Gumamit ng karaniwang layout. Sa kasong ito, ang na-edit na layout ay mananatili pa rin sa server, at maaari itong i-on muli sa pamamagitan ng pagpindot sa pindutan Baguhin.

Nais namin sa iyo ng kaaya-ayang trabaho!

Paano magpasok ng logo ng kumpanya sa isang naka-print na layout ng form?

Narito ang isang partikular na halimbawa ng pag-edit ng layout ng naka-print na form Mga invoice para sa pagbabayad, ibig sabihin, isasaalang-alang namin kung paano magpasok ng isang imahe dito, halimbawa, isang logo ng kumpanya (ang larawang ito ay dapat munang ihanda at i-save bilang isang graphic na file, halimbawa, sa png o jpg na format).


Kaya, ngayon ang mga invoice na inihahanda mo para sa paglipat sa iyong mga katapat ay maglalaman ng logo ng iyong kumpanya. Upang magdagdag ng logo sa iba pang mga dokumento, kakailanganin mong ulitin ang inilarawan na mga hakbang para sa kaukulang mga naka-print na form ng mga dokumentong ito.

Nais namin sa iyo ng kaaya-ayang trabaho!

Ang mga panlabas na naka-print na form para sa isang regular na aplikasyon (para sa pagsasaayos ng Enterprise Accounting 2.0, Salary at Human Resources Management 2.5, Trade Management 10.3, atbp.) ay ginawa nang simple kumpara sa mga panlabas na naka-print na form para sa isang pinamamahalaang aplikasyon.

Bakit lumikha ng panlabas na mga form sa pag-print?

Ang bentahe ng isang panlabas na plato sa pagpi-print kumpara sa isang maginoo ay ang pag-iwas nito sa mga pagbabago sa pagsasaayos base ng impormasyon. Nangangahulugan ito na ang proseso ng mga kasunod na pag-update ng configuration ay hindi magiging kumplikado. Bilang karagdagan, ang mga panlabas na form sa pag-print kasama ang panlabas na pagproseso ay ang tanging opsyon para sa pagpapalawak ng pag-andar mga pangunahing bersyon 1C configurations na hindi na mababago sa lahat.

At isang huling bagay: ang mga panlabas na naka-print na form ay mas madaling kopyahin, dahil sila ay isang hiwalay na file na maaaring mabilis na konektado sa infobase.

Paano lumikha ng isang panlabas na form sa pag-print

Tingnan natin ang proseso ng paglikha ng panlabas na 1C printed form na hakbang-hakbang:

  1. Lumilikha kami ng panlabas na pagproseso. Upang gawin ito, piliin ang item ng menu sa configurator File - Bago... At sa dialog box na bubukas - Panlabas na pagproseso.
  2. Gumawa ng external processing attribute na may pangalan Sanggunian ng Bagay. Ang uri ng katangian ay isang link sa isang direktoryo o dokumento kung saan gumagawa ng panlabas na naka-print na form. Ang parehong form ay maaaring gamitin para sa ilang mga uri ng mga bagay, sa kasong ito ang uri ng data ng katangian Sanggunian ng Bagay dapat composite.
  3. Sa object module gumawa kami ng export function na may pangalan selyo, na dapat magbalik ng naka-print na dokumento ng spreadsheet.

Madalas na nangyayari na kailangan mong bahagyang ayusin ang layout ng isang umiiral na naka-print na form at gawin itong panlabas. Halimbawa, idagdag ang selyo ng organisasyon at ang lagda ng manager sa layout.

Paglikha ng isang panlabas na form sa pag-print batay sa isang karaniwang isa na may maliit na pagbabago

Isaalang-alang natin ang pamamaraang ito gamit ang halimbawa ng paglikha ng panlabas na naka-print na anyo ng isang unibersal na dokumento ng paglilipat para sa isang dokumento Pagbebenta ng mga kalakal at serbisyo 1C: Accounting. Mag-iiba ito sa karaniwang naka-print na form sa pamamagitan ng pagkakaroon ng selyo ng organisasyon.

  1. Paglikha ng panlabas na pagproseso gamit ang mga props Sanggunian ng Bagay, uri ng datos - DocumentLink.
  2. Nahanap namin ang layout ng karaniwang UPD na naka-print na form (ito ay matatagpuan sa pangkalahatang mga layout) at kopyahin (i-drag) ito sa panlabas na window ng pagproseso. Ang mga layout ng iba pang mga naka-print na form ay maaaring matatagpuan sa mismong mga dokumento o mga reference na libro.
  3. Ginagawa namin ang mga kinakailangang pagbabago sa kinopyang layout ng naka-print na form.
  4. Nakita namin ang function na responsable para sa pagbuo ng naka-print na form. Dapat ibalik ng function na ito ang nabuong dokumento ng spreadsheet. Kopyahin ang mga nilalaman nito sa export function Seal() sa external processing object module.
    Sa aming kaso ito ang function PrintUniversalTransferDocument() Export mula sa module ng object object Pagbebenta ng mga kalakal at serbisyo.
    Kung ang mga pagbabago sa layout ay makabuluhan (mga lugar at/o mga parameter ay nabago), pagkatapos ay dapat gawin ang mga naaangkop na pagsasaayos sa print function.
  5. Sinusubukan naming i-save ang panlabas na pagpoproseso. Gayunpaman, malamang na makakatanggap ka ng mga mensahe ng error na nagpapahiwatig na ang ilan sa mga pamamaraan at function na tinatawag ng print function ay nawawala. Ang mga function at procedure na ito ay dapat matagpuan sa source na dokumento at makopya din sa external processing object module. O ayusin ang link kung na-export ang orihinal na function o procedure.
  6. (hindi kinakailangan). Upang subukan ang isang panlabas na form sa pag-print, ito ay maginhawa upang gumawa ng isang form kung saan ilalagay ang mga props Sanggunian ng Bagay. Pindutan Ipatupad dapat tumawag ng procedure Seal() mula sa object module. Upang gawin ito, ang kaganapan ng pag-click sa pindutan ay binibigyan ng isang pamamaraan:

Kaya! Mayroong isang pagsasaayos (halimbawa, "Pamamahala ng Kalakalan", edisyon 10.3), at para dito kinakailangan na bumuo ng isang panlabas na naka-print na form. Halimbawa, kunin natin ang karaniwang dokumento na "Invoice para sa pagbabayad sa mamimili" (bagaman ang mga panlabas na naka-print na form ay maaaring malikha hindi lamang para sa mga dokumento, kundi pati na rin para sa mga direktoryo).

Halimbawa para sa 1C 8.3 (Mga pinamamahalaang form)

Maaaring tingnan ang isang halimbawa ng pagbuo ng panlabas na naka-print na form para sa isang pinamamahalaang aplikasyon.

Gawain

Bumuo ng isang panlabas na naka-print na form na makukuha mula sa dokumentong "Invoice para sa pagbabayad sa mamimili", at kung saan ay naglalaman ng pangalan ng organisasyon, ang katapat at isang listahan ng mga kalakal na may presyo, halaga at dami.

Go!

Ang unang bagay na kailangan mong gawin ay lumikha ng isang panlabas na processing file. Ang pagproseso ay dapat maglaman ng tatlong pangunahing punto:
  1. Ang attribute na "Object Link" na may uri na "DocumentLink.Invoice for Payment to Buyer"
  2. Ang layout na ipi-print
  3. I-export ang Function na "Print()" na nagbabalik ng spreadsheet na dokumento
Ang mga pagkilos na ito ay makikita sa Figure 1

"Pagguhit ng layout"

Maglalaman ang aming layout ng dalawang lugar:
  1. Ang pamagat (header) ng dokumento (ang mga pangalan ng organisasyon at ang katapat ay ilalagay sa lugar na ito), at ang header ng talahanayan (na may mga pangalan ng mga column)
  2. Table na may mga kalakal (mga column na may pangalan, dami at halaga)
Ipinapakita ng Figure No. 2 ang layout ng panlabas na form sa pag-print. Pakitandaan na ang mga cell ng talahanayan at header ay naglalaman ng mga parameter, hindi lamang teksto.

Function na "Print()"

Ang form ay halos handa na. Ang natitira na lang ay magsulat ng programmatic filling ng mga field ng spreadsheet na dokumento. Ang mga pagkilos na ito ay ginagawa sa processing object module, sa isang function na tinatawag na "Print", na DAPAT ma-export.
Stage No. 1. Pagtanggap ng data para sa header, pagpuno sa mga parameter ng header, at pag-output nito sa isang spreadsheet na dokumento TabularDocument = Bagong TabularDocument; Layout = GetLayout("OurLayout"); Kahilingan sa Data = Bagong Kahilingan("PUMILI | REPRESENTASYON(Invoice para sa Pagbabayad sa Mamimili. Counterparty) BILANG Counterparty, | REPRESENTASYON(Invoice para sa Pagbabayad sa Mamimili. Organisasyon) BILANG Organisasyon | MULA | Dokumento. Invoice para sa Pagbabayad sa Mamimili BILANG Invoice para sa Pagbabayad sa Mamimili |. SAAN |. Data Request.SetParameter("Link", ObjectLink); Header = DataRequest.Execute().Select(); Cap.Next(); Lugar = Layout.GetArea("Header"); Area.Options.Fill(Header); TabularDocument.Output(Area); Yugto Blg. 2. Pagtanggap ng tabular data at line-by-line na output ng mga produkto
Data Request.Text = "PUMILI | _Products.Line Number, | REPRESENTATION(_Products.Nomenclature) AS Nomenclature, | _Products.Quantity, | _Products.Price, | _Products.Amount |FROM | Document.Invoice for Payment to the Buyer.Products AS _Mga Produkto |SAAN _Mga Produkto Link = &Link"; Fetch = DataRequest.Execute().Select(); Lugar = Layout.GetArea("Data"); Habang Selection.Next() Loop Area.Parameters.Fill(Selection); TabularDocument.Output(Area); EndCycle; Yugto Blg. 3. Ibalik ang dokumento ng spreadsheet at function ng pag-print ibalik ang TabularDocument;

Pagdaragdag ng aming panlabas na form sa pag-print sa 1C

Pumunta sa menu na "Serbisyo - Panlabas na mga form sa pag-print at pagproseso - Mga panlabas na form sa pag-print"

Sa window ng paglikha ng elemento na bubukas, gawin ang mga sumusunod na aksyon:

  1. Nilo-load ang external processing file
  2. Ipinapahiwatig namin kung para sa aling dokumento ng pagsasaayos (o direktoryo) ang naka-print na form ay inilaan
  3. Pag-record ng mga pagbabago

Print tayo!

Buksan ang anumang dokumento na "Invoice para sa pagbabayad sa mamimili" (na may nakalagay na tabular na bahagi na "Mga Produkto", dahil doon namin nakukuha ang data upang punan), i-click ang pindutang "I-print", sa window na bubukas, piliin ang OUR printed form, at i-click ang "I-print"


PANSIN! Ang development algorithm na ito ay angkop LAMANG para sa isang "Regular na aplikasyon". Mga napi-print na form para sa mga configuration sa "mode" Pinamamahalaang Application"iba!

Ang file ng naka-print na form na ipinapakita sa halimbawa ay maaaring

Nagpapatuloy ang buhay, nagbabago ang batas, naglalabas ang developer ng mga update sa configuration at muli kaming may pagpipilian: i-install ang update sa aming sarili o tawagan muli ang programmer para "mag-install ng bagong release"...

Kilalanin natin ang mekanismo para sa pagbabago ng mga form sa pag-print nang hindi binabago ang configuration.


Sa pagsasanay ng bawat accountant na gumagamit ng 1C, nagkaroon ng pangangailangan na baguhin ang configuration para sa kanilang sarili: may nag-adjust sa katumpakan ng presyo o halaga sa invoice, may nagpasok ng logo at nag-adjust hitsura invoice. Magiging maayos ang lahat, ngunit napakaraming ganoong mga pagbabago ang naiipon sa paglipas ng panahon at pagdating ng oras upang i-update ang release, isang dilemma ang lumitaw: maaaring mawala ang lahat ng mga pagbabagong ginawa, o tumawag sa isang programmer upang ilipat ang lahat ng mga pagbabago sa bagong release (ng kurso para sa karagdagang bayad). Paano maging? Upang kahit papaano ay pasimplehin ang pag-update ng mga pagsasaayos, lumikha ang mga developer ng isang bagong mekanismo: "Palabas na pagproseso, mga naka-print na form, pagpoproseso ng pagpuno tabular na bahagi" Ngayon ay titingnan lamang natin ang bahagi ng mekanismong ito - mga form sa pag-print.


Ang anumang paksa ay pinakamahusay na natutunan sa pamamagitan ng halimbawa. Itakda natin sa ating sarili ang sumusunod na gawain: idagdag sa configuration ang kakayahang mag-print ng invoice (document "Pagbebenta ng mga kalakal at serbisyo") na may logo ng aming kumpanya. Bilang karagdagan, kinakailangan na sa header ng dokumento ang mga inskripsiyon "tagapagbigay" At "bumili" ay naka-highlight sa bold at sa wakas, ito ay kinakailangan na sa ilalim ng dokumento ay may isang lugar para sa lagda ng serbisyo ng seguridad na awtorisado ang kargamento.


Ipakilala natin ang dalawang karagdagang kundisyon:

  • Dapat palitan ng bagong naka-print na form ang lumang form "Invoice"
  • Hindi mababago ang configuration, dahil gusto naming gumamit ng auto-update ng configuration sa hinaharap

Well, ano ang gawain? Parang masyadong kumplikado? Well, kung mas kumplikado ito, mas kawili-wili ito, at mas gusto mong lutasin ito. Pagkatapos ay magtrabaho.


Inilunsad namin ang aming database sa Configurator mode. Buksan ang configuration sa pamamagitan ng pagpili sa command sa main menu "Configuration > Open Configuration". Hindi namin babaguhin ang mismong configuration sa anumang pagkakataon. Gagamitin namin ito bilang isang prototype. Gagawin namin ang pangunahing gawain dito, ngunit i-edit namin ang panlabas na pagproseso. Lumilikha kami ng panlabas na pagproseso gamit ang isang utos sa pangunahing menu "File > Bago". Pagpili ng uri ng dokumento "Panlabas na pagproseso". Para sa unang pagproseso, magtakda tayo ng pangalan "Branded Invoice"


Mahalaga! Ang pangalan ng pagpoproseso ay hindi dapat maglaman ng mga puwang, tulad ng mga variable na pangalan.


Ngayon gawin natin ng kaunti "plagiarism". Kopyahin natin ang layout "Invoice" mula sa dokumento "Pagbebenta ng Mga Produkto at Serbisyo". Para magawa ito, makikita natin ito sa sangay "Dokumentasyon" puno ng pagsasaayos. Palawakin ang thread na ito sa pamamagitan ng pag-click sa icon «+» at hanapin ang layout na kailangan namin "Invoice"(nasa thread "Mga Layout"). Upang makopya ang bagay na ito, kailangan mong piliin ang layout na ito sa puno at patakbuhin ang command "I-edit > Kopyahin"(ang parehong aksyon ay nangyayari sa kumbinasyon CTRL+C). Ngayon pumunta tayo sa pagproseso na ginawa namin, pumili ng isang label sa puno "Mga Layout" at sa pangunahing menu piliin ang item - "I-edit > I-paste" (CTRL+V). Ang resulta ay dapat magmukhang Figure 1.


Ngayon i-double click upang buksan ang layout.

Ano ang isang "layout"

Sabihin natin ang ilang mga salita tungkol sa layunin ng layout.

Layout- imbakan "mga bloke ng gusali", mga lugar kung saan, tulad ng mga brick, ang isang tabular na dokumento ay itinayo, na nakasanayan naming tumawag sa isang naka-print na form. Tinutukoy ang mga lugar gamit ang pahalang at patayong mga seksyon o ang kanilang mga intersection. Ang aming layout ay may mga pahalang na seksyon lamang: “Header”, “Supplier”, “Buyer”, “Table Header”, “Row” (tingnan ang Fig. 2). Ang isang lugar ay isang hanay ng mga cell. Tulad ng sa MS Excel, maaaring pagsamahin ang mga cell, maaaring baguhin ang mga kulay ng teksto at background, mga font, at iba pa. Ang lahat ng mga setting ng cell ay maaaring tingnan at baguhin sa window ng mga katangian ng cell. Maaari mong tawagan ang window ng mga setting sa pamamagitan ng pag-right-click sa cell at pagpili sa item ng menu ng konteksto "Ari-arian"(ang parehong resulta ay nakakamit ng keyboard shortcut Alt+Enter).


Ang isang cell ay maaaring maglaman ng isa sa tatlong uri ng mga halaga:

  1. text– ang isang halaga ng ganitong uri ay ipi-print sa parehong anyo;
  2. parameter– ang isang cell ng ganitong uri ay naglalaman ng pangalan ng isang variable na ang halaga ay ipi-print.
  3. sample– Ang mga cell ng ganitong uri ay isang kumbinasyon ng una at pangalawang pagpipilian. Ang cell ay maaaring maglaman ng teksto at mga variable. Upang makilala ng isang programa ang teksto mula sa isang variable, ang mga variable ay dapat na nakapaloob sa mga square bracket: "Ngayon ay [Petsa]".

Mahalaga! Ipinapakita ng editor ng talahanayan ang mga halaga ng mga cell ng pangalawa at pangatlong uri sa mga triangular na bracket. Sa Figure 2 mayroong isang cell na may teksto "Mamimili"- mukhang text, at sa kanan ng cell "Pagtatanghal ng Mamimili"- parameter.

Bakit ko sinasabi ang lahat ng ito? Ngayon alam mo na kung aling mga cell ang madali mong mababago ang mga nilalaman, at kung saan hindi kanais-nais na baguhin ang anuman, dahil kakailanganin mong gumawa ng mga pagbabago sa algorithm ng pag-print.

Balik tayo ngayon sa ating gawain. Ginawa namin ang pagpoproseso, kinopya ang layout at handa kaming baguhin ito upang umangkop sa aming sarili. Una, tingnan natin ito nang mas malapitan.

Ano ang kasama sa napi-print na layout

Ang istraktura ng layout ng lahat ng mga dokumento ay halos magkapareho. Sa maingat na pagsusuri sa isang dokumento, mauunawaan natin ang iba. Unang seksyon "Pamagat". Kapag ipinakita ang seksyong ito, bubuo ng header ng dokumento, na binubuo ng uri, petsa at numero ng dokumento. Sinusundan ito ng mga seksyon "Supplier" at "Buyer", kung saan ang programa ay magpapakita ng impormasyon tungkol sa supplier at mamimili, ayon sa pagkakabanggit. Susunod ay isang mas kawili-wiling seksyon "Karagdagang impormasyon", na ginagamit ng mga developer upang magpakita ng iba pang impormasyon sa dokumento, halimbawa, impormasyon tungkol sa kontrata kasama ang numero at petsa nito. Ang kakaiba ng seksyong ito ay maaari itong ipakita nang maraming beses, at sa bawat oras na maaari itong maglaman ng iba't ibang impormasyon. Ano ang eksaktong ipi-print at kailan inilarawan sa algorithm sa pag-print.

Kinukumpleto nito ang header ng dokumento. Ang header ay karaniwang sinusundan ng isang tabular na seksyon. Kapansin-pansin, inilalarawan ng layout ang dalawang opsyon para sa pagpapakita ng tabular na bahagi: "Header ng Talahanayan", "String" at "HeaderTablePlaces" At "StringPlace". Depende kung napuno ang iyong column o hindi "Mest" sa dokumento, ang una o pangalawang opsyon para sa pagpapakita ng tabular na bahagi ng dokumento ay gagamitin. Ang mausisa na mambabasa ay malamang na nagtaka: bakit sa seksyon ng output ng header "presyo" At "Sum" ay inilalagay sa triangular bracket na parang mga variable? Iyan ay tama - ito ay mga variable kung saan, depende sa mga setting ng dokumento, ang inskripsiyon ay ipapakita "presyo", "Presyong may VAT" o "Presyong walang VAT" at katulad din sa halaga.

Well, sa ibaba sa layout mayroong mga seksyon sa tulong kung saan ipinapakita ang mga resulta ng dokumento at lagda.

Pag-edit ng layout

Mainam na ilagay ang logo sa itaas ng impormasyon tungkol sa supplier at mamimili. Iminumungkahi kong i-edit ang layout area "Pamagat". Ito ay kinakailangan upang bawasan ang laki ng cell na naglalaman ng mga nilalaman "TitleText". Ang cell na ito ay binubuo ng ilang pinagsamang mga cell. Resizable sa sumusunod na paraan:

  1. Maingat nating kopyahin ang mga nilalaman ng pinagsamang cell "TitleText"(upang gawin ito, kailangan mong piliin ang cell at gamitin ang command “I-edit > Kopyahin” o keyboard shortcut na CTRL+C)
  2. Kapag napili ang cell na ito, piliin ang item sa pangunahing menu "Table - Pagsamahin", na hahantong sa kabaligtaran na epekto - ang pinagsamang cell ay mahahati sa maraming orihinal na mga cell
  3. Ngayon pumili tayo ng mas maliit na bilang ng mga cell - sa halip na cell 2 ng column, magsisimula tayong pagsamahin mula sa column 6, magtatapos ito sa column 32 - at mag-click muli sa button "Pagsamahin"
  4. Koponan "I-edit > I-paste" (CTRL+V) ipasok ang mga nilalaman ng nakaraang pinagsamang cell sa bagong pinagsamang cell
  5. I-clear lang namin ang mga napalayang cell sa column 2 – 5 (piliin ang mga ito at pindutin ang Delete key)

Ngayon ay maaari kang magpasok ng isang larawan na may logo sa libreng espasyo. Upang gawin ito, piliin ang item sa menu “Talahanayan > Mga Larawan > Larawan...”. Hanapin ang file na may aming logo sa disk at i-click ang " OK" Ngayon, ilipat natin ang imahe sa libreng espasyo. Ang resulta ay dapat magmukhang sa Figure 3.


Ngayon, i-highlight natin ang mga halaga sa mga cell nang naka-bold "Provider" At "Mamimili"(Larawan 4). Upang gawin ito, hanapin ang parameter sa mga katangian ng cell "Font" at itakda ang istilo sa bold.



At sa wakas, nananatili itong idagdag ang pirma ng serbisyo sa seguridad. Ipo-post namin ang impormasyong ito sa seksyon "Mga lagda". Upang makakuha ng espasyo para sa mga lagda kailangan mong palawakin ang seksyon. Piliin ang linya 37, i-right-click ito at piliin "Palawakin", at iba pa nang dalawang beses. Sa isa sa mga idinagdag na linya ay maglalagay kami ng isang lugar para sa lagda ng serbisyo sa seguridad. Bilang resulta, ang lahat ay dapat magmukhang sa Figure 5.



Mahalaga! SA tipikal na pagsasaayos dalawang wika ang ginagamit: Russian at Ukrainian. Ang layout ay nag-iimbak ng representasyon ng teksto sa parehong mga wika (ang disenyo ng cell ay pangkalahatan). Upang maipasok ang Ukrainian na bersyon ng inskripsyon na idinagdag namin, kailangan mong pumunta sa mga katangian ng cell at sa field "Text" pindutin ang pindutan "paghahanap". Magbubukas ang isang window para sa pagpasok ng mga representasyon ng teksto sa iba't ibang wika (Larawan 6).

Paano matiyak ang pag-print

Kaya, handa na ang layout. Ngayon na ang oras upang gawin ang algorithm para sa pag-print nito.

Upang walang kahirap-hirap na maisama namin ang layout na ito sa configuration at gamitin ito, ang pagproseso na ginawa namin ay dapat matugunan ang mga sumusunod na kundisyon:

  1. Kailangan mong lumikha ng mga props sa pagproseso "Link ng Bagay" may uri "AnyLink"
  2. Kailangan mong gumawa ng procedure sa processing module "Print() Export" walang mga parameter at dapat na tukuyin keyword "I-export"

Ang unang punto ay kailangan upang malaman ng algorithm sa pag-print kung saan kukuha ng data para sa pag-print, at ang pangalawa ay ang algorithm sa pag-print mismo. Tuparin natin ang mga kundisyong ito.

Sa window panel, piliin ang window para sa pag-edit ng aming pagproseso (sa Figure 7). Magbubukas ang isang window na may puno ng mga bagay para sa aming pagproseso. Pagpili ng sangay "Requisites" at pindutin ang pindutan "Add",. Magbubukas ang window ng attribute properties. Ilagay natin ang pangalan - "Link ng Bagay" at ipahiwatig ang uri "AnyLink". Ngayon ay maaari na tayong magpatuloy sa teksto ng print module. Hindi namin ito isusulat mula sa simula sa halip, kokopyahin namin ito mula sa dokumento "Pagbebenta ng Mga Produkto at Serbisyo".



Upang gawin ito, hanapin sa puno ng pagsasaayos sa mga dokumento "Pagbebenta ng Mga Produkto at Serbisyo", i-right-click ito at piliin "Buksan ang module ng object"(tingnan ang Larawan 8).



Bubuksan nito ang module ng dokumento. Kailangan namin ang unang function "PrintDocument". Dapat piliin at kopyahin ang teksto nito. Ito ay napaka-maginhawa upang i-highlight ang teksto ng isang function kapag ito ay na-collapse, ngunit dapat mo ring i-highlight ang linya sa ibaba nito, kung hindi, panganib mong kopyahin lamang ang pamagat.

Tingnan sa Figure 9, na-highlight namin ang pamagat at ang linya sa ibaba nito. Pagkatapos nito, kopyahin ito sa clipboard. Pangunahing menu "I-edit > Kopyahin" (o CTRL+C).



Kabisado na natin ang teksto sa clipboard, ngayon ay magpatuloy tayo sa ating pagproseso muli "Branded Invoice". Mag-click sa pindutan "Mga Pagkilos > Buksan ang Module ng Bagay"(Larawan 10).



Idikit ang kinopyang teksto: "I-edit > I-paste" (o CTRL+V).

Ngayon ay kinakailangan na bahagyang i-edit ang kinopyang teksto, dahil isinulat ito para sa pag-print ng isang dokumento mula sa mismong dokumento, at kinokolekta namin ito mula sa panlabas na pagproseso. Upang gawin ito kailangan mo:

  1. Palitan ang pangalan ng function sa "I-print"
  2. Palitan "ThisObject" sa "Link ng Bagay"
  3. Palitan "ThisObject" sa "Link ng Bagay"
  4. Palitan "Account sa Bangko ng Organisasyon" sa “Link sa Object.Organization Bank Account”
  5. Palitan "Mga Produkto. Buod" sa "LinkToObject.Products.Total"

Para sa mga pagkilos na ito maaari mong gamitin ang pangunahing item sa menu "I-edit > Palitan".

Pagkatapos nito, dapat mong suriin para sa syntax. Mayroong magic combination para dito: CTRL+F7. Bilang resulta, dapat lumitaw ang sumusunod na mensahe: "Walang nakitang mga error sa syntax!"

Buweno, sa pamamagitan nito natapos namin ang lahat ng maruming gawain. Ngayon ay maaari naming i-save ang mga resulta ng aming trabaho sa isang file, halimbawa "Branded Invoice.epf". Upang gawin ito, kailangan mong gawing aktibo ang window para sa pagproseso na ito at i-save ito gamit ang pangunahing menu ng programa "File > Save As...". Pinoproseso ang pangalan ng file - "Branded Invoice.epf"(ito ay iaalok bilang default). Maaari mo itong i-save pansamantala sa iyong desktop para mas mabilis mo itong mahanap sa ibang pagkakataon.

Mahalaga! Gaya ng nakita mo, hindi kami gumawa ng anumang mga pagbabago sa loob ng aming configuration. Para sa lahat ng mga pagkilos na inilarawan sa itaas, hindi mo na kailangang alisin ito sa suporta (iyon ay, paganahin ang kakayahang magbago).

Pagkonekta sa panlabas na pagpoproseso sa pagsasaayos

Ngayon ay maaari na naming ikonekta ang pagpoproseso sa aming invoice. Upang gawin ito, ilunsad sa mode. Pumunta sa menu "Serbisyo", kung saan mayroong tatlong puntos na nauugnay sa mekanismo "Panlabas na pagproseso, mga form sa pag-print, pagproseso para sa pagpuno ng mga bahagi ng tabular". Sa aming kaso, kailangan lang namin ang item "Mga panlabas na form sa pag-print"(tingnan ang Fig. 11).



Bubuksan nito ang direktoryo. "Panlabas na pagproseso", na may pagpili ayon sa uri "mga naka-print na form". Ito ay mag-iimbak ng isang listahan ng lahat ng panlabas na naka-print na mga form, na nagpapahiwatig kung aling mga dokumento ang mga ito at sa kung anong mga kaso ang mga ito ay kailangang ipakita.



Mahalaga! Ang pagproseso mismo ay maiimbak sa database kasama ng iba pang data, iyon ay, pagkatapos i-save ang pagproseso sa loob ng database, hindi namin kakailanganin ang isang panlabas na file.

Kailangan nating lumikha ng bagong elemento sa direktoryo. I-click Ipasok. Ngayon tingnan natin ang mga nilalaman ng elemento. Nagdaragdag kami ng kahulugan sa pangalan Maikling Paglalarawan ang kakanyahan ng form na ito, halimbawa, "Invoice ng kumpanya". Tulad ng ibang direktoryo, mayroon din itong code. Iwanan natin ito bilang default. Ang uri ng katangian ay pinupunan bilang default at hindi maaaring i-edit - "Print form". At ang huling elemento ng header ay isang komento. Dito, gaya ng dati, mayroong higit pang detalye tungkol sa layunin ng form sa pag-print. Bilang karagdagan sa header, ang mga elemento ng direktoryong ito ay may dalawang bookmark. Ang pangalawa ay naglalaman ng impormasyon tungkol sa paghihigpit sa mga karapatan sa pag-access sa pagproseso na ito. Ang paksang ito ay lampas sa saklaw ng artikulong ito (pag-uusapan natin ito at ang iba pang mga setting ng mga karapatan sa pag-access nang hindi binabago ang pagsasaayos sa isa sa mga paparating na isyu).

Tingnan natin ang unang tab.

Ang tab ay naglalaman ng apat na column. Representasyon ng bagay– ang uri ng dokumento kung saan gusto naming gamitin ang aming form sa pag-print,

Pagpili– isang kondisyon kung saan ang naka-print na form na ito ay dapat na magagamit. Halimbawa, muling idinisenyo namin ang naka-print na anyo ng invoice at isinalin ito sa Ingles. At gusto namin para sa mga kliyente mula sa folder "Taga-Europa" sa halip na isang karaniwang naka-print na form "Talaan ng mga nabenta" ay nai-publish bagong anyo, sa wikang Ingles. Upang gawin ito, maaari mong gamitin ang hanay "Pagpipilian". Ang isang halimbawa ng naturang pagpili ay ipinapakita sa Figure 13.



Ngunit sa aming gawain walang mga seleksyon ang kailangan.

Napi-print na Form File– ipinapahiwatig ang file kung saan kukunin ang layout at pamamaraan ng pag-print. Sa cell na ito kailangan mong piliin ang file na na-save namin sa desktop.

Maaaring palitan ang plato ng pagpi-print– kung gusto naming palitan ng naka-print na form na aming ginawa ang isa sa mga pamantayan para sa dokumentong ito, kailangan naming ipahiwatig kung alin ang kailangang palitan. Kung walang pipiliin, may lalabas na karagdagang naka-print na form.

Sa aming kaso, kailangan namin "Branded Invoice" ay na-print sa halip na ang karaniwang invoice. Upang gawin ito, pumili sa field na ito "Talaan ng mga nabenta".

Ngayon, i-save natin ang elementong ito. At buksan ang anumang invoice.

Dapat itong magmukhang ipinapakita sa Figure 14.



Buweno, tinatapos nito ang gawain na itinakda namin para sa ating sarili sa simula ng artikulo. Naniniwala kami na nagawa naming ilarawan ang mga posibilidad na ang paggamit ng panlabas na mekanismo ng pagproseso ay nagbubukas para sa user.

Upang palakasin ang iyong mga kasanayan, maaari mong subukang mag-isa na magdagdag sa pagsasaayos ng karagdagang naka-print na form na "Sa bodega" para sa dokumentong "Pagtanggap ng mga kalakal at serbisyo", na uulitin ang karaniwang invoice, ngunit walang mga presyo at halaga, at gagawin din. naglalaman ng mga patlang para sa pagpasok ng tinatanggap na dami.

Paano lumikha ng isang panlabas na form sa pag-print batay sa isang handa na? 1C 8.0/8.1
_______________________________________________________

Ipinapalagay na mayroon ka nang kaalaman na nakuha mula sa pagbabasa ng paksa, kaya ang mga bagong tanong lamang ang tinatalakay nang detalyado.

Kaya: kailangan naming bahagyang baguhin ang layout ng invoice para sa pagbabayad sa bumibili (magtatrabaho kami sa configuration ng Accounting 1.6):
- alisin ang header sa layout ng invoice para sa pagbabayad (text na "Attention! Payment of this invoice..., subject to a power of attorney and passport.")
- baguhin ang presentasyon ng supplier (i.e. sa amin) sa kahilingan ng bangko
(problema mula sa totoong buhay na may oras ng pagtatrabaho na 15-20 minuto)

Ang paglikha ng pagproseso ay binubuo ng dalawang yugto:
1 - paglikha ng isang kumpletong analogue ng orihinal na form sa pag-print
2 - pagbabago upang umangkop sa iyong sariling mga pangangailangan

Unang yugto

Una, gumawa tayo ng walang laman na panlabas na pagproseso, ngunit hindi tayo gagawa ng layout -
kokopyahin namin ito para sa pagbabago sa ibang pagkakataon mula sa pangunahing pagsasaayos. Upang kopyahin ang isang layout sa pagproseso mula sa pagsasaayos, ito ay sapat na
piliin ito sa object tree, pagkatapos ay pumunta sa menu I-edit-Kopya, pagkatapos ay sa pagpoproseso ng data tree sa layouts branch piliin
Nasa listahan I-edit-Ipasok Higit pa maginhawang paraan- direktang i-drag ang layout na ito mula sa pangunahing configuration papunta sa data tree gamit ang mouse
pagpoproseso.

At isinusulat namin ang code na ito:

Function Print() Export //... dito tayo magsusulat ng isang bagay mamaya End of Function

Ang ginawa namin: para gumana ang external na form sa pagpi-print, kailangan ng function ng pag-export (i.e. nakikita ng iba pang configuration object) selyo,
na dapat ibalik ang nabuong dokumento ng spreadsheet sa pangunahing programa para sa preview at kasunod na pag-print.

Upang hindi muling malikha ang gulong, tingnan natin kung paano nabuo ang isang dokumento ng spreadsheet sa pangunahing pagsasaayos: para dito pupunta tayo
sa module ng dokumento Invoice para sa Pagbabayad sa Mamimili Maghanap tayo ng function sa module selyo, na mukhang ganito:

// Ang pamamaraan ay nagpi-print ng dokumento. Maaari mong idirekta ang pag-print sa isang // screen o printer, at i-print ang kinakailangang bilang ng mga kopya. // // Ang pangalan ng layout ng pag-print ay ipinasa bilang isang parameter, // gamit ang ipinasa na pangalan ay makikita natin ang pangalan ng layout alinsunod. // // Mga Parameter: // LayoutName - string, pangalan ng layout. // Procedure Print(LayoutName, Number of Instances = 1, OnPrinter = False, DirectPrint = False) Export // Kumuha ng kopya ng dokumento para sa pag-print Kung LayoutName = "Invoice" Pagkatapos TabDocument = PrintOrderInvoice(LayoutName); tapusin kung; Universal Mechanisms.PrintDocument(TabDocument, Number of Instance, OnPrinter, WorkWithDialogs.GenerateDocumentTitle(ThisObject, ""), DirectPrint); EndProcedure // Print

Sa aming kaso, lumalabas na upang mag-print ng isang invoice, ang parameter ay ipinasa sa function na ito Pangalan ng Layout katumbas ng string variable "suriin",
kung titingnan natin ang code, makikita natin na ang function ay ginagamit upang makabuo ng isang karaniwang invoice PrintOrderInvoice(...), na ngayon
Kailangan nating hanapin ito sa code ng module ng dokumento. Kadalasan ito ay matatagpuan sa itaas lamang ng function selyo(...)
Kaya narito ang pinaikling teksto ng function na ito:

// Ang function ay bumubuo ng isang tabular na dokumento na may naka-print na form para sa isang order o invoice, // na binuo ng mga methodologist // // Return value: // Ang tabular na dokumento ay isang nabuong naka-print na form // Function PrintOrderInvoice(Uri) Request = Bago Hiling; Request.SetParameter("CurrentDocument", ThisObject.Link); // ...program code...Layout Area.Parameters.Fill(Header); TabDocument.Output(LayoutArea); ibalik ang TabDocument; EndFunction // PrintOrderInvoice()

Gaya ng nakikita natin, sa dulo ng function na ito, ibinalik ang nabuong dokumento ng spreadsheet - ang kailangan lang nating gawin ay kopyahin nang buo ang teksto
function na ito (nagsisimula sa linyang "Request = New Query;" at nagtatapos sa linyang "Return TabDocument;") at ipasok ito sa katawan ng inihandang function
selyo sa aming processing module.

Pagkatapos nating ipasok ang teksto ng function, subukan nating i-save ang pagproseso. Babalaan tayo ng configurator na may nakita itong mga error sa module at display
ang mga ito sa window ng mga mensahe ng serbisyo. Narito ang isang halimbawang pagsubok para sa mga error na ito:

(ExternalProcessing.ExternalProcessing1(102,7)): Ang variable ay hindi tinukoy (Uri) Kung<>Type = "Account" Then (ExternalProcessing.ExternalProcessing1(224,7)): Hindi tinukoy ang variable (Uri) Kung<>Type = "Account" Then (ExternalProcessing.ExternalProcessing1(107,15)): Hindi tinukoy ang variable (StructuralUnit) IfValueType(<>StructuralUnit) = Uri("DirectoryLink.BankAccounts") Pagkatapos (ExternalProcessing.ExternalProcessing1(108,40)): Ang variable ay hindi tinukoy (StructuralUnit) Bank = ?(NOT ValueFilled(<>StructuralUnit.BankForSettlements), StructuralUnit.Bank, StructuralUnit.BankForSettlements); (ExternalProcessing.ExternalProcessing1(108,77)): Hindi tinukoy ang variable (StructuralUnit) Bank = ?(NOT ValueFilled(StructuralUnit.BankForSettlements),<>StructuralUnit.Bank, StructuralUnit.BankForSettlements); (ExternalProcessing.ExternalProcessing1(108,102)): Hindi tinukoy ang variable (StructuralUnit) Bank = ?(NOT ValueFilled(StructuralUnit.BankForSettlements), StructuralUnit.Bank,<>StructuralUnit.BankForSettlements); (ExternalProcessing.ExternalProcessing1(112,38)): Hindi tinukoy ang variable (StructuralUnit)AccountNumber = ReturnAccount(<> Structural Unit); (ExternalProcessing.ExternalProcessing1(123,21)): Ang variable ay hindi tinukoy (StructuralUnit) Kung EmptyString(<>StructuralUnit.CorrespondentText) Pagkatapos (ExternalProcessing.ExternalProcessing1(125,27)): Ang variable ay hindi tinukoy (StructuralUnit) Kung ValueFilled(<>StructuralUnit.BankForSettlements) Pagkatapos (ExternalProcessing.ExternalProcessing1(126,59)): Ang variable ay hindi tinukoy (StructuralUnit)CorrespondentText =CorrespondentText + "r/s" +<>StructuralUnit.AccountNumber (ExternalProcessing.ExternalProcessing1(127,15)): Hindi tinukoy ang variable (StructuralUnit) + " sa " +<>StructuralUnit.Bank + " " + StructuralUnit.Bank.City; (ExternalProcessing.ExternalProcessing1(127,47)): Hindi tinukoy ang variable (StructuralUnit) + " sa " + StructuralUnit.Bank + " " +<>Structural Unit.Bank.City; (ExternalProcessing.ExternalProcessing1(130,26)): Hindi tinukoy ang variable (StructuralUnit) Correspondent Text =<>StructuralUnit.TextCorrespondent; (ExternalProcessing.ExternalProcessing1(112,17)): Ang pamamaraan o function na may tinukoy na pangalan ay hindi tinukoy (Ibalik ang Account) Account Number =<>ReturnAccount(StructuralUnit);

Tingnan natin ang mga error na ito:
*** 1. Ang variable ay hindi tinukoy (Uri)- kung titingnan mo ang source code ng function, magiging malinaw na ang uri ng variable ay isang parameter:
Function PrintInvoiceOrder(Uri), inalis namin ang parameter na ito. SA sa kasong ito- ang parameter na ito ay naglalaman ng isang linya na may pangalan ng layout
para sa pag-print. kasi kailangan lang nating mag-print ng isang layout - tukuyin natin ang variable na ito tulad ng sumusunod: babaguhin natin ang pamagat
mga function selyo sa processing module:

Function Print(Uri = "Account")

Ano ang ibig sabihin ng notasyong ito: nangangahulugan ito na kung walang parameter na naipasa sa function, pagkatapos ay ang parameter Uri kukunin ang halaga
default "Suriin", na kung ano ang kailangan namin para sa trabaho.

*** 2. Hindi tinukoy ang variable (StructuralUnit)- ang variable na ito ay isang katangian ng dokumento Invoice para sa Pagbabayad sa Mamimili, dahil
sa module ng panlabas na naka-print na form hindi namin nakikita ang katangiang ito (wala kami sa katawan ng object ng dokumento), makukuha namin ang variable na ito sa pamamagitan ng
link sa dokumento, i.e. sa pamamagitan ng pagproseso ng mga detalye Sanggunian ng Bagay, kung saan ipapasa ng program ang isang link sa kasalukuyang dokumento.
Idagdag ang sumusunod na linya sa simula ng function:

*** 3. Ang pamamaraan o function na may tinukoy na pangalan ay hindi tinukoy (Ibalik ang Account)- ang function na ito ay tinukoy (i.e. inilarawan) sa module
dokumento, nang naaayon, kailangan lang naming ganap na ilipat ang code ng function na ito sa aming pagproseso.

Kaya ngayon ang processing module ay ganito ang hitsura:

Function ReturnCurrentAccount(CounterpartyAccount) BankForSettlements = CounterpartyAccount.BankForSettlements; Resulta = ?(BankForSettlements.Empty(), Counterparty Account.AccountNumber, Counterparty Account.Bank.CorrespondentAccount); Resulta ng Pagbabalik; End of Function // Return Current Account() // Bumubuo ang function ng isang tabular na dokumento na may naka-print na form para sa isang order o invoice, // na binuo ng mga methodologist // // Return value: // Tabular na dokumento - nabuong naka-print na form // Function Print(Uri = "Invoice") I-export ang StructuralUnit = ObjectLink.StructuralUnit; Kahilingan = Bagong Kahilingan; Request.SetParameter("CurrentDocument", ThisObject.Link); // ...text ng programa...Layout Area.Parameters.Fill(Header); TabDocument.Output(LayoutArea); ibalik ang TabDocument; EndFunction // PrintOrderInvoice()

Kung tama ang lahat, maaari na nating i-save ang pagproseso at makakakuha tayo ng kumpletong panlabas na analogue ng built-in na form sa pag-print.

Stage two

Ngayon gawin natin ang mga kinakailangang pagbabago sa layout kapag nagpi-print (ipagpalagay na alam mo kung paano magtrabaho sa mga layout), at baguhin din
text ng supplier sa header ng invoice.

Tulad ng nakikita natin mula sa code ng programa, ang teksto ng tatanggap ay napunan sa lokasyong ito:

Kung EmptyString(StructuralUnit.CorrespondentText) ThenCorrespondentText = SupplierInformation.FullName; Kung ang Halaga ay Punan sa (StructuralUnit.BankForSettlements) Pagkatapos CorrespondentText = CorrespondentText + "account" + StructuralUnit.AccountNumber + " sa " + StructuralUnit.Bank + " " + StructuralUnit.Bank.City; tapusin kung; Otherwise Correspondent Text = StructuralUnit.Correspondent Text; tapusin kung; LayoutArea.Parameters.ProviderView = CorrespondentText;

Itinakda ng customer ang kundisyon na ang teksto para sa kahon na ito ay kukunin mula sa pangalan ng nagbabayad sa mga order ng pagbabayad sa
paglilipat ng buwis. Ang tekstong ito ay naka-imbak sa katangian ng elemento ng direktoryo Mga organisasyon- ang natitira na lang natin
i-access ito. Kung titingnan natin ang mga detalye ng dokumento, makikita natin na naglalaman ang mga ito ng impormasyon tungkol sa organisasyon,
ayon sa kung saan ang dokumento ay ibinigay, at ang teksto na kailangan namin ay naka-imbak sa mga detalye ng organisasyon - ngayon alam namin kung paano makakuha ng access:

Layout Area.Parameters.SupplierView = LinkToObject.Organization.Name of PayerWhen Transfering Taxes;

Iyon lang - ang layout ay handa nang gamitin at maaaring ikonekta sa configuration!

Sa paksa maaari mong kunin ang paggamot na dapat ay nagresulta sa dulo.

PS. Mga talakayan, tanong, mungkahi - lahat ay nasa paksa.