Modul za delo s strankami v 1s. Skupni moduli. Zunanja zastavica za pridružitev

Članek nadaljuje serijo "Prvi koraki v razvoju na 1C" in podrobno obravnava naslednja vprašanja:

  • Kaj je programski modul in iz katerih delov je sestavljen?
  • Čemu je namenjen aplikacijski modul? Zakaj sta dva? Kdaj se kateri začne? Kakšne so posebnosti dela?
  • Kateri dogodki so povezani z začetkom delovanja sistema, kako in kje jih obdelati?
  • Čemu je namenjen zunanji priključni modul? Kdaj in kako ga uporabiti?
  • Kdaj se uporablja sejni modul?
  • Kaj so skupni moduli? Kakšne so njegove lastnosti in pravila delovanja? Zakaj uporabljati lastnost »Ponovna uporaba vrnjenih vrednosti«?
  • Kdaj se uporablja modul obrazca in katere dogodke lahko obdelujemo v njem?
  • Čemu je objektni modul namenjen? Iz katerih razdelkov je sestavljen? Kako lahko vidim razpoložljive dogodke modulov?
  • Kakšne so podrobnosti dela z moduli upravitelja vrednosti (za konstante) in moduli nabora zapisov (za registre)?
  • Kakšne so razlike med objektnim modulom in upraviteljskim modulom? Kdaj uporabiti slednjega?

Uporabnost

Članek obravnava platformo 1C:Enterprise 8.3.4.496. Gradivo je pomembno tudi za trenutne izdaje platforme.

Moduli v "1C:Enterprise 8.3"

Moduli so tisti objekti, ki vsebujejo programsko kodo.

V platformi je precej veliko število vrst modulov, od katerih ima vsak svoj namen in lastnosti.

Vsaka vrstica kode mora biti v nekem modulu. Obstajajo moduli za splošne namene in objektni moduli. Nekatere module je mogoče prevesti tako na odjemalcu kot na strežniku, nekatere pa samo na strežniku.

Modul je lahko sestavljen iz več delov. V razdelku z opisom spremenljivk so opisane lokalne spremenljivke tega modula, ki jih je mogoče pozneje uporabiti v katerem koli postopku.

Znotraj vsakega postopka lahko dostopate do spremenljivke modula. Poleg tega lahko znotraj samega postopka obstaja druga deklaracija spremenljivke z istim imenom. To bo lokalna spremenljivka tega postopka.

Kljub enakemu imenu gre za dve različni spremenljivki: ena se uporablja znotraj določene procedure, druga pa izven nje.

V nekaterih modulih imajo lahko spremenljivke mesto prevajanja (razpoložljivost) na strežniku ali odjemalcu. Na primer:

Razdelku, ki opisuje spremenljivke, sledi razdelek postopkov in funkcij, kjer so navedene lokalne metode tega modula. Nekateri moduli morajo podati, kje bo postopek ali funkcija prevedena.

Načeloma lahko direktivo prevajanja izpustimo. V tem primeru je privzeta direktiva prevajanja strežnik. Vendar je za udobje analiziranja programske kode priporočljivo, da izrecno navedete, kje bo določen postopek preveden. Vrstni red, v katerem so opisani postopki, ni pomemben.

Na koncu modula, po opisu vseh postopkov in funkcij, je razdelek glavnega programa, ki lahko vsebuje nekaj operatorjev in inicializira lokalne spremenljivke modula forme. Ta razdelek se izvede ob dostopu do modula.

Tako se na primer pri odpiranju obrazca elementa najprej izvede glavni programski del modula obrazca.

Upoštevati je treba, da razdelek za deklaracijo spremenljivk in razdelek glavnega programa ne obstajata za vse module (tj. ta razdelka v nekaterih modulih nista veljavna). Razdelek za opis postopkov in funkcij lahko obstaja v popolnoma katerem koli modulu.

Aplikacijski modul

Ta modul je zasnovan za obravnavo dogodkov zagona in zaključka aplikacije. Na primer, ko zaženete aplikacijo, lahko prenesete valutne tečaje iz interneta. Ob prekinitvi aplikacije lahko z uporabnikom potrdite, da namerava zapustiti aplikacijo.

Tudi v aplikacijskem modulu so posebni upravljalniki, ki vam omogočajo prestrezanje zunanjih dogodkov iz opreme.

To so lahko dogodki iz čitalnika magnetnih kartic ali fiskalnega registratorja. In te dogodke je mogoče na nek način tudi obdelati.

Upoštevajte, da je v modulu aplikacije nadzorovan interaktivni zagon sistema.

Aplikacijski modul ne bo deloval, če se program 1C zažene, na primer v načinu povezave com. V tem primeru se okno programa ne ustvari.

Upoštevati je treba, da sta v platformi 8.3 dva različna aplikacijska modula: upravljani aplikacijski modul in običajni aplikacijski modul. Dogodki modula upravljane aplikacije se obdelajo, ko se zaženeta tanek in debel odjemalec upravljane aplikacije ter spletni odjemalec.

Modul Redna uporaba deluje pri izvajanju debelega odjemalca v načinu Redna uporaba, ki vsebuje običajen ukazni vmesnik v obliki Glavni meni.

Če se aplikacija izvaja Upravljano, in v načinu Redna uporaba, potem je potrebno opisati postopke upravljalnika kot za modul Upravljana aplikacija, in za modul Redna uporaba.

Modul Upravljana aplikacija lahko izberete v kontekstnem meniju korenskega konfiguracijskega vozlišča.

Ta modul lahko odprete tudi iz palete lastnosti korenskega konfiguracijskega elementa.

Za odpiranje modula Redna uporaba, se obrnite na konfiguracijske nastavitve (ukaz Opcije na meniju Storitev).

Odpre se obrazec Opcije. Na zaznamku So pogosti mora biti določen način urejanja konfiguracije Upravljana aplikacija in Redna uporaba.

V tem primeru modul Redna uporaba možno bo odpreti tudi iz lastnosti korenskega vozlišča.

Seznam dogodkov, za katere je mogoče obdelati Upravljano in Redna uporaba je enako.

Ta modul lahko vsebuje odsek za deklaracijo spremenljivk, odsek za opis poljubnih postopkov in funkcij ter odsek glavnega programa. Toda poleg poljubnih postopkov in funkcij se lahko v modulu nahajajo posebni obdelovalci dogodkov.

Seznam razpoložljivih upravljavcev si lahko ogledate tako, da pokličete seznam postopkov in funkcij trenutnega modula, ko je modul odprt.

V oknu Postopki in funkcije, ki se odpre, so prikazani vsi postopki in funkcije tega modula ter dogodki, za katere še niso bili ustvarjeni obdelovalci.

Z zagonom sistema sta povezana dva dogodka (»before« in »at«). Dva dogodka, povezana z zaustavitvijo sistema (»before« in »at«). In tudi obdelava zunanjih dogodkov (na primer dogodkov komercialne opreme).

Ko se izvede obravnava dogodka »pred«, se šteje, da se dejanje še ni izvedlo. Ko se izvede obravnava dogodka »at«, je dejanje že končano.

Dogodek Pred zagonom sistema se zgodi v trenutku, ko se zažene Enterprise 8.3, vendar se sama aplikacija še ni pojavila na zaslonu. Ta dogodek ima naslednji parameter: Zavrnitev.

Če ta parameter sprejme vrednost Prav, potem se aplikacija ne bo zagnala. Dogodek Ob zagonu sistema predvideva, da je akcija že zaključena, okno že ustvarjeno in v tem primeru lahko npr. prikažemo kakšen poseben obrazec. Izstrelitve ni več mogoče zavrniti.

Podobno je aplikacija pred zaustavitvijo sistema še vedno odprta in jo lahko zavrnete. Ko se sistem zaustavi, je okno aplikacije že zaprto. Možno je le izvesti dodatna dejanja, na primer brisanje nekaterih datotek ali pošiljanje e-pošte.

V modulu Upravljana aplikacija Navodila za prevajanje postopkov in funkcij niso podana, saj je modul v celoti preveden na strani odjemalca. To pomeni, da v postopkih in funkcijah modula ne bomo mogli neposredno dostopati na primer do referenčnih knjig.

Če iz modula Upravljana aplikacija morate opraviti klic strežnika, potem boste morali za to ustvariti poseben z zastavo .

