Modul pre prácu s klientmi za 1s. Všeobecné moduly. Príznak externého pripojenia

Článok pokračuje v sérii „Prvé kroky vo vývoji na 1C“, podrobne rozoberá nasledujúce problémy:

  • Čo je softvérový modul a z akých sekcií pozostáva?
  • Na čo slúži aplikačný modul? Prečo sú dvaja? Kedy sa ktorý spúšťa? Aké sú jemnosti práce?
  • Aké udalosti sú spojené so spustením prevádzky systému, ako a kde ich spracovať?
  • Na čo slúži externý pripojovací modul? Kedy a ako ho použiť?
  • Kedy sa modul relácie používa?
  • Aké sú bežné moduly? Aké sú jeho vlastnosti a prevádzkové pravidlá? Prečo používať vlastnosť „Opätovné použitie návratových hodnôt“?
  • Kedy sa používa modul formulára a aké udalosti sa v ňom dajú spracovať?
  • Na čo slúži objektový modul? Z akých sekcií pozostáva? Ako môžem vidieť dostupné udalosti modulu?
  • Aké sú jemnosti práce s modulmi manažéra hodnôt (pre konštanty) a modulmi množín záznamov (pre registre)?
  • Aké sú rozdiely medzi modulom objektu a modulom manažéra? Kedy by ste mali použiť ten druhý?

Použiteľnosť

Článok pojednáva o platforme 1C:Enterprise 8.3.4.496. Materiál je relevantný aj pre aktuálne verzie platforiem.

Moduly v "1C:Enterprise 8.3"

Moduly sú tie objekty, ktoré obsahujú programový kód.

Platforma obsahuje pomerne veľké množstvo typov modulov, z ktorých každý má svoj vlastný účel a vlastnosti.

Každý riadok kódu musí byť v nejakom module. Existujú moduly na všeobecné použitie a moduly objektov. Niektoré moduly je možné skompilovať na Klientovi aj Serveri a niektoré iba na Serveri.

Modul môže pozostávať z niekoľkých sekcií. Časť s popisom premenných popisuje lokálne premenné tohto modulu, ktoré je možné následne použiť v ľubovoľnej procedúre.

V rámci každej procedúry máte prístup k premennej modulu. Okrem toho v rámci samotnej procedúry môže existovať ďalšia deklarácia premennej s rovnakým názvom. Toto bude lokálna premenná tohto postupu.

Napriek rovnakému názvu ide o dve rôzne premenné: jedna sa používa vo vnútri konkrétneho postupu a druhá sa používa mimo neho.

V niektorých moduloch môžu premenné označovať umiestnenie kompilácie (dostupnosť) na Serveri alebo na Klientovi. Napríklad:

Po časti popisujúcej premenné nasleduje časť procedúr a funkcií, kde sú uvedené lokálne metódy tohto modulu. Niektoré moduly musia špecifikovať, kde bude procedúra alebo funkcia kompilovaná.

Smernicu o zostavovaní možno v zásade vynechať. V tomto prípade je predvolená direktíva kompilácie Server. Pre uľahčenie analýzy programového kódu sa však odporúča explicitne uviesť, kde bude daná procedúra kompilovaná. Na poradí, v akom sú postupy opísané, nezáleží.

Na konci modulu, po popísaní všetkých procedúr a funkcií, je sekcia hlavného programu, ktorá môže obsahovať niektoré operátory a inicializovať lokálne premenné formulárového modulu. Táto sekcia sa vykoná pri prístupe k modulu.

Takže napríklad pri otvorení formulára prvku sa najskôr spustí hlavná programová sekcia modulu formulára.

Je potrebné poznamenať, že sekcia deklarácie premenných a sekcia hlavného programu neexistujú pre všetky moduly (t. j. tieto sekcie nie sú v niektorých moduloch platné). Časť na popis procedúr a funkcií môže existovať v absolútne akomkoľvek module.

Aplikačný modul

Tento modul je určený na spracovanie udalostí pri spustení a ukončení aplikácie. Napríklad, keď spustíte aplikáciu, môžete si stiahnuť kurzy mien z internetu. Pri ukončovaní aplikácie môžete s používateľom potvrdiť, že má v úmysle ukončiť aplikáciu.

V aplikačnom module sú tiež špeciálne obslužné programy, ktoré vám umožňujú zachytiť vonkajšie udalosti zo zariadenia.

Môžu to byť udalosti z čítačky magnetických kariet alebo fiškálneho registrátora. A tieto udalosti sa dajú aj nejakým spôsobom spracovať.

Upozorňujeme, že aplikačný modul monitoruje interaktívne spustenie systému.

Aplikačný modul nebude fungovať, ak sa program 1C spustí napríklad v režime pripojenia com. V tomto prípade sa okno programu nevytvorí.

Je potrebné poznamenať, že v Platforme 8.3 existujú dva rôzne aplikačné moduly: modul riadenej aplikácie a modul bežnej aplikácie. Udalosti modulu riadenej aplikácie sa spracúvajú pri spustení tenkého a hrubého klienta riadenej aplikácie a webového klienta.

modul Pravidelná aplikácia funguje pri spustení hrubého klienta v režime Pravidelná aplikácia, ktorý obsahuje obvyklé príkazové rozhranie vo formulári Hlavné menu.

Ak je aplikácia spustená Organizovaný a v režime Pravidelná aplikácia, potom je potrebné popísať postupy obsluhy ako pri module Spravovaná aplikácia a pre modul Pravidelná aplikácia.

modul Spravovaná aplikácia možno vybrať z kontextovej ponuky koreňového konfiguračného uzla.

Tento modul je možné otvoriť aj z palety vlastností koreňového konfiguračného prvku.

Na otvorenie modulu Pravidelná aplikácia, mali by ste si pozrieť konfiguračné nastavenia (príkaz možnosti v ponuke servis).

Otvorí sa formulár možnosti. Na záložke Sú bežné musí byť špecifikovaný režim úpravy konfigurácie Spravovaná aplikácia A Pravidelná aplikácia.

V tomto prípade modul Pravidelná aplikácia bude tiež možné otvoriť z vlastností koreňového uzla.

Zoznam udalostí, pre ktoré je možné spracovať Organizovaný A Pravidelná aplikácia je rovnaký.

Tento modul môže obsahovať časť deklarácie premenných, časť popisu ľubovoľných procedúr a funkcií a časť hlavného programu. Ale okrem ľubovoľných procedúr a funkcií môžu byť v module umiestnené špeciálne obslužné programy.

Zoznam dostupných obslužných programov je možné zobraziť volaním zoznamu procedúr a funkcií aktuálneho modulu, keď je modul otvorený.

Okno Procedúry a funkcie, ktoré sa otvorí, zobrazuje všetky procedúry a funkcie tohto modulu, ako aj udalosti, pre ktoré ešte neboli vytvorené handlery.

So spustením systému sú spojené dve udalosti („pred“ a „pri“). Dve udalosti spojené s vypnutím systému („pred“ a „pri“). A tiež spracovanie externých udalostí (napríklad udalosti obchodného vybavenia).

Keď sa vykoná obsluha udalosti pred udalosťou, akcia sa považuje za ešte neprebehnúcu. Keď sa vykoná obsluha udalosti „at“, akcia už bola dokončená.

Udalosť Pred spustením systému nastane pri spustení Enterprise 8.3, ale samotná aplikácia sa ešte nezobrazila na obrazovke. Táto udalosť má nasledujúci parameter: Odmietnutie.

Ak tento parameter nadobúda hodnotu Pravda, potom sa aplikácia nespustí. Udalosť Pri spustení systému predpokladá, že akcia už bola dokončená, okno už bolo vytvorené a v tomto prípade môžeme napríklad zobraziť nejaký špeciálny formulár. Spustenie už nie je možné odmietnuť.

Podobne pred vypnutím systému je aplikácia stále otvorená a jej ukončenie môžete odmietnuť. Keď sa systém vypne, okno aplikácie sa už zatvorilo. Je možné vykonať iba ďalšie akcie, napríklad odstrániť niektoré súbory alebo odoslať e-mail.

V module Spravovaná aplikácia Pokyny na zostavovanie procedúr a funkcií nie sú špecifikované, pretože modul je kompletne zostavený na strane klienta. To znamená, že v postupoch a funkciách modulu nebudeme mať priamy prístup napríklad k referenčným knihám.

Ak z modulu Spravovaná aplikácia potrebujete vykonať volanie servera, potom na to budete musieť vytvoriť špeciálny s vlajkou .

