1c muling paggamit ng mga halaga ng pagbabalik. Pangkalahatang mga module. Panlabas na I-flag ang Link


   I-print (Ctrl + P)

Ang mga bagay na matatagpuan sa mga sanga ng puno ng pagsasaayos ng Pangkalahatang Module ay inilaan para sa paglalagay sa kanila ng mga teksto ng mga pag-andar at pamamaraan na maaaring tawaging mula sa anumang iba pang module ng pagsasaayos.
Pansin! Ang isang karaniwang module ay maaari lamang maglaman ng mga kahulugan ng mga pamamaraan at pag-andar.
  Ang mga pamamaraan at pag-andar ng pangkalahatang module, kung saan ang keyword ng Export ay ipinahiwatig sa mga heading, ay bahagi ng pandaigdigang konteksto. Maaari kang matuto nang higit pa tungkol sa mga pamamaraan ng pagsulat sa pangkalahatang modyul sa mga seksyon na "Source Code Format ng Software Modules" at "Mga Operator" sa built-in na tulong ng wika.
  Upang mag-edit ng isang pangkalahatang modyul, sa palette ng mga katangian ng uri ng uri ng Mga Pangkalahatang module ng window ng Configur, sa pag-aari ng Module, i-click ang Open link. Ang teksto ng pangkalahatang module ay ilalabas para sa pag-edit sa text editor ng 1C: Ang sistema ng enterprise sa mode ng pag-edit ng teksto ng module ng software.
  Ang karaniwang module, na bahagi ng pagsasaayos, ay nai-save lamang bilang bahagi ng pagsasaayos.
  Tinutukoy ng pag-aari ng Pandaigdig kung ang mga nai-export na pamamaraan ng pangkalahatang module ay bahagi ng pandaigdigang konteksto.
  Kung ang Global na pag-aari ay nakatakda sa Totoo, kung gayon ang mga nai-export na pamamaraan ng karaniwang module ay magagamit bilang mga pamamaraan sa konteksto ng pandaigdigan.
  Kung ang Global na pag-aari ay nakatakda sa Mali, kung gayon sa pandaigdigang konteksto, ang isang pag-aari ay nilikha gamit ang isang pangalan na naaayon sa pangalan ng karaniwang modyul sa metadata. Ang pag-aari na ito ay basahin lamang. Ang halaga ng pag-aari na ito ay ang object ng GeneralModule. Ang mga nai-export na pamamaraan ng pangkalahatang modyul na ito ay magagamit sa pamamagitan ng bagay na ito. Sa gayon, ang tawag sa mga pamamaraan ng mga di-pandaigdigang karaniwang mga module ay mukhang XXXXX.YYYYY, kung saan ang XXXXX ay ang pangalan ng pag-aari na tumutugma sa konteksto ng karaniwang modyul, at ang YYYYY ay ang pangalan ng nai-export na pamamaraan ng karaniwang modyul.
  Isang halimbawa:

Makipagtulungan sa Mga Kagamitang Pangnegosyo. Ikonekta ang Scanner Barcodes ();

Iba't ibang konteksto at pangkalahatang mga module

Gamit ang mga katangian ng karaniwang mga module at mga tagubilin sa preprocessor, maaari mong ayusin ang pagpapatupad ng iba't ibang mga pamamaraan ng mga karaniwang mga module sa tamang konteksto.
  Ang bawat pag-aari ng isang karaniwang module ay may pananagutan para sa kakayahang mag-ipon (at magsagawa) ng isang karaniwang module sa isang partikular na konteksto.
  Ang mga sumusunod na katangian ay magagamit na may pananagutan sa konteksto kung saan magagamit ang mga karaniwang pamamaraan ng modyul:
Kliyente (regular na aplikasyon) - Ang mga pamamaraan ng pangkalahatang module ay magagamit para sa isang makapal na kliyente sa mode ng isang regular na aplikasyon;
  ● - Ang mga karaniwang pamamaraan ng module ay magagamit para sa manipis na kliyente, web client, pati na rin para sa makapal na kliyente
  pinamamahalaang mode ng application;
  ● Server - magagamit ang mga pamamaraan sa pangkalahatang module sa server;
Panlabas na koneksyon  - Ang mga karaniwang pamamaraan ng module ay magagamit sa isang panlabas na koneksyon.
  Kung ang ilang mga pag-aari ay nakatakda nang sabay, nangangahulugan ito na magagamit ang mga pamamaraan ng karaniwang modyul sa maraming mga konteksto.
  Kung ang pangkalahatang module ay may ari-arian ng Server at ilang iba pang mga pag-aari ng pag-aari, pagkatapos ito ay nangangahulugan na ang pangkalahatang module ay magagamit nang sabay-sabay sa server at sa napiling kliyente. Ito ay kinakailangan upang maunawaan na sa katunayan ito ay maraming mga bersyon ng pinagsama-samang code (ayon sa bilang ng mga napiling kliyente at talagang para sa server).
  Bukod dito, kung ang pamamaraan na matatagpuan sa naturang karaniwang module ay tinawag mula sa kliyente, kung gayon ang isang kopya ng kliyente ng karaniwang module ay gagamitin, at kung ito ay mula sa server, ang server ay isa. Sa kasong ito, gamit ang mga direktoryo ng preprocessor (tingnan dito para sa mga detalye), maaari mong "protektahan" ang server mula sa code na hindi maipatupad dito.
  Isaalang-alang ang isang halimbawa. Ang pangkalahatang module (na maaaring maisakatuparan sa manipis na kliyente at sa server) ay may isang pamamaraan na may bahagyang magkakaibang pag-uugali sa manipis na kliyente at sa gilid ng server. Tingnan natin kung paano ito magagawa:



#Kung ThinCustomer Pagkatapos
// Ipakita ang babala
Alerto ng ShowUser("Sa kliyente");
#EndIf
Mga EndProcedures
  Pagkatapos sa gilid ng server ang code ay kukuha ng sumusunod na form:
Pamamaraan Pangkalahatang Pamamaraan ng Module ()  I-export
// Narito ang inilalagay na iba't ibang mahahalagang code
Mga EndProcedures
  At sa manipis na panig ng kliyente, magiging ganito ang code:
Pamamaraan ng GeneralModule () Pamamaraan sa Pag-export
// Narito ang inilalagay na iba't ibang mahahalagang code
// Ipakita ang babala
  ShowUser Alert ("Sa Client");
Mga EndProcedures

Mayroong maraming mga paraan upang ilipat ang control mula sa kliyente sa server:
  ● tawagan ang karaniwang pamamaraan ng server;
  ● sa isang form o utos ng utos, tumawag ng isang pamamaraan na nauna sa mga direktiba ng compilation At OnServer, at Konteksto ng OnServerWithout

Kasabay nito, imposible na tumawag ng mga pamamaraan ng mga karaniwang modules ng kliyente (kung saan hindi itinakda ang ari-arian ng Server) at mga pamamaraan ng kliyente ng form module o command module mula sa mga pamamaraan ng server. Ang pamamahala ay babalik sa kliyente matapos na makumpleto ang tawag sa karamihan sa panlabas na paraan ng server ng server.
  Ang isang pagbubukod ay ang form module at mga pamamaraan ng command module, na nauna sa mga direktiba ng compilation At Sa Client Sa Server, At Sa Client Sa Server Nang Walang Konteksto
Ang mga sumusunod na puntos ay dapat ding nabanggit:
  ● Kung magagamit ang isang karaniwang modyul para sa higit sa isang kliyente, pagkatapos ay pagsulat ng code ng programa, dapat isaalang-alang ng isa ang maximum na mga paghihigpit na maaaring ipataw ng mga kliyente, o gumamit ng mga tagubilin sa preprocessor upang "ihiwalay" ang code na tiyak sa isang partikular na kliyente.
  ● Ang mga tagubilin ng preprocessor ay nagkakaroon din ng kahulugan kapag ang isang karaniwang module ay may ilang mga konteksto ng pagpapatupad, halimbawa, isang panlabas na koneksyon at isang manipis na kliyente o (na mas karaniwan) ng ilang kliyente at server. Sa kasong ito, ang mga tagubilin sa preprocessor ay magbabalangkas ng interactive code na hindi maaaring magamit sa server, ngunit posibleng sa client (tingnan ang halimbawa sa itaas).
  Para sa karagdagang impormasyon tungkol sa mga tagubilin ng preprocessor at mga tagubilin sa compilation, tingnan ang seksyon na "Mga Pamamaraan sa Pagpapatupad at Pag-andar" sa built-in na tulong ng wika.
  Ang ari-arian ng tawag sa server ay ginagamit upang makontrol ang kakayahang tawagan ang nai-export na pamamaraan ng karaniwang module ng server mula sa code ng kliyente.
  Kung ang pag-aari ay nakatakda, pagkatapos ay ang mga nai-export na pamamaraan ng server-side karaniwang module ay magagamit para sa pagtawag mula sa kliyente. Kung ang pag-aari ay hindi nakatakda, kung gayon ang mga naka-export na pamamaraan ay matatawag lamang mula sa mga pamamaraan ng server (kapwa mga karaniwang pamamaraan ng server at mga pamamaraan ng server ng form module at command modules).
Tip. Inirerekomenda na itakda ang Ari-arian ng server ng Telepono sa Mali sa mga kaso kapag ang karaniwang module ng server ay naglalaman ng mga pamamaraan na hindi kanais-nais na tumawag mula sa kliyente (halimbawa, para sa mga kadahilanan sa seguridad).
Tandaan. Kung ang mga pag-aari ay nakatakda nang sabay Kliyente (regular na aplikasyon), Client (pinamamahalaang application), Panlabas na koneksyon, pagkatapos ay ang pag-aari ng tawag sa Server ay awtomatikong i-reset. Kung nakatakda ang pag-aari ng tawag sa Server, awtomatikong i-reset ang mga katangian Kliyente (regular na aplikasyon), Client (pinamamahalaang application)  at Panlabas na koneksyonkung ang mga pag-aari na ito ay itinakda nang sabay.
  Pag-aari Pribilehiyo  dinisenyo upang huwag paganahin ang pag-access control kapag nagsasagawa ng mga pamamaraan ng pangkalahatang module.
  TANDAAN Kung ang pag-aari Pribilehiyo  naka-install, pagkatapos ay ang pag-aari ng Server ay awtomatikong nakatakda sa pangkalahatang module at ang natitirang mga pag-aari ay na-reset ( Kliyente (regular na aplikasyon), Client (pinamamahalaang application)  at B panlabas na koneksyon) Ang isang pribadong pagbabahagi module ay maaaring maisakatuparan lamang sa server.

