Globaalne moodul 1s 8.3. Üldmoodulid

Artikkel jätkab tsüklit "Esimesed sammud 1C arenduses", käsitleb üksikasjalikult järgmisi probleeme:

  • Mis on tarkvaramoodul ja millistest osadest see koosneb?
  • Milleks on rakendusmoodul? Miks on kaks? Millal see algab? Millised on töö üksikasjad?
  • Millised sündmused on seotud süsteemi käivitamisega, kuidas ja kus neid käsitleda?
  • Milleks on välisühendusmoodul? Millal ja kuidas seda kasutada?
  • Millal seansimoodulit kasutatakse?
  • Mis on jagatud moodulid? Millised on selle omadused ja tööreeglid? Miks kasutada atribuuti Tagastusväärtuste taaskasutamine?
  • Millal vormimoodulit kasutatakse ja milliseid sündmusi saab selles käsitleda?
  • Milleks on objektmoodul? Millistest osadest see koosneb? Kuidas vaadata saadaolevaid mooduli sündmusi?
  • Millised on väärtushalduri moodulitega (konstandid) ja kirjekomplekti moodulitega (registrite jaoks) töötamise peensused?
  • Mis vahe on objektimoodulil ja haldurimoodulil? Millal peaksite viimast kasutama?

Kohaldatavus

Artikkel käsitleb platvormi 1C:Enterprise 8.3.4.496. Materjal on asjakohane ka praeguste platvormiväljaannete jaoks.

Moodulid rakenduses 1C: Enterprise 8.3

Moodulid on need objektid, mis sisaldavad programmi koodi.

Platvormil on üsna palju erinevaid mooduleid, millest igaühel on oma eesmärk ja funktsioonid.

Iga koodirida peab olema moodulis. On üldotstarbelisi mooduleid ja objektmooduleid. Mõnda moodulit saab koostada nii Kliendis kui ka Serveris ning mõnda ainult Serveris.

Moodul võib koosneda mitmest osast. Muutujate deklaratsiooni jaotis kirjeldab selle mooduli kohalikke muutujaid, mida saab hiljem kasutada mis tahes protseduurides.

Iga protseduuri käigus pääsete juurde mooduli muutujale. Lisaks võib protseduuri enda sees olla veel üks sama nimega muutuja deklaratsioon. See on selle protseduuri kohalik muutuja.

Vaatamata samale nimele on need kaks erinevat muutujat: ühte kasutatakse konkreetse protseduuri sees ja teist väljaspool seda.

Mõnes moodulis saab muutujaid seada serveris või kliendis kompileerimiskohale (kättesaadavusele). Näiteks:

Muutujate deklaratsiooni jaotisele järgneb protseduuride ja funktsioonide jaotis, mis määrab mooduli kohalikud meetodid. Mõned moodulid nõuavad, et määraksite, kus protseduur või funktsioon koostatakse.

Põhimõtteliselt võib koostamise käskkirja ära jätta. Sel juhul on kompileerimisdirektiiv Server. Programmikoodi analüüsimise mugavuse huvides on siiski soovitatav selgelt märkida, kus see protseduur koostatakse. Protseduuride kirjeldamise järjekord ei oma tähtsust.

Mooduli lõpus on peale kõigi protseduuride ja funktsioonide kirjeldust põhiprogrammi osa, mis võib sisaldada mõningaid operaatoreid, initsialiseerivad vormimooduli lokaalsed muutujad. See jaotis käivitatakse mooduli avamisel.

Nii et näiteks elemendi vormi avamisel käivitatakse ennekõike vormimooduli põhiprogrammi osa.

Tuleb märkida, et muutujate deklaratsiooni sektsioon ja programmi põhiosa ei eksisteeri kõigi moodulite jaoks (st need jaotised on mõnes moodulis kehtetud). Protseduuri ja funktsiooni kirjelduse jaotis võib eksisteerida absoluutselt igas moodulis.

Rakenduse moodul

See moodul on mõeldud rakenduste käivitamise ja sulgemise sündmuste käsitlemiseks. Näiteks saate rakenduse käivitamisel Internetist alla laadida vahetuskursse. Rakenduse lõpus saate veenduda, et kasutaja kavatseb töö lõpetada.

Ka rakenduste moodulis on spetsiaalsed töötlejad, mis võimaldavad väliseid sündmusi seadmetest pealt kuulata.

Need võivad olla sündmused magnetkaardilugejalt, maksuregistripidajalt. Ja neid sündmusi saab kuidagi käsitleda ka.

Tuleb märkida, et rakendusmoodulis jälgitakse süsteemi interaktiivset käivitamist.

Rakendusmoodul ei tööta, kui programm 1C käivitatakse näiteks ühenduse režiimis. Sel juhul programmi akent ei looda.

Tuleb märkida, et platvormis 8.3 on kaks erinevat rakendusmoodulit: hallatud rakenduse moodul ja tavarakenduse moodul. Hallatud rakenduse mooduli sündmused käivitatakse, kui käivitatakse hallatava rakenduse õhukesed ja paksud kliendid ning veebiklient.

Moodul Üldine rakendus töötab, kui paksu klient käivitatakse režiimis Üldine rakendus, millel on vormis tavaline käsuliides peamenüü.

Kui rakendus töötab ja Hallatud ja režiimis Üldine rakendus, siis on vaja kirjeldada käitleja protseduure nagu mooduli puhul hallatud rakendus, ja mooduli jaoks Üldine rakendus.

Moodul hallatud rakendus saab valida konfiguratsiooni juursõlme kontekstimenüüst.

Seda moodulit saab avada ka juurkonfiguratsioonielemendi omaduste paletist.

Mooduli avamiseks Üldine rakendus, peaksite lugema konfiguratsiooniseadeid (käsk Valikud menüüs Teenindus).

Avaneb vorm Valikud. Järjehoidja On levinud konfiguratsiooni muutmise režiim tuleb määrata Hallatud rakendus Ja Üldine rakendus.

Sel juhul moodul Üldine rakendus saab avada ka juursõlme omadustest.

Sündmuste loend, mida saab töödelda Hallatud Ja Üldine rakendus sama.

Sellesse moodulisse saab paigutada muutujate deklaratsiooni sektsiooni, suvaliste protseduuride ja funktsioonide kirjeldamise osa ning põhiprogrammi jaotise. Kuid lisaks suvalistele protseduuridele ja funktsioonidele võivad moodulis asuda ka spetsiaalsed sündmuste käsitlejad.

Saadaolevate töötlejate loendit saab vaadata, kui moodul on avatud, helistades aktiivse mooduli protseduuride ja funktsioonide loendile.

Avanevas Protseduuride ja funktsioonide aknas kuvatakse kõik selle mooduli protseduurid ja funktsioonid ning sündmused, millele pole veel töötlejaid loodud.

Süsteemi käivitamisega on seotud kaks sündmust (“enne” ja “kell”). Kaks süsteemi väljalülitamisega seotud sündmust (“enne” ja “kell”). Nagu ka välise sündmuse töötlemine (näiteks kaupluse sisseseade sündmus).

Kui "enne" sündmuste käitleja käivitatakse, loetakse, et toiming ei ole veel toimunud. Kui "sees" sündmuste käitleja käivitatakse, on toiming juba toimunud.

Sündmus Enne süsteemi käivitamist ilmneb hetkel, kui Enterprise 8.3 käivitatakse, kuid rakendus ise pole veel ekraanile ilmunud. Sellel sündmusel on selline parameeter nagu Keeldumine.

