bahay - Mga ideya
Mga karagdagang panlabas na naka-print na form 1s 8.3. Pagdaragdag ng panlabas na form sa pag-print sa database

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 configuration ng 1C 8 - 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 pagpapaunlad 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. Pagtanggap ng Mga Kalakal at Serbisyo. 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 layout ng naka-print na 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; wala tayong babaguhin sa window ng layout designer 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; maaari mong palaging idagdag o alisin ang mga ito. 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 naka-print na 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 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 na, 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 lugar ng layout na ito ay ang header ng talahanayan, 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 dapat tumugma sa mga column ng table header, 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 program code na kailangan para 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 para sa lugar ng layout, mayroong 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; makukuha namin ang lahat ng kinakailangang halaga para sa kanila mula sa mga detalye. Sanggunian ng Bagay, na naglalaman ng link sa dokumentong ipi-print.

HeaderArea.Parameters.Organization = LinkToObject.Organization; HeaderArea.Parameters.Account = LinkToObject.Account; HeaderArea.Parameters.ReceiptDate = ObjectLink.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 isang kahilingan para sa isang naka-print na kapansanan

Simulan natin ang pagpuno at pagguhit ng lugar Data. Ang paglikha ng isang 1C na naka-print na form ay nagsasangkot din ng pagsulat ng isang query; kailangan namin ito upang makakuha ng tabular na data 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 text ng kahilingan gamit ang tagabuo ng kahilingan. 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 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 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.ShortcutLatest, 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 mga query sa 1C maaari kang gumamit ng mga parameter; kailangan ang mga ito upang maglipat ng data sa kahilingan. Halimbawa, kung gusto naming limitahan ang pagpili ng mga dokumento sa isang partikular na dokumento, pagkatapos ay maaari kaming gumamit ng isang parameter upang ipasa ang isang 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 teksto ng kahilingan, ang mga parameter ay minarkahan ng "&" sign, ngunit sa kasong ito hindi ito kinakailangan, dahil ipinapalagay na ang pangalawang bahagi ng kundisyon 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 query constructor, sa column Mga mesa piliin ang talahanayan PresyoNomenclatureCuttingLatest at pindutin ang pindutan Mga Pagpipilian 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 patlang 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, kinakailangang 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 magkatugma.

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 GoodsServicesGoods.Amount, | Receipt of GoodsServicesProducts.Price, | Receipt of GoodsServicesProducts.Quantity of, | PricesToday Prices GoodsServices.Goods AS ReceiptTo varsServicesProducts LEFT CONNECTION RegisterInformation.PricesNomenclature.SliceLast (| &CurrentDate, PriceType = &PriceType) HOW Nomenclature PricesSliceLast | ON Receipt of GoodsNomenclature.ServicesNoclature | DITO | Resibo ng GoodsServicesProducts.Link = &Link";

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 paghiling Run(), at pagkatapos ay ang pamamaraan Pumili ().

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

Punan ang naka-print na talahanayan ng form

Bilang isang resulta, sa variable Sample ay naglalaman ng isang seleksyon ng mga resulta ng query, maaari kang mag-navigate sa pamamagitan nito gamit ang pamamaraan Susunod(), at para mapuntahan ang buong bagay kailangan mo ng loop Bye. 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 ay 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; ang natitira lamang ay ipakita ito sa screen upang makita ng user ang naka-print na form at mai-print ito kung kinakailangan. 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 nilalayon ng form sa pag-print; 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 ginawa at wastong na-format, awtomatikong tinutukoy ng system kung aling dokumento o reference book ang naka-print na form 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 pagproseso -> 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 bahagi Accessory ng plato sa pag-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.

Mga tagubilin

Buksan ang 1C:Enterprise program na bersyon 8. Bigyang-pansin ang menu item na "Serbisyo" - "Mga panlabas na pagpoproseso at pag-print ng mga form". Sa tulong nito, maaari kang mag-imbak ng mga panlabas na ulat, pagproseso, mga naka-print na form, pati na rin ang pagproseso para sa pagpuno ng mga elemento ng tabular. Maaari mo ring ikonekta ang isang panlabas na form sa halip na baguhin ang isang umiiral na, na mangangailangan ng panghihimasok sa pagsasaayos ng programa.