Ang pagtanggi sa mga Halaga ng Pagbabalik

Kung ang karaniwang modyul ay hindi pandaigdigan, pagkatapos magagamit ang pag-aari na magagamit muli ang mga halaga ng pagbabalik. Ang ari-arian na ito ay maaaring tumagal ng mga sumusunod na halaga:
  ● Huwag gumamit - hindi ginagamit ang mga halaga ng pagbabalik para sa mga function ng pangkalahatang modyul na ito ay hindi ginagamit.
● Sa oras ng tawag at Sa oras ng session - ang pamamaraan para sa pagtukoy ng paggamit ng data ay ginagamit para sa pangkalahatang modyul. Ang kakanyahan ng pamamaraang ito ay sa panahon ng pagpapatupad ng code, naaalala ng system ang mga parameter at ang resulta ng mga pag-andar pagkatapos ng unang tawag na function. Kapag ang function ay tinatawag na muli na may parehong mga parameter, ang naka-imbak na halaga ay naibalik (mula sa unang tawag) nang hindi naisakatuparan ang pag-andar mismo. Kung ang isang function ay nagbabago ng mga halaga ng parameter sa panahon ng pagpapatupad nito, pagkatapos ay tatawag muli ang pagpapaandar ay hindi ito gagawin.
  Ang mga sumusunod na tampok ng pag-save ng mga resulta ng tawag ay maaaring makilala:
  ● kung ang pag-andar ay naisakatuparan sa server at tinawag mula sa server code, ang mga halaga ng parameter at ang resulta ng tawag ay naaalala para sa kasalukuyang session sa gilid ng server;
  ● kung ang pagpapaandar ay isinasagawa sa isang makapal o manipis na kliyente, ang mga halaga ng mga parameter at mga resulta ng tawag ay naka-imbak sa panig ng kliyente;
  ● kung ang pagpapaandar ay isinasagawa sa gilid ng server at tinawag mula sa client code, kung gayon ang mga parameter ng tawag ay naaalala pareho sa panig ng kliyente at sa gilid ng server (para sa kasalukuyang session).
  Ang mga nai-save na halaga ay tinanggal:
  ● kung ang pag-aari ay nakatakda sa Para sa tagal ng isang tawag:
  ● sa gilid ng server - kapag ang kontrol ay bumalik mula sa server;
  ● sa panig ng kliyente - sa pagkumpleto ng isang pamamaraan o pag-andar ng isang nangungunang antas ng naka-embed na wika (tinawag ng system mula sa interface, at hindi mula sa ibang pamamaraan o pag-andar ng naka-embed na wika);
  ● kung ang karaniwang pag-aari ng module ay nakatakda sa Oras ng Session:
  ● sa gilid ng server - sa pagtatapos ng session;
  ● sa panig ng kliyente - kapag isara ang aplikasyon ng kliyente.
  Tatanggalin ang mga nai-save na halaga:
  ● sa server, sa isang makapal na kliyente, sa isang panlabas na koneksyon, sa isang manipis na kliyente at sa isang web client na may karaniwang bilis ng koneksyon - 20 minuto pagkatapos makalkula ang naka-imbak na halaga o 6 minuto pagkatapos ng huling paggamit;
  ● sa manipis na kliyente at web client na may mababang bilis ng koneksyon - 20 minuto pagkatapos makalkula ang naka-imbak na halaga;
  ● na may kakulangan ng RAM sa daloy ng trabaho ng server;
  ● kapag nag-restart ng daloy ng trabaho;
  ● Kapag lumipat ng isang kliyente sa isa pang daloy ng trabaho.
  Matapos matanggal ang mga halaga, ang tawag ng na-export na function ay ginanap tulad ng sa unang tawag.
  Ang pag-aari na ito ng mga karaniwang module ay hindi nakakaapekto sa pagpapatupad ng mga pamamaraan - ang mga pamamaraan ay palaging naisakatuparan.

Kung ang pangkalahatang module ay nagtakda ng muling paggamit ng mga halaga ng pagbabalik, pagkatapos ang mga uri ng mga nai-export na pag-andar ay napapailalim sa isang bilang ng mga paghihigpit. Ang mga uri ng mga parameter ay maaari lamang:
  ● Mga pangunahing uri ( Hindi natukoy, Null, Boolean, Numero, String, Petsa).
  ● Anumang mga sanggunian sa mga bagay sa database.
  ● Mga istruktura na may mga halaga ng pag-aari ng mga nabanggit na uri. Sa kasong ito, ang pagkakakilanlan ng mga parameter ay kinokontrol "ayon sa nilalaman" ng mga istruktura.
  Kung ang pag-export na function ay nagbabalik ng isang bagay, kung gayon ang isang sanggunian sa bagay na nakaimbak sa cache ay talagang ibabalik. Kung, pagkatapos matanggap ang link na ito, ang estado ng bagay ay nagbabago, kung gayon ang isang kasunod na tawag sa parehong pag-andar ay ibabalik ang link sa nabago na bagay nang hindi aktwal na nagsasagawa ng pag-andar. Ang pag-uugali na ito ay masusunod hanggang matanggal ang naka-imbak na halaga (para sa anumang kadahilanan). Sa madaling salita, ang pagbabago sa estado ng isang bagay na nakuha bilang isang resulta ng isang tawag na function mula sa isang karaniwang module na may paulit-ulit na paggamit ng mga naibalik na halaga ay hindi isang batayan para sa isang aktwal na tawag sa pag-andar. Dapat mo ring tandaan na ang cache ng mga nagbalik na bagay ay walang malasakit
  pribadong mode ng estado sa sandaling ang function ng tawag na may paulit-ulit na paggamit ng mga naibalik na halaga. Ang tampok na ito ay maaaring humantong sa sumusunod na pag-uugali:
  ● Ang aktwal na pagpapatupad ng isang function na tawag na may paulit-ulit na paggamit ng mga halaga ng pagbabalik (unang tawag) ay ginanap kapag pinagana ang pribilehiyong mode.
  ● Kapag nagpapatupad ng pagpapaandar, natanggap ang isang bagay na hindi maaaring makuha na may kapansanan sa pagiging pribadong mode.
  ● Ang mga kasunod na mga tawag sa pag-andar ay ginawa nang hindi nagtatakda ng mode na pribilehiyo
  ● Gayunpaman, hanggang sa ang cache ng mga nagbalik na bagay ay na-clear o ang aktwal na tawag ay paulit-ulit, ang pag-andar ay magbabalik ng isang pormal na hindi naa-access na bagay.
  ● Ang kabaligtaran na pag-uugali ay totoo rin kapag ang unang tawag ay ginawa nang hindi itinatakda ang mode ng pribilehiyo, at sa mode na pribilehiyo ang bagay na maaaring natanggap sa mode ng pribilehiyo ay hindi naibabalik.

Kung ang karaniwang modyul ay may ari-arian Ang pagtanggi sa mga Halaga ng Pagbabalik  nakatakda sa Para sa tagal ng isang session, kung gayon ang mga halaga ng uri ay hindi maaaring magamit sa mga halagang ibinalik ng mga pag-andar ng naturang modyul Pansamantalang Tagapamahala ng Talaan.
Kung ang isang function ng isang karaniwang module, na may reuse set, ay tinawag mula sa parehong pangkalahatang module (halimbawa, kasama ang pangalang CommonModule), dapat mong alalahanin ang sumusunod na tampok: kung ang isang function ay tinawag ng pangalang MyFunction (), ang pagpapaandar ay isasagawa sa tuwing tinawag ang pagpapaandar. . Upang magamit ang mga naka-imbak na halaga, ang pagpapaandar ay dapat tawagan ng buong pangalan nito:
KaraniwanModule.MoyFunction ().
  Ang pandaigdigang pamamaraan ng konteksto ay nagtatanggal ng lahat ng magagamit na mga halaga, kapwa sa gilid ng server at sa panig ng kliyente, anuman ang tinatawag na pamamaraan. Matapos maipatupad ang pamamaraan RefreshValues \u200b\u200b()  ang unang tawag na function ay ganap na maisakatuparan.

Pangkalahatang mga module 1C  - isang object ng pagsasaayos ng metadata 1C 8.3 at 8.2, na nag-iimbak ng programa ng programa, na madalas na tinawag sa pagsasaayos. Ang isang function / pamamaraan ay maaaring tawagan mula sa kahit saan sa pagsasaayos (kung na-export ito).

Paano gamitin ang isang karaniwang modyul

Magandang kasanayan na maglagay ng isang pamamaraan o pag-andar sa isang karaniwang module kung tinawag ito sa higit sa isang lugar. Una, kung ang pamamaraan ay nababagay, dapat itong itama lamang sa isang lugar. Pangalawa, nakamit nito ang isang mas malaking pagkakasunud-sunod sa code.

Ang isang karaniwang halimbawa ng isang pangkalahatang module ay ang pagproseso ng isang transaksyon sa isang tiyak na rehistro, natatanggap ang halaga ng pagkakaiba sa mga araw ng pagtatrabaho, pag-convert ng mga rate ng palitan, pag-convert ng dami / presyo / halaga sa seksyon ng tabular, at iba pang mga function.

Karaniwang Mga Katangian ng Module