Kui see parameeter on seatud väärtusele Tõsi, siis rakendus ei käivitu. Sündmus Süsteemi käivitamisel eeldab, et toiming on juba tehtud, aken on juba loodud ja sel juhul saame näiteks kuvada mõne erivormi. Te ei saa enam käivitamisest keelduda.

Samamoodi on rakendus enne süsteemi väljalülitamist endiselt avatud ja saate seda mitte sulgeda. Kui süsteem suleti, oli rakenduse aken juba suletud. Võimalik on teha ainult lisatoiminguid, nagu mõne faili kustutamine või meili saatmine.

Moodulis hallatud rakendus käskkirjad protseduuride ja funktsioonide koostamiseks ei ole määratud, kuna moodul kompileeritakse täielikult Kliendi poolel. See tähendab, et mooduli protseduurides ja funktsioonides ei pääse me otse ligi näiteks teatmeteostele.

Kui moodulist hallatud rakendus peate tegema serverikõne, siis peate selleks looma spetsiaalse välja pandud lipuga .

Moodulis Üldine rakendus selliseid piiranguid pole, kuna see moodul kompileeritakse paksu kliendi laadimisel. Peaaegu kõik andmetüübid on paksus kliendis saadaval.

Rakenduse mooduli protseduure, funktsioone ja muutujaid võib kirjeldada kui eksporti.

Kuna moodul kompileeritakse täielikult Kliendi peal, tähendab see, et kliendiprotseduurides pääseme sellele meetodile ja omadusele juurde.

Näiteks mõne objekti vormimoodulist saab välja kutsuda rakendusmooduli protseduuri või funktsiooni. Üldiste algoritmide kirjeldamiseks on siiski soovitatav kasutada üldmooduleid. Rakendusmooduli põhieesmärk on käsitleda algus- ja lõpp-punkti.

Analoogiliselt rakendusmooduliga on see moodul loodud programmi avamise ja sulgemise sündmuse käsitlemiseks.

Erinevalt rakendusmoodulist, mis käivitatakse rakenduse interaktiivsel käivitamisel, töötab väline ühendusmoodul com-ühenduse režiimis, st. kui luuakse 1C:Enterprise 8 objekt ja luuakse ühendus kindla andmebaasiga.

Selles moodulis on sündmused: Süsteemi käivitamisel Ja süsteemi väljalülitamisel.

Välise ühendusmooduli saab avada kas juurkonfiguratsiooniobjekti tasemel kontekstimenüü või juursõlme omaduste paleti abil.

Väline liitumisprotsess ise on infobaasiga programmilise töö protsess, mitte interaktiivne. Sellest tulenevalt ei saa praegu kasutada dialoogivorme, kuvada hoiatussõnumeid, kuna puudub kasutajaliides.

Välisühenduse moodulis on võimalik kirjeldada ekspordimuutujaid ja ekspordimeetodeid, mis on saadaval sellel poolel, kus toimub väline kõne 1C:Enterprise 8.3-le.

Kuna välisühenduses pole kasutajaliidest, kompileeritakse välisühenduse moodul täielikult serveris.

seansi moodul

Seda moodulit on vaja seansi parameetrite lähtestamiseks. Seansi parameetrid on kiired globaalsed muutujad, mille väärtused on saadaval kõikjal konfiguratsioonis.

Seansimooduli saate avada kas kontekstimenüü või juursõlme atribuutide paleti kaudu.

Seansimoodulis pakutakse sündmust SettingSessionParameters.

Kui rakendus käivitub, nimetatakse seda protseduuri kõige esimeseks. Seansi parameetreid on vaja iga rakenduse toimimiseks: nii interaktiivsel käivitamisel kui ka välise ühenduse režiimis käivitamisel.

Seansimoodul kirjeldab erinevaid toiminguid seansi parameetrite lähtestamiseks sõltuvalt erinevatest tingimustest.

See moodul kirjeldab reeglina mitmeid protseduure, mis protseduurist välja kutsutakse SettingSessionParameters. Seetõttu on kõik need protseduurid eraldatud eraldi mooduliks.

Seansimoodul töötab alati privilegeeritud režiimis. See tähendab, et andmebaasile juurdepääsul lubade kontrolli ei teostata. Seansimoodul koostatakse Serveris, s.o. on võimalik kutsuda mis tahes serverimeetodeid (sealhulgas väärtuste lugemist andmebaasist).

Seansimoodulis on võimalik defineerida ainult protseduure ja funktsioone, st. puudub muutujate deklaratsiooni sektsioon ja põhiprogrammi osa. Te ei saa seansimoodulis deklareerida ekspordimeetodeid.

Kui süsteemi käivitamisel on vaja teha Serveris mingeid toiminguid, näiteks luua mõne kataloogi element, siis on valikuna võimalik kasutada seansimoodulit, kuna see kompileeritakse serveris ja käivitatakse süsteemi käivitamisel alati usaldusväärselt. Siiski tuleb arvesse võtta järgmisi punkte:

  • menetlust SettingSessionParameters käivitatakse mitte ainult süsteemi käivitamisel, vaid ka initsialiseerimata seansi parameetritele juurdepääsul. Need. SetSessionParametersi töötlejat saab rakenduse täitmise ajal mitu korda välja kutsuda;
  • kui seansiparameetrite massiivi elementide arv on võrdne nulliga (nõutavate parameetrite massiivi andmetüüp on Undefined), siis on see rakenduse käivitamise hetk;
  • kuna seansimoodul töötab privilegeeritud režiimis ja juurdepääsu kontrolle ei toimu, peaksite olema andmebaasiobjektidega töötades väga ettevaatlik, kuna kasutaja pääseb juurde andmetele, mida talle ei tohiks anda;
  • kui süsteem käivitub, pole veel kindlalt teada, kas rakendus käivitatakse. Sel juhul saab sündmuse SetSessionParameters sündmuste käitlejas teha lisatoiminguid.

Need moodulid on mõnede üldiste algoritmide kirjeldused, st. protseduurid ja funktsioonid, millele saab helistada erinevatest kohtadest.

Loogiliselt seotud meetodeid saab rühmitada erinevatesse ühistesse moodulitesse. Need moodulid luuakse harus Üldine.

Saate lisada mis tahes arvu jagatud mooduleid. Ühise mooduli meetodite mujal konfiguratsioonis kättesaadavaks tegemiseks tuleb need määratleda märksõnaga Ekspordi. Tavaliste moodulite kliendiprotseduurid on saadaval Kliendis ja serveriprotseduurid - Serveris.

Ühistes moodulites on saadaval ainult protseduure ja funktsioone kirjeldav jaotis. Need. Ühismoodulis ei saa muutujaid deklareerida ega põhiprogrammi osa kirjeldada.

Kui on vaja globaalset muutujat, saab kasutada kas seansi parameetreid või rakendusmooduli ekspordimuutujaid.

Tavaliste moodulite jaoks saate määrata mõned parameetrid, mis mõjutavad selle mooduli käitumist. Kui atribuut Globaalne on seatud ühisele moodulile, on selles moodulis deklareeritud ekspordimeetodid väljastpoolt otse juurdepääsetavad, ilma täiendavate juhisteta.

Need. a Üldmoodul osaleb globaalse konfiguratsiooni konteksti kujundamisel.

Kinnisvara Globaalne tavaliste moodulite jaoks võib olla kasulik. Siiski ei tohiks te seda kasutada universaalselt kõigi levinud moodulite jaoks.

Need , mis on tähistatud tähisega Globaalne, kompileeritakse süsteemi käivitamisel. Mida rohkem selliseid mooduleid, seda aeglasemalt programm käivitub.