Ilunsad ang 1C:Enterprise program sa configurator mode, pagkatapos ay lumikha ng panlabas na pagproseso, upang gawin ito, isagawa ang command na "File" - "Bago". Sa window na lilitaw, piliin ang "External Processing". May lalabas na bagong panlabas na form sa pagpoproseso sa screen. Bigyan ito ng pangalang "Palabas". Pagkatapos ay magdagdag ng bagong attribute na tinatawag na "Object reference", tukuyin ang uri para dito - "Document. Link. Pagbebenta ng mga kalakal at serbisyo." Upang lumikha ng napi-print para sa ibang uri ng dokumento, gamitin ang naaangkop na uri ng link.

Magdagdag ng bagong layout sa pamamagitan ng pag-click sa kaukulang button sa window ng bagong form. Pangalanan itong "Layout", lumikha ng isang lugar na tinatawag na "Header", bigyan ito ng parameter na "Header Text". Pagkatapos ay mag-click sa pindutan ng "Mga Pagkilos", piliin ang utos na "Buksan ang module ng object". Pagkatapos ay ipasok ang teksto ng module, maaari mong gamitin ang halimbawang nai-post sa website http://www.uasoft.com.ua/content/articles/315/.

Ilunsad ang 1C:Enterprise program, pumunta sa Tools menu, piliin ang External Printing Forms. Magdagdag ng bagong entry sa listahan ng mga form. Upang gawin ito, piliin ang nilikha na file sa pagproseso, at sa tabular na seksyon, ipahiwatig na ang form ay kabilang sa dokumentong "Mga Pagbebenta ng mga kalakal". Tingnan kung gumagana nang tama ang bagong printing plate. Upang gawin ito, buksan ang nilikha na dokumento, subaybayan ito, pagkatapos ay sa ibaba ng screen mag-click sa pindutang "I-print", piliin ang opsyon na "Panlabas na pag-print".

Mga Pinagmulan:

  • kung paano baguhin ang isang naka-print na form sa 1c

Upang makagawa at makapag-edit ng mga object form, ang 1C:Enterprise program ay nagbibigay ng espesyal na form editor (o Form Designer). Ang mga form ng object solution sa application ay idinisenyo upang biswal na kumatawan sa data habang nagtatrabaho sa programa. Ang editor ng form ay naglalaman ng ilang mga tab na nagbibigay ng kakayahang i-edit ang lahat ng mga elemento ng form.

Kakailanganin mong

  • computer, 1C program

Mga tagubilin

Gamit ang editor ng form, maaari kang magdagdag ng isa o higit pang mga elemento ng "Group - Mga Pahina" sa form; upang gawin ito, mag-click sa berdeng plus sign sa kaliwang sulok sa itaas ng editor habang nasa tab na "Mga Elemento".
Sa 1C:Enterprise mode, lahat ng umiiral na elemento ng pangkat ay ipapakita bawat isa sa isang hiwalay na tab. Upang iposisyon ito sa itaas o sa ibaba ng gumagana, sa window ng "Properties" ng isang partikular na grupo, sa item na "Display", piliin ang naaangkop na command.

Maaari ka ring magdagdag ng mga elemento sa form sa pamamagitan ng pag-drag ng mga kinakailangang detalye sa element tree. Upang gawing mas madali ang pag-navigate sa mga kontrol ng form kapag nag-e-edit o naglalagay ng data, itakda ang pagkakasunud-sunod na nababagay sa iyo, ayusin ang mga elemento sa puno at i-subordinate ang mga ito sa iba pang mga elemento, at itakda ang mga katangian ng mga elemento ng pangkat upang umangkop sa iyong mga pangangailangan.
Upang i-edit ang mga detalye ng form - baguhin ang mga ito, lumikha ng mga bago o tanggalin ang mga ito, gamitin ang panel sa lugar ng puno ng mga detalye sa kaukulang tab.

Upang i-edit ang command interface, pumunta sa naaangkop na tab. Makakakita ka ng command tree, ang mga pangunahing sangay nito ay ang "Navigation Panel" at ang "Command Panel". Awtomatikong idinaragdag ang ilang command sa command interface tree, ngunit maaari mo ring idagdag ang mga ito sa pamamagitan ng pag-drag sa mga command na kailangan mo mula sa listahan ng mga global (pangkalahatang) command o mula sa listahan ng mga form command.

