Bukas
Isara

Pagdaragdag ng panlabas na form sa pag-print sa database. Pagdaragdag ng panlabas na form sa pag-print sa database Pag-set up ng mga form sa pag-print sa 1s 8.2

Sasabihin sa iyo ng artikulong ito nang detalyado kung paano ang isang baguhan na may kaunting kaalaman sa 1C 8 ay maaaring lumikha ng isang naka-print na form. Halimbawa, kunin natin ang isa sa mga pinakakaraniwang 1C 8 na pagsasaayos - Accounting 2.0. Paglikha ng naka-print na form 1C na mga yugto ng pagsulat:

  • Paglikha ng isang panlabas na file ng form sa pag-print;
  • Paglikha ng isang naka-print na layout ng form;
  • Pagsusulat ng program code upang ipakita ang naka-print na data ng form sa screen;
  • Paglikha ng mga parameter para sa awtomatikong pagpaparehistro ng isang naka-print na form;
  • Pagkonekta ng panlabas na form sa pag-print sa base 1C Enterprises.

Paglikha ng isang naka-print na form 1C. Pagbubuo ng problema

Kami ay kinakailangan sa pagsasaayos Accounting 2.0 lumikha ng isang naka-print na form para sa isang dokumento Pagtanggap ng mga kalakal at serbisyo. Sa header ng naka-print na form, ipakita ang sumusunod na data:

  • Organisasyon;
  • Counterparty;
  • Kasunduan sa counterparty;
  • Petsa ng pagtanggap.

Ipakita ang data sa tabular na seksyon bilang isang talahanayan Mga paninda dokumento. Dapat isama sa talahanayan ang mga sumusunod na column:

  • Nomenclature;
  • Dami;
  • Presyo;
  • Sum;
  • At gayundin ang presyo ng item para sa kasalukuyang petsa (ayon sa uri ng presyo mula sa dokumento).

Panlabas na pagproseso ng file

Lumipat tayo sa paglutas ng problema. Una, buksan natin ang 1C 8 sa mode Configurator. Nasa mode na ito na ang lahat ng mga pag-unlad ay isinasagawa sa platform ng 1C 8 Ngayon ay kailangan nating lumikha ng isang panlabas na file sa pagproseso. Upang gawin ito, mag-click sa menu File -> Bago… o sa pamamagitan ng icon ng isang bagong file.

Sa window na bubukas, piliin ang item Panlabas na pagproseso.

Sunod sa field Pangalan Dapat mong ilagay ang pangalan ng panlabas na pagpoproseso. Sa aming kaso, tatawagin lang namin itong "PrintForm"; awtomatikong mapupunan ang field ng kasingkahulugan. Mangyaring tandaan na sa patlang Pangalan, panlabas na pagproseso, ang pangalan ay dapat na nakasulat nang walang mga puwang o mga bantas.

Magdagdag tayo ng mga panlabas na katangian sa pagpoproseso LinkToObject at piliin type para sa kanya DocumentLink. Upang gawin ito, sa 1C external processing metadata tree, piliin ang item Requisites at pindutin ang pindutan Idagdag(button na may berdeng plus). Magbubukas ang window ng attribute properties sa kanang bahagi ng screen, sa field Pangalan magsulat tayo - ReferenceToObject. SA patlang Uri pindutin ang pindutan na may tatlong tuldok.

Palawakin natin ang sanga sa uri ng puno DocumentLink, at hanapin ang elementong Receipt of Goods and Services doon, lagyan ng check ang kahon sa tabi nito at i-click OK.

I-save natin ang external processing file sa hard drive para gawin ito, gamitin ang menu File -> I-save, pictogram I-save(asul na floppy disk), o isang keyboard shortcut Ctrl+S. Pangalanan natin ang naka-save na file na “PrintForm”.

Paglikha ng naka-print na layout ng form

Simulan natin ang paggawa ng layout ng 1C printing form. Ang layout ay nagsisilbing template para sa output ng naka-print na form, kaya kung nais mong maging maganda ang iyong naka-print na form, dapat mong bigyang pansin ito.

Magdagdag tayo ng bagong layout sa panlabas na pagpoproseso ng metadata tree, hindi namin babaguhin ang anumang bagay sa window ng taga-disenyo ng layout at i-click ang button handa na.

Sa bagong layout na bubukas, gagawa kami ng ilang lugar na kinakailangan para sa pagpapakita ng naka-print na form. Ang lahat ng mga lugar ng layout na kailangan namin ay pahalang, kaya upang lumikha ng isang bagong lugar, piliin ang kinakailangang bilang ng mga linya ng layout at pumunta sa menu Talahanayan -> Mga Pangalan -> Magtalaga ng pangalan o gumamit ng keyboard shortcut Ctrl + Shift + N, pagkatapos ay ilagay ang pangalan ng rehiyon sa kahon. Kapag gumagawa ng layout area, huwag matakot na magkamali sa bilang ng mga linya na maaari mong palaging idagdag o alisin. Upang magtanggal ng 1C layout line, piliin ang gustong linya at piliin ang item sa menu ng konteksto Tanggalin. Upang magdagdag ng bagong linya sa layout, pumili ng anumang linya ng layout at piliin ang item sa menu ng konteksto Palawakin.

Pagdaragdag ng Layout Header

Una sa lahat, gumawa tayo ng isang lugar Isang sumbrero, ipapakita nito ang data para sa header ng print form. Para sa lugar na ito kakailanganin namin ng pitong linya ng layout. Piliin natin ang mga ito at, gaya ng isinulat ko sa itaas, pindutin ang key combination Ctrl + Shift + N, sa field Pangalan isulat ang "Sumbrero" at pindutin ang pindutan OK.