Kui lipp Globaalne Sest Üldmoodul ei ole määratud, siis tehakse selle mooduli kompileerimine selle esimese kõne ajal (st pärast süsteemi käivitumist).

Lisaks mõjutab globaalsete jagatud moodulite kasutamine koodist arusaamist. Mitteglobaalse jagatud mooduli meetodite kutsumine toimub nime kaudu Üldmoodul ja meetodi nimi, näiteks:
Kulude arvutamise moodul. Kaudsete kulude jaotamine();

Samas peaksid üldmoodulite nimetused kajastama neis kirjeldatud protseduuride sisu. Ühise mooduli nime määramine protseduuri kutsumisel muudab koodi arusaadavamaks.

Sest Üldmoodul V Omaduste palett omadust saab määrata Privilegeeritud.

Juurdepääsuõigusi privilegeeritud moodulis ei kontrollita. See on vajalik, kui sisse Üldmoodul on vaja teostada andmete hulgitöötlust, hankides andmeid andmebaasist.

Juurdepääsukontroll pikendab andmebaasi juurdepääsuaega ja hulgialgoritmid peavad sageli töötama nii kiiresti kui võimalik.

Näiteks palgaarvestus on ressursimahukas tegevus. Seda tuleb teha nii kiiresti kui võimalik. Selleks paigutatakse palka arvutavad algoritmid privilegeeritud .

Samas jäävad nendest välja kõik protseduurid, mis tagavad palgaarvestuse dokumentide täitmist Ühised moodulid. Just nende protseduuride käigus teostatakse juurdepääsu kontroll.

Sel viisil on võimalik jõudlust oluliselt suurendada. See kehtib eriti juhul, kui kasutatakse tabelikirjetele rida-realt juurdepääsu eristamise mehhanismi.

Kui ühismoodul on privilegeeritud, saab selle mooduli protseduure kompileerida ainult serveris.

On olukordi, kus mõni objekt peaks olema kasutajale kättesaamatu, näiteks teatud kataloog. Kuid ühe dokumendi koostamisel tuleb pöörduda selle juhendi poole.

Need. kasutaja õigusi on vaja ajutiselt laiendada ja need seejärel algsesse olekusse tagasi viia. Selle efekti saab kasutada privilegeeritud Ühised moodulid.

Selleks on privilegeeritud Üldmoodul on vaja väljastada protseduur, mis pääseb ligi vajalikele andmetele.

See protseduur kutsutakse välja vastavast dokumendist. Need. selle protseduuri käivitamise ajal antakse kasutajale tegelikult laiendatud õigused.

Sest Ühised moodulid on võimalik täpsustada koostamise asukohta. Lippe kasutatakse selleks, et teha kindlaks, kas ühismoodul on välisühenduse režiimis saadaval kliendis (hallatud rakenduses), serveris.

Lisaks, kui lülitate konfiguratsiooni redigeerimise režiimi hallatavale rakendusele ja tavalisele rakendusele, on võimalik veel üks kompileerimiskontekst - klient (tavaline rakendus).

Seega on programmi toimimiseks neli võimalust. Olenevalt töötavast rakendusest, olenevalt tööst kliendis või serveris, on teatud ühised moodulid saadaval või mitte.

Lisaks kompileerimislippude määramise võimalusele on võimalik määrata Common moodulis asuvate protseduuride ja funktsioonide kompileerimisjuhised.

Kui meetodi jaoks on määratud kompileerimisdirektiiv, siis kuigi Generic moodul on saadaval kõigis määratud kontekstides, piirab konkreetse meetodi juurdepääsetavust kompileerimisdirektiiv.

Sel juhul ei saa protseduurile juurde pääseda kontekstis, mis pole üldiselt kogu mooduli jaoks saadaval.

Kui kompileerimisdirektiiv pole protseduuri (funktsiooni) jaoks määratud, siis kompileeritakse see kõigis mooduli jaoks määratletud kontekstides.

Need. tegelikult tehakse protseduurist mitu koopiat. Konkreetse kompileeritud eksemplari valik sõltub sellest, kus protseduur kutsutakse (lähima väljakutse reegli järgi). Samas tuleb arvestada, et sellise protseduuri kood tuleb koostada arvestades selle ligipääsetavust kõigis mooduli jaoks määratletud kontekstides.

Ühised moodulid, mis on saadaval mitmes erinevas kontekstis korraga, on mõeldud peamiselt mitmes kontekstis kättesaadavate protseduuride loomiseks.

Üldise mooduli loomisel on hea tava mitte määrata kompileerimisjuhiseid. Need. protseduuride ja funktsioonide ligipääsetavus peaks olema määratud mooduli enda omadustega.

Selle lähenemisviisi korral asuvad kliendiprotseduurid eraldi ühistes moodulites ja serveriprotseduurid eraldi ühistes moodulites.

Moodulid, millel on mitu kompileerimislippu, kasutatakse praktikas harva. Need on mõned tavalised toimingud, mis on saadaval nii kliendis kui ka serveris. Tavaliselt on need mõned lihtsad arvutused.

Tähtis! Jagatud mooduli ekspordiserveri meetoditele on võimalik ligi pääseda Kliendilt, kuid ainult siis, kui see jagatud moodul on kompileeritud ainult serveris. Samal ajal on spetsiaalne märkeruut ette nähtud kliendi juurdepääsu võimaldamiseks. .

Mitteglobaalsete ühiste moodulite puhul on võimalik funktsioonide tagastatud väärtused vahemällu salvestada. Need. süsteem mäletab selle täitmise tulemust pärast funktsiooni esimest väljakutsumist. Kui seda funktsiooni samade parameetritega uuesti välja kutsuda, tagastab süsteem väärtuse juba vahemälust.

Selle mehhanismi eesmärk on kiirendada korduvaid kõnesid. Selle käitumise konfigureerimiseks peate Omaduste palett moodul, et määrata atribuudi Tagastusväärtuste taaskasutamine sobiv väärtus.

Vaikimisi on selle atribuudi väärtuseks määratud Ära kasuta. Muud võimalikud väärtused: vahemälu Kõne ajal, või Seansi ajaks.

Seda omadust on mõttekas kasutada ainult nende funktsioonide puhul, mille tulemus sõltub ainult sisendparameetritest. See mehhanism on saadaval ainult mitteglobaalsete ühiste moodulite jaoks.

Kui valitud on vastav parameetri väärtus Kõne kestuseks, on vahemälu aktiivne seni, kuni töötab protseduur, millest ühismooduli meetod välja kutsuti. Kui väärtus on Seansi kestuseks, loetakse vahemälu tingimuslikult aktiivseks, kui kasutaja töötab.

Siiski on teatud ajapiirangud. Vahemälu tühjendatakse automaatselt 20 minutit pärast väärtuse vahemällu salvestamist.

Vormi moodul

See moodul on loodud kasutaja toimingute töötlemiseks. Näiteks kirjeldage programmi reaktsioonialgoritmi, kui nuppu vajutatakse. Või näiteks väärtuse väljale sisestamise ajal kontrolli kohe õigsust.

Lisaks vormi juhtelementidega seotud sündmustele (nupud, sisestusväljad) on sündmused, mis on seotud otseselt vormi endaga.

Näiteks saate käsitleda vormi avamise sündmust ja teha esialgse lähtestamise. Samuti saate käsitleda vormi sulgemise sündmust ja kontrollida, kas kasutaja sisestas kõik õigesti.