Ang mga utos ng form ay na-edit sa kaukulang listahan. Maaari mong idagdag ang mga ito, alisin ang mga ito mula sa listahan, itakda ang mga katangian para sa bawat command gamit ang palette ng mga katangian, na maaari mong tawagan sa pamamagitan ng pag-click sa icon ng lapis sa command line ng listahan.
Upang i-edit ang mga parameter ng form, pumunta sa tab na "Mga Parameter", kung saan maaari mo ring idagdag ang mga ito, tanggalin ang mga ito, at itakda ang mga gustong katangian.

Video sa paksa

Ang tsart ng mga account, na ginagamit sa accounting upang ipakita ang mga aktibidad na pang-ekonomiya ng isang enterprise, ay sumusuporta sa isang multi-level na hierarchy: account - mga subaccount. Upang matingnan ng user ang data na nakapaloob sa chart ng mga account at itama ang mga ito, pinapayagan ka ng 1C system na baguhin ang anyo ng account. Bilang karagdagan, ang naka-print na anyo ng invoice ay maaaring baguhin sa anumang iba pang dokumento sa 1C.

Kakailanganin mong

  • - personal na computer na may 1C.

Mga tagubilin

Ang analytical accounting ay ibinibigay para sa bawat account o subaccount. Samakatuwid, kapag lumilikha at pagkatapos ay nag-e-edit ng isang tsart ng mga account sa 1C, ang kinakailangang bilang ng mga sub-account, iyon ay, mga analytical accounting object, ay maaaring ibigay. Bukod dito, ang mga pagsasaayos sa mga account at subaccount ay maaaring gawin ng isang user na nagtatrabaho sa isang automated accounting system o ng isang software developer.

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 (sa lugar na ito ang mga pangalan ng organisasyon at ang katapat ay ilalagay), 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 pagpi-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 | Invoice para sa Pagbabayad sa Mamimili. Link = &Link"); 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 - Panlabas na mga form sa pag-print"

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

  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". Ang mga printable para sa Application Managed configuration ay iba!

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

Magandang hapon.

Ngayon gusto kong sabihin sa iyo kung paano lumikha ng mga panlabas na naka-print na form para sa pagsasaayos ng "Salary and Personnel Management 3.0". Tulad ng alam mo, ang ZUP 3.0 ay gumagamit ng isang library ng mga karaniwang subsystem, na nangangahulugang ang istraktura ng pagproseso ay mukhang ganap na naiiba. Noong una kong kailangang gumawa ng naka-print na form para sa BSP sa mga pinamamahalaang form (pagkatapos ay UT 11), ang unang bagay na ginawa ko ay pumunta sa ITS disk upang makahanap ng detalyadong dokumentasyon doon tungkol sa kung anong mga pamamaraan sa pag-export, kung anong mga parameter ang dapat naproseso at kung paano gumagana ang lahat. Dito medyo nabigo ako ng ITS, dahil... lahat ay sinabi doon tungkol sa kung paano dapat tumingin ang mga pamamaraan sa module ng dokumento, at sa panlabas na naka-print na form ang mga parameter ng "print" na pamamaraan ay muling inayos, kaya kinailangan kong maghanap ng impormasyon sa iba pang mga mapagkukunan at tinker ang subsystem mula sa loob .

Well, simulan na natin. Ang makukuha natin sa dulo ay maaaring gamitin bilang isang template.

Unang hakbang- halata. Gumawa tayo ng bagong pagproseso. Italaga natin ito ng isang arbitrary na pangalan: "Print Sample".

Ikalawang hakbang. Gumawa tayo ng layout. Dahil mayroon kaming halimbawa ng pagsubok, gagawa ako ng pinakasimpleng layout, nang walang isang parameter.

