Bahay / Mga game console / Mga module sa 1s enterprise. Pangkalahatang mga module. I-flag ang "Outer join"

Mga module sa 1s enterprise. Pangkalahatang mga module. I-flag ang "Outer join"

Pangkalahatang mga module 1C- isang object ng configuration metadata 1C 8.3 at 8.2, na nag-iimbak ng program code na madalas na tinatawag sa configuration. Ang isang function/procedure ay maaaring tawagan mula sa kahit saan sa configuration (kung ito ay na-export).

Paano gamitin ang nakabahaging module

Magandang kasanayan na maglagay ng procedure o function sa isang karaniwang module kung ito ay tinatawag sa higit sa isang lugar. Una, kung ang isang pamamaraan ay naitama, kailangan lamang itong itama sa isang lugar. Pangalawa, nakakamit nito ang mas malaking pagkakasunud-sunod sa code.

Ang karaniwang halimbawa ng isang karaniwang module ay ang pagproseso ng pag-post ayon sa ilang rehistro, pagkuha ng halaga ng pagkakaiba sa mga araw ng trabaho, pag-convert ng mga halaga ng palitan, muling pagkalkula ng dami/presyo/halaga sa tabular na seksyon, at iba pang mga function.

Pangkalahatang Mga Katangian ng Module

Ang isa sa mga pangunahing pagkakaiba sa pagitan ng mga nakabahaging module at iba pang mga module ay hindi ka maaaring magdeklara ng mga nakabahaging variable.

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

Tingnan natin ang mga katangian ng palette ng karaniwang module:

  • Global- kung nakatakda ang flag, magiging available ang mga function at procedure mula sa module na ito sa pandaigdigang konteksto. Yung. maaari silang tawagan kahit saan sa pagsasaayos nang walang pangalan ng karaniwang module. Gayunpaman, may idinagdag na kundisyon - ang mga pangalan ng mga pamamaraan at function sa karaniwang module na ito ay dapat na natatangi sa loob ng pandaigdigang konteksto.
  • server- Ang mga pamamaraan at function ng karaniwang module na ito ay maaaring isagawa sa server.
  • Pagsasama sa labas- ang mga program code ng karaniwang module na ito ay maaaring isagawa kapag konektado sa pamamagitan ng isang panlabas na mapagkukunan (halimbawa, COM).
  • Client (pinamamahalaang application)— Ang mga pamamaraan at function ng karaniwang module na ito ay maaaring gamitin sa isang makapal na client sa managed application mode.
  • Kliyente (regular na aplikasyon)— ang mga program code ng karaniwang module na ito ay maaaring gamitin sa makapal na client sa normal na application mode.
  • Tawag ng server- isang bandila na nagpapahintulot sa kliyente na gamitin ang mga pamamaraan at function mula sa karaniwang module na ito.
  • - kung nakatakda sa True, ang pagsuri sa mga karapatan sa pag-access ay idi-disable sa karaniwang module na ito.
  • Muling gamitin— tumutukoy sa mga setting para sa mga ibinalik na halaga, kung ang opsyon ay pinagana, pagkatapos pagkatapos ng unang pagpapatupad ay tatandaan ng system ang halaga para sa mga parameter ng input na ito at magbabalik ng isang handa na halaga. Maaari itong tumagal ng mga sumusunod na halaga: hindi ginagamit- pagsara, sa oras ng tawag- para sa tagal ng isang tiyak na pamamaraan, sa panahon ng sesyon- hanggang sa isara ng user ang session (program).

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

1.1. Ang mga karaniwang module ay nilikha upang ipatupad ang mga pamamaraan at mga function na pinagsama ayon sa ilang pamantayan. Bilang isang patakaran, ang mga pamamaraan at pag-andar ng isang subsystem ng pagsasaayos (mga benta, pagbili) o mga pamamaraan at pag-andar ng magkatulad na pag-andar (paggawa gamit ang mga string, pangkalahatang layunin) ay inilalagay sa isang karaniwang module.

1.2. Kapag bumubuo ng mga nakabahaging module, dapat kang pumili ng isa sa apat na konteksto ng pagpapatupad ng code:

Karaniwang uri ng module Halimbawa ng pagbibigay ng pangalan Tawag ng server server Pagsasama sa labas Customer
(regular na aplikasyon)
Customer
(pinamamahalaang aplikasyon)
1. serverPangkalahatang Layunin (o Pangkalahatang Layunin Server)
2. Server na tumawag mula sa kliyentePangkalahatang LayuninCallServer
3. KliyenteGeneral Purpose Client (o General Purpose Global)
4. Client-serverPangkalahatang LayuninClientServer

2.1. Mga Karaniwang Module ng Server ay nilayon upang mag-host ng mga pamamaraan ng server at mga function na hindi magagamit para sa paggamit mula sa client code. Ipinapatupad nila ang lahat ng panloob na lohika ng negosyo ng server ng application.
Para gumana nang tama ang configuration sa mga external na mode ng koneksyon, pinamamahalaan at regular na mga application, ang mga pamamaraan at function ng server ay dapat ilagay sa mga karaniwang module na may mga sumusunod na katangian:

  • server(checkbox Tawag ng server nahulog),
  • Kliyente (regular na aplikasyon),
  • Pagsasama sa labas.

Sa kasong ito, ginagarantiyahan na ang mga pamamaraan at pag-andar ng server ay maaaring tawagan na may mga nababagong uri ng mga parameter (halimbawa, DirectoryObject, DocumentObject atbp.). Bilang isang tuntunin, ito ay:

  • mga humahawak para sa mga subscription sa mga kaganapan ng mga dokumento, direktoryo, atbp., na kumukuha ng nababagong halaga (object) bilang isang parameter.
  • mga pamamaraan at function ng server, kung saan ipinapasa ang isang bagay bilang parameter mula sa mga module ng mga direktoryo, dokumento, atbp., pati na rin mula sa mga module na may mga subscription sa kaganapan.

Ang mga karaniwang module ng server ay pinangalanan ayon sa mga pangkalahatang tuntunin para sa pagbibigay ng pangalan sa mga bagay na metadata.
Halimbawa: Paggawa gamit ang mga File, Pangkalahatang layunin