On hallatavaid ja tavapäraseid vorme. Vormiandmete moodulid erinevad eelkõige selle poolest, et hallatav vormimoodul on selgelt konteksti eraldatud. Igal protseduuril (funktsioonil) peab olema kompileerimisdirektiiv. Tavalisel kujul kasutatakse kogu koodi Kliendil.

Hallatava vormi moodulis saate deklareerida protseduure ja funktsioone, deklareerida muutujaid ja kirjeldada põhiprogrammi jaotist.

Põhiprogrammi programmikood käivitatakse vormi initsialiseerimise hetkel, st. kui kasutaja selle avab. Joonisel on näidatud hallatava vormi standardsündmuste loend.

Hallatud vormi sündmuste loend on nähtav ka vormi enda atribuutide loendis. Seda loendit kutsutakse välja hallatava vormi redaktoris.

Hallatud kujul saate käsitleda üksuse kirjutamissündmust. See sündmus on kohal ainult objektide vormide (teatmeteosed, dokumendid ja mõned muud) puhul. Kui vorm ei ole konkreetse objektiga seotud, siis kirjutamissündmust pole.

Tavalise vormimooduli puhul on tavasündmuste loend mõnevõrra väiksem, sest hallatavas vormis tehakse palju sündmusi paarikaupa (üks täidetakse Kliendis ja teine ​​Serveris). Tavalisel kujul käivitatakse kogu kood Kliendil.

Objekti moodul

Need moodulid on tüüpilised kataloogide, dokumentide, arvutustüüpide plaanide, kontoplaanide ja paljude muude objektide jaoks. Objektimoodul on mõeldud standardsete sündmuste töötlemiseks. Näiteks kataloogielemendi sisestamise sündmus, elemendi kirjutamise, kustutamise, dokumendi postitamise jne.

Põhimõtteliselt on kirjutamissündmus olemas ka vormimoodulis. Kuid kirjutamissündmus vormimoodulis toimub interaktiivse kirjutamise ajal, kui töötate konkreetse vormiga.

Objektimooduli kirjutamissündmus käivitatakse antud objekti mis tahes vormis kirjutamisel. Samuti, kui objekt on kirjutatud programmiliselt, käivitub sel juhul objekti mooduli sündmus.

Objektimooduli kirjutamise korral saate manustada kõik kirjutatavate andmete õigsuse kontrollid, kuna see protseduur toimib absoluutselt iga kirjutamise ajal.

Selle objekti moodulit saab kutsuda kontekstimenüüst, objekti omaduste paletist ja objekti redigeerimise aknast.

Alloleval joonisel on kataloogimooduli saadaolevate sündmuste loend.

Objektimoodulisse saate paigutada muutuja deklaratsiooni jaotise, kirjeldada suvalisi funktsioone, mis võivad olla sündmusega seotud või mitte, samuti põhiprogrammi jaotist.

Programmi põhiosas saate näiteks lähtestada selle mooduli lokaalsed muutujad. See programmikood käivitatakse objektimooduli avamisel.

Tuleb märkida, et kõik objektimooduli protseduurid kompileeritakse serveris. Sellest tulenevalt ei ole objektmooduli protseduuride ja funktsioonide jaoks kompileerimisjuhiseid vaja. Mõnel konfiguratsiooniobjektil pole objektimooduleid.

See on tingitud objektide endi omadustest. Selliste objektide hulka kuuluvad Konstandid Ja Registrid. Sest Püsiv objektmoodulit pole, kuid on väga sarnane moodul nimega Väärtusjuhi moodul.

IN Väärtusjuhi moodul saate hallata sündmuste salvestamist Konstandid ja täitmistšeki töötlemine.

Kogu mooduli kontekst käivitatakse serveris.

Registrite jaoks on olemas kirjekomplekti moodul.

Sellel moodulil on ka võimalus käsitleda sündmuste kirjutamist ja teostada rahvastikukontrolli.

Jaotises Objektimoodulid, Väärtusehalduri moodulid (konstandid) ja Kirjekomplekti moodulid (registrite jaoks) saate kirjeldada meetodeid, mida saab muuta eksporditavaks ja need meetodid on saadaval väljastpoolt.

Need. Lisaks objektiklassi fikseeritud meetodite kasutamisele saate objektimoodulis luua objektile täiendavaid meetodeid. See moodul peaks kirjeldama vastavat protseduuri märksõnaga Ekspordi.

Siis on võimalik sellele protseduurile viidata väljastpoolt. Lisaks kuvatakse see meetod konteksti vihjes. Uued meetodid konteksti tööriistaspikris on esile tõstetud sinisega (sinine ikoon p() protseduuride jaoks ja f() funktsioonide jaoks).

Samamoodi saate luua uue omaduse, deklareerides märksõnaga muutuja Ekspordi. Sellele kinnistule pääseb ligi ka väljast.

Seega on võimalik laiendada objektide funktsionaalsust (lisada uusi meetodeid ja uusi omadusi). Atribuudid on dünaamilised ja neid ei salvestata andmebaasi.

Kui teil on vaja andmebaasi salvestatava objekti jaoks kasutada atribuuti, peaksite looma objekti atribuudi.

Halduri moodul

See moodul on olemas paljude objektide jaoks (kataloogid, dokumendid, registrid jne). Moodul avatakse kas objekti kontekstimenüü kaudu või selle kaudu Omaduste palett või redigeerimisakna kaudu.

Halduri moodulis saate alistada mõned standardsed sündmused, näiteks sisse ProcessingReceivingDataChoice, kui sõnastikust on valitud element, saate täiendavalt filtreerida või kontrollida.

Lisaks saate haldurimoodulis luua täiendavaid meetodeid ja määrata, et need on ekspordimeetodid. Sel juhul on võimalik neile meetoditele juurde pääseda väljastpoolt.

Selle kõne tegemiseks peate hankima andmetüübi Kataloogihaldur.

Haldurmooduli ja objektimooduli ekspordimeetodite erinevus seisneb selles, et objektimooduli meetodi välja kutsumiseks peate esmalt hankima objekti enda (st hankima kuidagi lingi ja seejärel teisendama selle lingi objekt).

Pärast seda on objektimooduli ekspordimuutujad ja meetodid saadaval. Halduri mooduli puhul on kõne lihtsam, näiteks:
Kataloogid.Accounts.MethodName

Need on kaks erinevat üleskutset. Teisenda viitest objektiks (meetod GetObject) on süsteemi jaoks üsna tõsine tegevus, kuna objekti vastuvõtmisel loetakse absoluutselt kõik selle objekti andmed, mis võib olla üsna pikk.

Teine erinevus seisneb selles Objektimoodul kutsutakse välja konkreetse elemendi kontekstis. Sellest lähtuvalt võime eeldada, et see on selle elemendi puhul rakendatav (enamikul juhtudel on see ette nähtud loogika).

Mis puudutab halduri moodulit, siis see kirjeldab mõnda üldist toimingut rühma või kataloogi või mõne dokumendi kõigi elementide jaoks. Näiteks kui teil on vaja printida võrdlusüksus, saate kasutada objektimoodulit.

Kuid halduri moodulis on võimalik teha universaalsem mehhanism, mis trükib muuhulgas elementide rühma.

Lisaks on objekti moodulile ligipääs siiski pikem tegevus. Seetõttu on eelistatum lahendada see probleem halduri moodulis.