V module Pravidelná aplikácia Neexistujú žiadne takéto obmedzenia, pretože tento modul sa skompiluje pri načítaní hrubého klienta. V hrubom klientovi sú dostupné takmer všetky typy údajov.

Procedúry, funkcie a premenné aplikačného modulu možno opísať ako exporty.

Keďže modul je zostavený výhradne na klientovi, znamená to, že v klientskych procedúrach máme prístup k tejto metóde a tejto vlastnosti.

Môžete napríklad zavolať procedúru alebo funkciu aplikačného modulu z formulárového modulu objektu. Na popis všeobecných algoritmov sa však odporúča použiť spoločné moduly. Hlavným účelom aplikačného modulu je spracovať počiatočný a koncový bod.

Analogicky s aplikačným modulom je tento modul určený na spracovanie udalosti otvorenia programu a udalosti vypnutia.

Na rozdiel od aplikačného modulu, ktorý sa spúšťa v momente interaktívneho spustenia aplikácie, modul externého pripojenia pracuje v režime pripojenia COM, t.j. keď sa vytvorí objekt 1C:Enterprise 8 a pripojí sa ku konkrétnej databáze.

Tento modul obsahuje udalosti: Pri spustení systému A Po vypnutí systému.

Modul externého pripojenia je možné otvoriť buď pomocou kontextového menu na úrovni koreňového konfiguračného objektu, alebo pomocou palety vlastností pre koreňový uzol.

Samotný proces externého prepojenia je procesom programovej práce s informačnou bázou, a nie interaktívnym. Preto v tejto chvíli nemôžete používať dialógové formuláre ani zobrazovať varovné správy, pretože neexistuje žiadne používateľské rozhranie.

V module External Connection Module je možné popísať exportné premenné a spôsoby exportu, ktoré budú dostupné na strane, kde dôjde k externému volaniu do 1C:Enterprise 8.3.

Keďže vo vonkajšom spojení nie je žiadne používateľské rozhranie, modul vonkajšieho spojenia je zostavený výlučne na serveri.

Modul relácie

Tento modul je potrebný na inicializáciu parametrov relácie. Parametre relácie sú rýchle globálne premenné, ktorých hodnoty sú dostupné kdekoľvek v konfigurácii.

Modul relácie môžete otvoriť buď prostredníctvom kontextového menu alebo prostredníctvom palety vlastností koreňového uzla.

Modul relácie poskytuje udalosť Nastavenie parametrov relácie.

Keď sa aplikácia spustí, táto procedúra sa vyvolá ako prvá. Parametre relácie sú potrebné pre akúkoľvek operáciu aplikácie: pri interaktívnom spustení aj pri spustení v režime externého pripojenia.

Modul relácie popisuje rôzne akcie na inicializáciu parametrov relácie v závislosti od rôznych podmienok.

Tento modul spravidla popisuje niekoľko procedúr, ktoré sa volajú z procedúry Nastavenie parametrov relácie. Preto sú všetky tieto postupy oddelené do samostatného modulu.

Modul relácie vždy beží v privilegovanom režime. To znamená, že pri prístupe do databázy nebude vykonaná žiadna kontrola oprávnení. Modul relácie je zostavený na Serveri, t.j. Je možné pristupovať k akýmkoľvek metódam servera (vrátane čítania hodnôt z databázy).

V Session Module je možné definovať len procedúry a funkcie, t.j. neexistuje sekcia s popisom premenných a žiadna hlavná programová sekcia. V module relácie nemôžete definovať metódy exportu.

Ak je pri štarte systému potrebné vykonať nejaké akcie na Serveri, napríklad vytvoriť prvok adresára, potom je možné použiť modul relácie, pretože je kompilovaný na Serveri a je vždy spoľahlivo spustený pri štarte systému. Je však potrebné vziať do úvahy nasledujúce body:

  • postup Nastavenie parametrov relácie sa vykonáva nielen pri štarte systému, ale aj pri prístupe k neinicializovaným parametrom relácie. Tie. handler SetSessionParameters možno volať opakovane počas prevádzky aplikácie;
  • ak je počet prvkov v poli parametrov relácie nula (pole požadovaných parametrov má dátový typ Nedefinované), ide o moment spustenia aplikácie;
  • keďže modul relácie pracuje v privilegovanom režime a nebude prebiehať kontrola prístupových práv, mali by ste s databázovými objektmi pracovať veľmi opatrne, pretože používateľ môže získať prístup k údajom, ktoré by mu nemali byť poskytnuté;
  • Po spustení systému ešte nie je isté, či bude aplikácia spustená. V tomto prípade môžu byť vykonané zbytočné akcie v obslužnom programe udalosti SetSessionParameters.

Tieto moduly predstavujú popis niektorých všeobecných algoritmov, t.j. procedúry a funkcie, ktoré možno volať z rôznych miest.

Logicky súvisiace metódy možno zoskupiť do rôznych spoločných modulov. Tieto moduly sa vytvárajú vo vetve Všeobecné.

Môžete pridať ľubovoľný počet bežných modulov. Aby boli metódy Common Module dostupné inde v konfigurácii, musia byť definované pomocou kľúčového slova Export. Klientske procedúry spoločných modulov budú dostupné na Klientovi a serverové – na Serveri.

Vo všeobecných moduloch je dostupná iba časť popisujúca postupy a funkcie. Tie. vo Všeobecnom module nemôžete popísať premenné a nemôžete popísať časť hlavného programu.

Ak je potrebná globálna premenná, môžete použiť parametre relácie alebo exportné premenné aplikačného modulu.

Pre všeobecné moduly môžete nastaviť niektoré parametre, ktoré ovplyvnia správanie tohto modulu. Ak je vlastnosť Global nastavená pre modul General, potom budú metódy exportu deklarované v tomto module prístupné zvonku priamo, bez akýchkoľvek ďalších pokynov.

Tie. na Všeobecný modul sa bude podieľať na formovaní kontextu globálnej konfigurácie.

Nehnuteľnosť globálne pre všeobecné moduly to môže byť užitočné. Nemali by ste ho však používať všade pre všetky bežné moduly.

Tie , ktoré sú označené značkou globálne, bude skompilovaný pri štarte systému. Čím viac takýchto modulov, tým pomalšie sa program spustí.

Ak vlajka globálne Pre Všeobecný modul nie je zadané, potom sa kompilácia tohto modulu vykoná v čase prvého zavolania naň (t.j. po spustení systému).

Okrem toho používanie globálnych spoločných modulov ovplyvňuje pochopenie kódu. Metódy neglobálneho spoločného modulu sa volajú cez názov Všeobecný modul a názov metódy, napríklad:
Modul na výpočet nákladov.DistributeIndirectCosts();

V tomto prípade musia názvy spoločných modulov odrážať obsah postupov v nich opísaných. Zadanie názvu spoločného modulu pri volaní procedúry pomáha lepšie porozumieť kódu.

Pre Všeobecný modul V Paleta vlastností môžete nastaviť vlastnosť Privilegovaný.

Privilegovaný modul neriadi prístupové práva. Toto je potrebné, ak Všeobecný modul Vyžaduje sa hromadné spracovanie údajov, získavanie údajov z databázy.

Riadenie prístupových práv zvyšuje čas potrebný na prístup k databáze a hromadné algoritmy často musia pracovať čo najrýchlejšie.

Napríklad mzdová agenda je operácia náročná na zdroje. Treba to urobiť čo najrýchlejšie. Na tento účel sú privilegované algoritmy, ktoré počítajú mzdy .

Zároveň sú mimo nich všetky postupy, ktoré zabezpečujú kompletizáciu mzdových podkladov Spoločné moduly. Práve v týchto procedúrach sa vykonáva kontrola prístupových práv.

Týmto spôsobom je možné dosiahnuť výrazné zlepšenie výkonu. To platí najmä pri použití mechanizmu na riadenie prístupu k záznamom tabuľky riadok po riadku.

Ak je spoločný modul privilegovaný, procedúry tohto modulu možno zostaviť iba na serveri.

Existujú situácie, keď by niektorý objekt mal byť pre používateľa neprístupný, napríklad určitý adresár. Ale pri vykonávaní akéhokoľvek dokumentu je potrebný odkaz na túto referenčnú knihu.

Tie. Je potrebné dočasne rozšíriť používateľské práva a následne ich vrátiť do pôvodného stavu. Tento efekt možno dosiahnuť použitím privilegovaných Spoločné moduly.