V modulu Redna uporaba Teh omejitev ni, saj bo ta modul preveden ob nalaganju debelega odjemalca. V debelem odjemalcu so na voljo skoraj vse vrste podatkov.

Postopke, funkcije in spremenljivke aplikacijskega modula lahko opišemo kot izvoze.

Ker je modul v celoti preveden na odjemalcu, to pomeni, da lahko v odjemalskih procedurah dostopamo do te metode in te lastnosti.

Na primer, lahko pokličete proceduro ali funkcijo aplikacijskega modula iz obrazca modula objekta. Vendar je priporočljivo, da za opis splošnih algoritmov uporabite skupne module. Glavni namen aplikacijskega modula je obdelava začetne in končne točke.

Po analogiji z aplikacijskim modulom je ta modul zasnovan za obdelavo dogodka odpiranja programa in dogodka zaustavitve.

Za razliko od aplikacijskega modula, ki se iniciira v trenutku interaktivnega zagona aplikacije, modul za zunanjo povezavo deluje v načinu povezave COM, tj. ko je objekt 1C:Enterprise 8 ustvarjen in povezan z določeno bazo podatkov.

Ta modul ima dogodke: Ob zagonu sistema in Ob zaustavitvi sistema.

Zunanji povezovalni modul je mogoče odpreti bodisi s kontekstnim menijem na ravni korenskega konfiguracijskega objekta ali s paleto lastnosti za korensko vozlišče.

Sam proces zunanje povezave je proces programskega dela z informacijsko bazo in ne interaktiven. V skladu s tem v tem trenutku ne morete uporabljati pogovornih obrazcev ali prikazovati opozorilnih sporočil, ker ni uporabniškega vmesnika.

V Modulu za zunanje povezave je možno opisati izvozne spremenljivke in izvozne metode, ki bodo na voljo na strani, kjer poteka zunanji klic v 1C:Podjetje 8.3.

Ker v zunanjem združevanju ni uporabniškega vmesnika, je zunanji združevalni modul v celoti preveden na strežniku.

Sejni modul

Ta modul je potreben za inicializacijo parametrov seje. Parametri seje so hitre globalne spremenljivke, katerih vrednosti so na voljo kjer koli v konfiguraciji.

Modul seje lahko odprete prek kontekstnega menija ali prek palete lastnosti korenskega vozlišča.

Modul Seje zagotavlja dogodek SettingSessionParameters.

Ko se aplikacija zažene, se najprej pokliče ta postopek. Parametri seje so potrebni za vsako delovanje aplikacije: tako pri interaktivnem zagonu kot pri zagonu v načinu zunanje povezave.

Modul seje opisuje različna dejanja za inicializacijo parametrov seje glede na različne pogoje.

Ta modul praviloma opisuje več procedur, ki se kličejo iz procedure SettingSessionParameters. Zato so vsi ti postopki ločeni v ločen modul.

Modul seje vedno deluje v privilegiranem načinu. To pomeni, da pri dostopu do baze podatkov ne bo izvedeno preverjanje dovoljenj. Modul seje je sestavljen na strežniku, tj. Možen je dostop do vseh strežniških metod (vključno z branjem vrednosti iz baze podatkov).

V Modulu seje je možno definirati samo postopke in funkcije, tj. ni razdelka z opisom spremenljivk in razdelka glavnega programa. V modulu seje ne morete definirati metod izvoza.

Če je pri zagonu sistema potrebno izvesti nekaj dejanj na strežniku, na primer ustvariti element imenika, potem je kot možnost mogoče uporabiti modul seje, ker sestavi se na strežniku in se vedno zanesljivo izvede ob zagonu sistema. Vendar je treba upoštevati naslednje točke:

  • postopek SettingSessionParameters se izvede ne samo ob zagonu sistema, ampak tudi pri dostopu do neinicializiranih parametrov seje. Tisti. obravnavo SetSessionParameters lahko večkrat kličete med delovanjem aplikacije;
  • če je število elementov v matriki parametrov seje nič (matrika zahtevanih parametrov ima podatkovni tip Nedefinirano), je to trenutek, ko se aplikacija zažene;
  • ker sejni modul deluje v privilegiranem načinu in ne bo preverjanja pravic dostopa, morate delati zelo previdno z objekti baze podatkov, saj lahko uporabnik pridobi dostop do podatkov, ki mu ne bi smeli biti posredovani;
  • Ko se sistem zažene, še ni zagotovo znano, ali se bo aplikacija zagnala. V tem primeru se lahko v rutini za obravnavo dogodkov SetSessionParameters izvedejo nepotrebna dejanja.

Ti moduli predstavljajo opis nekaterih splošnih algoritmov, tj. postopke in funkcije, ki jih je mogoče priklicati z različnih mest.

Logično povezane metode je mogoče združiti v različne skupne module. Ti moduli so ustvarjeni znotraj veje General.

Dodate lahko poljubno število skupnih modulov. Če želite, da so metode skupnega modula na voljo drugje v konfiguraciji, jih je treba definirati s ključno besedo Izvozi. Odjemalski postopki skupnih modulov bodo na voljo na odjemalcu, strežniški pa na strežniku.

V Splošnih modulih je na voljo samo razdelek, ki opisuje postopke in funkcije. Tisti. v splošnem modulu ne morete opisati spremenljivk in ne morete opisati razdelka glavnega programa.

Če je potrebna globalna spremenljivka, lahko uporabite parametre seje ali izvozne spremenljivke aplikacijskega modula.

Za splošne module lahko nastavite nekaj parametrov, ki bodo vplivali na vedenje tega modula. Če je lastnost Global nastavljena za splošni modul, bodo metode izvoza, navedene v tem modulu, dostopne neposredno od zunaj, brez dodatnih navodil.

Tisti. the Splošni modul bo sodeloval pri oblikovanju globalnega konfiguracijskega konteksta.

Lastnina Globalno za splošne module je lahko uporabno. Vendar ga ne smete uporabljati povsod za vse običajne module.

Tisti , ki so označeni z znakom Globalno, bo preveden ob zagonu sistema. Več kot je takih modulov, počasneje se bo program zagnal.

Če je zastava Globalno Za Splošni modul ni podana, bo prevajanje tega modula izvedeno ob prvem klicu do njega (tj. po zagonu sistema).

Poleg tega uporaba globalnih skupnih modulov vpliva na razumevanje kode. Metode neglobalnega skupnega modula se kličejo prek imena Splošni modul in ime metode, na primer:
Modul za izračun stroškov. DistributeIndirectCosts();

V tem primeru morajo imena skupnih modulov odražati vsebino postopkov, opisanih v njih. Določanje imena skupnega modula ob klicu procedure pomaga bolje razumeti kodo.

Za Splošni modul V Paleta lastnosti lahko nastavite lastnost Privilegiran.

Privilegirani modul ne nadzoruje pravic dostopa. To je potrebno, če Splošni modul Potrebna je množična obdelava podatkov, pridobivanje podatkov iz podatkovne baze.

Nadzor nad pravicami dostopa podaljša čas, ki je potreben za dostop do baze podatkov, množični algoritmi pa morajo pogosto delovati čim hitreje.

Na primer obračun plač je operacija, ki zahteva veliko virov. To je treba storiti čim hitreje. Da bi to dosegli, so algoritmi, ki izračunavajo plače, uvrščeni med privilegirane .

Hkrati pa so zunaj teh vsi postopki, ki zagotavljajo izpolnjevanje plačilnih listin Skupni moduli. V teh postopkih se izvaja nadzor pravic dostopa.

Na ta način je mogoče doseči pomembne izboljšave delovanja. To še posebej velja pri uporabi mehanizma za nadzor dostopa vrstice do vrstice do zapisov tabele.

Če je skupni modul privilegiran, je postopke tega modula mogoče prevesti samo na strežniku.

Obstajajo situacije, ko mora biti določen predmet nedostopen uporabniku, na primer določen imenik. Toda pri vodenju katerega koli dokumenta je potrebno sklicevanje na to referenčno knjigo.

Tisti. Uporabniške pravice je treba začasno razširiti in jih nato vrniti v prvotno stanje. Ta učinek je mogoče doseči z uporabo privilegiranih Skupni moduli.

Če želite to narediti v privilegiranem Splošni modul Ustvariti morate postopek, ki dostopa do zahtevanih podatkov.