Punan natin ang layout area ng data na kailangan natin. Karaniwan, walang naka-print na form na kumpleto nang walang pamagat, kaya gumawa din tayo ng isa sa aming header ng layout. Dahil sa pamagat, bilang karagdagan sa pangalan ng naka-print na form, ipapakita din namin ang numero ng dokumento kung saan ito na-print, itatakda namin ang teksto ng pamagat sa layout bilang isang parameter. Ang parameter ng layout ay isang espesyal na itinalagang layout ng cell kung saan maaaring i-output ang iba't ibang data gamit ang built-in na 1C 8 na wika. Dapat ipakita ang pamagat sa buong lapad ng naka-print na form, kaya't magpasya tayo kung gaano karaming mga layout ng mga cell ang magiging sapat para mag-print tayo sa isang karaniwang landscape na oryentasyon ng sheet.

Karaniwan labintatlo o labing-apat na layout ng mga cell ay sapat, piliin ang mga ito sa unang hilera ng lugar Isang sumbrero at pagsamahin sa isang cell ( Menu ng konteksto -> Pagsamahin). Pagkatapos nito, i-double-click ang nagresultang malaking cell at isulat ang pangalan ng parameter, sa aming kaso na "TitleText". Upang ang ipinasok na teksto ay maging isang ganap na parameter, mag-right click sa cell at piliin ang item sa menu ng konteksto Ari-arian. Sa bookmark Layout hanapin natin ang field Pagpupuno at piliin ang halaga Parameter. Ang mga parameter sa layout ng 1C ay ipinahiwatig ng mga bracket "<>».

Ang heading ng naka-print na form ay dapat na namumukod-tangi sa iba pang text, kaya piliin muli ang cell at gamitin ang mga icon sa layout formatting panel para itakda ang text alignment Nakasentro at laki ng font 14.

Pagkatapos ng teksto ng pamagat ay ipapakita namin ito sa lugar Isang sumbrero impormasyon tungkol sa organisasyon, counterparty, counterparty na kasunduan at petsa ng pagtanggap ng mga kalakal. Dahil ang lahat ng data na ito ay kinuha din mula sa dokumento, gagawin din namin itong gawing pormal gamit ang mga parameter. Bilang karagdagan, bago ang bawat parameter dapat kang magsulat ng paliwanag na teksto upang madaling maunawaan ng user kung nasaan ang organisasyon, kung nasaan ang katapat, atbp. Ang lahat ng mga aksyon na ito ay katulad ng paglikha ng isang pamagat, kaya hindi ko na talakayin ang mga ito nang detalyado, bibigyan ko lang ng larawan kung ano ang dapat mangyari sa huli.

Ipinapakita ng figure kung paano naiiba ang mga parameter ng layout mula sa regular na text.

Pagdaragdag ng Layout Table Header

Ang huling bagay na kailangan nating gawin sa layout area na ito ay ang table header, kung saan ipapakita ang data ng tabular na bahagi. Mga paninda. Ang mga column na kinakailangan para sa talahanayan ay inilarawan sa seksyong "Pahayag ng Problema". Gagawa rin kami ng table header gamit ang kumbinasyon ng mga cell at pagsusulat ng text (mga pangalan ng column). Piliin ang mga hangganan ng header ng talahanayan gamit ang tool Frame, na matatagpuan sa panel ng pag-format ng layout.

Pagdaragdag ng talahanayan sa isang layout

Gumawa tayo ng isa pang lugar sa layout - Data. Ang talahanayan ng data ng tabular na bahagi ay ipapakita sa loob nito Mga paninda. Para sa lugar na ito, kailangan lang namin ng isang linya ng layout. Upang ipakita ang lahat ng mga hilera ng tabular na bahagi sa isang naka-print na form, pupunan at ipapakita namin ang lugar na ito sa kinakailangang bilang ng beses. Mga hanay sa lugar Data ay dapat na nag-tutugma sa mga haligi ng header ng talahanayan, kaya hindi magiging mahirap ang pagpuno nito. Ang pagkakaiba lang ay nasa lugar Data kailangan natin ng mga parameter, hindi lang text. Tandaan din na bilang default, ang mga numeric na parameter ay naka-format sa kanan at ang mga parameter ng text ay naka-format sa kaliwa. Upang pumili ng mga column, kailangan mo ring gamitin ang tool Frame.

Pagdaragdag ng Footer sa isang Layout

Ang huling layout area na kailangan namin ay Silong. Ipapakita nito ang mga kabuuan ayon sa dami at halaga. Ang paglikha ay katulad ng paglikha ng isang lugar Data, ngunit bilang karagdagan ang mga resulta ay dapat na naka-highlight sa bold.

Ang resulta ay dapat na isang layout na ganito ang hitsura:

Paglikha ng isang naka-print na form 1C. Programming

Magsimula tayo sa programming - ito ang pinakamahalagang yugto sa paglikha ng isang naka-print na form. Una sa lahat, pumunta tayo sa external printing form object module, dito tayo magpo-program. Upang gawin ito, sa pangunahing panlabas na window ng pagproseso, i-click Mga Aksyon -> Buksan ang module ng object.

Kailangan mong gumawa ng export function sa external printing form object module Selyo().

Function Print() I-export ang EndFunction