Sellega lõpetame meie tutvumise süsteemi 1C:Enterprise konfiguratsiooni moodulitega. Kui me kõik ülaltoodu kokku võtame, siis järeldused on järgmised:

  • Tarkvaramoodul on konfiguratsiooni osa, mis võib sisaldada ainult teksti sisseehitatud 1C keeles
  • Programmimoodulid on klassifitseeritud vastavalt tüüpidele, mida me selles artiklis uurisime. Iga vaade on määratletud selle paigutuse ja saadaoleva programmeerimiskonteksti järgi.
  • Mooduli struktuur koosneb osadest, mis on paigutatud kindlasse järjestusse. Sektsioonide koosseis määratakse mooduli tüübi järgi.

Pange tähele ka seda, et me jätsime teadlikult välja ühte tüüpi mooduli, nimelt käsumooduli. See ei kujuta endast midagi tähelepanuväärset ja soovitame teil selle funktsionaalsusega tutvuda.

Seni oleme kogu oma programmikoodi rakendatud lahendusest fragmentaarselt arvestanud ja reeglina kirjutasime selle mingisse oma väikesesse testkonfiguratsiooni. Kas olete teadlik, et "te ei saa lihtsalt võtta" ja hakkate tüüpilise konfiguratsiooni koodi redigeerima? Ei? Järgmises artiklis selgitame seda kõike!

Tere.
Selles postituses käsitleme rakendusmoodulit, selle eesmärki ja koostamise kohta.

Rakendusmoodul 1C on mõeldud peamiselt rakenduse käivitamise ja lõppemise hetke tabamiseks.
Samuti on olemas töötlejad, mis võimaldavad teil välist sündmust seadmest pealt kuulata.

Hallatud rakenduse mooduli sündmused käivitatakse, kui käivitatakse hallatava rakenduse õhuke klient, veebiklient ja paks klient.
Hallatava rakenduse moodul jälgib interaktiivset süsteemi käivitamist.

Hallatava rakenduse moodul sisaldab:
muutuja deklaratsiooni jaotis
protseduuri ja funktsiooni kirjelduse jaotis
programmi põhiosa
Hallatava mooduli protseduure, funktsioone ja muutujaid saab kirjeldada eksporditavatena (juurdepääsetavatena väljaspool moodulit). See moodul võib sisaldada ka spetsiaalseid sündmuste käitlejaid, mis ilmnevad teatud tingimustel.

Mõelge töötlejate loendile, mida saab kutsuda vajutades ( Ctrl+Alt+P).
Enne süsteemi käivitamist - toiming pole veel toimunud (1C Enterprise 8.2 käivitatakse, kuid rakendus ise pole veel ekraanile ilmunud). Kui parameeter "Failure" on seatud väärtusele "True", siis rakendus lihtsalt ei käivitu. Süsteemi töö alguses - toiming on juba lõpule viidud (parameeter "tõrge" puudub). Enne süsteemi väljalülitamist - rakendus pole veel kuhugi kadunud (seal on parameeter „keelamine”).
Süsteemi väljalülitamisel on interaktiivne aken juba suletud.

Heitke pilk süntaksiabilisele ja lugege lisateavet hallatavate ja tavapäraste rakendussündmuste kohta.

Rakendusmoodul koostatakse alati täielikult kliendi poolel. Need. sellest saame viidata serveriprotseduuridele ja tavaliste moodulite funktsioonidele ning ei saa viidata sellistele konfiguratsiooniobjektidele nagu näiteks dokumendid, kataloogid.
Süsteemi käivitamisel kompileeritakse hallatava rakenduse moodul ning mida rohkem ekspordiprotseduure ja funktsioone selles deklareeritakse, seda kauem võtab süsteemi käivitamine aega.

Tavaline rakendusmoodul

Tavalist rakenduse moodulit saab näha samas kohas kui hallatud rakenduse moodulit, kuid kui see pole nähtav, siis on see vajalik konfiguraatori sätetes vahekaardil "Üldine" valiku "Käivitusrežiimide konfiguratsiooni muutmine" all. "Hallatud rakendus ja tavarakendus" ametikoht.
Kuidas seda teha, vaadake artiklit:.

Tavarakenduse mooduli sündmused käivitatakse, kui käivitatakse tavalise rakenduse rikas klient.
Kõik, mis öeldi hallatava rakenduse mooduli kohta, kehtib ka tavarakenduse mooduli kohta.

Sündmused enne… ja ajal….

Protseduuride erinevus enne süsteemi käivitamist (tõrge) ja süsteemi käivitamisel ()

BeforeStartSystem(Rejection) – toiming pole veel toimunud ja me võime keelduda selle sooritamisest.
Süsteemi alguses () - toiming on juba toimunud ja me ei saa keelduda rakenduse käivitamisest või sellest väljumisest.

See on kõik, tänan teid tähelepanu eest.

Palun jätke kommentaarid, teie arvamus on minu jaoks oluline.

valvur: Tervisetõendite registreerimine 10 minutiga. GAI-s sertifikaadi väljastamiseks peate kulutama paar päeva, kuid õiguste jaoks on võimalus osta sertifikaat. Võimalik ja sertifikaadi kättetoimetamisele on lisatud ka litsentside koopiad

P.S. Ja mulle meeldib Jamala (Jamala) – You're Made of Love


Hallatud rakenduse moodul

See on mõeldud peamiselt rakenduse käivitamise ja väljalülitamise hetke tabamiseks. Samuti on olemas töötlejad, mis võimaldavad teil välist sündmust seadmest pealt kuulata. See on süsteemi interaktiivne käivitamine, mida jälgitakse hallatava rakenduse moodulis.

Hallatud rakenduse mooduli sündmused käivitatakse hallatava rakenduse õhukese kliendi, veebikliendi ja paksu kliendi käivitamisel. Juhtmoodulis rakendustele pääseb juurde konfiguratsiooni juursõlme omaduste paletist või konfiguratsiooni juursõlme kutsutud kontekstimenüüst.

Tavaline rakendusmoodul

Tavalise rakenduse moodul mängib sama rolli kui hallatud rakenduse moodul, tavalise rakenduse paksu kliendi käivitumisel käivituvad ainult tavalise rakenduse mooduli sündmused.

Tavaline rakenduse moodul muutub kättesaadavaks konfiguratsiooni juursõlme atribuutide paletist pärast seda, kui määrate vahekaardil "Üldine" konfiguraatori sätetes valiku "Käivitusrežiimide konfiguratsiooni redigeerimine" valikule "Hallatud rakendus ja tavaline".

Väline ühendusmoodul

Väline ühendusmoodul on ette nähtud sisselogimissündmuse käsitlemiseks (mitte interaktiivne, vaid COM-ühenduse režiimis) ja väljalogimiseks. Seal on sobivad käitlejad. COM-ühendus ei ava interaktiivset akent, seega ei tööta kasutajaga dialoogi funktsioonid. Ekspordi muutujaid ja meetodeid on võimalik kirjeldada moodulis. Väline ühendusmoodul kompileeritakse serveris. Need. on võimalik juurde pääseda vastavatele konfiguratsiooniobjektidele, näiteks kataloogidele.

seansi moodul

On olemas selline tavaline konfiguratsiooniobjekt nagu "Session Options". Seansi moodul loodi seansi parameetrite lähtestamiseks (selleks on konkreetne sündmus, see käivitub rakenduse käivitumisel kõige esimesena).

Töötab privilegeeritud režiimis (andmebaasi sisenemisel ei kontrolli juurdepääsuõigusi). Seansimoodul kompileeritakse serveris. Muutujate deklaratsiooni sektsioon ja põhiprogrammi jaotis puudub, ekspordimeetodeid ei saa kirjeldada, seda kasutatakse ainult seansi parameetrite määramiseks. Nagu näete, on seansimoodulil väga kitsas eesmärk.

Üldmoodulid