K tomu v privilegovanej Všeobecný modul mali by ste vytvoriť procedúru, ktorá sprístupní požadované údaje.

Tento postup bude vyvolaný z príslušného dokumentu. Tie. používateľovi sú v čase volania tejto procedúry skutočne udelené rozšírené práva.

Pre Spoločné moduly Je možné určiť umiestnenie kompilácie. Príznaky sa používajú na určenie, či bude spoločný modul dostupný na klientovi (spravovaná aplikácia), na serveri alebo v režime externého pripojenia.

Okrem toho, ak prepnete režim úpravy konfigurácie na Spravovanú aplikáciu a bežnú aplikáciu, bude možný ďalší kontext kompilácie – Klient (bežná aplikácia).

Existujú teda štyri možnosti fungovania programu. V závislosti od spustenej aplikácie, v závislosti od práce na klientovi alebo na serveri budú niektoré spoločné moduly dostupné alebo nedostupné.

Okrem možnosti špecifikovať príznaky kompilácie je možné špecifikovať direktívy kompilácie pre procedúry a funkcie umiestnené v Common Module.

Ak je pre metódu špecifikovaná kompilačná direktíva, potom aj keď je spoločný modul dostupný vo všetkých špecifikovaných kontextoch, dostupnosť špecifickej metódy bude obmedzená kompilačná direktíva.

V tomto prípade nie je možné pristupovať k procedúre v kontexte, ktorý nie je prístupný celému modulu.

Ak nešpecifikujete kompilačný príkaz pre procedúru (funkciu), bude skompilovaná vo všetkých kontextoch definovaných pre modul.

Tie. V podstate sa vyhotoví viacero kópií postupu. Výber konkrétnej kompilovanej inštancie závisí od toho, kde sa procedúra volá (podľa pravidla najbližšieho volania). Malo by sa vziať do úvahy, že kód takéhoto postupu musí byť napísaný s ohľadom na jeho dostupnosť vo všetkých kontextoch definovaných pre modul.

Generické moduly, ktoré sú súčasne prístupné v niekoľkých rôznych kontextoch, sú primárne určené na vytváranie procedúr, ktoré sú prístupné vo viacerých kontextoch.

Pri vytváraní spoločného modulu sa považuje za osvedčený postup nešpecifikovať pokyny na kompiláciu. Tie. Dostupnosť procedúr a funkcií by mala byť určená vlastnosťami samotného modulu.

S týmto prístupom budú klientske procedúry umiestnené v samostatných spoločných moduloch a serverové procedúry budú umiestnené v samostatných spoločných moduloch.

Moduly, ktoré majú nastavených niekoľko príznakov kompilácie, sa v praxi používajú veľmi zriedka. Toto sú niektoré bežné akcie dostupné na klientovi aj na serveri. Zvyčajne ide o jednoduché výpočty.

Dôležité! Klient má prístup k metódam exportného servera spoločného modulu, ale iba ak je tento spoločný modul skompilovaný iba na serveri. V tomto prípade je poskytnutý špeciálny príznak na poskytnutie prístupu od Klienta .

Pre neglobálne Common moduly je možné ukladať hodnoty vrátené funkciami. Tie. Po prvom volaní funkcie si systém dokáže zapamätať výsledok jej vykonania. Ak sa táto funkcia zavolá znova s ​​rovnakými parametrami, systém vráti hodnotu z vyrovnávacej pamäte.

Účelom tohto mechanizmu je urýchliť opakované hovory. Ak chcete nakonfigurovať toto správanie, musíte Paleta vlastností modul, nastavte príslušnú hodnotu pre vlastnosť Opätovné použitie návratových hodnôt.

Predvolene je táto vlastnosť nastavená na Nepoužívať. Ďalšie možné hodnoty: cache Počas hovoru, alebo Počas trvania relácie.

Túto vlastnosť má zmysel používať len pre tie funkcie, ktorých výsledky závisia výlučne od vstupných parametrov. Tento mechanizmus je dostupný len pre neglobálne spoločné moduly.

Ak je zvolená hodnota zodpovedajúceho parametra Po dobu trvania hovoru, cache bude fungovať dovtedy, kým bude spustená procedúra, z ktorej bola volaná metóda General Module. Ak je vybratá hodnota Po dobu trvania relácie, potom sa podmienečne predpokladá, že vyrovnávacia pamäť bude fungovať, kým používateľ pracuje.

Existujú však určité časové obmedzenia. Vyrovnávacia pamäť sa automaticky vymaže 20 minút po vstupe hodnoty do vyrovnávacej pamäte.

Modul formulára

Tento modul je určený na spracovanie užívateľských akcií. Napríklad opíšte algoritmus toho, ako program reaguje na stlačenie tlačidla. Alebo napríklad v momente zadávania hodnoty do poľa ihneď skontrolujte správnosť.

Okrem udalostí spojených s ovládacími prvkami formulára (tlačidlá, vstupné polia) existujú udalosti spojené priamo so samotným formulárom.

Môžete napríklad spracovať udalosť otvorenia formulára a vykonať počiatočnú inicializáciu. Môžete tiež spracovať udalosť uzavretia formulára a skontrolovať, či používateľ zadal všetko správne.

Existujú riadené formuláre a pravidelné formuláre. Moduly týchto formulárov sa líšia predovšetkým tým, že modul riadeného formulára je prehľadne rozdelený do kontextu. Každá procedúra (funkcia) musí mať smernicu pre zostavenie. V bežnej forme sa všetok kód používa na Klientovi.

V module riadeného formulára môžete deklarovať procedúry a funkcie, môžete deklarovať premenné a môžete opísať časť hlavného programu.

Programový kód hlavného programu sa vykoná v čase inicializácie formulára, t.j. keď ho používateľ začne otvárať. Obrázok zobrazuje zoznam štandardných udalostí pre spravovaný formulár.

Zoznam udalostí spravovaného formulára je viditeľný aj v zozname vlastností priamo pre samotný formulár. Tento zoznam sa volá v editore spravovaných formulárov.

V spravovanom formulári môžete spracovať udalosť zápisu položky. Táto udalosť je prítomná len pre objektové formuláre (adresáre, dokumenty a niektoré ďalšie). Ak formulár nie je viazaný na konkrétny objekt, nedochádza k udalosti zápisu.

Pre modul bežného formulára je zoznam štandardných udalostí o niečo menší, pretože v riadenej forme sa vykoná spárovanie mnohých udalostí (jedna sa vykoná na klientovi a druhá na serveri). Vo svojej normálnej forme sa všetok kód spustí na Klientovi.

Objektový modul

Tieto moduly sú typické pre adresáre, doklady, plány pre typy výpočtov, účtové osnovy a mnohé ďalšie objekty. Objektový modul je určený na spracovanie štandardných udalostí. Napríklad udalosť na zadanie prvku adresára, udalosť na zapísanie prvku, vymazanie, zaúčtovanie dokumentu atď.

Udalosť zápisu v zásade existuje aj vo formulárovom module. Udalosť zápisu v module formulára sa však vyskytuje počas procesu interaktívneho nahrávania pri práci s konkrétnym formulárom.

Udalosť zápisu v objektovom module sa vykoná pri akomkoľvek zápise z akejkoľvek formy daného objektu. Okrem toho, ak je objekt napísaný programovo, spustí sa udalosť modulu objektu.

V prípade zápisu objektového modulu môžete zabudovať všetky kontroly správnosti zapisovaných údajov, pretože tento postup sa vykoná v čase absolútne akéhokoľvek záznamu.

Modul tohto objektu je možné vyvolať cez kontextové menu, z palety Vlastnosti objektu az okna úpravy objektu.

Obrázok nižšie zobrazuje zoznam dostupných udalostí adresárového modulu.

V Object Module môžete umiestniť sekciu pre popis premenných, popisujúcich ľubovoľné funkcie, ktoré nemusia byť spojené s udalosťou, ako aj sekciu hlavného programu.

V hlavnej programovej časti môžete napríklad inicializovať lokálne premenné daného modulu. Tento programový kód sa spustí, keď sa pristúpi k tomuto objektovému modulu.

Je potrebné poznamenať, že všetky procedúry Object Module sú skompilované na Serveri. V súlade s tým nie sú potrebné kompilačné smernice pre procedúry a funkcie Object Module. Niektoré konfiguračné objekty nemajú moduly objektov.

Je to spôsobené vlastnosťami samotných objektov. Medzi takéto predmety patrí Konštanty A Registre. Pre Neustále neexistuje objektový modul, ale existuje veľmi podobný modul tzv Modul Správca hodnôt.