Ta postopek bo poklican iz ustreznega dokumenta. Tisti. uporabniku so dejansko podeljene razširjene pravice v času klica tega postopka.

Za Skupni moduli Možno je določiti lokacijo kompilacije. Zastavice se uporabljajo za določanje, ali bo skupni modul na voljo na odjemalcu (upravljana aplikacija), na strežniku ali v načinu zunanje povezave.

Poleg tega, če način urejanja konfiguracije preklopite na Upravljano aplikacijo in navadno aplikacijo, bo možen še en kontekst prevajanja - Odjemalec (običajna aplikacija).

Tako so na voljo štiri možnosti za delovanje programa. Odvisno od aplikacije, ki se izvaja, glede na delo na odjemalcu ali strežniku bodo določeni skupni moduli na voljo ali ne.

Poleg zmožnosti določanja zastavic prevajanja je mogoče podati direktive prevajanja za postopke in funkcije, ki se nahajajo v skupnem modulu.

Če je za metodo podana direktiva prevajanja, bo kljub temu, da je skupni modul na voljo v vseh navedenih kontekstih, razpoložljivost specifične metode omejena z direktivo prevajanja.

V tem primeru do postopka ni mogoče dostopati v kontekstu, ki ni dostopen celotnemu modulu.

Če za proceduro (funkcijo) ne podate direktive za prevajanje, bo ta prevedena v vseh kontekstih, definiranih za modul.

Tisti. V bistvu bo narejenih več kopij postopka. Izbira določenega prevedenega primerka je odvisna od tega, kje se postopek kliče (po pravilu najbližjega klica). Upoštevati je treba, da mora biti koda takega postopka napisana ob upoštevanju njegove razpoložljivosti v vseh kontekstih, opredeljenih za modul.

Generični moduli, ki so hkrati dostopni v več različnih kontekstih, so zasnovani predvsem za ustvarjanje postopkov, ki so dostopni v več kontekstih.

Pri izdelavi splošnega modula se šteje za dobro prakso, da ne podajate direktiv za prevajanje. Tisti. Razpoložljivost postopkov in funkcij je treba določiti z lastnostmi samega modula.

S tem pristopom bodo odjemalske procedure v ločenih skupnih modulih, strežniške procedure pa v ločenih skupnih modulih.

Moduli, ki imajo nastavljenih več zastavic prevajanja, se v praksi uporabljajo izjemno redko. To je nekaj pogostih dejanj, ki so na voljo v odjemalcu in strežniku. Običajno so to preprosti izračuni.

Pomembno! Odjemalec lahko dostopa do metod izvoznega strežnika skupnega modula, vendar le, če je ta skupni modul preveden samo na strežniku. V tem primeru je na voljo posebna zastavica, ki omogoča dostop od odjemalca .

Za neglobalne skupne module je možno predpomniti vrednosti, ki jih vrnejo funkcije. Tisti. Po prvem klicu funkcije si sistem lahko zapomni rezultat njenega izvajanja. Če to funkcijo ponovno pokličete z enakimi parametri, bo sistem vrnil vrednost iz predpomnilnika.

Namen tega mehanizma je pospešiti ponavljajoče se klice. Če želite konfigurirati to vedenje, morate Paleta lastnosti modul, nastavite ustrezno vrednost za lastnost Ponovna uporaba vrnjenih vrednosti.

Privzeto je ta lastnost nastavljena na Ne uporabljaj. Druge možne vrednosti: predpomnilnik Med klicem, oz Za čas trajanja seje.

To lastnost je smiselno uporabljati samo za tiste funkcije, katerih rezultati so odvisni izključno od vhodnih parametrov. Ta mehanizem je na voljo samo za neglobalne skupne module.

Če je izbrana vrednost ustreznega parametra Za trajanje klica, bo predpomnilnik deloval, dokler se izvaja procedura, iz katere je bila poklicana metoda General Module. Če je izbrana vrednost Za čas trajanja seje, se pogojno domneva, da bo predpomnilnik deloval, medtem ko uporabnik dela.

Vendar pa obstajajo določene časovne omejitve. Predpomnilnik se samodejno izbriše 20 minut po tem, ko vrednost vstopi v predpomnilnik.

Modul obrazca

Ta modul je zasnovan za obdelavo uporabniških dejanj. Na primer, opišite algoritem, kako se program odzove, ko pritisnete gumb. Ali pa na primer v trenutku vnosa vrednosti v polje takoj preverite pravilnost.

Poleg dogodkov, povezanih s kontrolniki obrazca (gumbi, vnosna polja), obstajajo dogodki, povezani neposredno s samim obrazcem.

Na primer, lahko obravnavate dogodek odpiranja obrazca in naredite nekaj začetne inicializacije. Obravnavate lahko tudi dogodek zaprtja obrazca in preverite, ali je uporabnik vse pravilno vnesel.

Obstajajo kontrolirane oblike in navadne oblike. Moduli teh obrazcev se razlikujejo predvsem po tem, da je modul upravljanega obrazca jasno razdeljen na kontekst. Vsaka procedura (funkcija) mora imeti direktivo za prevajanje. V običajni obliki se vsa koda uporablja na odjemalcu.

V modulu upravljanega obrazca lahko deklarirate postopke in funkcije, lahko deklarirate spremenljivke in lahko opišete del glavnega programa.

Programska koda glavnega programa se bo izvršila v trenutku inicializacije obrazca, tj. ko ga uporabnik začne odpirati. Slika prikazuje seznam standardnih dogodkov za upravljani obrazec.

Seznam dogodkov upravljanega obrazca je viden tudi na seznamu lastnosti neposredno za sam obrazec. Ta seznam se pokliče v urejevalniku upravljanih obrazcev.

V upravljanem obrazcu lahko obravnavate dogodek zapisovanja postavke. Ta dogodek je prisoten samo za obrazce objektov (imeniki, dokumenti in nekateri drugi). Če obrazec ni vezan na določen objekt, potem ni dogodka pisanja.

Za modul redne oblike je seznam standardnih dogodkov nekoliko manjši, ker V upravljani obliki je veliko dogodkov seznanjenih (eden se izvede na odjemalcu, drugi pa na strežniku). V svoji običajni obliki se vsa koda izvaja na odjemalcu.

Objektni modul

Ti moduli so značilni za imenike, dokumente, načrte za vrste izračunov, kontne načrte in številne druge predmete. Objektni modul je zasnovan za obravnavo standardnih dogodkov. Na primer dogodek za vnos elementa imenika, dogodek za pisanje elementa, brisanje, objavo dokumenta itd.

Načeloma dogodek pisanja obstaja tudi v modulu Form. Toda dogodek pisanja v modulu obrazca se pojavi med interaktivnim procesom snemanja, ko delate z določenim obrazcem.

Dogodek pisanja v objektnem modulu se bo izvedel ob vsakem pisanju iz katere koli oblike danega objekta. Poleg tega se bo sprožil dogodek modula objekta, če je objekt napisan programsko.

V dogodku pisanja objektnega modula lahko vgradite vsa preverjanja pravilnosti podatkov, ki se zapisujejo, saj se bo ta postopek izvedel v času absolutno katerega koli snemanja.

Modul tega predmeta lahko prikličete prek kontekstnega menija, iz palete lastnosti objekta in iz okna za urejanje predmeta.

Spodnja slika prikazuje seznam razpoložljivih dogodkov modula imenika.

V objektnem modulu lahko postavite razdelek za opis spremenljivk, opis poljubnih funkcij, ki morda niso povezane z dogodkom, kot tudi razdelek glavnega programa.

V razdelku glavnega programa lahko na primer inicializirate lokalne spremenljivke danega modula. Ta programska koda se bo izvedla, ko se dostopa do tega objektnega modula.

Upoštevati je treba, da so vsi postopki objektnega modula prevedeni na strežniku. V skladu s tem niso potrebne direktive za prevajanje postopkov in funkcij objektnega modula. Nekateri konfiguracijski objekti nimajo objektnih modulov.

To je posledica značilnosti samih predmetov. Takšni predmeti vključujejo Konstante in Registri. Za Konstanta ni objektnega modula, obstaja pa zelo podoben modul, imenovan Modul za upravljanje vrednosti.

IN Modul za upravljanje vrednosti lahko obravnavate pisne dogodke Konstante in obdelavo preverjanja polnjenja.

Celoten kontekst modula se izvaja na strežniku.