Üldmoodulid kirjeldavad mõningaid üldalgoritme, sisaldavad funktsioone, mida saab kutsuda erinevatest kohtadest. Jagatud mooduleid saab koostada nii kliendis kui serveris.

Üldmoodulites on saadaval AINULT protseduure ja funktsioone kirjeldav osa. Kui teil on vaja kasutada globaalset muutujat, saate kasutada hallatava rakenduse mooduli seansi parameetreid või ekspordimuutujat.

Üldmoodulis saate määrata mõned parameetrid, mis mõjutavad selle käitumist. Kui üldmoodulis on märgitud ruut "Globaalne", osalevad selle ekspordifunktsioonid globaalse konteksti moodustamises. Ja neile pääseb juurde otse teisest kontekstist (ühise mooduli nime mainimata): CommonModuleMethod();

Te ei tohiks kõikjal kasutada levinud moodulite atribuuti "Global", sest sellised moodulid kompileeritakse süsteemi käivitamisel ja aeglustavad programmi käivitumist

Objekti moodul

Paljudel konfiguratsiooniobjektidel (kataloogid, dokumendid jne) on objektimoodul. Sinna saab sisestada standardsündmusi nagu uue kataloogielemendi loomine, uue objekti sisestamine, kustutamine, dokumendi postitamise töötlemine jne. Kirjutamissündmus on olemas nii vormimoodulis (toimub interaktiivse salvestusprotsessi ajal, kui kasutaja klõpsab nupul “kirjuta”) kui ka objektimoodulis.

Tuleb meeles pidada, et ühel objektil võib olla mitu vormi. Seetõttu tuleb kirjutamissündmust töödelda objektimoodulis. Seal kontrollitakse salvestatud andmete õigsust.

Objektimoodulit saab välja kutsuda antud objekti omaduste paletist või kontekstimenüüst. Objektimoodulil on sama struktuur kui vormimoodulil. Objektimoodul kompileeritakse serveris, seega pole kompileerimisjuhiseid vaja.

Vormi moodul

Vormimoodul on mõeldud kasutaja toimingute käsitlemiseks (nupuklõpsu sündmuse käsitlemine jne). On ka sündmusi, mis on otseselt seotud vormi endaga (näiteks selle avamise, sulgemise sündmus). Hallatava vormi moodulid ja tavavormi moodulid erinevad peamiselt selle poolest, et hallatava vormi moodul on selgelt konteksti eraldatud. Igal protseduuril peab olema koostamise käskkiri. Tavalisel kujul käivitatakse kogu kood kliendil.

Hallatava vormi struktuur sisaldab muutuja deklaratsiooni sektsiooni, protseduuride ja funktsioonide sektsiooni ning põhiprogrammi osa (käitatakse vormi initsialiseerimisel). Standardvormi sündmustele pääseme juurde protseduuride ja funktsioonide loendi kaudu (Ctrl+Alt+P) või vormi enda atribuutide paleti kaudu. Samuti saate hallatud kujul käsitleda elemendi kirje sündmust (see sündmus on olemas ainult objektide puhul: kataloogid, dokumendid).

Objektihalduri moodul

Halduri moodul ilmus ainult versioonis 1C 8.2, see on olemas paljude konfiguratsiooniobjektide jaoks. Objektihalduri mooduli põhieesmärk on uuesti defineerida standardsündmus "ProcessingChoiceDataReceiving" ja me saame ka

Väärtusjuhi moodul

Konstantse konfiguratsiooni objektil pole objektimoodulit, vaid väga sarnane moodul, väärtushalduri moodul. Püsiväärtuse halduri moodulis saab kirjeldada erinevaid protseduure (ka eksportivaid), samuti töödelda 3 sündmust: BeforeWrite, OnWrite, ProcessingFillCheck. See moodul on kompileeritud serveris.

Recordset moodulid

Kirjekomplekti moodul on analoogne objektimooduliga ja on registritele omane. Kirjekomplekti moodulis on standardsündmused:

  • Enne salvestamist
  • Salvestamise ajal
  • Täitmise kontrolli töötlemine

Kirjekomplekti moodulis on muutujate, protseduuride ja funktsioonide (sh ekspordifunktsioonide) kirjeldamise osa, põhiprogrammi jaotis.

Platvormis 8.2 pakub hallatav rakendus rakenduse jõudluse optimeerimiseks kliendi ja serveri funktsioonide eraldamist. Näiteks ei saa te kliendis juurdepääsu andmebaasi andmetele. Ja serveri poolel pole saadaval vormiandmed, mille moodulis on protseduur &AtServerWithoutContext direktiiviga. 1C programmikood asub erinevates moodulites, objektimoodulis, vormimoodulis, üldmoodulites jne. Iga mooduli protseduure ja funktsioone saab koostada nii serveris kui ka kliendis. Mõelge erinevate protseduuride ja funktsioonide kutsumise võimalustele serveri poolel koostatud protseduuridest ja kliendi poolel koostatud protseduuridest.

Niisiis, kliendi poolelt saab helistada

1) selle mooduli kliendiprotseduurid käskkirjaga &AtClient;

2) selle mooduli serveriprotseduurid &AtServer käskkirjaga;

3) ühise mooduli kliendiprotseduurid &AtClient direktiiviga (olenevalt saadavusest mitmes kontekstis atribuutides, "Klient" on vajalik jne);

4) kõik kliendi ühismooduli protseduurid, ühismooduli atribuutides peaks olema ainult atribuut "Klient (hallatud rakendus)". Käskkiri &AtClient ei ole antud juhul üldmoodulis kirjutatud;

5) serveri ühismooduli protseduurid, kuid lisaomadusega "Server call" ning oluline on, et ühismoodulil oleks serveris ainult kompileerimisomadus.


Serveri poolelt saab helistada

1) selle mooduli serveriprotseduurid koos kompileerimiskäsuga &AtServer;

2) kõik serveri ühismooduli protseduurid ja ühise mooduli atribuutides peaks olema ainult atribuut "Server". &AtServeri käskkiri pole antud juhul üldmoodulisse kirjutatud;

3) üldmooduli protseduurid koos &AtServeri direktiiviga (olenevalt saadavusest atribuutides mitmes kontekstis, nõutakse "Serverit" jne).

Lisaks, kui ühise mooduli atribuutides on määratud mitu "Klient, Server" kompileerimiskohta ja protseduuris pole määratud kompileerimiskäsku, siis sel juhul koostatakse protseduur nii serveri poolel kui ka kliendil. pool. Ja seda saab kutsuda vastavalt nii kliendi- kui ka serverimeetoditest. Sel juhul peate protseduuri hoolikalt kasutama, on vajalik, et selle koodi saaks käivitada nii serveris kui ka kliendis.

On veel üks funktsioon. Ühes levinud moodulis, millel on mitu kompileerimiskohta ("Server, klient"), ei saa te sama mooduli serveriprotseduuri kliendilt välja kutsuda, isegi kui märgite linnukese "serveri kutse". Atribuut "serverikõne" on mõttekas, kui on olemas ainult üks ühine mooduli atribuut "Serveri kompileerimine".

Soovitatakse kasutada ainult serveris või ainult kliendis koostatud jagatud mooduleid. Vastavalt sellele kasutage atribuudiga "Klient" moodulis kõiki kliendimooduleid ja atribuudiga "server" moodulis kõiki serverimeetodeid.

Veel üks jagatud mooduli mugav omadus. Kui aktiveerite ühise mooduli atribuutides atribuudi "Globaalne", saab selle mooduli protseduure kutsuda otse, ilma ühise mooduli nimeta.