Sa ilang mga kaso, maaaring magdagdag ng isang postfix upang maiwasan ang mga salungat sa pangalan sa mga katangian ng pangkalahatang konteksto. "Server".
Halimbawa: ScheduledTasksServer, Data ExchangeServer.

2.2. Mga karaniwang module ng server na tatawagin mula sa kliyente naglalaman ng mga pamamaraan ng server at mga function na magagamit para sa paggamit mula sa client code. Binubuo nila ang client API ng application server.
Ang ganitong mga pamamaraan at pag-andar ay inilalagay sa karaniwang mga module na may katangian:

  • server(checkbox Tawag ng server itakda)

Ang mga karaniwang module ng server na tatawagin mula sa kliyente ay pinangalanan ayon sa mga pangkalahatang tuntunin para sa pagbibigay ng pangalan sa mga bagay ng metadata at dapat na pinangalanan ng isang postfix "Tawag sa Server".
Halimbawa: Paggawa gamit ang FilesCalling The Server

Tandaan na ang mga pamamaraan sa pag-export at mga function sa naturang karaniwang mga module ay hindi dapat maglaman ng mga nababagong uri ng mga parameter ( DirectoryObject, DocumentObject atbp.), dahil imposible ang kanilang paglipat mula sa (o sa) code ng kliyente.

Tingnan din:Paghihigpit sa pagtatakda ng flag na "Server call" para sa mga karaniwang module

2.3. Mga Module na Ibinahaging Kliyente naglalaman ng lohika ng negosyo ng kliyente (tinukoy ang paggana para lamang sa kliyente) at may mga sumusunod na katangian:

  • Kliyente (pinamamahalaang application)
  • Kliyente (regular na aplikasyon)

Ang pagbubukod ay kapag ang mga pamamaraan at pag-andar ng kliyente ay dapat na magagamit lamang sa pinamamahalaang mode ng aplikasyon (lamang sa normal na mode ng aplikasyon o lamang sa palabas na mode). Sa ganitong mga kaso, ang isa pang kumbinasyon ng dalawang tampok na ito ay katanggap-tanggap.

Ang mga karaniwang module ng kliyente ay pinangalanan gamit ang isang postfix "Customer".
Halimbawa: WorkFilesClient, Pangkalahatang LayuninCustomer

Tingnan din ang: pagliit ng client-side code

2.4. Sa ilang mga kaso, posible na lumikha ng mga karaniwang module ng client-server na may mga pamamaraan at pag-andar, ang nilalaman nito ay pareho sa server at sa kliyente. Ang ganitong mga pamamaraan at pag-andar ay inilalagay sa karaniwang mga module na may mga tampok:

  • Client (pinamamahalaang application)
  • server(checkbox Tawag ng server i-reset)
  • Kliyente (regular na aplikasyon)
  • Pagsasama sa labas

Ang mga karaniwang module ng ganitong uri ay pinangalanan na may postfix "ClientServer".
Halimbawa: WorkFilesClient, Pangkalahatang LayuninClientServer

Sa pangkalahatan, hindi inirerekomenda na tukuyin ang mga karaniwang module para sa server at sa kliyente (pinamamahalaang application) nang sabay. Ang functionality na tinukoy para sa client at para sa server ay inirerekomenda na ipatupad sa iba't ibang mga karaniwang module - tingnan ang p. 2.1 at 2.3. Ang ganitong tahasang paghihiwalay ng lohika ng negosyo ng kliyente at server ay idinidikta ng mga pagsasaalang-alang sa pagtaas ng modularity ng inilapat na solusyon, pagpapasimple sa kontrol ng developer sa pakikipag-ugnayan ng client-server at pagbabawas ng panganib ng mga error dahil sa mga pangunahing pagkakaiba sa mga kinakailangan para sa pagbuo ng client at server code (ang pangangailangan na i-minimize ang code na naisakatuparan sa client , iba't ibang availability ng mga bagay at uri ng platform, atbp.). Kasabay nito, dapat isaisip ng isa ang hindi maiiwasang pagtaas sa bilang ng mga karaniwang module sa pagsasaayos.

Ang isang espesyal na kaso ng pinaghalong client-server modules ay form at command modules, na partikular na idinisenyo upang ipatupad ang server at client business logic sa isang module.

3.1. Ang mga pangalan ng mga karaniwang module ay inirerekomenda na mabuo ayon sa mga pangkalahatang tuntunin para sa pagbibigay ng pangalan sa mga bagay na metadata. Ang pangalan ng isang karaniwang module ay dapat tumugma sa pangalan ng isang subsystem o isang hiwalay na mekanismo na ang mga pamamaraan at function na ipinapatupad nito. Inirerekomenda na iwasan ang mga karaniwang salita gaya ng "Procedures", "Functions", "Handlers", "Module", "Functionality", atbp. sa mga pangalan ng karaniwang modules. at ilapat lamang ang mga ito sa mga pambihirang kaso, kapag mas ganap nilang isiniwalat ang layunin ng modyul.

Upang matukoy ang pagkakaiba sa pagitan ng mga karaniwang module ng isang subsystem na nilikha upang ipatupad ang mga pamamaraan at mga function na ginagampanan sa iba't ibang konteksto, inirerekomendang bigyan sila ng mga postfix na inilarawan nang mas maaga sa mga talata. 2.1-2.4.

Sa mga bagong bersyon ng 1C:Enterprise system configurations, maraming function at procedure ang inilipat mula sa object modules (mga dokumento, direktoryo, atbp.) patungo sa manager modules. Tingnan natin ang mga pagkakaiba sa pagitan ng dalawang modyul na ito.

Ayon sa teorya ng object-oriented programming, ang mga pamamaraan ng mga bagay ay nahahati sa dalawang grupo: static at simple. Ang mga simpleng pamamaraan ay may access lamang sa isang partikular na pagkakataon ng klase. Ang mga static na pamamaraan ay walang access sa object data, ngunit gumagana sa klase sa kabuuan.