Za registre je na voljo Recordset Module.

Ta modul ima tudi možnost obravnavanja dogodkov pisanja in izvajanja preverjanj zasedenosti.

V modulih objektov, modulih upravitelja vrednosti (za konstante) in modulih nabora zapisov (za registre) lahko opišete metode, ki jih je mogoče izvoziti, te metode pa bodo dostopne od zunaj.

Tisti. Poleg uporabe fiksnih metod razreda objektov lahko ustvarite dodatne metode za objekt v modulu objektov. Ta modul mora opisati ustrezen postopek s ključno besedo Izvozi.

Potem bo do tega postopka mogoče dostopati od zunaj. Poleg tega bo ta metoda prikazana v kontekstnem opisu orodja. Nove metode v kontekstnem opisu orodja so označene z modro pisavo (modra ikona p() za postopke in f() za funkcije).

Podobno lahko ustvarite novo lastnost tako, da deklarirate spremenljivko s ključno besedo Izvozi. Do te nepremičnine je mogoče dostopati tudi od zunaj.

Na ta način je možno razširiti funkcionalnost objektov (določiti nove metode in nove lastnosti). Vendar so lastnosti dinamične in niso shranjene v bazi podatkov.

Če morate uporabiti lastnost za objekt, ki bo shranjen v bazi podatkov, ustvarite atribut objekta.

Modul upravitelja

Ta modul obstaja za številne objekte (imenike, dokumente, registre itd.). Modul se odpre prek kontekstnega menija za objekt ali prek Paleta lastnosti, ali skozi okno za urejanje.

V modulu Manager lahko preglasite nekatere standardne dogodke, na primer v ProcessingReceivingSelectionData, ko je element izbran iz imenika, je mogoče izvesti nekaj dodatnega filtriranja ali preverjanja.

Poleg tega lahko ustvarite dodatne metode v upraviteljskem modulu in navedete, da so izvozne metode. V tem primeru je možen dostop do teh metod od zunaj.

Za izvedbo tega klica je potrebno pridobiti podatkovni tip DirectoryManager.

Razlika med metodama izvoza modula Manager in modula Object je v tem, da morate za dostop do metode modula Object najprej pridobiti sam objekt (to je, nekako pridobiti povezavo in nato to povezavo pretvoriti v objekt). .

Po tem bodo na voljo izvozne spremenljivke in metode objektnega modula. Za modul Manager je klic preprostejši, na primer:
Imeniki.Nasprotne stranke.MethodName

Gre za dve različni pritožbi. Pretvori iz reference v predmet (metoda GetObject) je dokaj resno dejanje za sistem, saj se pri prejemu predmeta preberejo popolnoma vsi podatki tega predmeta, kar je lahko precej dolgo.

Druga razlika je ta Objektni modul imenujemo v kontekstu določenega elementa. V skladu s tem lahko domnevamo, da je uporabna za dani element (v večini primerov je uporabljena točno ta logika).

Kar zadeva modul upravitelja, opisuje nekatera skupna dejanja za skupino ali za vse elemente imenika ali nekega dokumenta. Na primer, če morate natisniti postavko imenika, lahko uporabite predmetni modul.

Toda v modulu Manager je mogoče ustvariti bolj univerzalen mehanizem, ki bo med drugim natisnil skupino elementov.

Poleg tega je dostop do predmetnega modula še vedno daljše dejanje. Zato je bolje, da to težavo rešite v modulu upravitelja.

S tem zaključujemo seznanitev z moduli v konfiguraciji sistema 1C:Enterprise. Če na kratko povzamemo vse zgoraj navedeno, so zaključki naslednji:

  • Programski modul je del konfiguracije, ki lahko vsebuje samo besedilo v vgrajenem jeziku 1C
  • Programski moduli so razvrščeni glede na vrste, o katerih smo razpravljali v tem članku. Vsak pogled je določen z njegovo umestitvijo in razpoložljivim kontekstom programa.
  • Struktura modula je sestavljena iz več razdelkov, ki so razporejeni v določenem zaporedju. Sestavo razdelkov določa vrsta modula.

Upoštevajte tudi, da smo namenoma izpustili eno vrsto modula, in sicer ukazni modul. Nič posebnega in vabimo vas, da se seznanite z njegovo funkcionalnostjo.

Do sedaj smo vso našo programsko kodo obravnavali ločeno od aplikativne rešitve in smo jo praviloma zapisali v kakšni lastni manjši testni konfiguraciji. Ali se zavedate, da "ne morete kar tako" in začeti urejati kodo standardne konfiguracije? ne? Potem bomo v naslednjem članku razložili vse!

1.1. Skupni moduli so ustvarjeni za izvajanje postopkov in funkcij, združenih glede na nekatere značilnosti. Praviloma so postopki in funkcije enega konfiguracijskega podsistema (prodaja, nabava) ali postopki in funkcije podobne funkcionalnosti (delo z nizi, splošni namen) umeščeni v en skupni modul.

1.2. Ko razvijate skupne module, morate izbrati enega od štirih kontekstov izvajanja kode:

Skupni tip modula Primer imena Klic strežnika Strežnik Zunanji spoj Stranka
(redna aplikacija)
Stranka
(upravljana aplikacija)
1. StrežnikSplošni namen (ali strežnik za splošne namene)
2. Strežnik za klic odjemalcaGeneralPurposeCallServer
3. StrankaOdjemalec za splošne namene (ali Global Purpose)
4. Odjemalec-strežnikSplošni namen ClientServer

2.1. Skupni moduli strežnika so namenjeni gostovanju strežniških postopkov in funkcij, ki niso na voljo za uporabo iz odjemalske kode. Izvajajo vso interno strežniško poslovno logiko aplikacije.
Za pravilno delovanje konfiguracije v zunanji povezavi, upravljanih in običajnih aplikacijskih načinih je treba postopke in funkcije strežnika postaviti v skupne module z naslednjimi lastnostmi:

  • Strežnik(potrditveno polje Klic strežnika ponastaviti),
  • Naročnik (redna aplikacija),
  • Zunanji spoj.

V tem primeru je zagotovljena možnost klicanja strežniških procedur in funkcij s parametri spremenljivih tipov (npr. DirectoryObject, DocumentObject in tako naprej.). Običajno je to:

  • upravljalniki za naročnine na dogodke dokumentov, imenikov ipd., ki za parameter sprejmejo spremenljivo vrednost (objekt).
  • strežniške procedure in funkcije, ki jim je objekt posredovan kot parameter iz modulov imenikov, dokumentov itd., kot tudi iz modulov z naročninami na dogodke.

Moduli v skupni rabi na strani strežnika so poimenovani v skladu s splošnimi pravili za poimenovanje metapodatkovnih objektov.
Na primer: Delo z datotekami, Glavni namen

V nekaterih primerih je mogoče dodati postfix, da preprečite navzkrižje imen z lastnostmi globalnega konteksta "strežnik".
Na primer: RoutineTasksServer, Data ExchangeServer.

2.2. Skupni moduli strežnika za klicanje iz odjemalca vsebujejo strežniške postopke in funkcije, ki jih je mogoče uporabiti iz odjemalske kode. Sestavljajo odjemalski programski vmesnik aplikacijskega strežnika.
Takšni postopki in funkcije so umeščeni v skupne module z naslednjo funkcijo:

  • Strežnik(potrditveno polje Klic strežnika nameščen)

Skupni moduli na strani strežnika za klicanje iz odjemalca so poimenovani v skladu s splošnimi pravili za poimenovanje metapodatkovnih objektov in morajo biti poimenovani s postfiksom "CallServer".
Na primer: Delo s strežnikom FilesCalling

Upoštevajte, da izvozni postopki in funkcije v takšnih skupnih modulih ne smejo vsebovati parametrov spremenljivih vrst ( DirectoryObject, DocumentObject itd.), saj je njihov prenos iz kode odjemalca (ali na) nemogoč.

Poglej tudi:Omejitev nastavitve zastavice »Server Call« za običajne module

2.3. Skupni moduli odjemalca vsebujejo poslovno logiko odjemalca (funkcionalnost, definirana samo za odjemalca) in imajo naslednje značilnosti:

  • Odjemalec (upravljana aplikacija))
  • Naročnik (redna aplikacija)