IN Modul Správca hodnôt môžete zvládnuť písanie udalostí Konštanty a spracovanie overenia vyplnenia.

Celý kontext modulu sa spúšťa na Serveri.

Pre registre existuje modul Recordset Module.

Tento modul má tiež schopnosť spracovávať udalosti zápisu a vykonávať kontroly obsadenosti.

V Object Modules, Value Manager Modules (pre konštanty) a Recordset Modules (pre registre) môžete popísať metódy, ktoré možno exportovať a tieto metódy budú prístupné zvonku.

Tie. Okrem použitia pevných metód triedy objektov môžete vytvoriť ďalšie metódy pre objekt v objektovom module. Tento modul by mal popisovať zodpovedajúci postup s kľúčovým slovom Export.

Potom bude možné pristupovať k tomuto postupu zvonku. Okrem toho sa táto metóda zobrazí v kontextovom popise. Nové metódy v kontextovom popise sú zvýraznené modrým písmom (modrá ikona p() pre postupy a f() pre funkcie).

Podobne môžete vytvoriť novú vlastnosť deklarovaním premennej pomocou kľúčového slova Export. Táto nehnuteľnosť je prístupná aj zvonku.

Týmto spôsobom je možné rozširovať funkcionalitu objektov (definovať nové metódy a nové vlastnosti). Vlastnosti sú však dynamické a neukladajú sa do databázy.

Ak potrebujete použiť vlastnosť pre objekt, ktorý bude uložený v databáze, mali by ste vytvoriť atribút objektu.

Manažérsky modul

Tento modul existuje pre mnoho objektov (adresáre, dokumenty, registre atď.). Modul sa otvára buď cez kontextové menu pre objekt alebo cez Paleta vlastností alebo cez okno úprav.

V module manažéra môžete prepísať niektoré štandardné udalosti, napr ProcessingReceivingSelectionData, keď je prvok vybraný z adresára, je možné vykonať nejaké dodatočné filtrovanie alebo kontrolu.

Okrem toho môžete v module manažéra vytvoriť ďalšie metódy a označiť, že ide o metódy exportu. V tomto prípade je možný prístup k týmto metódam zvonku.

Na uskutočnenie tohto volania je potrebné získať dátový typ DirectoryManager.

Rozdiel medzi metódami exportu modulu manažéra a modulu objektov je v tom, že na prístup k metóde modulu objektov musíte najprv získať samotný objekt (to znamená nejakým spôsobom získať odkaz a potom tento odkaz previesť na objekt) .

Potom budú dostupné exportné premenné a metódy objektového modulu. Pre modul manažéra je volanie jednoduchšie, napríklad:
Adresáre.Protistrany.Názov metódy

Ide o dve rôzne odvolania. Konvertovať z referencie na objekt (metóda GetObject) je pre systém pomerne vážna akcia, pretože pri prijatí objektu sa načítajú úplne všetky údaje tohto objektu, čo môže byť dosť zdĺhavé.

Druhý rozdiel je v tom Objektový modul nazývané v kontexte konkrétneho prvku. Podľa toho môžeme predpokladať, že je pre daný prvok použiteľný (vo väčšine prípadov je to práve použitá logika).

Pokiaľ ide o modul manažéra, popisuje niektoré bežné akcie pre skupinu alebo pre všetky prvky adresára alebo nejakého dokumentu. Napríklad, ak potrebujete vytlačiť položku adresára, môžete použiť Object Module.

Ale v Manažérskom module je možné vytvoriť univerzálnejší mechanizmus, ktorý vytlačí okrem iného aj skupinu prvkov.

Navyše, prístup k modulu objektu je stále dlhšia akcia. Preto je vhodnejšie tento problém vyriešiť v module manažéra.

Týmto končíme naše zoznámenie s modulmi v konfigurácii systému 1C:Enterprise. Ak stručne zhrnieme všetky vyššie uvedené skutočnosti, záverom sú tieto závery:

  • Súčasťou konfigurácie je softvérový modul, ktorý môže obsahovať iba text v zabudovanom jazyku 1C
  • Softvérové ​​moduly sú klasifikované podľa typov, o ktorých sme hovorili v tomto článku. Každý pohľad je určený jeho umiestnením a dostupným kontextom programu.
  • Štruktúra modulu pozostáva z niekoľkých sekcií, ktoré sú usporiadané v určitom poradí. Skladba sekcií je určená typom modulu.

Všimnite si tiež, že sme zámerne vynechali jeden typ modulu, a to príkazový modul. Nie je to nič pozoruhodné a pozývame vás, aby ste sa oboznámili s jeho funkčnosťou.

Doteraz sme celý náš programový kód posudzovali oddelene od aplikačného riešenia a spravidla sme ho napísali v nejakej malej vlastnej testovacej konfigurácii. Uvedomujete si, že „nemôžete len tak ísť“ a začať upravovať kód štandardnej konfigurácie? nie? Potom si to všetko vysvetlíme v nasledujúcom článku!

1.1. Spoločné moduly sú vytvorené na implementáciu procedúr a funkcií zjednotených podľa nejakej charakteristiky. Spravidla sú postupy a funkcie jedného konfiguračného subsystému (predaj, nákup) alebo postupy a funkcie podobnej funkcionality (práca s reťazcami, všeobecný účel) umiestnené v jednom spoločnom module.

1.2. Pri vývoji zdieľaných modulov by ste si mali vybrať jeden zo štyroch kontextov vykonávania kódu:

Bežný typ modulu Príklad mena Volanie servera Server Vonkajšie spojenie Zákazník
(bežná aplikácia)
Zákazník
(spravovaná aplikácia)
1. ServerGeneral Purpose (alebo General Purpose Server)
2. Server na volanie od klientaGeneralPurposeCallServer
3. ZákazníkVšeobecný klient (alebo všeobecný globálny)
4. Klientsky serverGeneral PurposeClientServer

2.1. Spoločné moduly servera sú určené na hosťovanie serverových procedúr a funkcií, ktoré nie sú dostupné na použitie z klientskeho kódu. Implementujú celú internú serverovú obchodnú logiku aplikácie.
Pre správnu činnosť konfigurácie v externom pripojení, riadených a bežných aplikačných režimoch by serverové procedúry a funkcie mali byť umiestnené v spoločných moduloch s nasledujúcimi charakteristikami:

  • Server(zaškrtávacie políčko Volanie servera reset),
  • Klient (bežná aplikácia),
  • Vonkajšie spojenie.

V tomto prípade je zaručená možnosť volať serverové procedúry a funkcie s parametrami meniteľných typov (napr. DirectoryObject, DocumentObject a tak ďalej.). Spravidla je toto:

  • handlery pre odbery udalostí dokumentov, adresárov atď., ktoré ako parameter preberajú meniteľnú hodnotu (objekt).
  • serverové procedúry a funkcie, ktorým sa odovzdáva objekt ako parameter z modulov adresárov, dokumentov atď., ako aj z modulov s odbermi udalostí.

Zdieľané moduly na strane servera sú pomenované podľa všeobecných pravidiel pre pomenovanie objektov metadát.
Napríklad: Práca so súbormi, Všeobecný účel

V niektorých prípadoch je možné pridať postfix, aby sa zabránilo konfliktom mien s vlastnosťami globálneho kontextu "server".
Napríklad: RoutineTasksServer, Data ExchangeServer.

2.2. Spoločné moduly servera pre volanie z klienta obsahujú serverové procedúry a funkcie, ktoré možno použiť z klientskeho kódu. Predstavujú klientske programovacie rozhranie aplikačného servera.
Takéto postupy a funkcie sú umiestnené v spoločných moduloch s nasledujúcimi vlastnosťami:

  • Server(zaškrtávacie políčko Volanie servera nainštalovaný)

Spoločné moduly na strane servera na volanie z klienta sú pomenované podľa všeobecných pravidiel pre pomenovanie objektov metaúdajov a musia byť pomenované pomocou postfixu "CallServer".
Napríklad: Práca so serverom FilesCalling

Upozorňujeme, že exportné procedúry a funkcie v takýchto zdieľaných moduloch nesmú obsahovať parametre meniteľných typov ( DirectoryObject, DocumentObject atď.), keďže ich prenos z (alebo do) klientskeho kódu nie je možný.

Pozri tiež:Obmedzenie nastavenia príznaku „Server Call“ pre bežné moduly