Pakitandaan na ang tampok na ito ay kinakailangan para sa panlabas na mga form sa pag-print sa mga pagsasaayos gamit ang regular na aplikasyon. Ang lahat ng kasunod na code ng programa na kinakailangan upang ipakita ang naka-print na form ay isusulat sa loob ng function na ito.

Pagsisimula ng Mga Pangunahing Variable

Gumawa tayo ng variable TabDoc, na maglalaman ng isang spreadsheet na dokumento - ito mismo ang naka-print na form kung saan ipapakita namin ang mga punong bahagi ng layout.

TabDoc = bagong TabularDocument;

Sa isang variable Layout Makukuha namin ang naka-print na layout ng form na aming ginawa. Upang gawin ito ginagamit namin ang built-in na function GetLayout(<ИмяМакета>).

Layout = GetLayout("Layout");

Iko-convert namin ang lahat ng mga lugar ng layout sa mga variable. Upang gawin ito, ginagamit namin ang pamamaraan ng layout GetArea(<ИмяОбласти>) .

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

Pag-output ng header ng isang naka-print na form sa isang spreadsheet na dokumento

Ang lahat ng kinakailangang mga variable ay sinisimulan. Simulan nating punan at ipakita ang mga layout area sa isang spreadsheet na dokumento. Una sa lahat, punan natin ang pamagat ng napi-print na form para dito kailangan nating ipasa ang parameter Teksto ng Pamagat, na ginawa namin sa layout, ang text na kailangan namin. Upang punan ang mga halaga ng parameter, ang lugar ng layout ay may isang espesyal na koleksyon, na tinatawag na - Mga pagpipilian. Mula sa kung saan sa pamamagitan ng "." maaari kang makakuha ng anumang parameter. Sa teksto ng header, ililipat namin ang teksto: "Naka-print na form", pati na rin ang numero ng dokumento.

Header Area.Parameters.TitleText = "Print form"+LinkToObject.Number;

Pupunan namin ang natitirang mga parameter ng header sa katulad na paraan; ReferenceToObject, na naglalaman ng link sa dokumentong ipi-print.

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

Ang lahat ng mga parameter ng header ay napunan, ipapakita namin ito sa spreadsheet na dokumento na aming nilikha, para dito ginagamit namin ang pamamaraan Output(<Область>) .

TabDoc.Output(HeaderArea);

Pagsusulat ng kahilingan para sa isang nakalimbag na kapansanan

Simulan natin ang pagpuno at pagguhit ng lugar Data. Ang paggawa ng 1C na naka-print na form ay nagsasangkot din ng pagsulat ng query; Mga paninda at mga presyo Mga Nomenclature para sa kasalukuyang petsa na aming gagamitin Hiling. Ang 1C 8 query language ay katulad ng SQL, o sa halip ay halos kinokopya ang mga kakayahan ng SELECT operator nito, ngunit ang buong query ay nakasulat sa Russian. Samakatuwid, kung ikaw ay hindi bababa sa malabo na pamilyar sa SQL, pagkatapos ay madali mong mauunawaan ang 1C 8 query language.

Sa naka-print na form na ito, ang kahilingan ay magiging medyo simple at marami ang magsasabi na posible itong gawin nang wala ito, ngunit ang kaalaman sa wika ng query at ang kakayahang magamit ito nang mahusay ay isa sa mga pangunahing kasanayan ng isang 1C programmer. Binibigyang-daan ka ng mga query na makakuha ng mga kumplikadong sample ng data gamit ang mas kaunting mga mapagkukunan, at ang teksto ng query ay mas madaling maunawaan kaysa sa program code na nakasulat nang hindi gumagamit ng isang query (o may kaunting paggamit nito). Bilang karagdagan, ang 1C 8 ay may napakahusay na taga-disenyo ng query na nagbibigay-daan sa iyong interactive na bumuo ng isang query mula sa mga kinakailangang talahanayan.

Gumawa tayo ng variable na maglalaman ng kahilingan.

Kahilingan = Bagong Kahilingan;

Bubuo kami ng query text gamit ang query constructor. Upang magsimula, isulat natin:

Request.Text = "";

Ilagay ang cursor ng mouse sa pagitan ng mga quote at pindutin ang kanang pindutan ng mouse. Sa menu ng konteksto na bubukas, piliin ang item Humiling ng tagabuo, malaki ang maitutulong nito sa amin sa paggawa ng 1C printing form. Pagkatapos nito, magbubukas ang window ng taga-disenyo ng query; naglalaman ito ng maraming tab, ngunit para sa aming query kakailanganin lang namin ang apat: "Mga Talahanayan at Mga Patlang", "Mga Relasyon", "Mga Kundisyon", "Mga Pagsali / Alyases".

Para sa aming query kakailanganin namin ng dalawang talahanayan: bahagi ng talahanayan Mga paninda dokumento Pagtanggap ng mga kalakal at serbisyo at isang snapshot ng pinakabagong impormasyon sa kasalukuyang petsa ng rehistro Mga presyo ng item.

Sa kaliwang bahagi ng window ng taga-disenyo nakita namin ang hanay Database. Naglalaman ito ng isang puno ng lahat ng mga bagay na metadata, hanapin natin ang mga kailangan natin. Upang gawin ito, buksan natin ang thread Dokumentasyon at hanapin ang dokumento Pagtanggap ng Mga Kalakal at Serbisyo, buksan natin ito at hanapin ang tabular na bahagi Mga paninda, i-drag ito sa column ng query designer Mga mesa. Maaari kang mag-drag sa tatlong paraan: sa pamamagitan ng aktwal na pag-drag, sa pamamagitan ng pag-double click sa talahanayan, o sa pamamagitan ng pagpili dito at pag-click sa button na “>”. Buksan natin ang thread Mga Rehistro ng Impormasyon at hanapin ang mesa doon PricesNomenclature.SliceLatest, i-drag din ito sa column Mga mesa. Ang dalawang talahanayan na ito ay sapat na para sa aming query.