Ikatlong hakbang- Ang pinaka-kawili-wili. Buksan ang object module at simulan ang programming. Ayon sa BSP, kapag nagrerehistro ng external processing, dapat ipahiwatig nito (ang pagpoproseso) kung ano ang magagawa nito, kung ano ang mga bagay na nakakabit dito, at kung ano ang tawag dito. Kapag tinanong kung anong pagproseso ang magagawa nito, dapat itong magbalik ng isang listahan ng mga utos - ito ay isang talahanayan ng mga halaga. Sa aming kaso, ang pagproseso ay maaaring mag-output ng isang naka-print na form, kaya magkakaroon lamang ng isang command. Upang bumuo ng isang talahanayan ng mga halaga, tutukuyin namin ang isang pares ng mga pamamaraan na palaging magiging pareho sa lahat ng panlabas na naka-print na mga form:

//procedure na naghahanda ng command table structure

Function na GetTableCommand()

// Lumikha ng walang laman na command table at mga column dito
Mga Utos = Bagong ValueTable;

// Ano ang magiging hitsura ng paglalarawan ng naka-print na form para sa user
Commands.Columns.Add("View", NewTypeDescription("Row"));

// Ang pangalan ng aming layout, upang makilala namin ang tinatawag na command sa pagpoproseso ng pag-print
Commands.Columns.Add("Identifier", New TypeDescription("String"));

// Itinatakda nito kung paano dapat tawagin ang processing command
// Mga posibleng opsyon:
// - OpeningForm - sa kasong ito, dapat ipahiwatig ng column ng identifier ang pangalan ng form na bubuksan ng system
// - CallClientMethod - tawagan ang client export procedure mula sa processing form module
// - Call ServerMethod - tumawag sa isang server export procedure mula sa processing object module
Commands.Columns.Add("Usage", New TypeDescription("Row"));

// Ang susunod na parameter ay tumutukoy kung ang isang abiso ay dapat ipakita kapag ang isang pagproseso ng trabaho ay nagsimula at nagtatapos. Walang saysay kapag binubuksan ang form
Commands.Columns.Add("ShowAlert", NewTypeDescription("Boolean"));

// Para sa isang naka-print na form, dapat itong naglalaman ng string na PrintMXL
Commands.Columns.Add("Modifier", New TypeDescription("Row"));

Bumalik na Koponan;

EndFunction

//Gumagawa ng bagong row sa command table

Function AddCommand(CommandTable, View, Identifier, Usage, ShowAlert = False, Modifier = "")
NewCommand = CommandTable.Add();
Bagong Koponan. Tingnan = Tingnan;
Bagong Koponan. Identifier= Identifier;
Bagong Koponan. Usage = Usage;
Bagong Koponan. ShowAlert= ShowAlert;
Bagong Koponan. Modifier= Modifier;
EndFunction

Function InformationOnExternalProcessing() Export
Mga Parameter ng Pagpaparehistro = Bagong Istraktura;
ArrayDestinations = Bagong Array;
Array of Assignments.Add("Document.Hiring");
Mga Parameter ng Pagpaparehistro.Insert("View", "PrintForm"); //maaaring - Pagpuno ng isang Bagay, Karagdagang Ulat, Paglikha ng Mga Kaugnay na Bagay...
Mga Parameter ng Pagpaparehistro.Insert("Destination", Array of Destination);
Mga Parameter ng Pagpaparehistro.Insert("Pangalan", "Hello World"); //pangalan kung saan irerehistro ang pagproseso sa direktoryo ng panlabas na pagproseso
Mga Parameter ng Pagpaparehistro.Insert("Bersyon", "1.0");
Mga Parameter ng Pagpaparehistro.Insert("SafeMode", TRUE);
Mga Parameter ng Pagpaparehistro.Insert("Impormasyon", "SAMPLE");//ito ang magiging hitsura ng paglalarawan ng napi-print na form para sa user
CommandTable = GetCommandTable();
AddCommand(CommandTable, "Hello World", "Layout", "CallServerMethod", True, "MXL Print");
Mga Parameter ng Pagpaparehistro.Insert("Commands", CommandTable);
ReturnRegistrationParameters;
EndFunction