Kuid ärge laske selle atribuudi kasutamisega kaasa lüüa, sest sel juhul kompileeritakse moodul süsteemi käivitamisel, mis pikendab käivitusaega.

Tarkvaramoodulid sisaldavad 1C keeles käivitatavat koodi, mis on vajalik süsteemi või kasutaja tegevusele teatud viisil reageerimiseks, kui visuaalsete arendusvahenditest ei piisa. Ka programmi moodulites saame kirjeldada enda meetodeid (protseduure ja funktsioone).

Tavaliselt koosneb tarkvaramoodul kolmest osast:

  • muutuv deklaratsiooniala;
  • protseduuride ja funktsioonide kirjelduse ala;
  • programmi põhitekst.

Näide programmimooduli ülesehitusest:

//******************** MUUTUV DEKLARATSIOONI ALA *************************

Rem perekonnanime eksport; / /see on globaalne muutuja
Muutuja nimi, isanimi; //see on moodulmuutuja
Muuda nime; //see on ka moodulmuutuja ja sellele pääseb juurde

//meie mooduli mis tahes protseduurist ja funktsioonist

//*************** MENETLUSE JA FUNKTSIOONIDE KIRJELDUSALA ****************

Menetlus Menetlus1 ()
Muutuja Kokku ; / /Total on kohalik muutuja (protseduuri muutuja)

Kokku = Perekonnanimi + "" + Eesnimi + " "+ Isanimi;

Lõppprotseduur

Funktsioon Funktsioon1 ()

// funktsioonilaused

Return(Perenimi + " " + Eesnimi );

Lõppfunktsioonid

//**************************** PROGRAMMI PÕHITEKST ******************** *

Perekonnanimi = "Ivanov";
Nimi = "Ivan";
Keskmine nimi = "Ivanovitš";

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

Konkreetses programmimoodulis võib mõni valdkond puududa.
Muutuv deklaratsiooni ulatus paigutatakse mooduli teksti algusest protseduuri või funktsiooni lause või mis tahes käivitatava lause esimese lauseni. See jaotis võib sisaldada ainult muutujate deklaratsiooni avaldusi.

Protseduuride ja funktsioonide kirjeldus paigutatakse protseduuri või funktsiooni lause esimesest lausest mis tahes käivitatavasse lausesse väljaspool protseduuri või funktsiooni deklaratsiooni keha.

Põhiprogrammi tekstiala paigutatakse esimesest käivitatavast lausest väljaspool protseduuride või funktsioonide kogumit mooduli lõpuni. See jaotis võib sisaldada ainult käivitatavaid avaldusi. Programmi põhiteksti ala täidetakse mooduli initsialiseerimise ajal. Tavaliselt on programmi põhiosas mõttekas asetada avaldused muutujate lähtestamiseks teatud kindlate väärtustega, mis tuleb määrata enne mooduli protseduuride või funktsioonide esimest väljakutset.

Programmimoodulid asuvad konfiguratsioonis nendes kohtades, mis võivad nõuda konkreetsete tööalgoritmide kirjeldamist. Need algoritmid tuleks kavandada protseduuridena või funktsioonidena, mida süsteem ise etteantud olukordades kutsub (näiteks viitevormi avamisel, dialoogiboksis nupul klõpsamisel, objekti muutmisel jne).

Iga eraldiseisvat programmimoodulit tajub süsteem tervikuna, seega täidetakse kõik programmimooduli protseduurid ja funktsioonid ühes kontekstis.

Moodulite täitmise kontekst jaguneb kliendi- ja serverikontekstideks. Lisaks saab osa tarkvaramooduleid koostada nii kliendi kui ka serveri poolel.

Rakenduse moodul (hallatud või tavaline)

Rakendusmoodul kirjeldab sündmuste protseduure (käsitlejaid), mis initsialiseeritakse süsteemi alguses ja lõpus. Näiteks saate rakenduse käivitamisel värskendada mõningaid konfiguratsiooniandmeid ja väljumisel küsida, kas peaksite üldse programmist väljuma. Lisaks peatab see moodul pealt sündmusi välistest seadmetest, nagu kauplemis- või maksuseadmed. Väärib märkimist, et rakenduse moodul käivitatakse ainult rakenduse interaktiivse käivitamise korral, st programmi akna käivitamisel. Seda ei juhtu, kui rakendus käivitatakse ühenduse režiimis.
1C 8 platvormil on kaks erinevat rakendusmoodulit. Need on ühise rakenduse moodul ja hallatava rakenduse moodul. Need käivituvad erinevate klientide käivitamisel. Näiteks käivitatakse hallatud rakenduse moodul, kui veebiklient, õhuke klient ja paks klient käivitatakse hallatud rakenduse režiimis. Ja tavarakenduse moodul käivitub, kui paks klient käivitatakse tavalises rakendusrežiimis. Rakenduse käivitusrežiimi säte on määratud konfiguratsiooniatribuudis „Peakäivitusrežiim”.

Rakenduse moodul võib sisaldada kõiki 3 jaotist - muutujate deklaratsioonid, protseduuride ja funktsioonide kirjeldused, samuti programmi põhitekst. Rakenduse moodul on koostatud kliendi poolel, mis piirab meid tõsiselt mitut tüüpi andmete kasutamisest. Rakenduse mooduli konteksti saate laiendada ühiskasutatavate moodulite meetoditega, millel on kõneserveri atribuut. Kõik ekspordiks märgitud rakendusprogrammi mooduli muutujad ja meetodid on saadaval igas kliendipoolses konfiguratsioonimoodulis. Kuid nii ahvatlev kui see ka pole, ei tasu siia paigutada suurt hulka protseduure ja funktsioone. Mida rohkem koodi antud moodulis on, seda pikem on kompileerimisaeg ja sellest tulenevalt ka rakenduse käivitusaeg.

Nagu eespool märgitud, tegeleb rakenduse moodul rakenduse algus- ja lõpusündmustega. Kõigi nende sündmuste käsitlemiseks rakendusmoodulis on paar käitlejat Enne ... ja Millal ... Nende erinevused on järgmised: kui käitlejas Enne ... käivitatakse kood, on toimingul pole veel toimunud ja me võime keelduda selle täitmisest. Selleks on keeldumise valik. Töötlejates on toiming juba toimunud ja me ei saa keelduda rakenduse käivitamisest või sellest väljumisest.

Väline ühendusmoodul

  • võib sisaldada kõiki 3 ala
  • asub konfiguratsiooni juursektsioonis

Mooduli eesmärk on sarnane rakendusmooduli eesmärgiga. See haldab rakenduse algus- ja lõppsündmusi. Väline ühendusmoodul käivitub, kui rakendus käivitatakse ühenduse režiimis. Väline liitumisprotsess ise ei ole interaktiivne protsess. Selles režiimis toimub programmiline töö infobaasiga ja rakenduse aken ei avane, mis seab teatud piirangud interaktiivseks tööks mõeldud meetodite kasutamisele. Selles režiimis ei saa te kasutada dialoogivormide kõnesid, hoiatusi ja sõnumeid kasutajale jne. Nad lihtsalt ei jookse.

Nagu rakendusmoodulis, on ka siin saadaval kõik kolm valdkonda: muutujate deklaratsioonid, protseduuride ja funktsioonide kirjeldused ning programmi põhitekst. Peamine erinevus rakendusmoodulist on see, et com-connection režiimis toimub kogu töö infobaasiga serveri poolel, seega kompileeritakse väline ühenduse moodul serveri poolel. Sellest tulenevalt pole tavaliste kliendimoodulite ekspordimuutujad ja meetodid selles saadaval.