Piliin natin ang mga patlang na kailangan natin mula sa mga resultang talahanayan. Upang gawin ito, sa hanay Mga mesa buksan natin ang mesa at hanapin ang mga patlang: Nomenclature, Halaga, Presyo, Dami at i-drag ang mga ito sa ikatlong hanay ng constructor - Mga patlang. Palawakin natin ang talahanayan , hanapin natin ang field Presyo at i-drag din ito sa Mga patlang.

Ang istraktura ng mga talahanayan at mga patlang ng aming kahilingan ay handa na, ngayon ay lumipat tayo sa mga kundisyon. Kailangan namin ang tabular data Mga paninda ay hindi kinuha mula sa lahat ng mga resibo, ngunit mula lamang sa isa na aming nai-print. Upang gawin ito, magpapataw kami ng isang kondisyon sa talahanayan Pagtanggap ng GoodsServicesGoods. Pumunta tayo sa tab na "Mga Kundisyon" ng taga-disenyo ng query. Sa isang column Mga patlang ang mga talahanayan na napili namin nang mas maaga ay matatagpuan, para sa kondisyon na kakailanganin namin ng isang patlang Link mula sa mesa Pagtanggap ng mga Goods and Services Goods, I-drag natin ito sa window ng Mga Kondisyon.

Sa 1C query maaari mong gamitin ang mga parameter na kailangan nila upang ilipat ang data sa kahilingan. Halimbawa, kung gusto naming limitahan ang pagpili ng mga dokumento sa isang partikular na dokumento, maaari kaming gumamit ng parameter para magpasa ng link sa dokumentong ito sa kahilingan at gamitin ang parameter na ito sa kundisyon. Ito mismo ang aming gagawin sa aming kahilingan.

Pagkatapos ng bintana Mga kundisyon nagdagdag kami ng field Link, ang taga-disenyo ng query mismo ay gagawa ng parameter na may parehong pangalan at ilalagay ito pagkatapos ng “=” sign. Maaaring palitan ang pangalan ng parameter na ito kung ninanais. Sa text ng kahilingan, ang mga parameter ay minarkahan ng "&" sign, ngunit sa kasong ito hindi ito kinakailangan, dahil ipinapalagay na ang pangalawang bahagi ng kondisyon ay naglalaman ng isang parameter, kailangan mo lamang itong tandaan. Tatalakayin sa ibaba kung paano magpasa ng value sa isang 1C na parameter ng kahilingan.

Dahil sa kahilingan ay gumagamit kami ng hindi isang buong talahanayan ng mga presyo ng produkto, ngunit isang virtual na isa (isang slice ng huli sa kasong ito), kailangan naming itakda ang mga kondisyon para sa pagbuo ng virtual na talahanayan na ito, sa aming kaso ito ang cut-off date at ang kundisyon para sa uri ng mga presyo (ang mga presyo na may mahigpit na tinukoy na uri ng presyo ay ang tinukoy sa dokumento ng resibo na aming ini-print).

Upang punan ang mga parameter ng virtual na talahanayan, pumunta sa tab Mga talahanayan at mga patlang tagabuo ng query, sa column Mga mesa piliin ang talahanayan PricesNomenclatureCuttingLatest at pindutin ang pindutan Mga Opsyon sa Virtual Table, na matatagpuan sa tuktok. Sa window na bubukas, sa field Panahon dapat kang magtakda ng parameter kung saan ipapasa ang petsa kung kailan gagawin ang pagbawas sa presyo. Sa aming kaso, ito ang magiging kasalukuyang petsa (iyon ay, ngayon), kaya tatawagin namin ang parameter na "&CurrentDate". Sa field ng mga kondisyon isusulat namin ang mga kondisyon para sa uri ng presyo, ipapasa din namin ito sa parameter, na tatawagin naming "&TypePrice". Magiging ganito ang resultang kundisyon (kung saan Uri ng Presyo- rehistro ng pagsukat Mga presyo ng item):

PriceType = &PriceType

Ang mga parameter ng virtual na talahanayan ay napunan, i-click ang pindutan OK.

Ngayon na limitado na natin ang pagpili sa dokumentong kailangan lang natin, gumawa tayo ng mga koneksyon sa pagitan ng mga talahanayan ng query. Kung hindi ito nagawa, ang mga presyo mula sa talahanayan ng PricesNomenclatureSliceLast ay hindi maiuugnay sa item mula sa resibo. Pumunta tayo sa tab Mga koneksyon taga-disenyo ng query. Gumawa tayo ng koneksyon sa buong field Nomenclature sa pagitan ng aming dalawang mesa. Upang gawin ito, pindutin ang pindutan Idagdag, sa field Talahanayan 1 pumili ng mesa Pagtanggap ng GoodsServicesGoods, at sa field na Talahanayan 2 - PricesNomenclatureSliceLast. Sa mga kundisyon ng komunikasyon, piliin ang mga field Nomenclature mula sa magkabilang mesa.