2.3. Spoločné moduly klienta obsahujú obchodnú logiku klienta (funkčnosť definovanú len pre klienta) a majú nasledujúce vlastnosti:

  • Klient (spravovaná aplikácia))
  • Klient (bežná aplikácia)

Výnimkou je situácia, keď klientske procedúry a funkcie musia byť dostupné len v režime riadenej aplikácie (iba v režime bežnej aplikácie alebo iba v režime externého pripojenia). V takýchto prípadoch je prijateľná iná kombinácia týchto dvoch charakteristík.

Spoločné moduly klienta sú pomenované s príponou "Zákazník".
Napríklad: Práca s FilesClient, General PurposeClient

Pozri tiež: minimalizácia kódu spusteného na klientovi

2.4. V niektorých prípadoch je dovolené vytvárať spoločné moduly klient-server s procedúrami a funkciami, ktorých obsah je rovnaký na serveri aj na klientovi. Takéto postupy a funkcie sú umiestnené v spoločných moduloch s nasledujúcimi charakteristikami:

  • Klient (spravovaná aplikácia)
  • Server(zaškrtávacie políčko Volanie servera reset)
  • Klient (bežná aplikácia)
  • Vonkajšie spojenie

Bežné moduly tohto typu sú pomenované s príponou "Klientsky server".
Napríklad: Práca s FilesClient, General PurposeClientServer

Vo všeobecnosti sa neodporúča definovať spoločné moduly pre server aj klienta (spravovanú aplikáciu). Odporúča sa implementovať funkcionalitu definovanú pre klienta a pre server v rôznych spoločných moduloch - pozri odseky. 2.1 a 2.3. Toto explicitné oddelenie obchodnej logiky klienta a servera je diktované úvahami o zvýšení modularity aplikačného riešenia, zjednodušením kontroly vývojára nad interakciou klient-server a znížením rizika chýb v dôsledku zásadných rozdielov v požiadavkách na vývoj klienta a servera. kódu (potreba minimalizácie kódu vykonávaného na klientovi, rozdielna dostupnosť objektov a typov platforiem a pod.). V tomto prípade musíte mať na pamäti nevyhnutné zvýšenie počtu bežných modulov v konfigurácii.

Špeciálnym prípadom zmiešaných modulov klient-server sú formulárové a príkazové moduly, ktoré sú špeciálne navrhnuté na implementáciu serverovej a klientskej obchodnej logiky v jednom module.

3.1. Odporúča sa, aby názvy spoločných modulov dodržiavali všeobecné pravidlá pre pomenovanie objektov metadát. Názov všeobecného modulu sa musí zhodovať s názvom podsystému alebo samostatného mechanizmu, ktorého procedúry a funkcie implementuje. V názvoch bežných modulov sa odporúča vyhnúť sa všeobecným slovám ako „Procedúry“, „Funkcie“, „Ovládače“, „Modul“, „Funkčnosť“ atď. a používať ich len vo výnimočných prípadoch, keď plnšie odhaľujú účel modulu.

Aby bolo možné rozlíšiť medzi spoločnými modulmi jedného podsystému, ktoré sú vytvorené na implementáciu procedúr a funkcií vykonávaných v rôznych kontextoch, odporúča sa dať im postfixy opísané vyššie v odsekoch. 2,1-2,4.

Čo sú moduly a na čo presne sú určené? Modul obsahuje kód programu. Okrem toho stojí za zmienku, že na rozdiel od platformy 7.7, kde by sa kód mohol nachádzať vo vlastnostiach prvkov formulára a v bunkách tabuliek rozloženia, v platforme 8.x musí byť akýkoľvek riadok kódu umiestnený v niektorom module. . Typicky sa modul skladá z troch sekcií – sekcie pre popis premenných, sekcie pre popis procedúr a funkcií a sekcie pre hlavný program. Táto štruktúra je typická pre takmer všetky moduly platformy, s niektorými výnimkami. Niektoré moduly nemajú sekciu s popisom premenných alebo sekciu hlavného programu. Napríklad modul relácie a akýkoľvek všeobecný modul.

Kontext vykonávania modulov je vo všeobecnosti rozdelený na klienta a servera. Okrem toho je možné niektoré moduly skompilovať na strane klienta aj na strane servera. A niektoré sú výlučne na strane servera alebo klienta. Takže:

Aplikačný modul

Modul je navrhnutý tak, aby zachytával momenty spustenia aplikácie (načítanie konfigurácie) a ukončenia jej činnosti. A overovacie postupy môžu byť umiestnené v zodpovedajúcich udalostiach. Napríklad pri spustení aplikácie aktualizujte niektoré referenčné konfiguračné údaje a pri dokončovaní práce sa opýtajte, či sa vôbec oplatí nechať ju, možno sa pracovný deň ešte neskončil. Okrem toho zachytáva udalosti z externých zariadení, napríklad obchodné alebo fiškálne. Stojí za zmienku, že aplikačný modul zachytáva opísané udalosti iba pri interaktívnom spustení. Tie. keď sa vytvorí samotné okno programu. Toto sa nestane, ak je aplikácia spustená v režime pripojenia com.

V platforme 8.2 sú dva rôzne aplikačné moduly. Ide o modul Bežná aplikácia a modul Spravovaná aplikácia. Spúšťajú sa pri spustení rôznych klientov. Takto sa spúšťa modul riadenej aplikácie pri spustení webového klienta, tenkého klienta a hrubého klienta v režime riadenej aplikácie. A bežný aplikačný modul sa spustí pri spustení hrubého klienta v normálnom aplikačnom režime.

Aplikačný modul môže obsahovať všetky časti - popisy premenných, procedúr a funkcií, ako aj popisy hlavného programu. Aplikačný modul je zostavený na strane klienta, takže nás to značne obmedzuje v dostupnosti mnohých typov dát. Kontext aplikačného modulu môžete rozšíriť pomocou metód bežných modulov, ktoré majú nastavenú vlastnosť „Server Call“. Všetky premenné a metódy, ktoré sú označené ako export, budú dostupné v akomkoľvek konfiguračnom module spustenom na strane klienta. Avšak, akokoľvek to môže byť lákavé, nemali by ste tu uverejňovať veľké množstvo metód. Čím viac kódu obsahuje, tým dlhší je čas kompilácie, a teda aj spúšťania aplikácie, čo je pre používateľov veľmi nepríjemné.

Ako je uvedené vyššie, aplikačný modul spracováva udalosti spustenia a ukončenia aplikácie. Na spracovanie každej z týchto udalostí v aplikačnom module existuje dvojica obslužných programov Pred... a Kedy... Rozdiely medzi nimi sú také, že pri vykonávaní kódu v obslužnom programe Pred... sa akcia ešte neuskutočnila. sa uskutočnilo a môžeme ho odmietnuť vykonať. Na to slúži možnosť Odmietnuť. V obslužných nástrojoch On.. akcia už prebehla a nemôžeme odmietnuť spustenie aplikácie ani ju ukončiť.

Externý spojovací modul

Účel modulu je podobný účelu modulu aplikácie. Spracováva počiatočné a koncové body aplikácie. Modul externého pripojenia sa spustí, keď sa aplikácia spustí v režime pripojenia com. Samotný proces vonkajšieho spojenia nie je interaktívny proces. V tomto režime dochádza k programovej práci s informačnou bázou a neotvára sa okno aplikácie, čo ukladá určité obmedzenia na používanie metód určených na interaktívnu prácu. V tomto režime nie je možné použiť volania do dialógových formulárov, varovné hlásenia atď. Jednoducho nebudú fungovať.

Rovnako ako v aplikačnom module sú tu k dispozícii časti na popis premenných, metód a časť pre hlavný program. Môžete tiež deklarovať exportné premenné a metódy. Rozdiel je v tom, že v režime pripojenia com všetka práca s infobázou prebieha na strane servera, takže modul externého pripojenia je zostavený výlučne na serveri. Preto v ňom nie sú dostupné exportné premenné a metódy bežných klientskych modulov.

Modul relácie

Toto je vysoko špecializovaný modul a je určený výhradne na inicializáciu parametrov relácie. Prečo ste na to potrebovali vytvoriť vlastný modul? Dôvodom je skutočnosť, že inicializačný proces môže vyžadovať spustenie nejakého kódu a navyše môže byť aplikácia spustená pod rôznymi klientmi (čo vedie k spusteniu rôznych aplikačných modulov alebo externého pripájacieho modulu) a inicializácia parametre relácie musia byť vykonané v akomkoľvek režime spustenia. Preto bol potrebný ďalší modul, ktorý beží v akomkoľvek režime spúšťania aplikácie.