Kung isasalin natin ang lahat ng ito sa mga tuntunin ng 1C: Enterprise system, kung gayon Module ng bagay naglalaman ng mga simpleng pamamaraan. Upang magamit ang mga ito, kailangan mo munang kumuha ng isang partikular na bagay: isang elemento ng isang direktoryo, dokumento, atbp. Module ng manager naglalaman ng mga static na pamamaraan. Upang magamit ito, hindi na kailangang hiwalay na makuha ang bawat partikular na bagay, pinapayagan ka nitong gumana sa buong koleksyon nang sabay-sabay.

Module ng bagay maaaring may mga pamamaraan at function na maaaring gamitin sa labas. Upang gawin ito, ang gayong pamamaraan o pag-andar ay tinutukoy ng salita I-export.

Function NewFunction() Export

Upang magamit ang naturang function mula sa isang object module, kailangan mo muna, pagkakaroon ng reference sa kinakailangang object, makuha ito gamit ang function. GetObject().



Bawat= Bagay. NewFunction();

Katulad nito, maaari kang lumikha ng mga bagong variable na maaaring magamit mula sa iba't ibang mga object ng pagsasaayos.

Variable NewVariable Export

DirectoryItem = Mga Direktoryo. Nomenclature. FindByCode("000000001" );
Object = Elemento ng Direktoryo. GetObject() ;
Isang bagay. NewVariable=);

Kaya posible na madagdagan ang mga karaniwang pamamaraan, pag-andar at katangian (mga variable) ng mga bagay. Ang mga naturang variable ay dynamic, hindi sila nakaimbak sa infobase at umiiral lamang habang nagtatrabaho sa natanggap na bagay.

Module ng manager ay may lahat ng parehong mga tampok, ang pagkakaiba lamang ay hindi mo kailangang kumuha ng isang tiyak na bagay upang magamit ito, pinapayagan ka ng module ng manager na magtrabaho kasama ang buong koleksyon ng mga bagay ng isang tiyak na uri.

Pamamaraan NewProcedure() Export

DirectoryItem = Mga Direktoryo. Nomenclature. NewProcedure() ;

O para sa isang variable:

Variable NewVariable Export

DirectoryItem = Mga Direktoryo. Nomenclature. newVariable;

Isaalang-alang natin ang mga pagkakaiba sa paggamit ng object module at manager module sa halimbawa ng pamamaraan para sa paglikha ng naka-print na anyo ng isang dokumento.

Kapag ginagamit ang object module, ang code ay magiging ganito:

Function PrintDocument (Link) Export
//Ang function na ito ay dapat magpasa ng link sa isang partikular na dokumento
Ibalik ang TabDoc;
EndFunctions

Sa form ng dokumento, kailangan mong lumikha ng isang pamamaraan na magpapasa ng isang link sa dokumento sa pag-print ng function.

&AtClient
Pag-print ng Pamamaraan (Utos)
TabDoc = PrintOnServer() ;
TabDoc. Ipakita();
EndProcedure
&Sa server
Function PrintOnServer()
Doc = FormAttributeToValue("Object" );
Ibalik mo Doc. PrintDocument(Bagay. Link) ;
EndFunctions

Ang kawalan ng pamamaraang ito ay pinapayagan ka lamang nitong mag-print ng isang bagay. Kung kailangan mong mag-print ng ilang mga dokumento nang sabay-sabay, pagkatapos ay kailangan mong makuha ang bawat isa sa kanila, at pagkatapos ay tawagan ang function mula sa object module. Nangangailangan ito ng makabuluhang mapagkukunan ng system, dahil kapag natanggap ang isang bagay, ganap itong umaangkop sa RAM.

Mula sa pananaw sa pagganap, mas mainam na gamitin ang module ng manager hangga't maaari. Sa aming halimbawa, ang solusyon sa problema ay magiging ganito.
Function PrintOnServer()
Ibalik ang mga Dokumento. Ang amingDokumento. PrintDocument(ArrayReferences) ;
EndFunctions

Sa kaso ng paggamit ng module ng manager, ang pamamaraan ng pag-print ay maaaring tawagan pareho mula sa form ng dokumento at mula sa form ng listahan, na nagpapasa ng mga link sa ilang mga dokumento sa array. Sa kasong ito, hindi kailangang matanggap ng system ang bawat dokumento mula sa array, na makabuluhang nakakatipid ng mga mapagkukunan ng system.

Kaya kailan mo dapat gamitin ang object module at kailan mo dapat gamitin ang manager module?

Ang lahat ay nakasalalay sa gawain. Kung ang isang sanggunian sa isang bagay ay sapat para sa pagpapatupad nito (halimbawa, isang gawain sa pag-print), pagkatapos ay mas mahusay na gamitin ang module ng manager. Kung ang gawain ay baguhin ang data, halimbawa, pagpuno ng isang dokumento, pagkatapos ay kailangan mong makuha ito at gamitin ang object module.

Ang mga module ng programa ay naglalaman ng executable code sa 1C na wika, na kinakailangan upang tumugon sa isang tiyak na paraan sa mga aksyon ng system o user kapag hindi sapat ang mga visual development tool. Gayundin sa mga module ng programa maaari naming ilarawan ang aming sariling mga pamamaraan (procedure at function).

Karaniwan, ang isang software module ay binubuo ng tatlong mga seksyon:

  • variable na lugar ng deklarasyon;
  • lugar ng paglalarawan ng pamamaraan at pag-andar;
  • pangunahing teksto ng programa.

Isang halimbawa ng istraktura ng isang module ng programa:

//******************** VARIABLE DECLARATION AREA **************************

Rem Surname Export; / /ito ay isang pandaigdigang variable
Pangalan ng Variable, Patronymic; //ito ay isang module variable
Baguhin ang pangalan; //ito ay isa ring module variable at maaaring ma-access

//mula sa anumang pamamaraan at function ng aming module

//***************** PAMAMARAAN AT LUGAR NG PAGLALARAWAN NG PAGGAMIT ****************

Pamamaraan Pamamaraan1 ()
Kabuuan ng Variable ; / Ang /Total ay isang lokal na variable (procedure variable)

Kabuuan = Apelyido + "" + Pangalan + " "+ Patronymic;

EndProcedure

Function Function1 ()

// mga pahayag ng function

Return(Apelyido + " " + First name );

EndFunctions

//************************* PANGUNAHING TEKSTO NG PROGRAM ****************** *

Apelyido = "Ivanov";
Pangalan = "Ivan";
Gitnang pangalan = "Ivanovich";