Izjema je, ko morajo biti postopki in funkcije odjemalca na voljo samo v načinu upravljane aplikacije (samo v načinu običajne aplikacije ali samo v načinu zunanje povezave). V takih primerih je sprejemljiva druga kombinacija teh dveh lastnosti.

Skupni moduli odjemalca so poimenovani s postfiksom "Stranka".
Na primer: Delo z FilesClient, Odjemalec splošnega namena

Glejte tudi: minimiziranje kode, ki se izvaja na odjemalcu

2.4. V nekaterih primerih je dovoljeno ustvariti skupne module odjemalec-strežnik s postopki in funkcijami, katerih vsebina je enaka tako na strežniku kot na odjemalcu. Takšni postopki in funkcije so umeščeni v skupne module z naslednjimi značilnostmi:

  • Odjemalec (upravljana aplikacija)
  • Strežnik(potrditveno polje Klic strežnika ponastaviti)
  • Naročnik (redna aplikacija)
  • Zunanji spoj

Pogosti moduli te vrste so poimenovani s postfiksom "ClientServer".
Na primer: Delo z FilesClient, Splošni namen ClientServer

Na splošno ni priporočljivo definirati skupnih modulov tako za strežnik kot za odjemalca (upravljano aplikacijo). Priporočljivo je implementirati funkcionalnost, definirano za odjemalca in strežnik v različnih skupnih modulih – glejte odstavke. 2.1 in 2.3. To eksplicitno ločevanje poslovne logike odjemalca in strežnika narekujejo razmišljanja o povečanju modularnosti aplikacijske rešitve, poenostavitvi nadzora razvijalcev nad interakcijo odjemalec-strežnik in zmanjšanju tveganja napak zaradi temeljnih razlik v zahtevah za razvoj odjemalca in strežnika. kodo (potreba po minimiziranju kode, ki se izvaja na odjemalcu, različna razpoložljivost objektov in tipov platform itd.). V tem primeru morate upoštevati neizogibno povečanje števila skupnih modulov v konfiguraciji.

Poseben primer mešanih odjemalsko-strežniških modulov so obrazec in ukazni moduli, ki so posebej zasnovani za implementacijo strežniške in odjemalske poslovne logike v enem modulu.

3.1. Priporočljivo je, da imena skupnih modulov sledijo splošnim pravilom za poimenovanje metapodatkovnih objektov. Ime splošnega modula se mora ujemati z imenom podsistema ali ločenega mehanizma, katerega postopke in funkcije izvaja. Priporočljivo je, da se v imenih običajnih modulov izogibate splošnim besedam, kot so "postopki", "funkcije", "obdelovalci", "modul", "funkcionalnost" itd. in jih uporabljajte le v izjemnih primerih, ko bolj popolno razkrivajo namen modula.

Da bi razlikovali med skupnimi moduli enega podsistema, ki so ustvarjeni za izvajanje postopkov in funkcij, ki se izvajajo v različnih kontekstih, je priporočljivo, da jim dodelite postfikse, opisane prej v odstavkih. 2.1-2.4.

Kaj so moduli in čemu točno so namenjeni? Modul vsebuje programsko kodo. Poleg tega je treba omeniti, da se mora v nasprotju s platformo 7.7, kjer se koda nahaja v lastnostih elementov obrazca in v celicah tabel postavitve, v platformi 8.x katera koli vrstica kode nahajati v nekem modulu . Običajno je modul sestavljen iz treh odsekov – odseka za opis spremenljivk, odseka za opis postopkov in funkcij ter odseka za glavni program. Ta struktura je značilna za skoraj vse module platforme, z nekaterimi izjemami. Nekateri moduli nimajo odseka z opisom spremenljivk ali odseka glavnega programa. Na primer modul seje in kateri koli splošni modul.

Kontekst izvajanja modulov je na splošno razdeljen na odjemalca in strežnika. Poleg tega je mogoče nekatere module prevesti tako na strani odjemalca kot na strani strežnika. In nekateri so izključno na strani strežnika ali strani odjemalca. torej:

Aplikacijski modul

Modul je zasnovan tako, da ujame trenutke zagona aplikacije (nalaganje konfiguracije) in prenehanja njenega delovanja. In postopke preverjanja je mogoče umestiti v ustrezne dogodke. Na primer, ko zaženete aplikacijo, posodobite nekaj referenčnih konfiguracijskih podatkov in ko končate delo, vprašajte, ali je sploh vredno zapustiti, morda delovni dan še ni končan. Poleg tega prestreza dogodke iz zunanje opreme, na primer trgovalne ali fiskalne. Omeniti velja, da aplikacijski modul opisane dogodke prestreže le ob interaktivnem zagonu. Tisti. ko se ustvari samo okno programa. To se ne zgodi, če je aplikacija zagnana v načinu povezave com.

V platformi 8.2 sta dva različna aplikacijska modula. To sta modul Regular Application in modul Managed Application. Sprožijo se, ko se zaženejo različni odjemalci. Tako se sproži modul upravljane aplikacije, ko se spletni odjemalec, tanek odjemalec in debel odjemalec zaženejo v načinu upravljane aplikacije. Običajni aplikacijski modul se sproži, ko se debeli odjemalec zažene v običajnem aplikacijskem načinu.

Aplikacijski modul lahko vsebuje vse razdelke – opise spremenljivk, postopkov in funkcij ter opise glavnega programa. Aplikacijski modul je sestavljen na strani odjemalca, zato nas to močno omejuje pri dostopnosti številnih vrst podatkov. Kontekst aplikacijskega modula lahko razširite z uporabo metod običajnih modulov, ki imajo nastavljeno lastnost »Server Call«. Vse spremenljivke in metode, ki so označene kot izvoz, bodo na voljo v katerem koli konfiguracijskem modulu, ki se izvaja na strani odjemalca. Ne glede na to, kako mamljivo je, tukaj ne smete objaviti velikega števila metod. Več kode vsebuje, daljši je čas prevajanja in s tem čas zagona aplikacije, kar je za uporabnike zelo moteče.

Kot je navedeno zgoraj, aplikacijski modul obravnava dogodke zagona in zaključka aplikacije. Za obravnavo vsakega od teh dogodkov v aplikacijskem modulu obstaja par obdelovalcev Pred... in Ko... Razlike med njima so takšne, da pri izvajanju kode v obdelovalniku Pred... dejanje še ni in lahko zavrnemo njegovo izvedbo. Temu je namenjena možnost Zavrni. V obdelovalcih On.. je dejanje že izvedeno in ne moremo zavrniti zagona aplikacije ali izstopiti iz nje.

Modul za zunanjo povezavo

Namen modula je podoben namenu aplikacijskega modula. Obdeluje začetno in končno točko aplikacije. Zunanji povezovalni modul se sproži, ko se aplikacija zažene v načinu com povezave. Sam proces zunanjega združevanja ni interaktiven proces. V tem načinu poteka programsko delo z informacijsko bazo in okno aplikacije se ne odpre, kar nalaga določene omejitve pri uporabi metod, namenjenih interaktivnemu delu. V tem načinu ni mogoče uporabiti klicev pogovornih obrazcev, opozorilnih sporočil itd. Preprosto ne bodo delovali.

Tako kot v aplikacijskem modulu so tukaj na voljo razdelki za opis spremenljivk, metod in razdelek za glavni program. Lahko tudi deklarirate izvozne spremenljivke in metode. Razlika je v tem, da v načinu povezave com vse delo z informacijsko bazo poteka na strani strežnika, zato se zunanji povezovalni modul sestavi izključno na strežniku. V skladu s tem izvozne spremenljivke in metode običajnih odjemalskih modulov niso na voljo v njem.

Sejni modul

To je zelo specializiran modul in je namenjen izključno inicializaciji parametrov seje. Zakaj ste morali narediti svoj modul za to? To je posledica dejstva, da lahko postopek inicializacije zahteva izvedbo neke kode, poleg tega pa je lahko aplikacija zagnana pod različnimi odjemalci (kar vodi do izvajanja različnih aplikacijskih modulov ali zunanjega povezovalnega modula) in inicializacija parametre seje je treba izvesti v katerem koli načinu zagona. Zato je bil potreben dodaten modul, ki deluje v katerem koli načinu zagona aplikacije.

V modulu seje obstaja en sam dogodek »SettingSessionParameters«, ki se izvede zelo prvi, celo pred dogodkom modula aplikacije BeforeSystemStartOperation. Razdelek za deklaracijo spremenljivk in razdelek glavnega programa v njem nista na voljo. Prav tako ne morete deklarirati metod izvoza. Modul je sestavljen na strani strežnika.