V module relácie existuje jediná udalosť „SettingSessionParameters“, ktorá sa vykoná úplne prvá, ešte pred udalosťou aplikačného modulu BeforeSystemStartOperation. Nie je v ňom dostupná časť deklarácie premenných a hlavná programová časť. Nemôžete tiež deklarovať metódy exportu. Modul je zostavený na strane servera.

Nemalo by vás lákať, že tento modul sa spúšťa pri každom spustení aplikácie a nemali by ste doň umiestňovať kód, ktorý priamo nesúvisí s inicializáciou parametrov relácie. Je to spôsobené tým, že obslužný program SetSessionParameters je možné volať opakovane počas prevádzky systému. Stáva sa to napríklad v prípadoch, keď pristupujeme k neinicializovaným parametrom. A hoci je možné zachytiť moment prvého spustenia tejto udalosti (RequiredParameters je typu Undefined), treba počítať s tým, že tento modul je zostavený v privilegovanom režime, t.j. nekontroluje prístupové práva. A druhým bodom je, že si stále nemôžeme byť stopercentne istí, že systém bude spustený. Zrazu dôjde k zlyhaniu v module aplikácie a pokúšame sa vykonať nejaké akcie s databázou.

Spoločné moduly

Moduly sú určené na popísanie niektorých bežných algoritmov, ktoré budú volané z iných konfiguračných modulov. Všeobecný modul neobsahuje sekciu popisu premenných a hlavnú programovú sekciu. Môžete v ňom deklarovať metódy exportu, ktorých kontext dostupnosti bude určený príznakmi kompilácie. Vzhľadom na to, že sekcia popisu premenných nie je dostupná, nie je možné definovať globálne premenné v spoločných moduloch. Na to je potrebné použiť funkcie bežných modulov s vyrovnávacou pamäťou návratových hodnôt alebo aplikačného modulu. Je potrebné mať na pamäti, že aj keď je vlastnosť opätovného použitia zdieľaného modulu nastavená na „Počas trvania relácie“, potom v tomto prípade životnosť hodnôt uložených vo vyrovnávacej pamäti nepresiahne 20 minút od okamihu posledného prístupu k ich.
Správanie sa spoločného modulu závisí od nastavených parametrov (globálne alebo nie, rôzne príznaky kompilácie, či je dostupné volanie servera atď.). V tomto článku sa nebudeme zaoberať všetkými druhmi nastavení, ako aj behaviorálnymi vlastnosťami a úskaliami, ktoré vznikajú pri neprimeranom nastavovaní príznakov vlastností. Toto je téma na samostatný článok. Zastavme sa len pri niekoľkých bodoch, ktoré by sa mali dodržiavať pri nastavovaní vlajok:

  • Dobrým pravidlom je nepoužívať globálnu vlajku všade. Tým sa skráti čas spustenia aplikácie a tiež sa zlepší čitateľnosť kódu (samozrejme, ak má spoločný modul úplne zmysluplný názov).
  • Neodporúča sa používať viac ako jeden príznak kompilácie. Nie je veľa metód, ktoré je potrebné vykonávať v rôznych kontextoch, a ak sú takéto metódy stále potrebné, možno im prideliť samostatný spoločný modul.
  • Príznak "Server Call" má zmysel iba vtedy, ak je modul skompilovaný "Na serveri". Preto by sa všetky ostatné príznaky kompilácie mali odstrániť, aby sa predišlo rôznym problémom.
  • Ak modulové metódy zahŕňajú masívne spracovanie údajov, čítanie a zápis do databázy, potom na zvýšenie rýchlosti práce je lepšie vypnúť kontrolu prístupových práv nastavením príznaku „Privilegované“. Tento režim je dostupný len pre zdieľané moduly skompilované na serveri.

Modul formulára

Je určený na spracovanie užívateľských akcií, t.j. rôzne udalosti súvisiace so zadávaním údajov a spracovaním správnosti ich zadania. Modul bežnej formy je zostavený výlučne na klientovi. Modul spravovaného formulára je jasne ohraničený kontextom vykonávania, takže všetky premenné a metódy musia mať direktívu pre kompiláciu. Ak smernica nie je explicitne špecifikovaná, potom sa táto premenná alebo metóda skompiluje na strane servera. Modul formulára obsahuje sekcie pre popisy premenných a metód, ako aj sekciu pre hlavný program.

Objektový modul

Tento modul je typický pre mnohé konfiguračné objekty a je všeobecne určený na spracovanie objektových udalostí. Napríklad udalosti na zaznamenávanie a mazanie objektov, udalosti na zaúčtovanie dokladov atď.

Niektoré udalosti modulu objektu duplikujú udalosti modulu formulára. Napríklad udalosti spojené s nahrávkou. Uvedomte si však, že udalosti modulu formulára sa vykonajú iba v špecifickom formulári objektu. Vo všeobecnosti môže byť týchto foriem niekoľko. A udalosti objektového modulu sa budú volať v každom prípade, dokonca aj v momente programovej práce s objektom. Preto, ak potrebujete vykonať nejaký kód vo všetkých prípadoch, potom je lepšie použiť na to udalosť objektového modulu.

Objektový modul sa zostavuje výlučne na serveri. V ňom môžete definovať exportné premenné a metódy, ktoré budú dostupné v iných konfiguračných moduloch. Pomocou týchto vlastností a metód môžeme výrazne rozšíriť funkčnosť objektu.

Modul správcu objektov

Tento modul existuje pre mnoho konfiguračných objektov. Hlavným účelom tohto modulu je predefinovanie štandardnej výberovej udalosti, ktorá nastáva pri zadávaní riadku a rozšírenie funkcionality manažéra. Modul je zostavený na strane servera. Umožňuje vám definovať vlastnosti a metódy exportu. Volanie metód exportu manažéra nevyžaduje vytvorenie samotného objektu.

K všetkému vyššie uvedenému môžete pridať obrázok niektorých konfiguračných modulov a spôsobov vzájomného volania metód v režime riadenej aplikácie. Šípka označuje smer, ktorým sa môžete otočiť, aby ste vyvolali zodpovedajúcu metódu. Ako je možné vidieť z diagramu, kontext servera je úplne uzavretý. Ale z kontextu klienta je možné pristupovať k serverovým metódam.

Symboly na diagrame: O.M. Klient – ​​spoločný modul klienta; O.M. Server - Server zdieľaný modul; M.F. Klient - Klientske postupy modulu formulára; M.F. Server - Serverové procedúry modulu formulára.

Softvérové ​​moduly obsahujú spustiteľný kód v jazyku 1C, ktorý je potrebný na to, aby bolo možné určitým spôsobom reagovať na akcie systému alebo používateľa, keď nástroje vizuálneho vývoja nestačia. V softvérových moduloch môžeme popísať aj vlastné metódy (postupy a funkcie).

Softvérový modul sa zvyčajne skladá z troch častí:

  • variabilná oblasť deklarácie;
  • oblasť opisu postupov a funkcií;
  • hlavný text programu.

Príklad štruktúry softvérového modulu:

//******************* OBLASŤ PREMENNEJ DEKLARÁCIE ********************

Perem Last Name Export; / /toto je globálna premenná
Zmeniť meno, patronymické; //toto je premenná modulu
Celé meno Perem; //toto je tiež premenná modulu a je prístupná

//z akéhokoľvek postupu a funkcie nášho modulu

//*************** OBLASŤ POPIS POSTUPOV A FUNKCIÍ ****************

Postup Postup1 ()
premenná celková ; / /Výsledok je lokálna premenná (premenná postupu)

Celkom = Priezvisko + " "+ Krstné meno + " "+ Priezvisko;

Koniec procedúry

Funkcia Funkcia1()

// operátory funkcií

Return(Priezvisko + " "+ Meno);

EndFunction

//******************* HLAVNÝ TEXT PROGRAMU *************************

Priezvisko = "Ivanov";
Meno = "Ivan";
Patronymické = "Ivanovič";

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

V konkrétnom softvérovom module môže ktorákoľvek z oblastí chýbať.
Variabilná oblasť deklarácie umiestnené od začiatku textu modulu po prvý príkaz procedúry alebo funkcie alebo akýkoľvek spustiteľný príkaz. Táto sekcia môže obsahovať iba príkazy deklarácie premenných.

Oblasť pre popis procedúr a funkcií umiestnené od prvého príkazu procedúry alebo funkcie po akýkoľvek spustiteľný príkaz mimo tela popisu procedúry alebo funkcie.