Dapat ding tandaan na sa pagpili ng query kailangan nating makuha ang lahat ng mga hilera mula sa bahagi ng tab Mga paninda at mga presyo lamang kung available ang mga ito sa kasalukuyang petsa para sa uri ng presyo ng dokumento. Kaya, ang tabular data Mga paninda ay sapilitan, ngunit hindi available ang data ng breakdown ng presyo. Samakatuwid, sa mga ugnayan sa pagitan ng mga talahanayang ito kinakailangan na gamitin ang tinatawag na LEFT JOIN, at ang kaliwa (o kinakailangan) na talahanayan ay magiging Pagtanggap ng GoodsServicesGoods, at ang kanan (o opsyonal) PriceNomenclatureSliceLast. Upang ang kaliwang pagsasama ng mga talahanayan ng query ay gumana tulad ng inilarawan ko sa itaas, kailangan mong lagyan ng tsek ang kahon Lahat pagkatapos ng field Talahanayan 1.


Ang kahilingan ay halos handa na, ang natitira ay upang gumana nang kaunti sa mga alias sa field. Pumunta tayo sa bookmark Mga Unyon/Alyas at magtakda ng alias para sa field PricesNomenclature Slice Latest.Price. Ang palayaw na pangalan ay magiging - PriceAsToday, ito ay kinakailangan upang ang mga pangalan ng mga field ng pagpili ng query at ang mga pangalan ng mga parameter sa layout ng naka-print na form ay tumugma.

Kumpleto na ang gawain sa query designer, i-click ang OK. Pagkatapos magsara ng window ng taga-disenyo, makikita mo na ang linya na may text ng kahilingan ay napunan at ganito ang hitsura:

Request.Text = "SELECT | Receipt of GoodsServicesProducts.Nomenclature, | Receipt of GoodsServicesProducts.Halaga, | Receipt of GoodsServicesProducts.Price, | Receipt of GoodsServicesProducts.Dami ng, | PricesNomenclature na Presyo | Presyo ng Presyo F. Presyo | GoodsServices.Goods AS Receipt ProductsServicesProducts |. LEFT CONNECTION RegisterInformation.PricesNomenclature.SliceLast (| &CurrentDate, PriceType = &PriceType) AS PricesNomenclatureSliceLast

Isinasagawa ang kahilingan

Ipasa natin ang mga kinakailangang parameter sa kahilingan para dito gagamitin natin ang paraan ng kahilingan SetParameter(<ИмяПараметра>,<Значение>). Upang makuha ang kasalukuyang petsa, gamitin ang built-in na function Ang kasalukuyang petsa(), ibinabalik nito ang petsa at oras ng computer.

Magpatakbo tayo ng query para makakuha ng sample na may data na kailangan natin. Upang gawin ito, gamitin muna ang paraan ng kahilingan Run(), at pagkatapos ay ang pamamaraan Pumili ().

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

Punan ang naka-print na talahanayan ng form

Bilang isang resulta, sa variable Sampol ay naglalaman ng isang seleksyon ng mga resulta ng query, maaari kang mag-navigate sa pamamagitan nito gamit ang pamamaraan Susunod(), at upang mapunta sa buong bagay kailangan mo ng isang loop paalam. Ang disenyo ay ang mga sumusunod:

Habang Select.Next() Loop EndLoop;

Nasa loop na ito na pupunan at ipapakita namin ang layout area Data. Ngunit una, simulan natin ang dalawang variable ng uri ng numero. Sa mga ito ay kokolektahin natin ang mga kabuuan ayon sa dami at halaga na kailangan nating ipakita sa lugar Silong.

TotalSum = 0; TotalQuantity = 0;

Sa loob ng loop pupunuin namin ang lugar Data data mula sa kasalukuyang elemento ng pagpili sa mga variable TotalAmount At Kabuuang dami magdagdag ng mga halaga ng kabuuan at dami, at sa wakas, ipakita ang lugar sa isang dokumento ng spreadsheet gamit ang paraang pamilyar na sa amin Output(). Dahil ang mga pangalan ng mga field ng aming kahilingan ay ganap na nag-tutugma sa mga pangalan ng mga parameter ng lugar Data, pagkatapos ay upang punan ay gagamitin namin ang built-in na pamamaraan FillPropertyValues(<Приемник>, <Источник>), na kinokopya ang mga halaga ng ari-arian<Источника>sa mga ari-arian<Приемника>.

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

Pag-output ng footer ng isang naka-print na form sa isang spreadsheet na dokumento

Ito ay nananatiling punan at ipakita ang huling lugar ng layout - Silong. Inihanda na namin ang data para sa pagpuno, pagpuno at pag-withdraw ay isinasagawa ayon sa parehong pamamaraan.

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

Ang dokumento ng spreadsheet ay ganap na napunan; Ngunit sa karaniwang mga pagsasaayos ng 1C 8, ang mga pamamaraan ng mga espesyal na module ay responsable para sa output ng mga panlabas na naka-print na mga form. Samakatuwid, ito ay sapat na upang bumalik mula sa pag-andar Seal() nakumpletong dokumento ng spreadsheet.

Ibalik ang TabDoc;

Sa puntong ito, ang yugto ng programming ay nakumpleto at ang paglikha ng 1c printing form ay halos kumpleto na. Buong teksto ng function Seal() Hindi ko ito ibibigay dito, maaari mong tingnan ito sa napi-print na file, na maaari mong i-download sa ibaba ng artikulo.

Paglikha ng isang naka-print na form 1C. Mga pagpipilian sa awtomatikong pagpaparehistro