//******************************************************************************

Sa isang partikular na module ng programa, maaaring wala ang alinman sa mga lugar.
Saklaw ng deklarasyon ng variable ay inilalagay mula sa simula ng teksto ng module hanggang sa unang pahayag ng Pamamaraan o ang Function na pahayag o anumang maipapatupad na pahayag. Ang seksyong ito ay maaari lamang maglaman ng mga variable na pahayag ng deklarasyon.

Deskripsyon ng lugar ng mga pamamaraan at pag-andar ay inilalagay mula sa unang pahayag ng isang Pamamaraan o isang Function na pahayag hanggang sa anumang maipapatupad na pahayag sa labas ng katawan ng isang pamamaraan o deklarasyon ng function.

Pangunahing lugar ng teksto ng programa ay inilalagay mula sa unang executable na pahayag sa labas ng katawan ng mga pamamaraan o function hanggang sa dulo ng module. Ang seksyong ito ay maaari lamang maglaman ng mga maipapatupad na pahayag. Ang lugar ng pangunahing teksto ng programa ay isinasagawa sa oras ng pagsisimula ng module. Karaniwan, sa pangunahing seksyon ng programa, makatuwirang maglagay ng mga pahayag upang simulan ang mga variable na may ilang mga tiyak na halaga na dapat italaga bago ang unang tawag sa mga pamamaraan o pag-andar ng module.

Ang mga module ng programa ay matatagpuan sa mga lugar na iyon sa configuration na maaaring mangailangan ng paglalarawan ng mga partikular na algorithm ng operasyon. Ang mga algorithm na ito ay dapat na idinisenyo bilang mga pamamaraan o function na tatawagin ng system mismo sa mga paunang natukoy na sitwasyon (halimbawa, kapag nagbubukas ng isang reference na form, kapag nag-click sa isang pindutan sa isang dialog box, kapag nagbabago ng isang bagay, atbp.).

Ang bawat hiwalay na module ng programa ay nakikita ng system sa kabuuan, kaya ang lahat ng mga pamamaraan at function ng module ng programa ay isinasagawa sa isang konteksto.

Ang konteksto ng pagpapatupad ng mga module ay nahahati sa mga konteksto ng kliyente at server. Bilang karagdagan, ang ilang mga module ng software ay maaaring i-compile pareho sa panig ng kliyente at sa panig ng server.

Module ng aplikasyon (pinamamahalaan o regular)

Inilalarawan ng module ng application ang mga pamamaraan (mga tagapangasiwa) ng mga kaganapan na sinisimulan sa simula at pagtatapos ng system. Halimbawa, kapag nagsimula ka ng isang application, maaari mong i-update ang ilang data ng configuration, at kapag lumabas ka, maaari mong tanungin kung dapat ka bang lumabas sa program. Bilang karagdagan, hinaharang ng modyul na ito ang mga kaganapan mula sa panlabas na kagamitan, tulad ng pangangalakal o kagamitan sa pananalapi. Ito ay nagkakahalaga ng noting na ang application module ay naisakatuparan lamang sa kaso ng isang interactive na paglulunsad ng application, iyon ay, kapag ang window ng programa ay inilunsad. Hindi ito mangyayari kung ang application ay inilunsad sa mode mga koneksyon sa com.
Mayroong dalawang magkaibang mga module ng aplikasyon sa 1C 8 platform. Ito ang module ng Karaniwang Application at ang module ng Managed Application. Nati-trigger ang mga ito kapag nagsimula ang iba't ibang kliyente. Halimbawa, ang module ng Managed Application ay na-trigger kapag ang web client ay inilunsad, manipis na kliyente at makapal na kliyente sa pinamamahalaang application mode. At ang regular na module ng application ay na-trigger kapag ang makapal na kliyente ay inilunsad sa normal na mode ng aplikasyon. Ang setting ng application launch mode ay nakatakda sa "Main launch mode" na configuration property.

Ang lahat ng 3 seksyon ay matatagpuan sa module ng aplikasyon - mga deklarasyon ng mga variable, mga paglalarawan ng mga pamamaraan at pag-andar, pati na rin ang pangunahing teksto ng programa. Ang module ng application ay pinagsama-sama sa panig ng kliyente, na lubhang naghihigpit sa amin sa paggamit ng maraming uri ng data. Maaari mong palawigin ang konteksto ng isang module ng application gamit ang mga pamamaraan ng mga nakabahaging module na mayroong set ng property ng Call Server. Ang lahat ng mga variable at pamamaraan ng application program module na minarkahan bilang export ay magiging available sa alinmang client-side configuration module. Gayunpaman, gaano man ito kaakit-akit, hindi ka dapat maglagay ng malaking bilang ng mga pamamaraan at function dito. Kung mas maraming code ang nasa isang ibinigay na module, mas mahaba ang oras ng compilation, at, dahil dito, ang oras ng pagsisimula ng application.

Gaya ng nabanggit sa itaas, pinangangasiwaan ng module ng application ang mga kaganapan sa pagsisimula at pagtatapos ng application. Upang pangasiwaan ang bawat isa sa mga kaganapang ito sa module ng aplikasyon, mayroong isang pares ng mga humahawak Bago ... at Kailan ... Ang mga pagkakaiba sa pagitan ng mga ito ay ang mga sumusunod: kapag ang code sa handler Bago ... ay naisakatuparan, ang aksyon ay may hindi pa nagaganap at maaari nating tanggihan na isagawa ito. Ito ay para sa opsyon na Pagtanggi. Sa mga humahawak sa On, naganap na ang aksyon, at hindi namin maaaring tanggihan na ilunsad ang application o lumabas dito.

Module ng panlabas na koneksyon

  • maaaring maglaman ng lahat ng 3 lugar
  • matatagpuan sa root section ng configuration

Ang layunin ng module ay katulad ng layunin ng application module. Pinangangasiwaan nito ang mga kaganapan sa pagsisimula at pagtatapos ng application. Nati-trigger ang module ng panlabas na koneksyon kapag inilunsad ang application sa com-connection mode. Ang panlabas na proseso ng pagsali mismo ay hindi isang interactive na proseso. Sa mode na ito, gumagana ang program sa base ng impormasyon at ang window ng application ay hindi nagbubukas, na nagpapataw ng ilang mga paghihigpit sa paggamit ng mga pamamaraan na inilaan para sa interactive na trabaho. Sa mode na ito, hindi ka maaaring gumamit ng mga tawag sa mga dialog form, babala at mensahe sa user, atbp. Hindi lang sila tatakbo.