Hlavná textová oblasť programu je umiestnený od prvého spustiteľného príkazu mimo tela procedúr alebo funkcií až po koniec modulu. Táto sekcia môže obsahovať iba spustiteľné príkazy. Hlavná textová oblasť programu sa spustí v momente inicializácie modulu. Zvyčajne v časti hlavného programu má zmysel umiestniť operátory na inicializáciu premenných s akýmikoľvek špecifickými hodnotami, ktoré musia byť priradené pred prvým volaním procedúr alebo funkcií modulu.

Softvérové ​​moduly sú umiestnené na tých miestach v konfigurácii, ktoré môžu vyžadovať popis špecifických prevádzkových algoritmov. Tieto algoritmy by mali byť formalizované vo forme procedúr alebo funkcií, ktoré bude volať samotný systém vo vopred určených situáciách (napríklad pri otvorení adresárového formulára, pri stlačení tlačidla v dialógovom okne, pri zmene objektu atď.) .

Každý jednotlivý softvérový modul je systémom vnímaný ako jeden celok, takže všetky procedúry a funkcie softvérového modulu sú vykonávané v jedinom kontexte.

Kontext vykonávania modulu je rozdelený na klienta a server. Okrem toho je možné niektoré softvérové ​​moduly skompilovať na strane klienta aj na strane servera.

Aplikačný modul (spravovaný alebo bežný)

Aplikačný modul popisuje procedúry (obslužné programy) udalostí, ktoré sa inicializujú na začiatku a na konci systému. Napríklad, keď sa aplikácia spustí, môžete aktualizovať niektoré konfiguračné údaje a pri ukončení aplikácie sa môžete opýtať, či sa vôbec oplatí ukončiť program. Okrem toho tento modul zachytáva udalosti z externých zariadení, napríklad obchodné alebo fiškálne. Stojí za zmienku, že aplikačný modul sa spustí iba pri interaktívnom spustení aplikácie, to znamená pri spustení okna programu. Toto sa nestane, ak je aplikácia spustená v režime pripojenia com.
V platforme 1C 8 sú dva rôzne aplikačné moduly. Ide o modul Bežná aplikácia a modul Spravovaná aplikácia. Spúšťajú sa pri spustení rôznych klientov. Modul Managed Application sa teda spúšťa pri spustení webového klienta, tenkého klienta a hrubého klienta v režime riadenej aplikácie. A bežný aplikačný modul sa spustí pri spustení hrubého klienta v normálnom aplikačnom režime. Nastavenie režimu spúšťania aplikácie je špecifikované v konfiguračnej vlastnosti "Základný režim spustenia".

Aplikačný modul môže obsahovať všetky 3 časti - deklarácie premenných, popisy procedúr a funkcií, ako aj hlavný text programu. Aplikačný modul je zostavený na strane klienta, čo značne obmedzuje naše používanie mnohých dátových typov. Kontext aplikačného modulu môžete rozšíriť pomocou metód bežných modulov, ktoré majú nastavenú vlastnosť „Server Call“. Všetky premenné a metódy aplikačného modulu, ktoré sú označené ako export, budú dostupné v akomkoľvek konfiguračnom module spustenom na strane klienta. Akokoľvek je to lákavé, nemali by ste sem umiestňovať veľké množstvo procedúr a funkcií. Čím viac kódu je v danom module, tým dlhší je čas kompilácie a následne aj čas spustenia aplikácie.

Ako je uvedené vyššie, aplikačný modul spracováva udalosti spustenia a ukončenia aplikácie. Na spracovanie každej z týchto udalostí v aplikačnom module existuje dvojica obslužných programov Pred... a Kedy... Rozdiely medzi nimi sú nasledovné: pri vykonávaní kódu v obslužnom programe Pred... akcia ešte neprebehla sa uskutočnilo a môžeme ho odmietnuť vykonať. Na to slúži možnosť Odmietnuť. V obslužných nástrojoch On.. akcia už prebehla a nemôžeme odmietnuť spustenie aplikácie ani ju ukončiť.

Externý spojovací modul

  • môže obsahovať všetky 3 oblasti
  • nachádza v koreňovej časti konfigurácie

Účel modulu je podobný účelu modulu aplikácie. Spracováva udalosti začiatku a konca aplikácie. Modul externého pripojenia sa spustí, keď sa aplikácia spustí v režime pripojenia com. Samotný proces vonkajšieho spojenia nie je interaktívny proces. V tomto režime dochádza k programovej práci s informačnou bázou a neotvára sa okno aplikácie, čo ukladá určité obmedzenia na používanie metód určených na interaktívnu prácu. V tomto režime nie je možné použiť volania do dialógových formulárov, upozornenia a správy pre používateľa atď. Jednoducho nebudú popravení.

Rovnako ako v aplikačnom module sú tu dostupné všetky tri oblasti: deklarácie premenných, popisy procedúr a funkcií, ako aj hlavný text programu. Hlavným rozdielom od aplikačného modulu je, že v režime spoločného pripojenia sa všetka práca s infobázou uskutočňuje na strane servera, takže modul externého pripojenia je zostavený na strane servera. Preto v ňom nie sú dostupné exportné premenné a metódy bežných klientskych modulov.

Modul relácie

  • beží na strane servera
  • nachádza v koreňovej časti konfigurácie

Ide o vysoko špecializovaný modul určený výhradne na inicializáciu parametrov relácie. Prečo ste na to potrebovali vytvoriť vlastný modul? Jeho použitie je spôsobené tým, že samotná aplikácia môže byť spustená v rôznych režimoch (výsledkom je spustenie buď riadeného aplikačného modulu, bežného aplikačného modulu alebo externého pripojovacieho modulu) a inicializácia parametrov relácie musí byť vykonaná bez ohľadu na režimu spustenia. Aby sme nezapísali rovnaký programový kód do všetkých troch týchto modulov, potrebovali sme dodatočný modul, ktorý beží bez ohľadu na režim spúšťania aplikácie.

V module relácie existuje jedna jediná udalosť „SettingSessionParameters“, ktorá sa vykoná úplne prvá, ešte pred udalosťou aplikačného modulu BeforeSystemStartOperation. Nie je v ňom dostupná časť deklarácie premenných a hlavná programová časť. Nemôžete tiež deklarovať metódy exportu. Modul je zostavený na strane servera.

Spoločné moduly

  • môže obsahovať oblasť popisujúcu postupy a funkcie
  • vykonávané na strane servera alebo klienta (v závislosti od nastavení modulu)
  • sa nachádza v stromovej vetve konfiguračných objektov „Všeobecné“ - „Všeobecné moduly“

Spoločné moduly sú určené na opísanie niektorých bežných algoritmov, ktoré budú volané z iných konfiguračných modulov. Všeobecný modul neobsahuje oblasti deklarácie premenných a hlavný text programu. Môžete v ňom deklarovať metódy exportu, ktorých dostupnosť bude určená nastavením modulu (na ktorej strane sa vykonáva: na strane servera alebo klienta). Vzhľadom na to, že sekcia popisu premenných nie je dostupná, nie je možné definovať globálne premenné v spoločných moduloch. Na to môžete použiť aplikačný modul.

Správanie sa spoločného modulu závisí od nastavených parametrov (globálne alebo nie, rôzne príznaky kompilácie, či je dostupné volanie servera atď.). Tu je niekoľko tipov na nastavenie bežných modulov:

Je dobrou praxou nepoužívať globálnu vlajku všade. Tým sa zníži čas spustenia aplikácie a tiež sa zlepší čitateľnosť kódu (samozrejme, ak má spoločný modul úplne zmysluplný názov);
- Neodporúča sa používať viac ako jeden príznak kompilácie. Nie je veľa metód, ktoré je potrebné vykonávať v rôznych kontextoch, a ak sú takéto metódy stále potrebné, potom im možno prideliť samostatný spoločný modul;
- príznak „Call server“ má zmysel iba vtedy, ak je modul zostavený „Na serveri“. Preto by sa všetky ostatné príznaky kompilácie mali odstrániť, aby sa predišlo rôznym problémom;
- ak metódy modulu zahŕňajú masívne spracovanie údajov, čítanie a zápis do databázy, potom pre zvýšenie rýchlosti práce je lepšie vypnúť riadenie prístupu nastavením príznaku „Privileged“. Tento režim je dostupný len pre zdieľané moduly skompilované na serveri.