seansi moodul

  • sooritatakse serveri poolel
  • asub konfiguratsiooni juursektsioonis

See on väga spetsialiseerunud moodul, mis on loodud ainult seansi parameetrite lähtestamiseks. Miks oli vaja selleks oma moodul teha? Selle kasutamine on tingitud asjaolust, et rakendust ennast saab käivitada erinevates režiimides (mis viib kas hallatava rakenduse mooduli, tavalise rakenduse mooduli või välise ühendusmooduli käivitamiseni) ja seansi parameetrid tuleb lähtestada sõltumata käivitusrežiim. Selleks, et mitte kirjutada kõigis kolmes moodulis sama programmikoodi, vajasime lisamoodulit, mis käivitatakse sõltumata rakenduse käivitamise režiimist.

Seansimoodulis on üks sündmus "SetSessionParameters", mis käivitatakse kõige esimesena, isegi enne rakendusmooduli sündmust PreSystemBegin. Sellel ei ole muutuja deklaratsiooni jaotist ja põhiprogrammi jaotist. Samuti on võimatu deklareerida ekspordimeetodeid. Moodul on koostatud serveri poolel.

Üldmoodulid

  • võib sisaldada protseduuride ja funktsioonide kirjeldamise ala
  • käivitatakse serveri või kliendi poolel (sõltub mooduli sätetest)
  • asub konfiguratsiooniobjektide puu harus "Üldine" - "Üldmoodulid"

Ühised moodulid on mõeldud kirjeldama mõningaid levinud algoritme, mida kutsutakse teistest konfiguratsioonimoodulitest. Üldmoodul ei sisalda muutuvate deklaratsioonialasid ja programmi keha. Selles saate deklareerida ekspordimeetodeid, mille saadavuse määravad mooduli seaded (kummal poolel see käivitatakse: serveri või kliendi poolel). Kuna muutujate deklaratsiooni jaotis pole saadaval, ei saa jagatud moodulites globaalseid muutujaid defineerida. Selleks saate kasutada rakendusmoodulit.

Jagatud mooduli käitumine sõltub seatud parameetritest (globaalne või mitte, erinevad kompileerimislipud, kas serverikõne on saadaval jne). Siin on mõned näpunäited jagatud moodulite seadistamiseks.

Hea tava on mitte kasutada kõikjal "Globaalset" lippu. See vähendab rakenduse käivitusaega, samuti parandab koodi loetavust (muidugi juhul, kui ühisel moodulil on täiesti tähendusrikas nimi);
- Ei ole soovitatav kasutada rohkem kui ühte koostamislippu. Erinevates kontekstides läbiviimist vajavaid meetodeid pole nii palju ja kui selliseid meetodeid siiski vaja on, siis saab neile eraldada eraldi ühise mooduli;
- lipp "Serveri kõne" on mõttekas ainult siis, kui moodul on kompileeritud "Serveris". Seetõttu tuleks erinevate probleemide vältimiseks eemaldada kõik muud koostamise lipud;
- kui moodulimeetodites toimub andmete masstöötlus, andmebaasi lugemine ja kirjutamine, siis töö kiiruse suurendamiseks on parem juurdepääsukontroll keelata, seades lipu "Privilegeeritud". See režiim on saadaval ainult serveris kompileeritud jagatud moodulite jaoks.

Vormi moodul

  • võib sisaldada kõiki 3 ala
  • tehakse serveri ja kliendi poolel

Vormimoodul on loodud selle vormiga kasutaja toimingute käsitlemiseks (nupuklõpsu sündmuse käsitlemine, vormi atribuudi muutmine jne). On ka sündmusi, mis on otseselt seotud vormi endaga (näiteks selle avamine või sulgemine). Hallatava vormi moodulid ja tavavormi moodulid erinevad peamiselt selle poolest, et hallatava vormi moodul on selgelt konteksti eraldatud. Igal protseduuril või funktsioonil peab olema kompileerimisdirektiiv. Kui kompileerimisdirektiivi pole määratud, käivitatakse see protseduur või funktsioon serveri poolel. Tavalisel kujul käivitatakse kogu kood kliendi poolel.

Hallatava vormi struktuur sisaldab muutujate deklaratsiooni jaotist, protseduuride ja funktsioonide kirjeldusi ning programmi põhiosa (käitatakse vormi initsialiseerimisel). Standardvormi sündmustele pääseme juurde vormi eeldatavate protseduuride ja funktsioonide loendi kaudu (Ctrl+Alt+P) või vormi enda omaduste paleti kaudu.

Kui vormile on määratud põhiatribuut, siis muutuvad vormimoodulis kättesaadavaks põhiatribuudina kasutatava rakendusobjekti omadused ja meetodid.

Objekti moodul

  • võib sisaldada kõiki 3 ala
  • sooritatakse serveri poolel

See moodul on saadaval enamiku konfiguratsiooniobjektide jaoks ja on üldiselt mõeldud objektiga otseselt seotud sündmuste töötlemiseks. Näiteks objektide salvestamise ja kustutamise sündmused, objekti andmete täitmise kontrollimine, dokumendi postitamine jne.

Mõned objektimooduli sündmused dubleerivad vormimooduli sündmusi. Näiteks plaadiga seotud sündmused. Siiski tuleb mõista, et vormimooduli sündmused käivitatakse ainult objekti konkreetsel kujul, st konkreetse vormi avamisel. Ja objektimooduli sündmused kutsutakse igal juhul välja, isegi objektiga programmitöö ajal. Seega, kui vajate objektiga seotud meetodeid ilma objekti konkreetse vormiga seotud, on parem kasutada selleks objektimoodulit.

Objektihalduri moodul

  • võib sisaldada kõiki 3 ala
  • sooritatakse serveri poolel

Objektihalduri moodul ilmus alles alates versioonist 1C 8.2. Halduri moodul on olemas kõigi rakendusobjektide jaoks ja on loodud selle objekti haldamiseks konfiguratsiooniobjektina. Halduri moodul võimaldab laiendada objekti funktsionaalsust, tutvustades (kirjutus)protseduure ja funktsioone, mis ei kehti andmebaasiobjekti konkreetse eksemplari, vaid konfiguratsiooniobjekti enda kohta. Objektihalduri moodul võimaldab paigutada antud objektile ühiseid protseduure ja funktsioone ning pääseda neile juurde väljastpoolt, näiteks töötlemisest (muidugi juhul, kui see protseduur või funktsioon on Export märksõnaga). Mida see meile uut annab? Üldiselt ei midagi muud kui protseduuride organiseerimine objektide kaupa ja nende eraldi kohtadesse salvestamine - Objektihalduri moodulid. Sama hästi saame need protseduurid ja funktsioonid paigutada tavalistesse moodulitesse, kuid 1C soovitab paigutada objektide ühised protseduurid ja funktsioonid objektihalduri moodulisse. Näiteid Objektihaldurite mooduli protseduuride ja funktsioonide kasutamisest: kataloogi või dokumendi üksikandmete esmane täitmine teatud tingimustel, kataloogi või dokumendi detailide täitmise kontrollimine teatud tingimustel jne.

Käsumoodul

  • võib sisaldada protseduure ja funktsioone kirjeldavat jaotist
  • teostatakse kliendi poolel

Käsud on objektid, mis on allutatud rakendusobjektidele või konfiguratsioonile tervikuna. Igal käsul on käsumoodul, milles saate kirjeldada etteantud CommandProcess() protseduuri selle käsu täitmiseks.