Naj vas ne premami dejstvo, da se ta modul izvede vsakič, ko se aplikacija zažene, in vanj ne smete postaviti kode, ki ni neposredno povezana z inicializacijo parametrov seje. To je posledica dejstva, da se lahko upravljalnik SetSessionParameters večkrat kliče med delovanjem sistema. To se na primer zgodi v primerih, ko dostopamo do neinicializiranih parametrov. In čeprav je mogoče ujeti trenutek prvega zagona tega dogodka (RequiredParameters je tipa Undefined), je treba upoštevati, da je ta modul sestavljen v privilegiranem načinu, tj. ne nadzoruje pravic dostopa. In drugo je, da še vedno ne moremo biti stoodstotno prepričani, da bo sistem zagnan. Nenadoma pride do napake v aplikacijskem modulu in poskušamo izvesti nekaj dejanj z bazo podatkov.

Skupni moduli

Moduli so namenjeni opisovanju nekaterih pogostih algoritmov, ki bodo klicani iz drugih konfiguracijskih modulov. Splošni modul ne vsebuje odseka z opisom spremenljivk in odseka glavnega programa. V njem lahko deklarirate metode izvoza, katerih kontekst dostopnosti bo določen z zastavicami prevajanja. Zaradi dejstva, da razdelek z opisom spremenljivk ni na voljo, globalnih spremenljivk ni mogoče definirati v skupnih modulih. Če želite to narediti, morate uporabiti funkcije običajnih modulov s predpomnjenjem vrnjenih vrednosti ali aplikacijskega modula. Upoštevati je treba, da tudi če je lastnost ponovne uporabe modula v skupni rabi nastavljena na »Za čas trajanja seje«, potem v tem primeru življenjska doba predpomnjenih vrednosti ne presega 20 minut od trenutka zadnjega dostopa do njim.
Obnašanje skupnega modula je odvisno od nastavljenih parametrov (globalni ali ne, različne zastavice prevajanja, ali je na voljo klic strežnika itd.). V tem članku ne bomo obravnavali vseh vrst nastavitev, pa tudi vedenjskih lastnosti in pasti, ki nastanejo pri nerazumni nastavitvi zastavic lastnosti. To je tema za ločen članek. Oglejmo si le nekaj točk, ki jih je treba upoštevati pri nastavljanju zastavic:

  • Dobro pravilo je, da globalne zastave ne uporabljate povsod. S tem se skrajša čas zagona aplikacije, izboljša pa se tudi berljivost kode (seveda, če ima skupni modul povsem smiselno ime).
  • Ni priporočljivo uporabljati več kot ene zastavice prevajanja. Ni veliko metod, ki jih je treba izvajati v različnih kontekstih, in če so takšne metode še vedno potrebne, se jim lahko dodeli ločen skupni modul.
  • Zastavica "Server Call" je smiselna le, če je modul preveden "On the server". Zato je treba vse druge zastavice prevajanja odstraniti, da se izognete različnim težavam.
  • Če metode modula vključujejo obsežno obdelavo podatkov, branje in pisanje v bazo podatkov, je za povečanje hitrosti dela bolje onemogočiti nadzor pravic dostopa z nastavitvijo zastavice »Privilegirano«. Ta način je na voljo samo za module v skupni rabi, prevedene na strežniku.

Modul obrazca

Zasnovan je za obdelavo uporabniških dejanj, tj. razni dogodki v zvezi z vnosom podatkov in obdelavo pravilnosti njihovega vnosa. Modul običajne oblike je v celoti sestavljen na naročniku. Modul upravljanega obrazca je jasno razmejen s kontekstom izvajanja, zato morajo vse spremenljivke in metode imeti direktivo za prevajanje. Če direktiva ni izrecno navedena, bo ta spremenljivka ali metoda prevedena na strani strežnika. Modul obrazca vsebuje razdelke za opise spremenljivk in metod ter razdelek za glavni program.

Objektni modul

Ta modul je značilen za številne konfiguracijske objekte in je na splošno namenjen obdelavi dogodkov objektov. Na primer dogodki za snemanje in brisanje predmetov, dogodki za objavo dokumentov itd.

Nekateri dogodki modula objekta podvajajo dogodke modula obrazca. Na primer dogodki, povezani s posnetkom. Vendar ne pozabite, da se bodo dogodki modula obrazca izvajali samo na specifičnem obrazcu objekta. Na splošno je lahko teh oblik več. In dogodki objektnega modula bodo poklicani v vsakem primeru, tudi v trenutku programskega dela z objektom. Če morate torej v vseh primerih izvesti neko kodo, je za to bolje uporabiti dogodek objektnega modula.

Objektni modul se prevede izključno na strežniku. V njem lahko definirate izvozne spremenljivke in metode, ki bodo na voljo v drugih konfiguracijskih modulih. Z uporabo teh lastnosti in metod lahko znatno razširimo funkcionalnost objekta.

Modul upravljalnika objektov

Ta modul obstaja za številne konfiguracijske objekte. Glavni namen tega modula je redefinicija standardnega izbirnega dogodka, ki se pojavi ob vstopu v linijo in razširitev funkcionalnosti upravitelja. Modul je sestavljen na strani strežnika. Omogoča vam definiranje lastnosti in metod izvoza. Klicanje izvoznih metod upravitelja ne zahteva ustvarjanja samega predmeta.

Vsemu naštetemu lahko dodate sliko nekaterih konfiguracijskih modulov in načinov medsebojnega klicanja metod v načinu upravljane aplikacije. Puščica označuje smer, v katero se lahko obrnete, da pokličete ustrezno metodo. Kot je razvidno iz diagrama, je kontekst strežnika popolnoma zaprt. Toda iz konteksta odjemalca je mogoče dostopati do strežniških metod.

Simboli na diagramu: O.M. Odjemalec - Skupni modul odjemalca; O.M. Strežnik – skupni modul strežnika; M.F. Odjemalec - Odjemalski postopki modula obrazca; M.F. Strežnik - Strežniške procedure modula obrazca.

Moduli programske opreme vsebujejo izvedljivo kodo v jeziku 1C, ki je potrebna, da se na določen način odzove na dejanja sistema ali uporabnika, ko vizualna razvojna orodja niso dovolj. V programskih modulih lahko opišemo tudi lastne metode (postopke in funkcije).

Običajno je programski modul sestavljen iz treh delov:

  • območje deklaracije spremenljivk;
  • področje opisa postopkov in funkcij;
  • glavno besedilo programa.

Primer strukture programskega modula:

//******************** OBMOČJE ZA DEKLARACIJO SPREMENLJIV ***********************

Izvoz priimka Perem; / /to je globalna spremenljivka
Spremenite ime, patronim; //to je spremenljivka modula
Perem polno ime; //to je tudi spremenljivka modula in do nje je mogoče dostopati

//iz katerega koli postopka in funkcije našega modula

//**************** PODROČJE OPIS POSTOPKOV IN FUNKCIJ ****************

Postopek Postopek1 ()
Spremenljivka Skupaj ; / /Rezultat je lokalna spremenljivka (spremenljivka postopka)

Skupaj = Priimek + " "+ Ime + " "+ Srednje ime;

EndProcedure

Funkcija Funkcija1()

// funkcijski operaterji

Return(LastName + " "+ Name);

EndFunction

//******************** GLAVNO BESEDILO PROGRAMA ***********************

Priimek = "Ivanov";
Ime = "Ivan";
Patronim = "Ivanovič";

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

V določenem modulu programske opreme lahko katero koli področje manjka.
Območje deklaracije spremenljivk postavljen od začetka besedila modula do prvega stavka postopka ali funkcije ali katerega koli izvršljivega stavka. Ta razdelek lahko vsebuje samo izjave o deklaraciji spremenljivk.

Območje za opisovanje postopkov in funkcij postavljen od prvega stavka postopka ali funkcije do katerega koli izvršljivega stavka zunaj telesa opisa postopka ali funkcije.