Tulad ng sa module ng aplikasyon, ang lahat ng tatlong mga lugar ay magagamit dito: mga variable na deklarasyon, mga paglalarawan ng mga pamamaraan at mga function, pati na rin ang pangunahing teksto ng programa. Ang pangunahing pagkakaiba mula sa module ng application ay na sa com-connection mode, ang lahat ng gumagana sa infobase ay nangyayari sa gilid ng server, kaya ang panlabas na module ng koneksyon ay pinagsama-sama sa gilid ng server. Alinsunod dito, ang mga variable ng pag-export at pamamaraan ng mga karaniwang module ng kliyente ay hindi magagamit dito.

module ng session

  • ginanap sa gilid ng server
  • matatagpuan sa root section ng configuration

Ito ay isang napaka-espesyal na module na idinisenyo lamang upang simulan ang mga parameter ng session. Bakit kailangan mong gumawa ng sarili mong modyul para dito? Ang paggamit nito ay dahil sa ang katunayan na ang application mismo ay maaaring ilunsad sa iba't ibang mga mode (na humahantong sa pagpapatupad ng alinman sa isang pinamamahalaang module ng application, o isang regular na aplikasyon, o isang panlabas na module ng koneksyon), at ang mga parameter ng session ay dapat na masimulan anuman ang ang launch mode. Upang hindi maisulat ang parehong program code sa lahat ng tatlong mga module na ito, kailangan namin karagdagang modyul, na isinasagawa anuman ang startup mode ng application.

Mayroong isang solong kaganapan na "SetSessionParameters" sa module ng session, na pinakaunang pinagana, kahit na bago ang kaganapan ng PreSystemBegin ng module ng application. Wala itong variable na seksyon ng deklarasyon at isang pangunahing seksyon ng programa. At imposibleng magdeklara ng mga paraan ng pag-export. Ang module ay pinagsama-sama sa gilid ng server.

Pangkalahatang mga module

  • ay maaaring maglaman ng lugar para sa paglalarawan ng mga pamamaraan at paggana
  • naisakatuparan sa server o client side (depende sa mga setting ng module)
  • na matatagpuan sa sangay ng puno ng mga bagay sa pagsasaayos na "General" - "General modules"

Ang mga karaniwang module ay inilaan upang ilarawan ang ilang karaniwang mga algorithm na tatawagin mula sa iba pang mga module ng pagsasaayos. Ang pangkalahatang module ay hindi naglalaman ng mga variable na lugar ng deklarasyon at ang katawan ng programa. Maaari mong ideklara ang mga paraan ng pag-export sa loob nito, ang pagkakaroon nito ay matutukoy ng mga setting ng module (sa kung aling bahagi ito ay isinagawa: sa server o client side). Dahil sa ang katunayan na ang seksyon ng variable na deklarasyon ay hindi magagamit, hindi posible na tukuyin ang mga pandaigdigang variable sa mga nakabahaging module. Maaari mong gamitin ang module ng application para dito.