Ang isa sa mga pangunahing tampok ng mga karaniwang modules mula sa iba pang mga module ay hindi mo maipahayag ang ibinahaging variable.

Kumuha ng 267 1C mga aralin sa video nang libre:

Isaalang-alang natin ang palette ng mga katangian ng pangkalahatang module nang mas detalyado:

  • Global  - Kung ang watawat ay nakatakda, ang mga pag-andar at pamamaraan mula sa modyul na ito ay magagamit sa isang pandaigdigang konteksto. I.e. maaari silang tawagan kahit saan sa pagsasaayos, pag-access nang walang pangalan ng isang karaniwang module. Gayunpaman, ang isang kondisyon ay idinagdag - ang pangalan ng mga pamamaraan at pag-andar sa pangkalahatang modyul na ito ay dapat na natatangi sa loob ng konteksto ng mundo.
  • Server  - Ang mga pamamaraan at pag-andar ng pangkalahatang modyul na ito ay maaaring isagawa sa server.
  • Panlabas na koneksyon  - Ang mga code ng programa ng pangkalahatang modyul na ito ay maaaring isagawa kapag konektado sa isang panlabas na mapagkukunan (halimbawa, COM).
  • Client (pinamamahalaang application)  - ang mga pamamaraan at pag-andar ng pangkalahatang modyul na ito ay maaaring magamit sa isang makapal na kliyente sa isang pinamamahalaang mode ng application.
  • Kliyente (regular na aplikasyon)  - Ang mga code ng programa ng pangkalahatang modyul na ito ay maaaring magamit sa isang makapal na kliyente sa isang regular na mode ng aplikasyon.
  • Tumawag sa server  - isang watawat na nagpapahintulot sa kliyente na gumamit ng mga pamamaraan at pag-andar mula sa pangkalahatang modyul na ito.
  • - Kung ang Totoo ay nakatakda, ang tseke ng pahintulot ay hindi pinagana sa pangkalahatang modyul na ito.
  • Gumamit muli  - Tinutukoy ang mga setting ng mga nagbalik na halaga, kung ang pagpipilian ay pinagana, pagkatapos pagkatapos ng unang pagpapatupad ang sistema ay maaalala ang halaga para sa ibinigay na mga parameter ng input at ibabalik ang natapos na halaga. Maaari itong tumagal ng mga sumusunod na halaga: hindi ginagamit  - pagsara, habang tumatawag  - para sa tagal ng isang tiyak na pamamaraan, para sa tagal ng session  - hanggang sa isinara ng gumagamit ang session (programa).