Glavno besedilno območje programa se postavi od prvega izvršljivega stavka zunaj telesa procedur ali funkcij do konca modula. Ta razdelek lahko vsebuje samo izvršljive stavke. Glavno besedilno področje programa se izvede v trenutku inicializacije modula. Običajno je v razdelku glavnega programa smiselno postaviti operaterje za inicializacijo spremenljivk s kakršnimi koli specifičnimi vrednostmi, ki jih je treba dodeliti pred prvim klicem postopkov ali funkcij modula.

Programski moduli se nahajajo na tistih mestih v konfiguraciji, ki lahko zahtevajo opis določenih algoritmov delovanja. Ti algoritmi morajo biti formalizirani v obliki procedur ali funkcij, ki jih bo poklical sistem sam v vnaprej določenih situacijah (na primer, ko odprete obrazec imenika, ko pritisnete gumb v pogovornem oknu, ko spremenite predmet itd.) .

Vsak posamezen programski modul sistem zaznava kot enotno celoto, zato se vsi postopki in funkcije programskega modula izvajajo v enem samem kontekstu.

Kontekst izvajanja modula je razdeljen na odjemalca in strežnik. Poleg tega je mogoče nekatere programske module prevesti tako na strani odjemalca kot na strani strežnika.

Aplikacijski modul (upravljan ali navaden)

Aplikacijski modul opisuje postopke (obdelovalce) dogodkov, ki se inicializirajo na začetku in koncu sistema. Na primer, ko se aplikacija zažene, lahko posodobite nekaj konfiguracijskih podatkov, ob izhodu iz aplikacije pa se lahko vprašate, ali se sploh splača zapustiti program. Poleg tega ta modul prestreže dogodke iz zunanje opreme, na primer trgovalne ali fiskalne. Omeniti velja, da se aplikacijski modul izvaja le, ko se aplikacija zažene interaktivno, torej ko se zažene programsko okno. To se ne zgodi, če je aplikacija zagnana v načinu povezave com.
V platformi 1C 8 sta dva različna aplikacijska modula. To sta modul Regular Application in modul Managed Application. Sprožijo se, ko se zaženejo različni odjemalci. Tako se modul upravljane aplikacije sproži, ko se spletni odjemalec, tanek odjemalec in debel odjemalec zaženejo v načinu upravljane aplikacije. Običajni aplikacijski modul se sproži, ko se debeli odjemalec zažene v običajnem aplikacijskem načinu. Nastavitev načina zagona aplikacije je določena v lastnosti konfiguracije "Osnovni način zagona".

Aplikacijski modul lahko vsebuje vse 3 razdelke - deklaracije spremenljivk, opise postopkov in funkcij ter glavno besedilo programa. Aplikacijski modul je sestavljen na strani odjemalca, kar močno omejuje našo uporabo številnih tipov podatkov. Kontekst aplikacijskega modula lahko razširite z uporabo metod običajnih modulov, ki imajo nastavljeno lastnost »Server Call«. Vse spremenljivke in metode aplikacijskega modula, ki so označene kot izvoz, bodo na voljo v katerem koli konfiguracijskem modulu, ki se izvaja na strani odjemalca. Vendar, ne glede na to, kako mamljivo je, sem ne smete postaviti velikega števila postopkov in funkcij. Več kot je kode v določenem modulu, daljši je čas prevajanja in posledično čas zagona aplikacije.

Kot je navedeno zgoraj, aplikacijski modul obravnava dogodke zagona in zaključka aplikacije. Za obravnavo vsakega od teh dogodkov v aplikacijskem modulu obstaja par obdelovalcev Pred... in Ko... Razlike med njima so naslednje: pri izvajanju kode v obdelovalniku Pred... dejanje še ni in lahko zavrnemo njegovo izvedbo. Temu je namenjena možnost Zavrni. V obdelovalcih On.. je dejanje že izvedeno in ne moremo zavrniti zagona aplikacije ali izstopiti iz nje.

Modul za zunanjo povezavo

  • lahko vsebuje vsa 3 področja
  • ki se nahaja v korenskem delu konfiguracije

Namen modula je podoben namenu aplikacijskega modula. Obdeluje začetne in končne dogodke aplikacije. Zunanji povezovalni modul se sproži, ko se aplikacija zažene v načinu com povezave. Sam proces zunanjega združevanja ni interaktiven proces. V tem načinu poteka programsko delo z informacijsko bazo in okno aplikacije se ne odpre, kar nalaga določene omejitve pri uporabi metod, namenjenih interaktivnemu delu. V tem načinu ni mogoče uporabiti klicev pogovornih obrazcev, opozoril in sporočil uporabniku itd. Enostavno jih ne bodo usmrtili.

Tako kot v aplikacijskem modulu so tukaj na voljo vsa tri področja: deklaracije spremenljivk, opisi postopkov in funkcij ter glavno besedilo programa. Glavna razlika od aplikacijskega modula je v tem, da v načinu com-povezave vse delo z informacijsko bazo poteka na strani strežnika, zato je modul za zunanjo povezavo sestavljen na strani strežnika. V skladu s tem izvozne spremenljivke in metode običajnih odjemalskih modulov niso na voljo v njem.

Sejni modul

  • deluje na strani strežnika
  • ki se nahaja v korenskem delu konfiguracije

To je visoko specializiran modul, zasnovan izključno za inicializacijo parametrov seje. Zakaj ste morali narediti svoj modul za to? Njegova uporaba je posledica dejstva, da je samo aplikacijo mogoče zagnati v različnih načinih (kar ima za posledico izvajanje upravljanega aplikacijskega modula, navadnega aplikacijskega modula ali zunanjega povezovalnega modula), inicializacijo parametrov seje pa je treba izvesti ne glede na načina zagona. Da ne bi pisali iste programske kode v vseh treh modulih, smo potrebovali dodaten modul, ki deluje ne glede na način zagona aplikacije.

V modulu seje obstaja en sam dogodek »SettingSessionParameters«, ki se izvede zelo prvi, celo pred dogodkom modula aplikacije BeforeSystemStartOperation. Razdelek za deklaracijo spremenljivk in razdelek glavnega programa v njem nista na voljo. Prav tako ne morete deklarirati metod izvoza. Modul je sestavljen na strani strežnika.

Skupni moduli

  • lahko vsebuje področje, ki opisuje postopke in funkcije
  • izvaja se na strani strežnika ali odjemalca (odvisno od nastavitev modula)
  • se nahaja v veji drevesa konfiguracijskih objektov “Splošno” - “Splošni moduli”

Skupni moduli so namenjeni opisovanju nekaterih skupnih algoritmov, ki bodo klicani iz drugih konfiguracijskih modulov. Splošni modul ne vsebuje območij za deklaracijo spremenljivk in glavnega besedila programa. V njem lahko navedete metode izvoza, katerih razpoložljivost bo določena z nastavitvami modula (na kateri strani se izvaja: na strani strežnika ali odjemalca). Zaradi dejstva, da razdelek z opisom spremenljivk ni na voljo, globalnih spremenljivk ni mogoče definirati v skupnih modulih. Za to lahko uporabite aplikacijski modul.

Obnašanje skupnega modula je odvisno od nastavljenih parametrov (globalni ali ne, različne zastavice prevajanja, ali je na voljo klic strežnika itd.). Tukaj je nekaj nasvetov za nastavitev običajnih modulov:

Dobra praksa je, da globalne zastave ne uporabljate povsod. To bo skrajšalo čas zagona aplikacije, izboljšalo pa se bo tudi berljivost kode (seveda, če ima skupni modul povsem smiselno ime);
- Ni priporočljivo uporabljati več kot ene zastavice prevajanja. Ni toliko metod, ki jih je treba izvajati v različnih kontekstih, in če so takšne metode še vedno potrebne, se jim lahko dodeli ločen skupni modul;
- zastavica “Klicni strežnik” je smiselna le, če je modul preveden “Na strežniku”. Zato je treba odstraniti vse druge zastavice prevajanja, da se izognete različnim težavam;
- če metode modula vključujejo obsežno obdelavo podatkov, branje in pisanje v bazo podatkov, je za povečanje hitrosti dela bolje onemogočiti nadzor dostopa z nastavitvijo zastavice »Privilegirano«. Ta način je na voljo samo za module v skupni rabi, prevedene na strežniku.

Modul obrazca

  • lahko vsebuje vsa 3 področja
  • izvajajo na strani strežnika in odjemalca