Ang pag-uugali ng nakabahaging module ay nakasalalay sa mga parameter na itinakda (global o hindi, iba't ibang mga flag ng compilation, kung ang isang tawag sa server ay magagamit, atbp.). Narito ang ilang mga tip para sa pag-set up ng mga nakabahaging module:

Magandang kasanayan na huwag gamitin ang bandilang "Global" sa lahat ng dako. Bawasan nito ang oras ng pagsisimula ng application, gayundin ang pagbutihin ang pagiging madaling mabasa ng code (siyempre, kung ang karaniwang module ay may ganap na makabuluhang pangalan);
- Hindi ipinapayong gumamit ng higit sa isang flag ng compilation. Walang napakaraming pamamaraan na kailangang isagawa sa iba't ibang konteksto, at kung kinakailangan pa ang mga ganitong pamamaraan, maaaring maglaan ng hiwalay na karaniwang module para sa kanila;
- ang flag na "Server call" ay may katuturan lamang kung ang module ay pinagsama-sama "Sa server". Samakatuwid, ang lahat ng iba pang mga flag ng compilation ay dapat na alisin upang maiwasan ang iba't ibang mga problema;
- kung sa mga pamamaraan ng module mayroong isang mass processing ng data, pagbabasa at pagsulat sa database, pagkatapos ay upang madagdagan ang bilis ng trabaho, mas mahusay na huwag paganahin ang access control sa pamamagitan ng pagtatakda ng "Privileged" flag. Ang mode na ito ay magagamit lamang para sa mga nakabahaging module na pinagsama-sama sa server.

Form module

  • maaaring maglaman ng lahat ng 3 lugar
  • isinagawa sa panig ng server at kliyente

Ang module ng form ay idinisenyo upang iproseso ang mga aksyon ng user gamit ang form na ito (paghawak sa kaganapan ng pag-click sa button, pagpapalit ng katangian ng form, atbp.). Mayroon ding mga kaganapang direktang nauugnay sa mismong form (halimbawa, pagbubukas o pagsasara nito). Ang mga module ng pinamamahalaan at regular na mga form ay pangunahing naiiba sa na ang module pinamamahalaang form malinaw na pinaghihiwalay ng konteksto. Bawat procedure o function ay dapat may compilation directive. Kung ang direktiba ng compilation ay hindi tinukoy, ang pamamaraan o function na ito ay isinasagawa sa gilid ng server. Sa karaniwang anyo, ang lahat ng code ay isinasagawa sa panig ng kliyente.

Ang istraktura ng pinamamahalaang form ay naglalaman ng isang variable na seksyon ng deklarasyon, mga paglalarawan ng mga pamamaraan at pag-andar, at ang katawan ng programa (isinasagawa kapag ang form ay sinimulan). Maa-access namin ang mga karaniwang kaganapan sa form sa pamamagitan ng listahan ng mga inaasahang pamamaraan at function ng form (Ctrl+Alt+P), o sa pamamagitan ng mga properties palette ng form mismo.

Kung ang form ay may pangunahing attribute na nakatalaga, ang mga katangian at pamamaraan ng application object na ginamit bilang pangunahing attribute ay magiging available sa form module.

Module ng bagay

  • maaaring maglaman ng lahat ng 3 lugar
  • ginanap sa gilid ng server

Ang module na ito ay magagamit para sa karamihan ng mga bagay sa pagsasaayos at nilayon, sa pangkalahatan, upang iproseso ang mga kaganapang direktang nauugnay sa bagay. Halimbawa, ang mga kaganapan ng pagre-record at pagtanggal ng mga bagay, pagsuri na ang mga detalye ng isang bagay ay napunan, pag-post ng isang dokumento, atbp.

Ang ilang mga object module na kaganapan ay duplicate sa anyo ng mga kaganapan sa module. Halimbawa, ang mga kaganapang nauugnay sa talaan. Gayunpaman, dapat itong maunawaan na ang mga kaganapan ng module ng form ay isasagawa lamang sa partikular na anyo ng bagay, ibig sabihin, kapag binuksan ang partikular na anyo. At ang mga kaganapan ng object module ay tatawagin sa anumang kaso, kahit na sa oras ng programa ng trabaho sa object. Samakatuwid, kung kailangan mo ng mga pamamaraan na nauugnay sa isang bagay nang hindi nakatali sa isang tiyak na anyo ng bagay, pagkatapos ay mas mahusay na gamitin ang object module para dito.

Module ng Object manager

  • maaaring maglaman ng lahat ng 3 lugar
  • ginanap sa gilid ng server

Ang module ng object manager ay lumitaw lamang simula sa bersyon 1C 8.2. Umiiral ang manager module para sa lahat ng application object at idinisenyo upang pamahalaan ang object na ito bilang configuration object. Binibigyang-daan ka ng module ng manager na palawigin ang functionality ng isang object sa pamamagitan ng pagpapakilala (pagsulat) ng mga procedure at function na hindi tumutukoy sa isang partikular na instance ng object ng database, ngunit sa mismong configuration object. Binibigyang-daan ka ng module ng object manager na maglagay ng mga karaniwang pamamaraan at function para sa isang partikular na bagay at i-access ang mga ito mula sa labas, halimbawa, mula sa pagproseso (siyempre, kung ang pamamaraan o function na ito ay kasama ng Export na keyword). Ano ang naibibigay nito sa atin na bago? Sa pangkalahatan, walang iba kundi ang pag-aayos ng mga pamamaraan sa pamamagitan ng mga bagay at pag-iimbak ng mga ito sa magkahiwalay na lugar - Mga Module ng Object Manager. Maaari rin nating ilagay ang mga pamamaraan at function na ito sa mga karaniwang module, ngunit ipinapayo ng 1C na ilagay ang mga karaniwang pamamaraan at function ng mga bagay sa Object Manager Module. Mga halimbawa ng paggamit ng mga pamamaraan at function ng Object Managers Module: paunang pagpuno ng mga indibidwal na detalye ng isang direktoryo o dokumento sa ilalim ng ilang partikular na kundisyon, pagsuri sa pagpuno ng mga detalye ng isang direktoryo o dokumento sa ilalim ng ilang partikular na kundisyon, atbp.

Command Module

  • maaaring maglaman ng isang seksyon na naglalarawan ng mga pamamaraan at function
  • naisakatuparan sa panig ng kliyente

Ang mga utos ay mga bagay na nasa ilalim ng mga object ng application o configuration sa kabuuan. Ang bawat command ay may command module kung saan maaari mong ilarawan ang isang paunang natukoy na CommandProcess() na pamamaraan para sa pagpapatupad ng command na iyon.

Ano ang mga module at para saan ang mga ito? Ang module ay naglalaman ng program code. Bukod dito, ito ay nagkakahalaga ng noting na, hindi tulad ng 7.7 platform, kung saan ang code ay maaaring matatagpuan sa parehong mga katangian ng mga elemento ng form at sa mga cell ng mga talahanayan ng layout, sa 8.x platform, ang anumang linya ng code ay dapat na matatagpuan sa ilang modyul. Karaniwan, ang isang module ay binubuo ng tatlong seksyon - isang seksyon para sa paglalarawan ng mga variable, isang seksyon para sa paglalarawan ng mga pamamaraan at function, at isang seksyon para sa pangunahing programa. Ang istraktura na ito ay tipikal para sa halos lahat ng mga module ng platform, na may ilang mga pagbubukod. Ang ilang mga module ay walang isang variable na seksyon ng deklarasyon at isang pangunahing seksyon ng programa. Halimbawa, Session Module at anumang General Module.

Ang konteksto ng pagpapatupad ng mga module ay karaniwang nahahati sa mga konteksto ng kliyente at server. Bilang karagdagan, ang ilang mga module ay maaaring pinagsama-sama sa panig ng kliyente at sa panig ng server. At ang ilan ay puro server-side o client-side. Kaya:

Module ng aplikasyon

Ang module ay idinisenyo upang mahuli ang mga sandali ng paglulunsad ng application (paglo-load ng configuration) at ang pagkumpleto nito. At sa kaukulang mga kaganapan, maaari mong ayusin ang mga pamamaraan ng pag-verify. Halimbawa, sa simula ng aplikasyon, i-update ang anumang data ng sanggunian sa pagsasaayos, sa pagtatapos ng trabaho, tanungin kung ito ay nagkakahalaga ng pag-iwan nito, marahil ang araw ng trabaho ay hindi pa natapos. Bilang karagdagan, hinaharang nito ang mga kaganapan mula sa panlabas na kagamitan, tulad ng pangangalakal o kagamitan sa pananalapi. Kapansin-pansin na ang module ng application ay humarang sa mga inilarawang kaganapan lamang sa kaso ng isang interactive na paglulunsad. Yung. kapag ang window ng programa mismo ay nilikha. Hindi ito mangyayari kung ang application ay inilunsad sa com-connection mode.

Mayroong dalawang magkaibang mga module ng aplikasyon sa 8.2 platform. Ito ang module ng Karaniwang Application at ang module ng Managed Application. Nati-trigger ang mga ito kapag nagsimula ang iba't ibang kliyente. Ito ay kung paano gumagana ang pinamamahalaang module ng application kapag ang web client, thin client, at thick client ay inilunsad sa managed application mode. At ang regular na module ng application ay na-trigger kapag ang makapal na kliyente ay inilunsad sa normal na mode ng aplikasyon.

Ang lahat ng mga seksyon ay maaaring ilagay sa module ng aplikasyon - mga paglalarawan ng mga variable, pamamaraan at pag-andar, pati na rin ang mga paglalarawan ng pangunahing programa. Ang module ng application ay pinagsama-sama sa panig ng kliyente, kaya't ito ay lubhang naglilimita sa amin sa pagkakaroon ng maraming uri ng data. Maaari mong palawigin ang konteksto ng isang module ng application gamit ang mga pamamaraan ng mga nakabahaging module na mayroong set ng property ng Call Server. Ang lahat ng mga variable at pamamaraan na minarkahan bilang pag-export ay magiging available sa anumang module ng configuration sa panig ng kliyente. Gayunpaman, gaano man ito kaakit-akit, huwag maglagay ng napakaraming pamamaraan dito. Kung mas maraming code ang nilalaman nito, mas mahaba ang oras ng compilation, at, dahil dito, ang oras ng pagsisimula ng application, na lubhang nakakainis para sa mga user.

Gaya ng nabanggit sa itaas, pinangangasiwaan ng module ng application ang mga kaganapan sa pagsisimula at pagtatapos ng application. Upang mahawakan ang bawat isa sa mga kaganapang ito sa module ng aplikasyon, mayroong isang pares ng mga humahawak Bago ... at Kailan ... Ang pagkakaiba sa pagitan ng mga ito ay kapag ang code sa handler Bago ... ay naisakatuparan, ang aksyon ay hindi pa nangyari at maaari nating tanggihan na isagawa ito. Ito ay para sa opsyon na Pagtanggi. Sa mga humahawak sa On, naganap na ang aksyon, at hindi namin maaaring tanggihan na ilunsad ang application o lumabas dito.

Module ng panlabas na koneksyon

Ang layunin ng module ay katulad ng layunin ng application module. Pinangangasiwaan nito ang mga punto ng pagsisimula at pagtatapos ng application. Nati-trigger ang module ng panlabas na koneksyon kapag inilunsad ang application sa com-connection mode. Ang panlabas na proseso ng pagsali mismo ay hindi isang interactive na proseso. Sa mode na ito, ang programmatic work sa infobase ay nangyayari at ang application window ay hindi nagbubukas, na nagpapataw ng ilang mga paghihigpit sa paggamit ng mga pamamaraan na inilaan para sa interactive na trabaho. Sa mode na ito, hindi ka maaaring gumamit ng mga tawag sa form ng dialogo, mga mensahe ng babala, atbp. Hindi lang sila gagana.

Tulad ng sa module ng aplikasyon, ang mga seksyon para sa paglalarawan ng mga variable, pamamaraan, at isang seksyon para sa pangunahing programa ay magagamit dito. Maaari ka ring magdeklara ng mga variable at pamamaraan ng pag-export. Ang pagkakaiba ay na sa com-connection mode, lahat ng trabaho sa infobase ay nagaganap sa gilid ng server, kaya ang panlabas na module ng koneksyon ay eksklusibong pinagsama-sama sa server. Alinsunod dito, ang mga variable ng pag-export at pamamaraan ng mga karaniwang module ng kliyente ay hindi magagamit dito.

module ng session

Ito ay isang napaka-espesyal na module at nilayon lamang para sa pagsisimula ng mga parameter ng session. Bakit kailangan mong gumawa ng sarili mong modyul para dito? Ito ay dahil sa ang katunayan na ang proseso ng pagsisimula ay maaaring mangailangan ng pagpapatupad ng ilang code, at bilang karagdagan, ang application ay maaaring ilunsad sa ilalim ng iba't ibang mga kliyente (na humahantong sa pagpapatupad ng iba't ibang mga module ng application o panlabas na module ng koneksyon), at ang mga parameter ng session ay dapat masimulan sa anumang launch mode. Samakatuwid, ang isang karagdagang module ay kinakailangan, na kung saan ay naisakatuparan sa anumang application launch mode.