Kung nagsisimula kang matuto ng 1C programming, inirerekumenda namin ang aming libreng kurso (huwag kalimutan

Ang artikulo ay nagpapatuloy ng ikot na "Mga Unang Hakbang sa Pag-unlad sa 1C", isinasaalang-alang nito nang detalyado ang mga sumusunod na isyu:

  • Ano ang isang module ng software at kung anong mga seksyon ang binubuo nito?
  • Ano ang application module para sa? Bakit may dalawa? Kailan tumatakbo? Ano ang mga subtleties ng trabaho?
  • Anong mga kaganapan ang nauugnay sa pagsisimula ng system, paano at saan iproseso ang mga ito?
  • Ano ang isang panlabas na module ng koneksyon? Kailan at kung paano gamitin ito?
  • Kailan ginagamit ang session module?
  • Ano ang mga generic module? Ano ang mga katangian nito at mga patakaran sa trabaho? Bakit gagamitin ang ari-arian ng "Reuse Return Values"?
  • Kailan ginagamit ang form module at anong mga kaganapan sa ito ang maiproseso?
  • Ano ang inilaan ng object module? Anong mga seksyon ang binubuo nito? Paano tingnan ang magagamit na mga kaganapan sa module?
  • Anong mga subtleties ng trabaho ang umiiral sa mga module ng manager ng halaga (para sa mga constants) at mga module ng recordset (para sa mga rehistro)?
  • Ano ang mga pagkakaiba sa pagitan ng object module at ang module ng manager? Kailan gagamitin ang huli?

Kakayahang magamit

Tinatalakay ng artikulo ang 1C: platform ng Enterprise 8.3.4.496. Ang materyal ay may kaugnayan para sa mga kasalukuyang paglabas ng platform.

Mga module sa 1C: Enterprise 8.3

Ang mga module ay ang mga bagay kung saan nakapaloob ang code ng programa.

Sa Platform mayroong isang medyo malaking bilang ng mga uri ng mga module, ang bawat isa ay may sariling layunin at tampok.

Ang anumang linya ng code ay dapat na sa ilang module. Makilala sa pagitan ng pangkalahatang mga module ng layunin at mga module ng bagay. Ang ilang mga module ay maaaring maipon sa Client at sa Server, at ilan lamang sa Server.

Ang isang module ay maaaring binubuo ng ilang mga seksyon. Ang seksyon ng variable na paglalarawan ay naglalarawan ng mga lokal na variable ng modyul na ito, na maaaring pagkatapos ay magamit sa anumang pamamaraan.

Sa loob ng bawat pamamaraan, maaari mong mai-access ang isang variable variable. Bilang karagdagan, sa loob ng pamamaraan mismo, maaaring may isa pang variable na deklarasyon na may parehong pangalan. Ito ang magiging lokal na variable ng pamamaraang ito.

Sa kabila ng parehong pangalan, ang mga ito ay dalawang magkakaibang variable: ang isa ay ginagamit sa loob ng isang tiyak na pamamaraan, at ang iba pa sa labas nito.

Sa ilang mga module, ang lokasyon ng compilation (kakayahang magamit) sa Server o sa Client ay maaaring ipahiwatig para sa mga variable. Halimbawa:

Ang seksyon para sa paglalarawan ng mga variable ay sinusundan ng seksyon ng mga pamamaraan at pag-andar, kung saan ipinapahiwatig ang mga lokal na pamamaraan ng modyul na ito. Ang ilang mga module ay dapat ipahiwatig kung saan ang pamamaraan o pag-andar ay tipunin.

Sa prinsipyo, ang pagtutuon ng compilation ay maaaring tinanggal. Sa kasong ito, ang default na direktiba ng compilation ay Server. Gayunpaman, para sa kaginhawaan ng pagsusuri ng code ng programa, inirerekomenda na malinaw mong ipahiwatig kung saan ang pamamaraang ito ay tipunin. Ang pagkakasunud-sunod kung saan inilarawan ang mga pamamaraan ay hindi mahalaga.

Sa pagtatapos ng modyul, pagkatapos na ilarawan ang lahat ng mga pamamaraan at pag-andar, mayroong isang seksyon ng pangunahing programa, kung saan maaaring mai-sulod ang ilang mga operator, at ang mga lokal na variable ng form module ay nauna. Ang seksyong ito ay naisakatuparan sa pag-access sa modyul.

Kaya, halimbawa, kapag binubuksan ang form ng isang elemento, una sa lahat, ang seksyon ng pangunahing programa ng module ng form ay naisakatuparan.

Dapat pansinin na ang variable na seksyon ng pagpapahayag at ang pangunahing seksyon ng programa ay hindi umiiral para sa lahat ng mga module (i.e., sa ilang mga module ay hindi pinapayagan ang mga seksyon na ito). Ang seksyon na naglalarawan ng mga pamamaraan at pag-andar ay maaaring umiiral sa anumang module.

Module ng aplikasyon

Ang modyul na ito ay dinisenyo upang hawakan ang mga kaganapan ng paglulunsad ng aplikasyon at pagkumpleto. Halimbawa, kapag sinimulan mo ang application, maaari kang mag-download ng mga rate ng palitan mula sa Internet. Sa pagtatapos ng application, maaari mong i-verify sa gumagamit ang tungkol sa kanyang hangarin upang makumpleto ang gawain.

Gayundin sa module ng aplikasyon ay may mga espesyal na tagapangasiwa na nagbibigay-daan sa iyo upang makagambala sa mga panlabas na kaganapan mula sa kagamitan.

Maaari itong maging mga kaganapan mula sa isang magnetic card reader, piskal na rehistro. At ang mga kaganapang ito ay maaari ring hawakan sa ilang paraan.

Dapat pansinin na ito ay ang interactive na paglulunsad ng system na sinusubaybayan sa module ng aplikasyon.

Ang application module ay hindi gagana kung ang programa ng 1C ay inilunsad, halimbawa, sa mode ng com-connection. Sa kasong ito, ang window ng programa ay hindi nilikha.

Dapat pansinin na sa Platform 8.3 mayroong dalawang magkakaibang mga module ng aplikasyon: isang Pamamahala ng module ng application at isang normal na module ng aplikasyon. Ang mga kaganapan ng pinamamahalaang module ng aplikasyon ay pinoproseso kapag ang Manipis at Makapal na kliyente ng application na Pinamamahalaan at ang kliyente ng Web ay inilulunsad.

Modyul Regular na aplikasyon  gumagana kapag nagsisimula ang Makapal na kliyente sa mode Regular na aplikasyonkung saan mayroong isang regular na interface ng command sa form Pangunahing menu.

Kung ang application ay tumatakbo sa Pinamamahalaan, at sa Regular na aplikasyon, kinakailangan upang ilarawan ang mga pamamaraan ng handler para sa modyul Pinamamahalaang applicationkaya para sa modyul Regular na aplikasyon.

Modyul Pinamamahalaang application  maaaring mapili mula sa menu ng konteksto ng node ng pagsasaayos ng ugat.

Maaari mo ring buksan ang modyul na ito mula sa mga paleta ng katangian ng item ng pagsasaayos ng ugat.

Upang buksan ang module Regular na aplikasyon, dapat kang sumangguni sa mga setting ng pagsasaayos (utos Parametersa menu Serbisyo).

Bukas ang form Parameter. Sa bookmark Pangkalahatandapat na tinukoy ang mode ng pag-edit ng pagsasaayos Pinamamahalaang application  at Regular na aplikasyon.

Sa kasong ito, ang modyul Regular na aplikasyon  maaari ring buksan mula sa mga katangian ng root node.

Listahan ng mga kaganapan na maaaring maiproseso para sa Pinamamahalaanat Regular na aplikasyon  pareho.

Sa modyul na ito, maaari kang maglagay ng isang seksyon para sa pagpapahayag ng mga variable, isang seksyon para sa paglalarawan ng mga di-makatwirang pamamaraan at pag-andar, at isang seksyon para sa pangunahing programa. Ngunit bilang karagdagan sa mga di-makatwirang pamamaraan at pag-andar, ang mga espesyal na tagapangasiwa ng kaganapan ay maaaring matatagpuan sa module.

Maaari mong makita ang listahan ng magagamit na mga handler kung tatawag ka sa listahan ng mga pamamaraan at pag-andar ng kasalukuyang module kapag nakabukas ang module.

Ang window ng Mga Pamamaraan at Pag-andar na magbubukas ay nagpapakita ng lahat ng mga pamamaraan at pag-andar ng modyul na ito, pati na rin ang mga kaganapan na kung saan ang mga handler ay hindi pa nilikha.

Mayroong dalawang mga kaganapan na nauugnay sa pagsisimula ng system ("bago" at "kailan"). Dalawang kaganapan na may kaugnayan sa pagsasara ng system ("bago" at "kailan"). Pati na rin ang pagproseso ng mga panlabas na kaganapan (halimbawa, mga kaganapan ng kagamitan sa pangangalakal).

Kapag ang "bago" tagapangasiwa ng kaganapan ay isinasagawa, isinasaalang-alang na ang pagkilos ay hindi pa nakumpleto. Kapag ang "kailan" handler ng kaganapan ay naisakatuparan, ang pagkilos ay nakumpleto na.

Kaganapan Bago ka StartSystemarises sa sandaling kapag inilunsad ang Enterprise 8.3, ngunit ang application mismo ay hindi pa lumitaw sa screen. Ang kaganapang ito ay may isang parameter tulad ng Pagkabigo.

Kung ang parameter na ito ay nagiging Ang totoo, pagkatapos ay hindi magsisimula ang application. Kaganapan PAGSASANAY NG SINIMULAipinapalagay na ang pagkilos ay nakumpleto na, ang window ay nilikha na, at sa kasong ito, maaari naming, halimbawa, magpakita ng ilang espesyal na form. Hindi na posible na tumanggi na maglunsad.

Katulad nito, bago pinaharurot ang system, ang application ay bukas pa rin at maaari mong tanggihan upang makumpleto ito. Kapag pinapabagsak ang system, ang window ng aplikasyon ay sarado na. Posible na magsagawa lamang ng mga karagdagang pagkilos, halimbawa, upang tanggalin ang ilang mga file o magpadala ng isang email.

Sa modyul Pinamamahalaang application  ang mga direktiba para sa pagsasama ng mga pamamaraan at pag-andar ay hindi ipinapahiwatig, dahil ang module ay ganap na naipon sa Client side. Nangangahulugan ito na sa mga pamamaraan at pag-andar ng modyul hindi kami direktang ma-access, halimbawa, mga sanggunian na libro.

Kung mula sa modyul Pinamamahalaang application  kailangan mong gumawa ng isang tawag sa server, pagkatapos para dito kakailanganin mong lumikha ng espesyal   naka-flag .

Sa modyul Regular na aplikasyon  Walang ganoong mga paghihigpit, dahil ang modyul na ito ay tipunin sa paglo-load ng Makapal na Client. Sa Fat Client, halos lahat ng mga uri ng data ay magagamit.

Ang mga pamamaraan, pag-andar, at variable ng application module ay maaaring inilarawan bilang na-export.

Dahil ang module ay buo na naipon sa Client, nangangahulugan ito na sa mga pamamaraan ng kliyente maaari naming sumangguni sa pamamaraang ito at sa pag-aari na ito.

Halimbawa, mula sa form na module ng isang bagay, maaari mong tawagan ang pamamaraan o pagpapaandar ng module ng application. Gayunpaman, inirerekumenda na gumamit ka ng Mga Karaniwang Module upang ilarawan ang mga karaniwang algorithm. Ang pangunahing layunin ng module ng aplikasyon ay upang maiproseso ang panimulang punto at pagtatapos.

Sa pamamagitan ng pagkakatulad sa module ng aplikasyon, ang modyul na ito ay dinisenyo upang hawakan ang bukas na programa ng kaganapan at ang kaganapan ng pag-shutdown.

Kabaligtaran sa module ng aplikasyon, na sinimulan sa sandali ng interactive na paglulunsad ng application, ang panlabas na module ng koneksyon ay nagpapatakbo sa com-connection mode, i.e. kapag ang 1C: Enterprise 8 object ay nilikha at isang koneksyon ay ginawa sa isang tukoy na base.

Mayroong mga kaganapan sa modyul na ito: PAGSASANAY NG SINIMULAat Sa pagkumpleto ng system.

Ang isang panlabas na module ng koneksyon ay maaaring buksan gamit ang alinman sa menu ng konteksto sa antas ng object ng pagsasaayos ng ugat o ang palette ng mga katangian para sa root node.

Ang proseso ng panlabas na koneksyon ay isang proseso ng gawain ng programa na may isang base na impormasyon, at hindi isang interactive. Alinsunod dito, hindi ka maaaring gumamit ng mga form sa diyalogo o magpakita ng mga mensahe ng babala, dahil walang interface ng gumagamit.

Sa Panlabas na Module ng Koneksyon, posible na ilarawan ang mga variable ng pag-export at mga paraan ng pag-export na magagamit sa gilid kung saan ang panlabas na 1C: Enterprise 8.3 na tawag ay ginawa.

Dahil walang interface ng gumagamit sa panlabas na koneksyon, ang Panlabas na Module ng Koneksyon ay buong pinagsama-sama sa Server.

Sule Module

Kailangan ang modyul na ito upang masimulan ang mga parameter ng session. Ang mga parameter ng session ay mabilis na global variable na ang mga halaga ay magagamit saanman sa pagsasaayos.

Maaari mong buksan ang Module ng Session alinman sa pamamagitan ng menu ng konteksto o sa pamamagitan ng palette ng mga ugat na ugat.

Nagbibigay ang Session Module ng isang kaganapan Pagtatakda ng Mga Setting ng Session.

Kapag nagsimula ang application, ang pamamaraang ito ay tinatawag na una. Ang mga parameter ng session ay kinakailangan sa anumang operasyon ng application: kapwa sa panahon ng interactive na paglulunsad at kapag nagsisimula sa mode ng panlabas na koneksyon.

Inilarawan ng Session Module ang iba't ibang mga pagkilos para sa pagsisimula ng mga parameter ng session depende sa iba't ibang mga kondisyon.

Ang modyul na ito, bilang panuntunan, ay naglalarawan ng maraming mga pamamaraan na tinawag mula sa isang pamamaraan Pagtatakda ng Mga Setting ng Session. Samakatuwid, ang lahat ng mga pamamaraan na ito ay inilalaan sa isang hiwalay na module.

Ang module ng session ay palaging naisakatuparan sa mode na pribilehiyo. Nangangahulugan ito na ang pag-access sa pag-access ay hindi isasagawa kapag na-access ang database. Ang module ng session ay natipon sa Server, i.e. posible na ma-access ang anumang mga pamamaraan ng server (kabilang ang mga halaga ng pagbabasa mula sa database).

Sa Session Module, posible na tukuyin lamang ang mga pamamaraan at pag-andar, i.e. walang seksyon na naglalarawan ng mga variable at walang seksyon ng pangunahing programa. Hindi mo mailalarawan ang mga pamamaraan ng pag-export sa Session Module.

Kung sa pagsisimula ng system kinakailangan upang magsagawa ng ilang mga aksyon sa Server, halimbawa, upang lumikha ng isang elemento ng ilang direktoryo, kung gayon, bilang isang pagpipilian, posible na gamitin ang Session Module, bilang pinagsama-sama ito sa Server at palaging maaasahang naisakatuparan kapag nagsisimula ang system. Gayunpaman, dapat isaalang-alang ang mga sumusunod na puntos:

  • ang pamamaraan Pagtatakda ng Mga Setting ng Sessionginagawa ito hindi lamang sa pagsisimula ng system, kundi pati na rin kapag ang pag-access sa mga uninitialized na mga parameter ng session. I.e. ang Session Parameter Setting handler ay maaaring tawaging paulit-ulit sa panahon ng application application;
  • kung ang bilang ng mga elemento sa sesyon ng mga parameter ng sesyon ay zero (ang hanay ng mga kinakailangang mga parameter ay may uri ng Data na Hindi Natukoy), kung gayon ito ang sandali na nagsisimula ang application;
  • dahil ang module ng sesyon ay gumagana sa mode na may pribilehiyo at walang control control, dapat kang magtrabaho nang mabuti sa mga object database, dahil ang gumagamit ay maaaring makakuha ng access sa data na hindi dapat ibigay sa kanya;
  • kapag nagsimula ang system, hindi pa ito kilala para sigurado kung ang application ay ilulunsad. Kasabay nito, sa handler ng kaganapan para sa Setting Parameter ng Session, maaaring gawin ang mga hindi kinakailangang aksyon.

Ang mga modyul na ito ay isang paglalarawan ng ilang mga karaniwang algorithm, i.e. mga pamamaraan at pag-andar na maaaring tawagan mula sa iba't ibang lugar.

Ang mga pamamaraan na may kaugnayang lohikal ay maaaring maipangkat sa iba't ibang mga Pangkalahatang module. Ang mga modyul na ito ay nilikha sa loob ng Pangkalahatang sangay.

Maaari kang magdagdag ng anumang bilang ng mga karaniwang mga module. Para magamit ang mga pamamaraan ng Pangkalahatang mga module sa ibang mga lugar sa pagsasaayos, dapat mong tukuyin ang mga ito gamit ang keyword na I-export. Ang mga pamamaraan ng kliyente ng pangkalahatang mga module ay magagamit sa Kliyente, at mga pamamaraan ng server sa Server.

Sa Pangkalahatang mga module, tanging ang seksyon na naglalarawan ng mga pamamaraan at pag-andar ay magagamit. I.e. sa Pangkalahatang modyul, hindi mo mailalarawan ang mga variable at hindi mo mailalarawan ang isang seksyon ng pangunahing programa.

Kung kinakailangan ang isang pandaigdigang variable, maaaring magamit ang alinman sa mga parameter ng session o variable ng pag-export ng module ng aplikasyon.

Para sa Pangkalahatang mga module, maaari kang magtakda ng ilang mga parameter na makakaapekto sa pag-uugali ng modyul na ito. Kung ang Global na pag-aari ay nakatakda para sa Pangkalahatang module, kung gayon ang mga pamamaraan ng pag-export na ipinahayag sa modyul na ito ay magagamit nang direkta mula sa labas nang walang anumang mga tagubilin.

I.e. ibinigay Pangkalahatang module  makikilahok sa pagbuo ng konteksto ng global na konteksto.

Pag-aari Globalpara sa pangkalahatang mga module ay maaaring maging kapaki-pakinabang. Gayunpaman, hindi mo dapat gamitin ito sa buong mundo para sa lahat ng mga karaniwang modules.

Ang mga iyon minarkahan ng Globalmaiipon sa system startup. Ang mas maraming mga modules, mas mabagal ang programa ay magsisimula.

Kung ang watawat Globalpara sa Pangkalahatang modulehindi tinukoy, kung gayon ang pagsasama-sama ng modyul na ito ay isasagawa sa oras ng unang tawag dito (i.e., pagkatapos magsimula ang system).

Bilang karagdagan, ang paggamit ng pandaigdigang karaniwang mga module ay nakakaapekto sa pag-unawa sa code. Ang mga non-global na generic module na pamamaraan ay tinawag gamit ang pangalan Pangkalahatang module  at pangalan ng pamamaraan, halimbawa:
Costing module. Ipamahagi ang mga Hindi tuwirang Gastos ();

Ang mga pangalan ng Pangkalahatang mga module ay dapat na sumasalamin sa nilalaman ng mga pamamaraan na inilarawan sa kanila. Ang pagtukoy ng pangalan ng Pangkalahatang module kapag tumatawag sa pamamaraan ay nag-aambag sa isang mas mahusay na pag-unawa sa code.

Para sa Pangkalahatang module  sa Mga palette ng pag-aari  maaaring magtakda ng pag-aari Pribilehiyo.

Ang control na module ay hindi makontrol ang mga karapatan sa pag-access. Ito ay kinakailangan kung sa Karaniwang modyul  Kinakailangan upang maisagawa ang pagproseso ng data ng masa, pagtanggap ng data mula sa database.

Ang control control ay nagdaragdag sa oras na kinakailangan upang ma-access ang database, at ang mga algorithm ng masa ay madalas na kailangang gumana nang mabilis hangga't maaari.

Halimbawa, ang isang operasyon na masinsinang mapagkukunan ay payroll. Dapat itong makumpleto nang mabilis hangga't maaari. Para sa mga ito, ang mga algorithm na kinakalkula ang sahod ay inilalagay sa pribilehiyo .

Bukod dito, ang lahat ng mga pamamaraan na matiyak ang pagkumpleto ng mga dokumento ng payroll ay nasa labas nito Karaniwang mga module. Ito ay sa mga pamamaraang ito ay isinasagawa ang pag-access control.

Sa ganitong paraan, maaaring makamit ang isang makabuluhang pagtaas sa pagganap. Ito ay totoo lalo na sa kaso ng pag-aaplay ng mekanismo ng pagkontrol sa pag-access sa linya sa mga entry sa talahanayan.

Kung ang pangkalahatang modyul ay pribilehiyo, kung gayon ang mga pamamaraan ng modyul na ito ay maiipon lamang sa Server.

May mga sitwasyon kung ang ilang bagay ay dapat na hindi naa-access sa gumagamit, halimbawa, isang tukoy na direktoryo. Ngunit kapag nagsasagawa ng isang solong dokumento, ang sanggunian sa direktoryo na ito ay kinakailangan.

I.e. may pangangailangan na pansamantalang palawakin ang mga karapatan ng gumagamit, at pagkatapos ay ibalik ito sa kanilang orihinal na estado. Ang epektong ito ay maaaring makuha sa pamamagitan ng paggamit ng pribilehiyo Karaniwang mga module.

Para sa pribilehiyo Karaniwang modyul  ang isang pamamaraan ay dapat mailabas na tumutugon sa kinakailangang data.

Ang pamamaraang ito ay tatawagan mula sa kaukulang dokumento. I.e. sa oras ng pagtawag sa pamamaraang ito, ang gumagamit ay talagang binigyan ng pinalawak na karapatan.

Para sa Karaniwang mga module  Posible na ipahiwatig ang lugar ng pagsasama. Sa pamamagitan ng mga watawat ay nakatakda: kung ang Pangkalahatang module ay magagamit sa Kliyente (pinamamahalaang aplikasyon), sa Server, sa mode ng operasyon ng Panlabas na koneksyon.

Bilang karagdagan, kung pinalitan mo ang mode ng pag-edit ng pagsasaayos sa isang Pinamamahalaang application at isang regular na aplikasyon, posible ang isa pang konteksto ng compilation - Kliyente (regular na aplikasyon).

Kaya, mayroong apat na pagpipilian para sa paggana ng programa. Depende sa tumatakbo na aplikasyon, depende sa gawain sa Client o sa Server, ang ilang mga General module ay magagamit o hindi maa-access.

Bilang karagdagan sa kakayahang tukuyin ang mga flag ng compilation, posible na tukuyin ang mga direktoryo ng compilation para sa mga pamamaraan at pag-andar na matatagpuan sa Pangkalahatang module.

Kung ang isang direktoryo ng compilation ay tinukoy para sa isang pamamaraan, pagkatapos bagaman ang Pangkalahatang module ay magagamit sa lahat ng tinukoy na mga konteksto, ang pagkakaroon ng isang partikular na pamamaraan ay limitado ng direktiba ng compilation.

Gayunpaman, ang pamamaraan ay maaaring hindi magagamit sa isang konteksto na hindi magagamit sa pangkalahatan para sa buong module.

Kung ang pagtuturo ng compilation para sa pamamaraan (pagpapaandar) ay hindi tinukoy, pagkatapos ito ay tipunin sa lahat ng mga konteksto na tinukoy para sa module.

I.e. sa katunayan, maraming mga kopya ng pamamaraan ang gagawin. Ang pagpili ng isang tiyak na pinagsama-sama na halimbawa ay nakasalalay sa lokasyon ng pamamaraan ng tawag (ayon sa pinakamalapit na panuntunan ng tawag). Dapat tandaan na ang code ng naturang pamamaraan ay dapat isulat na isinasaalang-alang ang pagkakaroon nito sa lahat ng mga konteksto na tinukoy para sa module.

Ang mga pangkalahatang module na sabay-sabay na magagamit sa maraming iba't ibang mga konteksto ay pangunahing inilaan upang lumikha ng mga pamamaraan na magagamit sa ilang mga konteksto.

Kapag lumilikha ng isang Pangkalahatang module, itinuturing na mahusay na kasanayan na hindi tukuyin ang mga direktiba ng compilation. I.e. ang pagkakaroon ng mga pamamaraan at pag-andar ay dapat matukoy ng mga katangian ng module mismo.

Sa pamamaraang ito, ang mga pamamaraan ng kliyente ay matatagpuan sa magkakahiwalay na mga module ng Pangkalahatan, at mga pamamaraan ng server sa magkakahiwalay na mga General module.

Ang mga module na may ilang hanay ng mga compilation flags ay bihirang ginagamit sa pagsasanay. Ito ang ilang mga karaniwang pagkilos na magagamit kapwa sa Client at sa Server. Karaniwan, ito ay ilang simpleng mga kalkulasyon.

Mahalaga! Posible na ma-access ang mga pamamaraan ng pag-export ng server ng Pangkalahatang module mula sa Kliyente, ngunit kung ang Pangkalahatang module na ito ay natipon lamang sa Server. Kasabay nito, ang isang espesyal na watawat ay ibinibigay upang magbigay ng pag-access mula sa Kliyente .

Para sa mga non-global General module, posible na ang mga halaga ng cache ay ibinalik ng mga pag-andar. I.e. pagkatapos ng unang tawag na function, maaalala ng system ang resulta ng pagpapatupad nito. Kung ang pagpapaandar na ito ay tinatawag na muli na may parehong mga parameter, ibabalik ng system ang halaga na mula sa cache.

Ang layunin ng mekanismong ito ay upang mapabilis ang paulit-ulit na mga tawag. Upang mai-configure ang pag-uugali na ito, kailangan mong Mga palette ng pag-aari  module upang itakda ang naaangkop na halaga para sa pag-aari Paggamit muli ng mga halaga ng pagbabalik.

Bilang default, ang pag-aari na ito ay nakatakda sa Huwag Gumamit. Iba pang mga posibleng halaga: cache Sa panahon ng tawagalinman Para sa tagal ng session.

May katuturan na gamitin lamang ang pag-aari na ito para sa mga pagpapaandar na ang resulta ay nakasalalay lamang sa mga parameter ng input. Ang mekanismong ito ay magagamit lamang para sa mga non-global General modules.

Kung ang halaga ng kaukulang parameter Sa oras ng tawag ay napili, ang cache ay mananatiling aktibo hanggang sa pamamaraan mula sa kung saan ang tawag sa pangkalahatang pamamaraan ng module ay ginawa. Kung ang halaga Sa panahon ng sesyon ay napili, pagkatapos ay isinasaalang-alang sa kondisyon na ang cache ay kumilos habang ang gumagamit ay gumagana.

Gayunpaman, mayroong ilang mga limitasyon sa oras. Ang paglilinis ng cache ay nangyayari nang awtomatiko 20 minuto pagkatapos maabot ang halaga sa cache.

Form module

Ang modyul na ito ay idinisenyo upang maproseso ang mga aksyon ng gumagamit. Halimbawa, ilarawan ang reaksyon algorithm ng isang programa kapag pinindot ang isang pindutan. O, halimbawa, sa sandali ng pagpasok ng halaga sa patlang, agad na suriin para sa kawastuhan.

Bilang karagdagan sa mga kaganapan na nauugnay sa mga kontrol sa form (mga pindutan, mga patlang ng pag-input), mayroong mga kaganapan na nauugnay sa form mismo.

Halimbawa, maaari mong hawakan ang kaganapan ng pagbubukas ng form at isagawa ang ilang paunang pagsisimula. Maaari mo ring hawakan ang kaganapan ng pagsasara ng form at suriin kung ang gumagamit ay pinasok nang tama ang lahat.

May mga nakontrol na form at ordinaryong porma. Ang mga module ng mga form na ito ay naiiba nang una sa module na ang pinamamahalaang form ay malinaw na nahahati sa konteksto. Ang bawat pamamaraan (pagpapaandar) ay dapat magkaroon ng direktoryo ng compilation. Sa karaniwang form, ang lahat ng code ay ginagamit sa Client.

Sa pinamamahalaang module ng form, maaari mong ideklara ang mga pamamaraan at pag-andar, maaari kang magpahayag ng mga variable at ilarawan ang seksyon ng pangunahing programa.

Ang code ng programa ng pangunahing programa ay isinasagawa sa oras na pormulahin ang form, i.e. kapag nagsimulang buksan ito ng gumagamit. Ang figure ay nagpapakita ng isang listahan ng mga karaniwang kaganapan para sa isang pinamamahalaang form.

Ang listahan ng mga pinamamahalaang mga kaganapan sa form ay makikita rin sa listahan ng ari-arian nang direkta para sa porma mismo. Ang listahang ito ay tinawag sa pinamamahalaang editor ng form.

Sa isang pinamamahalaang form, maaari mong hawakan ang isang kaganapan sa pagsulat ng item. Ang kaganapang ito ay naroroon lamang para sa mga form ng mga bagay (direktoryo, dokumento, at ilang iba pa). Kung ang form ay hindi nakakabit sa isang tiyak na bagay, kung gayon walang kaganapan sa record.

Para sa isang regular na module ng form, ang listahan ng mga karaniwang kaganapan ay medyo mas maliit, dahil sa isang pinamamahalaang form, maraming mga kaganapan ang ipinares (ang isa ay naisakatuparan sa Client, at ang iba pa sa Server). Sa karaniwang form, ang lahat ng code ay naisakatuparan sa Client.

Module ng object

Ang mga modyul na ito ay karaniwang para sa mga direktoryo, dokumento, plano ng mga uri ng pag-aayos, plano ng mga account at maraming iba pang mga bagay. Ang module ng object ay idinisenyo upang hawakan ang mga karaniwang kaganapan. Halimbawa, isang kaganapan upang magpasok ng isang item sa direktoryo, isang kaganapan upang maitala ang isang item, tanggalin, hawakan ang isang dokumento, atbp.

Sa prinsipyo, ang isang kaganapan sa pag-record ay mayroon ding sa Form Module. Ngunit ang kaganapan ng pagrekord sa Form Module ay nangyayari sa proseso ng interactive recording, kapag nagtatrabaho sa isang tiyak na form.

Ang isang recording event sa Object Module ay isasagawa sa anumang pag-record mula sa anumang anyo ng bagay na ito. Bilang karagdagan, kung ang bagay ay naitala na programmatically, sa kasong ito ang kaganapan ng module ng object ay mai-trigger.

Sa pag-record ng kaganapan ng Module ng Bagay, maaari mong i-embed ang lahat ng mga tseke para sa kawastuhan ng naitala na data, dahil ang pamamaraang ito ay gagana nang sandali ng ganap na anumang pag-record.

Ang module ng bagay na ito ay maaaring tawagan sa pamamagitan ng menu ng konteksto, mula sa Palette Properties Object at mula sa window ng pag-edit ng object.

Ang figure sa ibaba ay nagpapakita ng isang listahan ng mga magagamit na kaganapan ng module ng direktoryo.

Sa Module ng Bagay, maaari kang maglagay ng isang seksyon para sa paglalarawan ng mga variable, ilarawan ang mga di-makatwirang pag-andar na maaaring hindi nauugnay sa isang kaganapan, pati na rin ang isang seksyon ng pangunahing programa.

Sa pangunahing seksyon ng programa, halimbawa, maaari mong simulan ang mga lokal na variable ng isang naibigay na module. Ang code ng program na ito ay isinasagawa kapag na-access ang module na ito.

Dapat pansinin na ang lahat ng mga pamamaraan ng Object Module ay natipon sa Server. Alinsunod dito, ang mga direktiba ng compilation para sa mga pamamaraan at pagpapaandar ng Module ng Bagay ay hindi kinakailangan. Ang ilang mga object object ay walang Object Modules.

Ito ay dahil sa mga tampok ng mga bagay mismo. Kasama sa nasabing mga bagay Patuloyat Mga rehistro. Para sa Patuloywalang module ng object, ngunit mayroong isang katulad na module na tinatawag Module ng Tagapamahala ng Halaga.

Sa Module ng Tagapamahala ng Halaga  posible na iproseso ang mga kaganapan sa pag-record Patuloyat pagpuno sa pagproseso ng tseke.

Ang buong konteksto ng module ay naisakatuparan sa Server.

Para sa mga rehistro, mayroong isang Module ng Pag-record.

Ang module na ito ay may kakayahang maproseso ang pag-record ng mga kaganapan at magsagawa ng isang check check.

Sa Mga Module ng Bagay, Mga Module ng Tagapamahala ng Halaga (para sa mga constants) at Record Set Modules (para sa mga rehistro) maaari mong ilarawan ang mga pamamaraan na mai-export, at ang mga pamamaraan na ito ay maa-access mula sa labas.

I.e. Bilang karagdagan sa paggamit ng mga nakapirming pamamaraan ng klase ng bagay, maaari kang lumikha ng mga karagdagang pamamaraan para sa bagay sa Module ng Bagay. Ang module na ito ay dapat ilarawan ang kaukulang pamamaraan sa keyword I-export.

Pagkatapos ay posible na mai-access ang pamamaraang ito mula sa labas. Bukod dito, ang pamamaraang ito ay ipapakita sa tulong ng konteksto. Ang mga bagong pamamaraan sa tulong ng konteksto ay nai-highlight sa asul (asul na icon p ()  para sa mga pamamaraan at f ()para sa mga pag-andar).

Katulad nito, maaari kang lumikha ng isang bagong pag-aari sa pamamagitan ng pagpapahayag ng isang variable na may isang keyword I-export. Ang pag-aari na ito ay maaari ring mai-access mula sa labas.

Kaya, posible na mapalawak ang pag-andar ng mga bagay (upang tukuyin ang mga bagong pamamaraan at mga bagong katangian). Gayunpaman, ang mga pag-aari ay pabago-bago at hindi naka-imbak sa database.

Kung nais mong gamitin ang pag-aari na maiimbak sa database para sa bagay, dapat kang lumikha ng pag-aari ng bagay.

Module ng manager

Ang module na ito ay umiiral para sa maraming mga bagay (direktoryo, dokumento, rehistro, atbp.). Binubuksan ang module alinman sa pamamagitan ng menu ng konteksto para sa bagay, o sa pamamagitan ng Mga palette ng pag-aario sa pamamagitan ng window ng pag-edit.

Sa Manager ng Module, maaari mong mai-override ang ilang mga karaniwang kaganapan.Halimbawa, sa Pagproseso ng Pagtanggap ng Datakapag ang isang item ay napili mula sa direktoryo, maaari kang gumawa ng ilang karagdagang pag-filter o pag-verify.

Bilang karagdagan, sa Manager ng Module, maaari kang lumikha ng mga karagdagang pamamaraan at ipahiwatig na nai-export sila. Sa kasong ito, posible na ma-access ang mga pamamaraang ito mula sa labas.

Upang maisagawa ang tawag na ito, kinakailangan upang makakuha ng isang uri ng data DirectoryManager.

Ang pagkakaiba sa pagitan ng mga pamamaraan ng pag-export ng Manager ng Module at ang Object Module ay upang ma-access ang pamamaraan ng Object Module, kailangan mo munang makuha ang bagay mismo (iyon ay, kahit papaano makakuha ng isang link at pagkatapos ay i-convert ang link na ito sa isang bagay).

Pagkatapos nito, magagamit ang mga variable at pag-export ng Module ng Bagay. Para sa Module ng Manager, ang apela ay mas simple, halimbawa:
Mga Direktoryo. Mga counterparties. Pangalan ng Paraan

Ito ang dalawang magkakaibang apela. I-convert mula sa link sa object (pamamaraan GetObject) - ito ay isang medyo seryosong pagkilos para sa system, dahil kapag tumatanggap ng isang bagay, basahin ang lahat ng data ng bagay na ito, na maaaring medyo mahaba.

Ang pangalawang pagkakaiba ay iyon Module ng Bagaytinawag sa konteksto ng isang tiyak na elemento. Alinsunod dito, maaari nating ipalagay na naaangkop ito para sa elementong ito (sa karamihan ng mga kaso, ang nasabing lohika ay inilatag).

Tulad ng para sa Manager ng Module, inilalarawan nito ang ilang pangkalahatang aksyon para sa pangkat o para sa lahat ng mga elemento ng direktoryo o ilang dokumento. Halimbawa, kung nais mong mag-print ng isang item sa direktoryo, maaari mong gamitin ang module ng Bagay.

Ngunit sa Manager Module posible na gumawa ng isang mas unibersal na mekanismo na mai-print, kasama ang isang pangkat ng mga elemento.

Bilang karagdagan, ang pag-access sa Object Module ay isang mas mahabang pagkilos pa rin. Samakatuwid, ang paglutas ng problemang ito sa module ng manager ay mas kanais-nais.

Tinatapos nito ang aming kakilala sa mga module sa pagsasaayos ng 1C: Sistema ng Enterprise. Kung ibubuod mo ang buod sa itaas, kung gayon ang ilalim na linya ay ang mga sumusunod na konklusyon:

  • Ang isang module ng software ay isang bahagi ng isang pagsasaayos na maaari lamang maglaman ng teksto sa naka-embed na 1C na wika
  • Ang mga module ng software ay inuri ayon sa mga uri na sinuri namin sa artikulong ito. Ang bawat view ay natutukoy sa pamamagitan ng paglalagay at magagamit na konteksto ng programa.
  • Ang istraktura ng module ay binubuo ng ilang mga seksyon, na nakaayos sa isang tiyak na pagkakasunud-sunod. Ang komposisyon ng mga seksyon ay natutukoy ng uri ng modyul.

Napansin din namin na sinasadya naming tinanggal ang isang uri ng modyul, lalo na ang module ng command. Hindi ito kumakatawan sa anumang kapansin-pansin, at iminumungkahi namin na malaya mong pamilyar ang pag-andar nito.

Sa ngayon, tiningnan namin ang lahat ng aming code sa programa ng fragmentarily mula sa inilapat na solusyon, at, bilang isang panuntunan, ay isinulat ito sa ilang maliit na pagsasaayos ng pagsubok. Alam mo ba na "hindi mo lamang ito makukuha" at simulang i-edit ang karaniwang code ng pagsasaayos? Hindi? Pagkatapos sa susunod na artikulo ay ipapaliwanag namin ang lahat ng ito!

Kadalasan, sa panahon ng pagpapatupad ng programa, kailangan nating makakuha ng mga halaga na nakaimbak sa database at hindi nagbabago nang maraming taon. Ang isang matingkad na halimbawa ay ang halaga ng mga patuloy. Sa bahagi, posible na pag-uri-uriin dito ang paghahanap para sa isang elemento ng direktoryo o exchange plan node sa pamamagitan ng code, makuha ang mga halaga ng mga detalye ng mga bagay sa pamamagitan ng sanggunian.

Nang walang pag-iisip, "sa mabilisang" ang mga ganyang gawain ay nalulutas ng mga konstruksyon ng form:

Kung Petsa ng Dokumento\u003e Constants.Start DateApplicationsResults1137.Get () Kung gayon

Bilang isang resulta, sa bawat oras na ang code na ito ay naisakatuparan, ang database "jerks".

Ang mga programer na hindi masusing pagsisikap tungkol sa kanilang code ay nagsasagawa ng isang query sa database, na nagtuturo sa lahat ng data na kailangan nila, ngunit ang pamamaraang ito ay hindi palaging humahantong sa nais na pag-alis ng database:

  1. Ang siklo ng pagpapatupad ng code ay maaaring maging implicit (halimbawa, muling pagtatala ng grupo)
  2. Ang pagkuha ng isang mahigpit na set ng data (hindi hihigit at hindi kukulangin), na kakailanganin mamaya, kung minsan ay mahirap o kahit na imposible.
  3. Ang mga naka-cache na halaga ay dapat gamitin sa iba't ibang mga tawag / porma

Modyul na Paggamit muli ng Module

Upang malutas ang inilarawan na mga problema, ang platform ay may mga module na may muling paggamit ng mga halaga ng pagbabalik. Sa katunayan, ito ay isang pangkaraniwang karaniwang module (kliyente o server), kung saan ang Reuse ng mga halaga ng pagbabalik ay nakatakda sa "Sa oras ng tawag" o "Sa oras ng session." Sa modyul mismo, ang mga pamamaraan at pag-andar ay inilarawan tulad ng dati.

Ang buong punto ay kapag paulit-ulit mong tawagan ang mga pag-export ng mga pag-andar ng naturang mga module, sa unang pagkakataon na ang tawag ay aktwal na ginawa tulad ng inaasahan namin, at ang lahat ng kasunod na mga tawag ay humantong sa pagbabalik ng halaga ng naka-cache nang hindi talagang isinasagawa ang function code. Ang epekto na ito ay maaaring sundin sa pagsukat ng pagganap.

Ang mga nagbalik na halaga ay natural na naka-cache ng mga halaga ng mga naipasa na mga parameter, i.e. kapag nagpapatupad ng code

Node1 \u003d OurModule.GetNode ng ExchangeWith Accounting ("0001"); Node2 \u003d OurModule.GetNode ng ExchangeWith Accounting ("0002");

Ang parehong mga tawag ay talagang hahantong sa pagpapatupad ng kaukulang pamamaraan at ibabalik ang iba't ibang mga link, at sa kasunod na mga pagtatangka upang makuha ang node gamit ang code 0001 o 0002, ang kaukulang mga node ay ibabalik nang walang pagtawag sa pamamaraan at, bilang isang resulta, ang database.

Ang mga halaga ay naka-cache nang hiwalay para sa bawat session sa client o server (depende sa kung ang client o server module). I.e. kung may mga tampok ng pagtatakda ng mga karapatan sa pag-access o ibang pag-asa ng natanggap na halaga sa kasalukuyang gumagamit, ang lahat ay gagana nang tama.

Ano ang hindi magagawa

May isang limitasyon. Ang mga simpleng uri lamang ang maaaring matukoy bilang mga parameter ng function. Hindi natukoy, Null, Boolean, Petsa, String, Number, Link. Walang mga istruktura, mga talahanayan ng halaga, mga bagay, atbp. Kung sinusubukan mong ipasa, halimbawa, isang istraktura bilang isang parameter, lahat ay gagana, ngunit maaari mong kalimutan ang tungkol sa muling paggamit ng nagresultang halaga.

Ang halaga ng pagbabalik ay maaaring maging sa anumang uri.

Gayundin, bigyang-pansin ang laki ng data na iyong cache. Hindi malamang na papatayin mo ang lahat ng memorya ng server, ngunit sulit na alalahanin na ang mga mapagkukunan ay hindi nagtatapos.

Bug o tampok mula sa 1C

Ang mga magagamit na halaga ay may isang kawili-wiling pag-aari. Ang bug o tampok na ito ay hindi malinaw, ngunit ang pag-alam tungkol dito ay hindi makakasakit. Kung naisagawa mo ang sumusunod na code:

HalagaStruktura1 \u003d OurModule.GetStructure ofValues \u200b\u200bof Requisites (LinkOnObject); Istraktura ng Halaga 1. Pangalan \u003d "Bagong Pangalan"; HalagaStruktura2 \u003d OurModule.GetStructureValues \u200b\u200bng mga Kinakailangan (LinkOnObject);

Na sa ValueStructure2.Name ay magsisinungaling tiyak na "Bagong Pangalan". Sa prinsipyo, maaari itong magamit upang mai-update ang mga halaga na tunay na nabago sa database, ngunit kapag ito ay sarado at kung ang bench ay sarado, hindi ito malinaw. Kapag bumubuo ng mga karaniwang solusyon, ipinagbabawal ito.

Ano ang gagawin kapag binabago ang data ng naka-cache

Mayroon lamang isang "lehitimong" na pamamaraan upang mahawakan ang sitwasyon sa pagbabago ng halaga ng naka-cache sa database. Ito ang paraan ng RefreshValues \u200b\u200b(). Ang mga halaga ng lahat ng mga pag-andar para sa lahat ng mga parameter ng lahat ng mga module ay mai-reset. Hindi maa-update ang pag-update sa pamamagitan ng mga tukoy na halaga / function / module.

Alinsunod dito, dahil sa kusang pamamaraang ito, kinakailangan na maingat na gamitin ang pagpapaandar na ito: ang buong sistema ay magiging mas mabagal para sa ilang oras pagkatapos gamitin ito.

Lumabag kami sa sagrado: nagsulat kami ng isang kahilingan sa isang loop

Bilang karagdagan sa mga halata na pagpipilian para sa paggamit ng mga pag-andar na may paulit-ulit na paggamit ng mga halaga ng pagbabalik, maraming mga kawili-wiling, unibersal, hindi pamantayang pamamaraan, kabilang ang:

  • Pagsusulat ng mga pangkalahatang pamamaraan na ibabalik ang mga detalye ng mga di-makatwirang mga link (magagamit sa BSP)
  • Ang mga pamamaraan ng pagsulat na ibabalik ang mga halaga ng mga patuloy sa pamamagitan ng pangalan ng pare-pareho (may mga pinaka-karaniwang)
  • Ang pagbalik ng isang "bahagyang mas malaki" na halaga ng data kaysa sa kinakailangan upang mabawasan ang bilang ng mga tawag (halimbawa, kung nais mong makuha ang mga rate ng ilang mga pera nang sabay-sabay, makatuwiran na tawagan ang pag-andar nang walang petsa ng pagpili ng isang pera, makuha ang mga rate ng lahat ng mga pera at pagkatapos ay "ayusin ito" alin sa pera sa kinakailangan ang kasalukuyang sandali)
  • Ang pagsulat ng isang pamamaraan na nagsasagawa ng isang query sa pag-cache ng resulta (ang mga parameter ng input ay ang query ng teksto at isang pares ng mga pangalan at mga halaga ng parameter)

Ngunit may isa pang diskarte na nais kong mapag-ukulan nang detalyado. Ito ang paggamit ng isang function na naglalaman ng isang tawag sa DB, na may paulit-ulit na paggamit ng halaga ng pagbabalik sa isang loop. I.e. ito ay talagang isang kahilingan sa isang loop. Sa pangkalahatan, tinuruan kami na huwag gawin ito, ngunit may mga oras na ang nasabing konstruksiyon ng code ay hahantong sa mas mahusay na pagganap kung:

  1. Ang bilang ng iba't ibang mga halaga ng mga parameter ng input na nagaganap sa loob ng ikot ay maliit at ang karamihan ng mga kumbinasyon na may isang mataas na posibilidad ay nakuha nang mas maaga sa session na ito.
  2. Mahirap makakuha ng isang mahigpit na hanay ng mga kumbinasyon ng mga halaga ng input ng parameter sa isang pag-ikot nang maaga, at ang pagkuha ng mga halaga para sa lahat ng posibleng mga kumbinasyon ng mga halaga ng input ng parameter ay hahantong sa pagbabasa ng isang malaking halaga ng data mula sa database

Tulad ng nakikita mo, ang mga formulasi ay hindi tumpak at mas katulad ng paghihiwalay ng mga salita kaysa sa mga patakaran. Samakatuwid, laging tandaan ang konteksto, suriin ang kasalukuyang larawan, isaalang-alang ang mga kondisyon kung saan gagana ang iyong code.

Ang artikulo ay nagbibigay ng isang maikling pangkalahatang-ideya at mga tampok ng naturang pag-andar tulad ng Paggamit muli ng mga halaga ng pagbabalik ng mga karaniwang module.

Ang mga problema kapag nagtatrabaho sa 1C

Kadalasan, kapag nagtatrabaho sa programa ng 1C, kinakailangan upang makuha ang mga halaga na nakaimbak sa database, hindi sila nagbabago nang maraming taon. Ang isang halimbawa ay ang halaga ng mga patuloy. Sa grupong ito ng mga halaga, ang isang tao ay maaaring maging ranggo ng isang paghahanap para sa isa sa mga elemento ng direktoryo o isang paghahanap para sa isang exchange plan node gamit ang code, pati na rin ang pangangailangan upang makuha ang halaga ng mga detalye ng pag-aari.

Ang ganitong mga gawain ay malulutas nang mabilis at simpleng paggamit ng mga konstruksyon ng mga sumusunod na uri:

Kung Petsa ng Dokumento\u003e Constants.Start DateApplicationsResults1137.Get () Kung gayon

Ngunit sa bawat oras na ang code na ito ay naisakatuparan, ang database ay na-access.

Maraming mga programmer ang gumagamit ng sumusunod na pamamaraan upang ma-offload ang database. Natutupad lamang ang isang query sa KB at cache ang data na maaaring kailanganin nila. Gayunpaman, ang pamamaraang ito ay hindi nag-a-load ng database sa nais na halaga. Ang mga dahilan para dito ay maaaring ang mga sumusunod:

· Hindi masyadong malinaw na cycle ng pagpapatupad ng code (halimbawa, sa kaso ng pag-uli ng grupo ng mga dokumento);

· Ang pagkuha ng isang mahigpit na hanay ng data na hindi kinakailangan sa sandaling ito ay imposible o mahirap;

· Ang paggamit ng naka-cache na data sa iba't ibang mga form / tawag.

Modyul na Paggamit muli ng Module

Ang paglutas ng mga problema na inilarawan sa itaas ay makakatulong upang magamit ang mga modelo na may paulit-ulit na paggamit ng mga halagang bumalik. Ano ito Ito ay isang pangkalahatang kliyente o server module kung saan ang "Paggamit muli ng mga halaga ng pagbabalik" ay dapat itakda sa "Para sa oras ng tawag" o "Para sa oras ng session". Ang lahat ng mga operasyon at pag-andar nang direkta sa module ay inilarawan tulad ng dati.

Ang walang alinlangan na bentahe ng pamamaraang ito ay ang pagbabalik ng cache na halaga ay nangyayari nang walang totoong pagpapatupad ng function code. Nangyayari ito sa lahat ng kasunod na mga tawag sa pag-export ng mga function ng mga modyul na ito. Ang parehong epekto ay makikita kapag sinusukat ang pagganap.

Kapag naisagawa ang code, ang mga nagbalik na halaga ay naka-cache sa mga halaga ng mga naipasa na mga parameter. Kaya, ito ay nangyayari nang direkta sa panahon ng pagpapatupad ng code.

Node1 \u003d OurModule.GetNode ng ExchangeWith Accounting ("0001");

   Node2 \u003d OurModule.GetNode ng ExchangeWith Accounting ("0002");

Parehong ang isa at ang iba pang tawag ay humantong sa kaukulang operasyon at ibalik ang iba't ibang mga sanggunian. Gayunpaman, nasa susunod na mga tawag, ang mga node na may code 0001 o 0002 ay babalik nang hindi nagiging sanhi ng isang pangalawang operasyon at, nang naaayon, nang hindi naa-access ang database.

Ang mga halaga ay mai-cache sa paghihiwalay sa bawat sesyon kapwa sa kliyente at sa server (depende ito sa kung ang tawag ay ginawa mula sa kliyente o server). Lahat ng bagay ay gagana nang walang kamalian kung mayroong anumang mga tampok sa mga setting para sa mga karapatan sa pag-access o anumang iba pang pag-asa ng nakuha na halaga.

Ilang NGUNIT

Tulad ng anumang patakaran, may mga pagbubukod sa pamamaraang ito. Ang mga kumplikadong uri ay hindi dapat tukuyin sa mga parameter ng mga pag-andar, sa halip simpleng mga uri tulad ng Petsa, Numero, Hindi Tiyak, at iba pa Huwag subukang tukuyin bilang mga parameter, halimbawa, isang istraktura, bagay, o talahanayan ng mga halaga. Makakakuha ka ng resulta sa unang pagkakataon, ngunit walang matalinong lalabas sa pangalawang pagkakataon.

Ang halaga ng pagbabalik ay maaaring alinman sa anumang uri.

Bilang karagdagan, huwag kalimutang bigyang-pansin ang laki ng data na iyong tinuturo, dahil ang memorya ng server, kahit na malaki, ay hindi limitado.

Tampok o bug mula sa 1C

Ang mga ginamit na halaga ay may isang kawili-wiling tampok. Maaari itong ipagpalagay na ito ay isang tampok o bug, ngunit sa anumang kaso ito ay nagkakahalaga ng pagbibigay pansin.

Sa pamamagitan ng pagpasok sa sumusunod na code:

HalagaStruktura1 \u003d OurModule.GetStructure ofValues \u200b\u200bof Requisites (LinkOnObject);
   Istraktura ng Halaga 1. Pangalan \u003d "Bagong Pangalan";
   HalagaStruktura2 \u003d OurModule.GetStructureValues \u200b\u200bng mga Kinakailangan (LinkOnObject);

sa ValueStructure2.Name eksaktong lilitaw ang Bagong pangalan. Maaari itong magamit upang mai-update ang mga halaga na aktwal na nabago sa database, ngunit hindi alam kung gaano katagal ito magagawa. Sapagkat kapag lumilikha ng mga karaniwang solusyon hindi ito magagawa.

Kung nabago ang data ng naka-cache

Kung ang mga naka-cache na halaga ay nabago sa database, may isang paraan lamang upang magamit ito - ang paraan ng RefreshValues. Sa kasong ito, ang mga setting ng lahat ng mga pag-andar ay naka-reset sa lahat ng mga module. Walang posibilidad na mag-update ng isa sa ilang mga halaga ng parameter, alinman sa pag-andar o mga module.

Paano ginawa ang kahilingan sa loop

Kung hindi mo nais na gamitin ang function na may paulit-ulit na paggamit ng mga nagbalik na halaga, nag-aalok kami sa iyo ng ilang mga mas malikhaing diskarte upang malutas ang problema.

· Mga pamamaraan sa Universal na nagbabalik ng mga detalye ng mga di-makatwirang mga link.

· Paglikha ng mga pamamaraan na ibabalik ang pare-pareho ang mga halaga ng kanilang pangalan. Sa pamamagitan ng paraan, ang mga naturang pamamaraan ay nasa karaniwang mga bersyon.

· Ang pagbabalik ng isang dami ng bahagyang mas malaki kaysa sa halaga na kinakailangan upang mabawasan ang bilang ng mga tawag. Halimbawa, kung kinakailangan upang makuha ang rate ng palitan ng ilang mga pera nang sabay-sabay, ipinapayong tawaging eksklusibo ang pag-andar nang walang petsa ng pagpili ng mga pera. Nakatanggap ng lahat ng mga kurso, alamin kung aling pera ang kinakailangan ngayon at alin ang hindi.

· Paglikha ng isang pamamaraan na isasagawa ang kahilingan habang tinutukoy ang resulta (papasok na mga parameter - kahilingan ng teksto, maraming mga pangalan ng parameter at halaga).

Gusto kong pag-usapan ang isa pang pamamaraan nang mas detalyado. Ang pamamaraang ito ay batay sa paggamit ng isang function na naglalaman ng isang tawag sa database, na may paulit-ulit na paggamit ng halaga ng pagbabalik nang direkta sa loop, iyon ay, isang uri ng query sa loop. Sa ilang mga kaso, ang naturang konstruksiyon ay maaaring mapabuti ang pagganap. Ang sumusunod na kondisyon ay dapat na matupad: dapat mayroong isang maliit na bilang ng iba't ibang mga halaga ng mga parameter ng input na nakatagpo sa ikot, at ang karamihan sa mga kumbinasyon ng hindi bababa sa isang beses ay nakuha nang mas maaga sa session na ito. Dapat itong alalahanin na napakahirap makakuha ng isang tiyak na hanay ng mga kumbinasyon ng lahat ng mga halaga ng mga parameter ng input nang maaga, at ang mga pagtatangka upang makakuha ng mga halaga para sa lahat ng uri ng mga kumbinasyon ay maaaring humantong sa pagbabasa ng masyadong maraming data mula sa database.

Kami ay binigyan ka lamang ng mga halimbawang pag-andar at pamamaraan. Samakatuwid, bago gamitin ang mga ito, suriin ang mga kondisyon kung saan gagana ang iyong code.