Sa totoo lang, kakailanganin mong pag-usapan ito sa tuwing gagawa ka ng bagong panlabas na form sa pag-print. Mula sa piraso ng code, malinaw na iuugnay namin ito sa dokumentong "Pag-hire", naaayon ay isusulat mo ang iyong sarili. Ang aming naka-print na form ay tatawaging "Hello World", muli naming papalitan ito sa aming sarili. Dito magiging maginhawang magsulat ng isang malinaw na billboard sa template upang mapansin nito, upang hindi makalimutan na itama ito sa ibang pagkakataon; sa aking palagay, ang "Hello world" ay madaling gamitin. Ang bersyon ay para sa iyong sarili, isulat kung ano ang gusto mo, ito ay ipapakita sa anyo ng isang elemento sa direktoryo ng panlabas na pagproseso. Ang salitang "SAMPLE" ay makikita lamang sa anyo ng isang direktoryo ng mga naka-print na form. Susunod, nagdaragdag kami ng isang utos, narito ang pangalawang parameter ay ang pangalan ng pindutan, ito ang makikita ng gumagamit sa dokumento sa item na "print".

Ang hanay ng tatlong pamamaraan na ito ay sapat na para maidagdag ang pagproseso sa direktoryo ng panlabas na pagpoproseso; ang lahat ng nakalilitong code na ito ay serbisyo at walang kinalaman sa algorithm ng pag-print. Sa katunayan, pinilit kami ng mga may-akda ng BSP na magprograma sa napakahirap na paraan na kung dati ay sinimulan mo kaagad ang pagsulat ng function na "Print", ngayon kapag sumulat ka ng pagproseso mula sa simula, at hindi ayon sa isang sample, mag-aaksaya ka ng oras sa ang serbisyo. Noong nakaraan, ang mga parameter ng pagpaparehistro ay opsyonal at ipinahiwatig sa layout ng pagproseso, ngayon ang lahat ay mukhang mas seryoso. Ang unang impresyon noong nakita ko ito ay cool, napakaraming posibilidad, lahat ay pinag-isa... ngunit sa pagsasagawa ako ay palaging gumagawa ng isang utos lamang sa isang pagpoproseso, at iniugnay ito sa isang dokumento. Yung. sa katunayan, kailangan ko ng dalawang linya para sa pagpaparehistro: pangalan ng bagay, pangalan ng pindutan. And here everything is so... well, oh well, it’s not for me to judge.

Ikaapat na hakbang- hindi gaanong kawili-wili.

I-print ang function?

Ngunit hindi, ngayon ito ay hindi isang function, ngunit isang pamamaraan.

Paano ko maibabalik ang layout?

Ipadala ito sa global print subsystem module function.

Sige

Narito ang teksto ng pamamaraang ito:

Procedure Print(Array of Objects, Collection of PrintForms, PrintObjects, Output Parameters) Export
Kung PrintManagement.NeedPrintLayout(CollectionPrintForms, "Layout") Pagkatapos
Pamamahala sa Pag-print.Output TabularDocumentIntoCollection(CollectionofPrintForms,
"Layout", "Layout",
GenerateTabDocumentSample(Array of Objects, Print Objects));
tapusin kung;
Katapusan ng Pamamaraan

Ngayon para sa paglilinaw. Ang unang linya ng pamamaraan ay naglalaman ng bahagyang hindi malinaw na kondisyon. Ang katotohanan ay kapag tinawag namin ang pamamaraan ng pag-print, ipinapasa sa amin ng system ang isang talahanayan ng mga halaga, na nagpapahiwatig kung ano ang kailangan naming i-print. Sa esensya, sinusuri ng function na ManagePrint.NeedPrintLayout(...) ang presensya sa talahanayan ng mga halaga ng isang row kung saan sa column na "Pangalan" ay mayroong isang hilera na may pangalan ng layout. Sa pagsasagawa, sa karamihan ng mga kaso ang bagay ay walang silbi, dahil... ang aming pagproseso ay makakabuo lamang ng isang naka-print na form. Yung. Maaaring tanggalin ang kundisyong ito at hindi ito makakaapekto sa pagganap.

Susunod, Pamamahala sa Pag-print Output TabularDocumentIntoCollection(...) - ito ang nagdadagdag ng tabular na layout kung saan ito kinakailangan, upang ito ay maipakita sa screen. Kung kailangan mong ipakita ang iyong spreadsheet na dokumento sa iyong sariling window (hindi sa isang karaniwang isa), pagkatapos ay huwag tawagan ang pamamaraang ito, ngunit isulat lamang ang iyong code dito.