Mayroong isang kaganapan na "SetSessionParameters" sa module ng session, na pinakaunang pinapagana, kahit na bago ang kaganapang BeforeSystemStart ng module ng application. Wala itong variable na seksyon ng deklarasyon at isang pangunahing seksyon ng programa. At imposibleng magdeklara ng mga paraan ng pag-export. Ang module ay pinagsama-sama sa gilid ng server.

Iwasan ang tukso na ang modyul na ito ay isinasagawa sa tuwing ilulunsad ang application, at ilagay dito ang code na hindi direktang nauugnay sa pagsisimula ng mga parameter ng session. Ito ay dahil sa ang katunayan na ang SetSessionParameters handler ay maaaring tawagin nang paulit-ulit sa panahon ng pagpapatakbo ng system. Halimbawa, nangyayari ito kapag na-access namin ang mga hindi nasimulang parameter. At kahit na posible na mahuli ang sandali ng unang paglulunsad ng kaganapang ito (Ang RequiredParameters ay may Hindi Natukoy na uri), gayunpaman, dapat tandaan na ang module na ito ay pinagsama-sama sa privileged mode, i.e. hindi nito kinokontrol ang mga karapatan sa pag-access. At ang pangalawang punto, hindi pa rin tayo makatitiyak ng isang daang porsyento na mailulunsad ang sistema. Biglang, mabibigo ang module ng application, at sinusubukan naming magsagawa ng ilang aksyon sa database.

Pangkalahatang mga module