Modul obrazca je zasnovan za obdelavo uporabniških dejanj s tem obrazcem (obdelava dogodka klika na gumb, spreminjanje podrobnosti obrazca itd.). Obstajajo tudi dogodki, ki so neposredno povezani s samim obrazcem (na primer njegovo odpiranje ali zapiranje). Moduli upravljane in navadne oblike se razlikujejo predvsem po tem, da je modul upravljane oblike jasno razdeljen na kontekst. Vsak postopek ali funkcija mora imeti direktivo za prevajanje. Če direktiva prevajanja ni podana, se ta postopek ali funkcija izvede na strani strežnika. V normalni obliki se vsa koda izvaja na strani odjemalca.

Struktura upravljanega obrazca vsebuje razdelek za deklaracije spremenljivk, opise postopkov in funkcij ter glavno besedilo programa (izvedeno v času inicializacije obrazca). Do standardnih dogodkov obrazca dostopamo preko seznama pričakovanih postopkov in funkcij obrazca (Ctrl+Alt+P), ali prek palete lastnosti samega obrazca.

Če ima obrazec dodeljen glavni atribut, postanejo lastnosti in metode aplikacijskega objekta, uporabljenega kot glavni atribut, na voljo v modulu obrazca.

Objektni modul

  • lahko vsebuje vsa 3 področja
  • deluje na strani strežnika

Ta modul je na voljo za večino konfiguracijskih objektov in je na splošno namenjen obdelavi dogodkov, ki so neposredno povezani z objektom. Na primer dogodki snemanja in brisanja predmetov, preverjanje izpolnitve podrobnosti objekta, objavljanje dokumenta itd.

Nekateri dogodki modula objekta podvajajo dogodke modula obrazca. Na primer dogodki, povezani s posnetkom. Vendar je treba razumeti, da se bodo dogodki modula obrazca izvajali izključno v določeni obliki predmeta, to je, ko je določen obrazec odprt. In dogodki objektnega modula bodo poklicani v vsakem primeru, tudi v trenutku programskega dela z objektom. Če torej potrebujete metode, povezane z objektom, ne da bi bile vezane na določeno obliko predmeta, je za to bolje uporabiti objektni modul.

Modul upravljalnika objektov

  • lahko vsebuje vsa 3 področja
  • deluje na strani strežnika

Modul upravljalnika objektov se je pojavil šele od različice 1C 8.2. Modul upravitelja obstaja za vse objekte aplikacije in je zasnovan za upravljanje tega objekta kot konfiguracijskega objekta. Modul upravitelja vam omogoča razširitev funkcionalnosti objekta z uvedbo (pisanja) postopkov in funkcij, ki se ne nanašajo na določen primerek objekta baze podatkov, temveč na sam konfiguracijski objekt. Modul upravljalnika objektov vam omogoča, da postavite splošne postopke in funkcije za dani objekt in dostopate do njih od zunaj, na primer iz obdelave (seveda, če ima ta postopek ali funkcija ključno besedo Izvozi). Kaj nam to prinaša novega? Na splošno nič, razen organiziranja postopkov po objektih in njihovega shranjevanja na ločenih mestih - moduli upravitelja objektov. Te postopke in funkcije lahko prav tako uspešno umestimo v splošne module, vendar 1C priporoča umestitev splošnih procedur in funkcij objektov v modul Object Manager. Primeri uporabe postopkov in funkcij modula Object Managers: začetno izpolnjevanje posameznih podrobnosti imenika ali dokumenta pod določenimi pogoji, preverjanje izpolnjevanja podrobnosti imenika ali dokumenta pod določenimi pogoji itd.

Ukazni modul

  • lahko vsebuje razdelek, ki opisuje postopke in funkcije
  • izvede na strani odjemalca

Ukazi so objekti, podrejeni objektom aplikacije ali konfiguraciji kot celoti. Vsak ukaz ima ukazni modul, v katerem je mogoče opisati vnaprej določen postopek CommandProcess() za izvedbo tega ukaza.

V novih različicah sistemskih konfiguracij 1C:Enterprise so se številne funkcije in postopki premaknili iz objektnih modulov (dokumenti, imeniki itd.) V upravljalne module. Poglejmo si razlike med tema dvema moduloma.

V skladu s teorijo objektno usmerjenega programiranja so objektne metode razdeljene v dve skupini: statične in preproste. Preproste metode imajo dostop samo do določenega primerka razreda. Statične metode nimajo dostopa do podatkov o predmetu, ampak delujejo z razredom kot celoto.

Če vse to prevedemo v sistem 1C:Enterprise, potem Objektni modul vsebuje preproste metode. Če jih želite uporabiti, morate najprej pridobiti določen predmet: element imenika, dokumenta itd. Modul upravitelja vsebuje statične metode. Za njegovo uporabo ni treba posebej pridobiti vsakega posameznega predmeta; omogoča delo s celotno zbirko hkrati.

Objektni modul imajo lahko postopke in funkcije, ki jih je mogoče uporabiti zunaj. V ta namen je tak postopek ali funkcija označena z besedo Izvozi.

Funkcija NewFunction () Izvoz

Če želite uporabiti takšno funkcijo iz objektnega modula, ga morate najprej pridobiti s povezavo do zahtevanega objekta s funkcijo GetObject().



Na = Objekt. NovaFunkcija();

Podobno lahko ustvarite nove spremenljivke, ki jih je mogoče uporabiti iz različnih konfiguracijskih objektov.

Variable NewVariable Export

Imeniški element = Imeniki. Nomenklatura. FindByCode("000000001" ) ;
Objekt = element imenika. GetObject();
Predmet. NovaSpremenljivka= );

Na ta način lahko dopolnite standardne postopke, funkcije in lastnosti (spremenljivke) objektov. Takšne spremenljivke so dinamične, niso shranjene v informacijski bazi in obstajajo samo med delom s prejetim objektom.

Modul upravitelja ima vse enake zmožnosti, edina razlika je v tem, da vam za uporabo ni treba pridobiti določenega predmeta; modul upravitelja vam omogoča delo s celotno zbirko predmetov določene vrste.

Postopek NewProcedure() Izvoz

Imeniški element = Imeniki. Nomenklatura. NewProcedure();

Ali za spremenljivko:

Variable NewVariable Export

Imeniški element = Imeniki. Nomenklatura. novaSpremenljivka;

Oglejmo si razlike v uporabi objektnega modula in upravljalnega modula na primeru postopka izdelave tiskane oblike dokumenta.

Pri uporabi objektnega modula bo koda videti takole:

Funkcija Tiskanje dokumenta (Povezava) Izvoz
//Tej funkciji morate posredovati povezavo do določenega dokumenta
Vrni TabDoc;
EndFunction

Na obrazcu dokumenta morate ustvariti proceduro, ki bo posredovala povezavo do dokumenta funkciji tiskanja.

&OnClient
Tiskanje postopka (ukaz)
TabDoc = PrintOnServer();
TabDoc. Prikaži();
EndProcedure
&Na strežniku
Funkcija PrintOnServer()
Doc = FormAttributesValue("Object" ) ;
Vrnitev Doc. PrintDocument(Object. Link) ;
EndFunction

Pomanjkljivost te metode je, da natisne le en predmet. Če morate natisniti več dokumentov hkrati, morate dobiti vsakega od njih in nato poklicati funkcijo iz objektnega modula. To zahteva znatne sistemske vire, ker se ob pridobitvi predmeta celoten objekt postavi v RAM.

Z vidika zmogljivosti je veliko bolje uporabiti modul upravitelja, kadar koli je to mogoče. V našem primeru bo rešitev problema videti takole.
Funkcija PrintOnServer()
Dokumenti za vračilo. Naš dokument. PrintDocument(ArrayLinks);
EndFunction

Če uporabljate modul upravitelja, lahko postopek tiskanja prikličete tako iz obrazca dokumenta kot iz obrazca seznama, pri čemer posredujete povezave do več dokumentov v matriki. V tem primeru sistemu ni treba pridobiti vsakega dokumenta iz matrike, kar bistveno prihrani sistemska sredstva.

Torej, kdaj uporabiti objektni modul in kdaj uporabiti upravljalni modul?

Vse je odvisno od naloge. Če sklicevanje na objekt zadostuje za njegovo dokončanje (na primer opravilo tiskanja), potem je bolje uporabiti modul upravitelja. Če je naloga spreminjanje podatkov, na primer izpolnjevanje dokumenta, potem ga morate dobiti in uporabiti objektni modul.