Kapag nagkokonekta ng panlabas na form sa pag-print sa database, hindi awtomatikong tinutukoy ng system kung aling dokumento o reference na libro ang inilaan para sa pag-print na kailangan mong piliin ito nang manu-mano. At kung ang ibang tao ay sumulat ng naka-print na form, at ikaw ay nakatalaga lamang sa pagkonekta nito, kung gayon ang pagpipilian ay maaaring maging hindi maliwanag. Upang maiwasan ang mga naturang problema, sa lahat ng panlabas na naka-print na mga form ay kinakailangan upang lumikha ng isang layout na may mga parameter ng auto-registration. Kung ito ay nilikha at wastong na-format, ang system ay awtomatikong tinutukoy kung aling dokumento o reference na libro ang naka-print na form ay inilaan para sa.

Ginagawa ito tulad ng sumusunod:

  • Sa panlabas na pagproseso, lumikha kami ng isang bagong layout. Tinatawag namin itong "Settings_Auto-Registration" (mahalagang hindi magkamali!).
  • Sa unang cell ng layout ay isinusulat namin Dokumentasyon.(o Mga direktoryo.) at ang pangalan ng dokumento kung saan kailangan mong ikonekta ang naka-print na form.

Pagkonekta ng panlabas na form sa pag-print sa base

  • Simulan ang 1C 8 sa mode kumpanya;
  • Pumunta sa menu Serbisyo -> Mga karagdagang ulat at pagpoproseso -> Mga karagdagang panlabas na naka-print na form;
  • I-click ang button Idagdag;
  • Sa window na bubukas, i-click ang icon Palitan ang external processing file;
  • Kung nakagawa ka ng mga parameter ng auto-registration, sumasang-ayon kaming gamitin ang mga ito;
  • Kung hindi ka pa nakagawa ng mga parameter ng auto-registration, pagkatapos ay sa tabular na seksyon Accessory ng plato sa pagpi-print idagdag ang kinakailangang dokumento o reference book;
  • Pindutin ang pindutan OK.

Pagkatapos nito, ang panlabas na form sa pag-print ay magiging available sa menu selyo dokumento Pagtanggap ng mga kalakal at serbisyo. Ang paglikha ng 1C na naka-print na form ay maaari na ngayong ituring na kumpleto.

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: inayos ng ilan ang katumpakan ng presyo o halaga sa invoice, ang ilan ay nagpasok ng logo at inayos ang hitsura ng 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 configuration, lumikha ang mga developer ng isang bagong mekanismo: "Panlabas na pagproseso, mga naka-print na form, pagproseso para sa pagpuno ng mga bahagi ng tabular." 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 pinahintulutan 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 ng command sa main menu "Configuration > Open Configuration". Hindi namin babaguhin ang mismong configuration sa anumang sitwasyon. 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 buksan 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. Binabago namin ang laki tulad ng sumusunod:

  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 ang 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 isang karaniwang 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 pagsasaayos 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 tiyaking tukuyin ang keyword na " I-export"

Ang unang punto ay kinakailangan upang malaman ng algorithm sa pag-print kung saan kukuha ng data para sa pag-print, at ang pangalawa ay ang algorithm ng 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 isang 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 namin ang teksto sa clipboard, ngayon ay lumipat muli sa aming pagproseso "Branded Invoice". Mag-click sa pindutan "Mga Pagkilos > Buksan ang Module ng Bagay"(Larawan 10).



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

Ngayon kailangan naming 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 "BrandedInvoice.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 - "BrandedInvoice.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 nagsasaad 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. Sa pangalan isinama namin ang isang makabuluhang maikling paglalarawan ng 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 - "I-print ang 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" Isang bagong porma ang inilimbag sa 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 pagsamahin ang iyong mga kasanayan, maaari mong subukang mag-isa na magdagdag sa configuration 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.

Isaalang-alang natin ang pagsulat ng pinakasimpleng naka-print na form sa 1s 8.1 - 8.2 gamit ang halimbawa ng pagsasaayos Enterprise accounting 2.0. Sabihin nating kailangan mong magsulat ng panlabas na naka-print na form para sa isang dokumento: ipakita ang pangunahing data ng dokumento, pati na rin mula sa tabular na bahagi Mga paninda: katawagan, presyo, dami at halaga.

Maaari mong i-download ang resultang halimbawa mula sa .

Sa configurator 1C Enterprises 8 lumikha ng panlabas na pagproseso ( File->Bago->External Processing), itakda ang pangalan, lumikha ng mga kinakailangang detalye para sa panlabas na naka-print na form ReferenceToObject may uri DocumentLink.

Paglikha ng naka-print na layout ng form

Magdagdag ng bago layout, iwanan ang uri ng layout dokumento ng spreadsheet. Lumilikha kami ng tatlong lugar sa layout: Header, Data At Silong. Magagawa ito sa pamamagitan ng pagpili ng kinakailangang bilang ng mga linya at pag-click sa menu Talahanayan->Mga Pangalan->Magtalaga ng pangalan (Ctrl+Shift+N).

Pagkatapos nito, nagsisimula kaming maglagay ng teksto at mga parameter sa mga lugar. Ilalagay natin ito sa header pangalan ng naka-print na form, numero ng dokumento At organisasyon, at iguhit din ang mga hangganan ng header ng talahanayan at isulat ang mga pangalan ng mga column. Kapag gumagawa ng parameter sa mga katangian ng cell, sa tab na Layout dapat mong itakda ang property Pagpupuno sa kahulugan Parameter.

Sa lugar Data gumawa tayo ng mga parameter para sa pagpapakita ng mga row sa tabular section( Nomenclature, presyo atbp.), at sa lugar Silong para sa mga kabuuan ayon sa dami at halaga.

Programming