Nais ko ring idagdag na ang pamamaraan ng Pag-print ay isinasagawa sa kliyente at, kung kinakailangan, maaari kang magbukas ng isang libreng form dito upang tanungin ang gumagamit para sa karagdagang impormasyon na kinakailangan para sa pag-print.

Susunod, ang GenerateTabDocumentSample(...) ay isang function na kailangan nating isulat sa processing module at nagbabalik ng isang tabular na dokumento. Sa 100 sa 100 kaso ito ay magiging server-based, dahil... kailangan nating makuha ang halaga ng mga detalye mula sa mga bagay na nakalista sa parameter na "Object Array".

Ikalimang hakbang- paglikha ng isang layout.

Hurray, sa wakas ay pupunta tayo sa algorithm ng layout, pagkuha ng data, atbp.

Ngunit sa aming sample ay gagawa kami ng prosaically at hindi ako magkomento dito)))

Function GenerateTabDocumentSample(Array of Objects, Print Objects)
tabDoc = Bagong TabularDocument;
layout = GetLayout("Layout");

AreaHeader = Layout.GetArea("Header");
tabDoc.Output(areaHeader);

Ibalik ang TabDoc;
EndFunction

Iyon lang, salamat sa iyong pansin

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 lumitaw at nagsimulang muling likhain ang gulong.

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. Upang 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 forms na mga layout ang nakatago sa ibang lugar.

Bumalik tayo sa tuktok 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 direktoryong ito, na mayroong form na Printing form, ay nagdaragdag ng mga opsyon sa pag-print para sa dokumentong tinukoy sa talahanayan Pagmamay-ari ng form sa pag-print (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 ang hitsura.

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 isang resulta, ang naka-print na form ay nabuo.

Upang magtalaga ng isang lugar, pumili ng ilang row (o ilang column) at piliin ang Table/Names/Magtalaga ng pangalan mula sa menu. Upang alisin ito, 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 haligi, 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 – isang hilera ng talahanayan ang ipinapakita, ang bloke na ito ay inuulit nang maraming beses hangga't ang mga hilera ay kailangang i-print
  • Footer – ang dulo ng dokumento ay ipinapakita.

Ngayon kailangan nating harapin ang

 


Basahin:



Pagbuo ng istraktura ng pananalapi ng isang negosyo Isaalang-alang natin ang mga pangunahing uri ng mga sentral na institusyong pinansyal nang mas detalyado

Pagbuo ng istraktura ng pananalapi ng isang negosyo Isaalang-alang natin ang mga pangunahing uri ng mga sentral na institusyong pinansyal nang mas detalyado

Ang pangunahing gawain ng pagbuo ng istrukturang pinansyal ay ang pamamahagi ng mga responsibilidad at kapangyarihan sa pagitan ng mga tagapamahala ng pamamahala ng kita...

Ang mga sinaunang balyena ay nanganak sa lupain Zygoriz: pangkalahatang paglalarawan ng mga species

Ang mga sinaunang balyena ay nanganak sa lupain Zygoriz: pangkalahatang paglalarawan ng mga species

Ang mga sinaunang balyena ay nanganak sa lupa Ang mga ninuno ng mga balyena ay nagsilang sa kanilang mga ngiping may ngipin na ulo, tulad ng mga species na naninirahan sa lupa. Ang mga pamilya ng archaeocetes ay gustong humiga sa...

Order sa mga insentibo ng empleyado

Order sa mga insentibo ng empleyado

Ang saloobin ng administrasyon sa empleyado at ang pagtatasa ng kanyang mga aktibidad ay makikita sa pagkakasunud-sunod para sa mga tauhan sa promosyon. Sa kanila...

Aplikasyon para sa pagpaparehistro ng estado ng pagwawakas ng isang indibidwal ng mga aktibidad bilang isang indibidwal na negosyante na may kaugnayan sa kanyang desisyon na wakasan ang aktibidad na ito

Aplikasyon para sa pagpaparehistro ng estado ng pagwawakas ng isang indibidwal ng mga aktibidad bilang isang indibidwal na negosyante na may kaugnayan sa kanyang desisyon na wakasan ang aktibidad na ito

Artikulo 22.3. Ang pamamaraan para sa pagpaparehistro ng estado sa pagtatapos ng isang indibidwal sa mga aktibidad bilang isang indibidwal na negosyante 1....

feed-image RSS