Ang mga module ay inilaan upang ilarawan ang ilang karaniwang mga algorithm na tatawagin mula sa iba pang mga module ng pagsasaayos. Ang pangkalahatang module ay hindi naglalaman ng isang variable na seksyon ng deklarasyon at isang pangunahing seksyon ng programa. Maaari mong ideklara ang mga paraan ng pag-export dito, ang konteksto ng pagiging naa-access kung saan matutukoy ng mga flag ng compilation. Dahil sa ang katunayan na ang seksyon ng variable na deklarasyon ay hindi magagamit, hindi posible na tukuyin ang mga pandaigdigang variable sa mga nakabahaging module. Upang gawin ito, kailangan mong gamitin ang mga function ng mga karaniwang module na may return value caching o isang application module. Dapat tandaan na kahit na ang nakabahaging pag-aari ng muling paggamit ng module ay nakatakda sa "Para sa tagal ng session", kung gayon sa kasong ito, ang buhay ng mga naka-cache na halaga ay hindi lalampas sa 20 minuto mula sa huling pag-access sa kanila. .
Ang pag-uugali ng nakabahaging module ay nakasalalay sa mga parameter na itinakda (global o hindi, iba't ibang mga flag ng compilation, kung ang isang tawag sa server ay magagamit, atbp.). Sa artikulong ito, hindi namin isasaalang-alang ang lahat ng uri ng mga setting, pati na rin ang mga tampok sa pag-uugali at mga pitfalls na lumitaw kapag ang mga flag ng ari-arian ay naitakda nang hindi makatwiran. Ito ay isang paksa para sa isang hiwalay na artikulo. Pag-isipan natin ang ilang mga punto na dapat sundin kapag nagtatakda ng mga flag:

  • Isang magandang tuntunin ng hinlalaki na huwag gamitin ang "Global" na bandila sa lahat ng dako. Bawasan nito ang oras ng pagsisimula ng application, gayundin ang pagbutihin ang pagiging madaling mabasa ng code (siyempre, kung ang karaniwang module ay may ganap na makabuluhang pangalan).
  • Hindi ipinapayong gumamit ng higit sa isang flag ng compilation. Walang napakaraming pamamaraan na kailangang isagawa sa iba't ibang konteksto, at kung kinakailangan pa rin ang mga ganitong pamamaraan, maaaring maglaan ng hiwalay na karaniwang module para sa kanila.
  • Ang bandila ng "Tawag sa Server" ay makabuluhan lamang kung ang module ay pinagsama-sama "Sa server". Samakatuwid, ang lahat ng iba pang mga flag ng compilation ay dapat na alisin upang maiwasan ang iba't ibang mga problema.
  • Kung sa mga pamamaraan ng module mayroong isang maramihang pagproseso ng data, pagbabasa at pagsulat sa database, pagkatapos ay upang madagdagan ang bilis ng trabaho, mas mahusay na huwag paganahin ang kontrol sa pag-access sa pamamagitan ng pagtatakda ng bandila na "Privileged". Ang mode na ito ay magagamit lamang para sa mga nakabahaging module na pinagsama-sama sa server.

Form module

Ito ay nilayon upang iproseso ang mga aksyon ng user, i.e. iba't ibang mga kaganapan na may kaugnayan sa data entry at pagproseso ng kawastuhan ng kanilang entry. Module regular na hugis pinagsama-sama nang buo sa kliyente. Ang module ng pinamamahalaang form, sa kabilang banda, ay malinaw na nilagyan ng demarkasyon ng konteksto ng pagpapatupad, kaya ang lahat ng mga variable at pamamaraan ay dapat mayroong isang compilation directive. Kung ang direktiba ay hindi tahasang tinukoy, ang variable o paraan na ito ay isasama sa panig ng server. Sa form module, ang mga seksyon para sa paglalarawan ng mga variable at pamamaraan ay magagamit, pati na rin ang isang seksyon para sa pangunahing programa.

Module ng bagay

Ang module na ito ay tipikal para sa maraming mga bagay sa pagsasaayos at inilaan, sa pangkalahatan, para sa pagproseso ng mga kaganapan sa bagay. Halimbawa, ang mga kaganapan ng pagsulat at pagtanggal ng mga bagay, ang kaganapan ng pag-post ng mga dokumento, atbp.

Ang ilang mga object module na kaganapan ay duplicate sa anyo ng mga kaganapan sa module. Halimbawa, ang mga kaganapang nauugnay sa talaan. Gayunpaman, dapat itong maunawaan na ang mga kaganapan ng module ng form ay isasagawa lamang sa isang partikular na object ng form. Sa pangkalahatan, maaaring mayroong ilan sa mga form na ito. At ang mga kaganapan ng object module ay tatawagin sa anumang kaso, kahit na sa oras ng programa ng trabaho sa object. Samakatuwid, kung kinakailangan na magsagawa ng ilang code sa lahat ng mga kaso, pagkatapos ay mas mahusay na gumamit ng isang object module event para dito.

Ang object module ay eksklusibong pinagsama-sama sa server. Dito, maaari mong tukuyin ang mga variable ng pag-export at mga pamamaraan na magagamit sa iba pang mga module ng pagsasaayos. Sa tulong ng mga pag-aari at pamamaraan na ito, maaari naming makabuluhang mapalawak ang pag-andar ng bagay.

Module ng Object manager

Umiiral ang module na ito para sa maraming mga object ng pagsasaayos. Ang pangunahing layunin ng modyul na ito ay muling tukuyin ang karaniwang kaganapan sa pagpili na nangyayari sa oras ng pag-input ayon sa linya at palawakin ang functionality ng manager. Ang module ay pinagsama-sama sa gilid ng server. Posibleng tukuyin ang mga katangian at pamamaraan ng pag-export. Ang pagtawag sa mga paraan ng pag-export ng manager ay hindi nangangailangan ng paglikha ng mismong bagay.

Sa lahat ng nasa itaas, maaari kang magdagdag ng larawan ng ilang mga module ng configuration at mga paraan upang magkaparehong tawagan ang mga pamamaraan sa managed application mode. Ang arrow ay nagpapahiwatig ng direksyon kung saan maaari kang pumunta upang tawagan ang kaukulang pamamaraan. Tulad ng makikita mula sa diagram, ang konteksto ng server ay ganap na sarado. Ngunit mula sa konteksto ng kliyente, posible na ma-access ang mga pamamaraan ng server.

Mga simbolo sa scheme: O.M. Client - Karaniwang module ng kliyente; O.M. Server - Karaniwang module ng server; M.F. Kliyente - Mga pamamaraan ng kliyente ng module ng form; M.F. Server - Mga pamamaraan ng server ng module ng form.