Modul formulára

  • môže obsahovať všetky 3 oblasti
  • vykonávané na strane servera a klienta

Modul formulára je určený na spracovanie akcií používateľa s týmto formulárom (spracovanie udalosti kliknutia na tlačidlo, zmena atribútov formulára atď.). Existujú aj udalosti spojené priamo so samotným formulárom (napríklad jeho otvorenie alebo zatvorenie). Moduly riadeného a bežného formulára sa líšia predovšetkým tým, že modul riadeného formulára je prehľadne rozdelený do kontextu. Každý postup alebo funkcia musí mať smernicu pre kompiláciu. Ak nie je špecifikovaná direktíva kompilácie, potom sa táto procedúra alebo funkcia vykoná na strane servera. Vo svojej normálnej forme sa všetok kód vykonáva na strane klienta.

Štruktúra riadeného formulára obsahuje časť pre deklarácie premenných, popis procedúr a funkcií a hlavný text programu (spustený v čase inicializácie formulára). K štandardným udalostiam formulára sa dostaneme cez zoznam očakávaných procedúr a funkcií formulára (Ctrl+Alt+P) alebo prostredníctvom palety vlastností samotného formulára.

Ak má formulár priradený hlavný atribút, vlastnosti a metódy objektu aplikácie použitého ako hlavný atribút budú dostupné v module formulára.

Objektový modul

  • môže obsahovať všetky 3 oblasti
  • beží na strane servera

Tento modul je dostupný pre väčšinu konfiguračných objektov a je všeobecne určený na spracovanie udalostí priamo súvisiacich s objektom. Napríklad udalosti zaznamenávania a mazania objektov, kontroly vyplnenia detailov objektu, zaúčtovania dokladu atď.

Niektoré udalosti modulu objektu duplikujú udalosti modulu formulára. Napríklad udalosti spojené s nahrávkou. Malo by sa však chápať, že udalosti modulu formulára sa budú vykonávať výlučne v špecifickej forme objektu, to znamená pri otvorení špecifického formulára. A udalosti objektového modulu sa budú volať v každom prípade, dokonca aj v momente programovej práce s objektom. Preto, ak potrebujete metódy spojené s objektom bez toho, aby boli viazané na konkrétnu formu objektu, potom je lepšie použiť na to objektový modul.

Modul správcu objektov

  • môže obsahovať všetky 3 oblasti
  • beží na strane servera

Modul správcu objektov sa objavil až od verzie 1C 8.2. Manažérsky modul existuje pre všetky aplikačné objekty a je navrhnutý tak, aby spravoval tento objekt ako konfiguračný objekt. Manažérsky modul umožňuje rozšíriť funkcionalitu objektu zavedením (zápisom) procedúr a funkcií, ktoré sa nevzťahujú na konkrétnu inštanciu databázového objektu, ale na samotný konfiguračný objekt. Modul správcu objektov umožňuje umiestniť všeobecné procedúry a funkcie pre daný objekt a pristupovať k nim zvonku, napríklad zo spracovania (samozrejme, ak má táto procedúra alebo funkcia kľúčové slovo Export). Čo nové nám to dáva? Vo všeobecnosti nič iné ako organizovanie procedúr podľa objektov a ich ukladanie na samostatné miesta - moduly správcu objektov. Tieto procedúry a funkcie môžeme rovnako úspešne umiestniť do všeobecných modulov, no 1C odporúča umiestniť všeobecné procedúry a funkcie objektov do modulu Object Manager. Príklady využitia procedúr a funkcií Modulu Správcovia objektov: prvotné vyplnenie jednotlivých detailov adresára alebo dokumentu za určitých podmienok, kontrola vyplnenia detailov adresára alebo dokumentu za určitých podmienok a pod.

Príkazový modul

  • môže obsahovať časť popisujúcu postupy a funkcie
  • realizované na strane klienta

Príkazy sú objekty podriadené objektom aplikácie alebo konfigurácii ako celku. Každý príkaz má modul príkazov, v ktorom je možné opísať preddefinovanú procedúru CommandProcess() na vykonanie tohto príkazu.

V nových verziách konfigurácií systému 1C:Enterprise sa mnohé funkcie a procedúry presunuli z objektových modulov (dokumenty, adresáre atď.) do manažérskych modulov. Pozrime sa na rozdiely medzi týmito dvoma modulmi.

Podľa teórie objektovo orientovaného programovania sa objektové metódy delia do dvoch skupín: statické a jednoduché. Jednoduché metódy majú prístup iba ku konkrétnej inštancii triedy. Statické metódy nemajú prístup k objektovým dátam, ale pracujú s triedou ako celkom.

Ak to všetko preložíme do podmienok systému 1C:Enterprise, potom Objektový modul obsahuje jednoduché metódy. Ak ich chcete použiť, musíte najskôr získať konkrétny objekt: prvok adresára, dokumentu atď. Manažérsky modul obsahuje statické metódy. Na jeho použitie nie je potrebné samostatne získavať každý konkrétny objekt, umožňuje vám pracovať s celou kolekciou naraz.

Objektový modul môže mať postupy a funkcie, ktoré možno použiť externe. Na tento účel sa takýto postup alebo funkcia označuje slovom Export.

Funkcia NewFunction() Export

Aby ste mohli použiť takúto funkciu z objektového modulu, musíte ho najprv s odkazom na požadovaný objekt získať pomocou funkcie GetObject().



Za = Objekt. NewFunction() ;

Podobne môžete vytvárať nové premenné, ktoré možno použiť z rôznych konfiguračných objektov.

Export premennej NewVariable

Prvok adresára = Adresáre. Nomenklatúra. FindByCode("000000001" );
Objekt = Prvok adresára. GetObject() ;
Objekt. Nová premenná= );

Môžete tak doplniť štandardné postupy, funkcie a vlastnosti (premenné) objektov. Takéto premenné sú dynamické, neukladajú sa do infobáze a existujú len pri práci s prijatým objektom.

Manažérsky modul má všetky rovnaké možnosti, jediný rozdiel je v tom, že na jeho použitie nepotrebujete získať konkrétny objekt, manažérsky modul vám umožňuje pracovať s celou zbierkou objektov určitého typu.

Procedúra NewProcedure() Export

Prvok adresára = Adresáre. Nomenklatúra. NewProcedure();

Alebo pre premennú:

Export premennej NewVariable

Prvok adresára = Adresáre. Nomenklatúra. newVariable;

Pozrime sa na rozdiely v použití objektového modulu a manažérskeho modulu na príklade postupu tvorby tlačenej podoby dokumentu.

Pri použití objektového modulu bude kód vyzerať takto:

Funkcia Tlač dokumentu (odkaz) Export
//Tejto funkcii musíte odovzdať odkaz na konkrétny dokument
Return TabDoc;
EndFunction

Na formulári dokumentu je potrebné vytvoriť postup, ktorý by odovzdal odkaz na dokument do funkcie tlače.

&OnClient
Tlač postupu (príkaz)
TabDoc = PrintOnServer();
TabDoc. Šou() ;
Koniec procedúry
&Na serveri
Funkcia PrintOnServer()
Doc = FormAttributesValue("Object" ) ;
Návrat Doc. PrintDocument(Object. Link) ;
EndFunction

Nevýhodou tejto metódy je, že vytlačí len jeden objekt. Ak potrebujete vytlačiť niekoľko dokumentov naraz, musíte získať každý z nich a potom zavolať funkciu z modulu objektu. To si vyžaduje značné systémové prostriedky, pretože pri získaní objektu sa celý objekt umiestni do pamäte RAM.

Z hľadiska výkonu je oveľa lepšie používať manažérsky modul vždy, keď je to možné. V našom príklade bude riešenie problému vyzerať takto.
Funkcia PrintOnServer()
Vrátenie dokumentov. NášDokument. PrintDocument(ArrayLinks);
EndFunction

Ak používate manažérsky modul, tlačovú procedúru je možné vyvolať z formulára dokumentu aj z formulára zoznamu, pričom sa odovzdávajú odkazy na niekoľko dokumentov v poli. V tomto prípade systém nemusí získavať každý dokument z poľa, čo výrazne šetrí systémové prostriedky.

Kedy teda použiť objektový modul a kedy manažérsky modul?

Všetko závisí od úlohy. Ak na dokončenie objektu stačí odkaz na objekt (napríklad tlačová úloha), potom je lepšie použiť manažérsky modul. Ak je úlohou zmeniť údaje, napríklad vyplnenie dokumentu, musíte ho získať a použiť objektový modul.