Pumunta tayo sa printing form object module Mga Aksyon->Buksan ang module ng object.

Gumawa tayo ng export function doon na mandatory para sa mga naka-print na form. Seal().

Function Print () I-export EndFunction

Sa function ay gagawa kami ng variable para sa dokumento ng spreadsheet, kung saan ang naka-print na form ay magiging output, nakukuha namin layout At mga lugar ng layout.

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

Punan natin ang mga parameter mga sumbrero at dalhin ito sa dokumento ng spreadsheet.

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

Upang makakuha ng mga hilera ng talahanayan Mga paninda ginagamit namin ang kahilingan.

Kahilingan = bagong Kahilingan; Request.SetParameter("Link", ObjectLink); Query.Text = "PUMILI | Mga Pagbebenta ng Mga Kalakal at Mga Serbisyong Pangngalan, | Halaga ng Pagbebenta ng Mga Kalakal at Serbisyo, | Pagbebenta ng Mga Produkto at Serbisyong Presyo. | Benta ng Mga Produkto at Serbisyong Dami|MULA | Dokumento|SAAN | Mga Benta ng Mga Produkto at Serbisyo Link = &Link";

Ipinapasa namin ang mga detalye sa parameter ng kahilingan ReferenceToObject, upang ipahiwatig sa kondisyon SAAN, na kailangan lang namin ng data mula sa dokumento kung saan kami nagmula sa naka-print na form. Upang makakuha ng sample na query, isasagawa muna namin ito at pagkatapos ay piliin ang mga row.

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

Susunod sa loop punan namin ang mga parameter ng lugar Data para sa bawat linya ng pagpili ng dokumento at ipakita ang mga ito sa dokumento ng spreadsheet. Kinakalkula din namin ang kabuuang mga halaga sa loop dami At mga halaga. Hindi namin pupunan ang bawat parameter nang hiwalay, ngunit gagamitin ang pamamaraan Punan angPropertyValues((<Приемник>, <Источник>) mula sa pandaigdigang konteksto, kinokopya nito ang mga halaga ng ari-arian <Источника> sa mga ari-arian <Приемника> . Ginagawa ang pagtutugma ng mga pangalan ng property. Maaari mong basahin ang higit pa tungkol dito sa syntax assistant 1C Enterprise 8.

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

Punan at ipakita ang lugar Silong.

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

Ibinabalik ang nakumpletong dokumento ng spreadsheet mula sa function Seal().

ibalik ang TabDoc;

Kung gumagamit ka ng isa sa mga karaniwang configuration, pagkatapos ay ibalik ang spreadsheet na dokumento 1C ay ipapakita ang naka-print na form sa screen. Maaari mo ring gamitin ang paraan ng dokumento ng spreadsheet para sa output. Ipakita().

5. Pagkonekta ng naka-print na form sa isang dokumento

SA karaniwang mga pagsasaayos 1C 8 Mayroong isang direktoryo para sa pagrerehistro ng mga panlabas na naka-print na form Panlabas na Pagproseso. Upang kumonekta, pumunta sa menu sa enterprise mode Serbisyo->Mga karagdagang ulat at pagproseso->Mga karagdagang panlabas na naka-print na form.

Magdagdag ng bagong elemento ng direktoryo, i-load ang naka-print na form mula sa disk at piliin ang uri ng dokumento.

Ngayon sa dokumento Pagbebenta ng mga kalakal at serbisyo May lalabas na bagong printable.

Auto-registration ng naka-print na form

Upang matiyak na kapag kumokonekta sa isang form sa pag-print hindi mo kailangang piliin nang manu-mano ang uri ng dokumento, maaari mong i-configure awtomatikong pagpaparehistro. Upang gawin ito, magdagdag ng bagong layout at tawagan ito Settings_Auto-registration(ito ang tanging paraan) at sa unang cell nito ay nagsusulat tayo Dokumentasyon.<Наименование документа> (o Mga direktoryo.<Наименование справочника> ).

Ngayon, kapag nagkokonekta ng isang form sa pag-print, hihilingin sa amin na gamitin mga parameter ng auto-registration.

Tulad ng alam - kahit walang papel ka... walang seryosong negosyo ang magagawa kung wala. At kapag sinabi namin na ang 1C ay may ilang uri ng mga elektronikong dokumento, ang tanong ay agad na lumitaw kung paano i-print ang mga ito sa papel na anyo.

Ang proseso ng pag-print ng isang elektronikong dokumento 1C ay tinatawag na pag-print form 1C.

Ang bawat dokumento ay maaaring magkaroon ng ilang 1C na naka-print na form. Halimbawa, ang dokumentong Pagbebenta ng mga kalakal at serbisyo (i.e. pagbebenta) ay naka-print sa 1C na naka-print na mga form: TORG-12, Invoice, Consignment note, Certificate of services na ibinigay, at iba pa.

Ang kakanyahan ng 1C na naka-print na form ay isang template (tulad ng isang Excel na dokumento) kung saan ang mga variable ay tinukoy. Sa panahon ng proseso ng pag-print, ang teksto mula sa elektronikong dokumento ay pinapalitan para sa mga variable. Ang template ay karaniwang naka-imbak sa configuration.

Ang problema sa pagpapalit ng karaniwang 1C na naka-print na form ay kadalasang hindi ipinapayong baguhin ang karaniwang pagsasaayos, kung hindi, ito ay magiging mas mahirap na i-update. Samakatuwid, ang iba't ibang mga pamamaraan para sa paggamit ng mga panlabas na 1C printing form ay nagsimulang muling likhain.

Ang panlabas na 1C printing form ay isang template ng pag-print na nakaimbak kahit papaano nang hiwalay sa mismong configuration.

Gayunpaman, ito ay lahat ng teorya. Paano lumikha ng iyong sariling naka-print na form? O mas mabuti pa, kung paano gumawa ng mga pagbabago sa isang umiiral na?

Paano naka-print ang isang 1C na dokumento

Upang mag-print ng anumang 1C na dokumento (na maaaring i-print), kailangan mong i-click ang Print button sa dokumento. Mag-aalok ang 1C na pumili ng 1C na naka-print na form para sa dokumentong ito mula sa listahan.

Sa kaliwa ng button na I-print ay karaniwang may button na mabilis na pag-access sa huling napiling 1C printing form.

Ang resulta ng pag-print ay ganito. Para i-print ito sa isang printer, kailangan mong ilagay ang cursor sa 1C printing form, pindutin ang Ctrl+P o ang printer button sa button panel o sa File/Print menu.

Ang mga setting ng pag-print (mga margin, oryentasyon ng sheet, atbp.) ay matatagpuan sa menu ng File/Page Setup. Maaari mo ring i-configure ang mga setting ng user upang direktang mag-print sa printer.

Saan galing ang printing form na ito?

Saan matatagpuan ang 1C printed form?

Pumunta tayo sa configurator. Hanapin ang kinakailangang dokumento sa window ng pagsasaayos. Palawakin natin ang sangay ng Layouts nito. Sila ang nagiging 1C printing form kapag naka-print.

Gayunpaman, hindi ito magiging sapat - inalok kaming pumili ng marami pang opsyon kapag nagpi-print. Ang katotohanan ay maraming 1C printed form na mga layout ang nakatago sa ibang lugar.

Bumalik tayo sa itaas ng 1C configuration window. Buksan natin ang General branch, at pagkatapos ay ang General Layouts branch. Dito matatagpuan ang karamihan sa mga layout. Ito ay totoo lalo na para sa mga naka-print na form na kinokontrol ng estado 1C - TORG 12, Invoice, atbp.

Sa pamamagitan ng paraan, hindi mahirap mapansin na makakakita ka ng ilang mga layout ng TORG12 o Invoice. Bakit? Madaling ipaliwanag. Pana-panahong nagbabago ang mga batas at kinakailangan. Ngunit hindi lang namin maaaring baguhin ang parehong layout - at kung kailangan naming i-print ang dokumento mula sa isang petsa na mas maaga kaysa sa petsa ng pagbabago. Samakatuwid, maraming mga layout ang ginawa at, depende sa petsa ng dokumento, ang tama ay ginagamit.

Ngunit hindi lang iyon! Mayroon ding mga panlabas na layout. Saan sila nakaimbak?

Bumalik tayo sa 1C Enterprise mode. Sa pamamagitan ng menu ng user na may mga karapatang pang-administratibo Operations/Directories, piliin ang External processing directory.

Ang mga linya ng direktoryo na ito, na mayroong form na Printing form, ay nagdaragdag ng mga opsyon sa pag-print para sa dokumentong tinukoy sa talahanayan Pagmamay-ari ng printing form (sa larawan ito ay Sales ng mga kalakal at serbisyo).

Upang ito ay gumana, dapat kang gumawa ng panlabas na pagproseso na mayroong Print() na pamamaraan sa object module nito na may label na Export, na nag-aayos ng proseso ng pag-print.
Pero nauuna na tayo. Tingnan muna natin kung paano nakaayos ang layout ng 1C printing form.

Layout ng naka-print na form 1C

Ang layout ng 1C printing form ay ganito.

Tulad ng nakikita mo, nahahati ito sa mga bloke. Ang mga bloke ay maaaring pahalang (pangalan sa kaliwa) o patayo (pangalan sa itaas).

Ang layout mismo, tulad nito, ay hindi naka-print. Ang mga indibidwal na bloke ay naka-print. Ang programmer sa proseso ng pag-print ay tumutukoy sa pagkakasunud-sunod ng mga bloke at ang bilang ng mga pag-uulit ng bawat bloke. Bilang resulta, nabuo ang naka-print na form.

Upang magtalaga ng isang lugar, pumili ng ilang row (o ilang column) at piliin ang Table/Names/Asign a name mula sa menu. Upang alisin, mayroon ding utos na Alisin ang pangalan.

Kailangan ang pangalan para ma-access ang lugar mula sa program code. Ang pangalan ay maaaring italaga hindi lamang sa mga hilera o column, kundi pati na rin sa ilang mga cell. Upang gawin ito, piliin ang mga cell at piliin ang parehong menu.

Gayunpaman, bilang default, hindi ipinapakita ang mga custom na pangalan ng cell. Upang makita ang mga ito, piliin ang menu item na Table/Names/Display na pinangalanang mga cell.

Kaya, ngayon nalaman namin na ang isang 1C na naka-print na form ay nabuo gamit ang isang layout. Ang layout ay binubuo ng mga bloke - matalinong tinatawag na mga lugar.

Karaniwang (karaniwang ginagamit) na mga bloke para sa pag-print ng mga plato:

  • Header – ang pamagat ng dokumento ay ipinapakita
  • Hilera – ipinapakita ang isang hilera ng talahanayan, inuulit ang bloke na ito nang maraming beses hangga't kailangang i-print ang mga hilera
  • Footer – ang dulo ng dokumento ay ipinapakita.

Ngayon kailangan nating harapin ang katotohanang iyon