itthon / Játék konzolok / Modulok 1s vállalkozásban. Általános modulok. „Külső csatlakozás” megjelölése

Modulok 1s vállalkozásban. Általános modulok. „Külső csatlakozás” megjelölése

Általános modulok 1C- az 1C 8.3 és 8.2 konfigurációs metaadatok objektuma, amely a konfigurációban gyakran meghívott programkódot tárolja. Egy függvény/eljárás a konfigurációban bárhonnan meghívható (ha exportálva van).

A megosztott modul használata

Jó gyakorlat egy eljárást vagy függvényt egy közös modulba helyezni, ha egynél több helyen hívják. Először is, ha egy eljárást kijavítanak, azt csak egy helyen kell javítani. Másodszor, nagyobb rendet ér el a kódban.

Jellemző példa az elterjedt modulra a könyvelés valamilyen nyilvántartás szerinti feldolgozása, a különbözet ​​összegének munkanapokban való lekérése, az árfolyamok átszámítása, a táblázatos részben a mennyiség/ár/összeg újraszámítása és egyéb funkciók.

A modul általános tulajdonságai

Az egyik fő különbség a megosztott modulok és más modulok között az, hogy nem deklarálhatók megosztott változók.

Ingyenes 267 1C videóleckéket kaphat:

Nézzük meg közelebbről a közös modul tulajdonságpalettáját:

  • Globális- ha a jelző be van állítva, a modul függvényei és eljárásai elérhetővé válnak a globális környezetben. Azok. a konfigurációban bárhol hívhatók a közös modul neve nélkül. A rendszer azonban hozzáad egy feltételt – az eljárások és függvények nevének ebben a közös modulban egyedinek kell lennie a globális környezetben.
  • szerver- Ennek a közös modulnak az eljárásai és funkciói végrehajthatók a szerveren.
  • Külső csatlakozás- ennek a közös modulnak a programkódjai végrehajthatók külső forrás (például COM) csatlakoztatásakor.
  • Ügyfél (felügyelt alkalmazás)— Ennek a közös modulnak az eljárásai és funkciói vastag kliensben is használhatók felügyelt alkalmazás módban.
  • Ügyfél (rendszeres jelentkezés)— ennek a közös modulnak a programkódjai használhatók a vastag kliensben normál alkalmazási módban.
  • Szerverhívás- egy jelző, amely lehetővé teszi az ügyfél számára az eljárások és funkciók használatát ebből a közös modulból.
  • - ha True értékre van állítva, a hozzáférési jogok ellenőrzése le lesz tiltva ebben a közös modulban.
  • Újrahasználat— megadja a visszaadott értékek beállításait, ha az opció engedélyezve van, akkor az első végrehajtás után a rendszer megjegyzi ezeknek a bemeneti paramétereknek az értékét, és egy kész értéket ad vissza. A következő értékeket veheti fel: nem használt- Leállitás, a hívás időpontjában- egy bizonyos eljárás időtartamára, az ülés során- amíg a felhasználó be nem zárta a munkamenetet (programot).

Ha elkezdi tanulni az 1C programozást, ajánljuk ingyenes tanfolyamunkat (ne felejtsd el

1.1. Közös modulok jönnek létre bizonyos kritériumok szerint kombinált eljárások és funkciók megvalósítására. Általános szabály, hogy egy konfigurációs alrendszer eljárásai és funkciói (értékesítés, vásárlás) vagy hasonló funkcionalitású eljárások és funkciók (karakterláncokkal végzett munka, általános célú) egy közös modulba kerülnek.

1.2. A megosztott modulok fejlesztésekor a négy kódvégrehajtási környezet egyikét kell választania:

Általános modultípus Elnevezési példa Szerverhívás szerver Külső csatlakozás Ügyfél
(rendszeres alkalmazás)
Ügyfél
(felügyelt alkalmazás)
1. szerverÁltalános célú (vagy általános célú szerver)
2. A klienstől hívható szerverGeneral PurposeCallServer
3. ÜgyfélÁltalános célú ügyfél (vagy általános célú globális)
4. Kliens-szerverGeneral PurposeClientServer

2.1. Szerver közös moduljai olyan kiszolgálói eljárások és funkciók tárolására szolgálnak, amelyek nem használhatók ügyfélkódból. Ezek megvalósítják az alkalmazás összes belső szerver üzleti logikáját.
Ahhoz, hogy a konfiguráció megfelelően működjön külső csatlakozási módokban, a felügyelt és a normál alkalmazásokban, a szervereljárásokat és -funkciókat közös modulokba kell helyezni a következő jellemzőkkel:

  • szerver(jelölőnégyzet Szerverhívás csökkent),
  • Ügyfél (rendszeres jelentkezés),
  • Külső csatlakozás.

Ebben az esetben garantált, hogy a szerver eljárások és függvények változó típusú paraméterekkel hívhatók meg (pl. DirectoryObject, DocumentObject stb.). Általános szabály, hogy ez:

  • kezelők dokumentumok, könyvtárak stb. eseményeire való előfizetéshez, amelyek változó értéket (objektumot) vesznek fel paraméterként.
  • szerver eljárások és függvények, amelyekhez egy objektum paraméterként kerül átadásra könyvtárak, dokumentumok stb. moduljaiból, valamint esemény-előfizetéssel rendelkező modulokból.

A szerver közös moduljait a metaadat-objektumok elnevezésére vonatkozó általános szabályok szerint nevezik el.
Például: Fájlokkal végzett munka, Általános rendeltetésű

Egyes esetekben egy postfix hozzáadható a névütközések elkerülése érdekében a globális kontextus tulajdonságaival. "Szerver".
Például: ScheduledTasksServer, Data ExchangeServer.

2.2. A klienstől meghívandó közös szervermodulok a kliens kódból használható szerver eljárásokat és funkciókat tartalmaznak. Ezek alkotják az alkalmazáskiszolgáló kliens API-ját.
Az ilyen eljárások és függvények közös modulokban vannak elhelyezve a következő attribútummal:

  • szerver(jelölőnégyzet Szerverhívás telepítve)

A kliensből meghívandó szerver közös modulokat a metaadat objektumok elnevezésének általános szabályai szerint nevezik el, és postfix-el kell elnevezni "Szerverhívás".
Például: A FilesCalling The Server használata

Vegye figyelembe, hogy az ilyen általános modulokban lévő export eljárások és funkciók nem tartalmazhatnak változtatható típusú paramétereket ( DirectoryObject, DocumentObject stb.), mivel ezek átvitele az ügyfélkódból (vagy oda) lehetetlen.

Lásd még:A "Szerverhívás" jelző beállításának korlátozása az általános moduloknál

2.3. Ügyfél megosztott moduljai kliens üzleti logikát tartalmaznak (csak az ügyfél számára meghatározott funkcionalitás), és a következő jellemzőkkel rendelkeznek:

  • Kliens (felügyelt alkalmazás)
  • Ügyfél (rendszeres jelentkezés)

Kivétel az, amikor az ügyféleljárások és -funkciók csak felügyelt alkalmazás módban (csak normál alkalmazás módban vagy csak kimenő módban) legyenek elérhetők. Ilyen esetekben e két jellemző más kombinációja is elfogadható.

A kliens közös moduljait postfixel nevezik el "Ügyfél".
Például: WorkFilesClient, Általános célú Ügyfél

Lásd még: kliensoldali kód minimalizálása

2.4. Egyes esetekben lehetőség van kliens-szerver közös modulok létrehozására eljárásokkal és funkciókkal, amelyek tartalma megegyezik a szerveren és a kliensen is. Az ilyen eljárások és funkciók közös modulokban vannak elhelyezve, amelyek jellemzői:

  • Ügyfél (felügyelt alkalmazás)
  • szerver(jelölőnégyzet Szerverhívás csökkent)
  • Ügyfél (rendszeres jelentkezés)
  • Külső csatlakozás

Az ilyen általánosan elterjedt modulokat utótaggal nevezik el "ClientServer".
Például: WorkFilesClient, General PurposeClientServer

Általánosságban elmondható, hogy nem ajánlott egyidejűleg közös modulokat definiálni a szerver és a kliens (felügyelt alkalmazás) számára. A klienshez és a szerverhez definiált funkcionalitást ajánlatos különböző közös modulokban megvalósítani - lásd o. 2.1 és 2.3. A kliens és a szerver üzleti logikájának ilyen kifejezett szétválasztását az alkalmazott megoldás modularitásának növelése, a kliens-szerver interakció fejlesztői ellenőrzésének egyszerűsítése, valamint a kliens és szerver fejlesztési követelményei közötti alapvető különbségek miatti hibakockázat csökkentése indokolja. kód (az ügyfélen végrehajtott kód minimalizálásának szükségessége, az objektumok és platformtípusok eltérő elérhetősége stb.). Ugyanakkor szem előtt kell tartani a konfigurációban előforduló közös modulok számának elkerülhetetlen növekedését.

A vegyes kliens-szerver modulok speciális esetei az űrlap- és parancsmodulok, amelyeket kifejezetten a szerver és kliens üzleti logika egy modulban való megvalósítására terveztek.

3.1. A gyakori modulok neveit a metaadat objektumok elnevezésének általános szabályai szerint javasolt felépíteni. Egy közös modul nevének meg kell egyeznie egy alrendszer vagy egy különálló mechanizmus nevével, amelynek eljárásait és funkcióit megvalósítja. Javasoljuk, hogy a gyakori modulok nevében kerüljük az olyan gyakori szavakat, mint az "eljárások", "funkciók", "kezelők", "modul", "funkcionalitás" stb. és csak kivételes esetekben alkalmazzák, amikor teljesebben fedik fel a modul célját.

Annak érdekében, hogy megkülönböztessük egy alrendszer közös moduljait, amelyek különböző kontextusban végrehajtott eljárások és funkciók megvalósítására jöttek létre, ajánlatos a bekezdésekben leírt utójavításokat megadni nekik. 2.1-2.4.

Az 1C:Enterprise rendszerkonfigurációk új verzióiban számos funkció és eljárás került át az objektummodulokból (dokumentumok, könyvtárak stb.) a kezelőmodulokba. Vessünk egy pillantást a két modul közötti különbségekre.

Az objektumorientált programozás elmélete szerint az objektumok módszereit két csoportra osztják: statikus és egyszerű. Az egyszerű metódusok csak az osztály egy adott példányához férnek hozzá. A statikus metódusok nem férnek hozzá az objektumadatokhoz, hanem az osztály egészén működnek.

Ha mindezt lefordítjuk az 1C: Enterprise rendszerre, akkor Objektum modul egyszerű módszereket tartalmaz. Használatukhoz először be kell szerezni egy adott objektumot: egy könyvtár, dokumentum stb. elemét. Menedzser modul statikus módszereket tartalmaz. Használatához nem kell külön beszerezni az egyes objektumokat, lehetővé teszi, hogy a teljes gyűjteménnyel egyszerre dolgozhassunk.

Objektum modul külsőleg használható eljárásokkal és funkciókkal rendelkezhetnek. Ehhez egy ilyen eljárást vagy függvényt a szóval jelölünk Export.

Funkció NewFunction() Exportálás

Ahhoz, hogy egy objektummodulból egy ilyen függvényt használhasson, először a kívánt objektumra való hivatkozás birtokában be kell szereznie a függvény segítségével GetObject().



Per= objektum. NewFunction() ;

Hasonlóképpen új változókat hozhat létre, amelyek különféle konfigurációs objektumokból használhatók.

Változó NewVariable Export

DirectoryItem = Könyvtárak. Elnevezéstan. FindByCode("000000001" );
Object = Directory Element. GetObject() ;
Egy tárgy. NewVariable= ) ;

Így lehetőség nyílik az objektumok szabványos eljárásainak, függvényeinek és tulajdonságainak (változóinak) kiegészítésére. Az ilyen változók dinamikusak, nem tárolódnak az információs bázisban, és csak akkor léteznek, amikor a kapott objektummal dolgozik.

Menedzser modul ugyanazokkal a tulajdonságokkal rendelkezik, az egyetlen különbség az, hogy használatához nem kell egy adott objektumot beszereznie, a menedzser modul lehetővé teszi, hogy egy bizonyos típusú objektum teljes gyűjteményével dolgozzon.

Eljárás NewProcedure() Exportálás

DirectoryItem = Könyvtárak. Elnevezéstan. NewProcedure() ;

Vagy egy változóhoz:

Változó NewVariable Export

DirectoryItem = Könyvtárak. Elnevezéstan. newVariable;

Tekintsük az objektummodul és a kezelőmodul használatának különbségeit a dokumentum nyomtatott formájának létrehozási eljárásának példáján.

Az objektummodul használatakor a kód így néz ki:

Funkció PrintDocument (Link) Exportálás
//Ennek a függvénynek egy adott dokumentumra mutató hivatkozást kell átadni
Vissza TabDoc;
EndFunctions

A dokumentum űrlapon létre kell hoznia egy eljárást, amely a dokumentumra mutató hivatkozást ad át a nyomtatási funkciónak.

&AtClient
Nyomtatási eljárás (parancs)
TabDoc = PrintOnServer() ;
TabDoc. Előadás() ;
Vége eljárás
&A szerveren
PrintOnServer() függvény
Doc = FormAttributeToValue("Object" ) ;
Vissza Doki PrintDocument(Object. Link) ;
EndFunctions

Ennek a módszernek az a hátránya, hogy csak egy objektum nyomtatását teszi lehetővé. Ha egyszerre több dokumentumot kell nyomtatnia, akkor mindegyiket be kell szereznie, majd meghívnia kell a függvényt az objektummodulból. Ez jelentős rendszererőforrást igényel, mivel egy objektum fogadásakor az teljesen belefér a RAM-ba.

A teljesítmény szempontjából sokkal jobb a menedzser modult használni, amikor csak lehetséges. Példánkban a probléma megoldása így fog kinézni.
PrintOnServer() függvény
Dokumentumok visszaküldése. Dokumentumunk. PrintDocument(ArrayReferences) ;
EndFunctions

A kezelő modul használata esetén a nyomtatási eljárás a dokumentum űrlapról és a lista űrlapról is meghívható, a tömbben lévő több dokumentumra hivatkozásokat átadva. Ebben az esetben a rendszernek nem kell minden egyes dokumentumot fogadnia a tömbből, ami jelentősen megtakarítja a rendszer erőforrásait.

Mikor érdemes tehát az objektummodult és mikor a menedzser modult használni?

Minden a feladattól függ. Ha egy objektumra való hivatkozás elegendő a végrehajtásához (például egy nyomtatási feladat), akkor jobb a menedzser modul használata. Ha a feladat az adatok megváltoztatása, például egy dokumentum kitöltése, akkor azt be kell szerezni és használni kell az objektummodult.

A szoftvermodulok végrehajtható kódot tartalmaznak az 1C nyelven, amely szükséges ahhoz, hogy bizonyos módon reagáljanak a rendszer vagy a felhasználó műveleteire, amikor a vizuális fejlesztő eszközök nem elegendőek. A programmodulokban is leírhatjuk saját módszereinket (eljárásokat és függvényeket).

A szoftvermodul általában három részből áll:

  • változó deklarációs terület;
  • eljárás és funkció leírási terület;
  • a program fő szövege.

Példa egy programmodul felépítésére:

//******************** VÁLTOZÓ NYILATKOZAT TERÜLET *****************************

Rem vezetéknév export; / /ez egy globális változó
Változónév, Patronim; //ez egy modulváltozó
Név módosítása; //ez is egy modulváltozó és elérhető

//modulunk bármely eljárásából és funkciójából

//*************** ELJÁRÁS ÉS FUNKCIÓ LEÍRÁSI TERÜLET ****************

Eljárás Eljárás1 ()
Változó Összesen ; / /Total egy helyi változó (eljárási változó)

Összesen = Vezetéknév + "" + Keresztnév + " "+ Apanév;

Vége eljárás

Funkció Funkció1 ()

// függvény utasítások

Return(Vezetéknév + " " + Keresztnév );

EndFunctions

//**************************** A PROGRAM FŐSZÖVEGE ******************** *

Vezetéknév = "Ivanov";
Név = "Iván";
Középső név = "Ivanovich";

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

Egy adott programmodulban bármelyik terület hiányozhat.
Változó deklarációs hatókör A modul szövegének elejétől a Procedure vagy a Function utasítás vagy bármely végrehajtható utasítás első utasításáig kerül. Ez a szakasz csak változó deklarációs utasításokat tartalmazhat.

Az eljárások és funkciók leírása a Procedure vagy a Function utasítás első utasításától kezdve az eljárás vagy függvény deklaráció törzsén kívüli bármely végrehajtható utasításba kerül.

A program fő szövegterülete Az eljárások vagy függvények törzsén kívüli első végrehajtható utasítástól a modul végéig kerül. Ez a szakasz csak végrehajtható utasításokat tartalmazhat. A program fő szövegének területe a modul inicializálásakor kerül végrehajtásra. Általában a fő programrészben célszerű utasításokat elhelyezni a változók inicializálására bizonyos értékekkel, amelyeket a modul eljárásainak vagy funkcióinak első hívása előtt hozzá kell rendelni.

A programmodulok a konfiguráció azon helyein helyezkednek el, ahol adott műveleti algoritmusok leírása szükséges. Ezeket az algoritmusokat olyan eljárásokként vagy függvényekként kell megtervezni, amelyeket a rendszer maga hív meg előre meghatározott helyzetekben (például hivatkozási űrlap megnyitásakor, párbeszédpanelen egy gombra kattintva, objektum megváltoztatásakor stb.).

Minden különálló programmodult a rendszer egészeként érzékel, így a programmodul összes eljárása és funkciója egyetlen kontextusban kerül végrehajtásra.

A modulok végrehajtási kontextusa kliens és szerver kontextusra oszlik. Emellett egyes szoftvermodulok mind kliens, mind szerver oldalon lefordíthatók.

Alkalmazási modul (felügyelt vagy normál)

Az alkalmazásmodul a rendszer elején és végén inicializált események eljárásait (kezelőit) írja le. Például egy alkalmazás indításakor frissíthet néhány konfigurációs adatot, és kilépéskor megkérdezheti, hogy egyáltalán ki kell-e lépnie a programból. Ezenkívül ez a modul elfogja a külső berendezésekből, például kereskedelmi vagy pénzügyi eszközökből származó eseményeket. Érdemes megjegyezni, hogy az alkalmazásmodul csak az alkalmazás interaktív indításakor, azaz a programablak indításakor kerül végrehajtásra. Ez nem történik meg, ha az alkalmazás módban indul el com kapcsolatokat.
Az 1C 8 platformon két különböző alkalmazásmodul található. Ezek a Közös alkalmazás modul és a Felügyelt alkalmazás modul. Különböző kliensek indításakor aktiválódnak. Például a Managed Application modul a webes kliens elindításakor aktiválódik, vékony kliensés vastag kliens felügyelt alkalmazás módban. A normál alkalmazásmodul pedig akkor indul el, amikor a vastag kliens normál alkalmazási módban elindul. Az alkalmazásindítási mód beállítása a „Fő indítási mód” konfigurációs tulajdonságban.

Az alkalmazás modul tartalmazhatja mind a 3 részt - változók deklarációit, eljárások és függvények leírását, valamint a program fő szövegét. Az alkalmazás modult a kliens oldalon fordítják le, ami erősen korlátoz minket sokféle adat felhasználásában. Kibővítheti egy alkalmazásmodul környezetét a megosztott modulok metódusaival, amelyeknél be van állítva a Call Server tulajdonság. Az exportálásként megjelölt alkalmazásprogram-modul összes változója és metódusa elérhető lesz bármely ügyféloldali konfigurációs modulban. Azonban bármilyen csábító is, ne helyezzen el nagy számú eljárást és funkciót ide. Minél több kód van egy adott modulban, annál hosszabb a fordítási idő, és ennek következtében az alkalmazás indítási ideje is.

Ahogy fentebb említettük, az alkalmazásmodul kezeli az alkalmazás kezdő és záró eseményeit. Ezen események mindegyikének kezeléséhez az alkalmazásmodulban van néhány kezelő: Before ... és When ... A különbségek közöttük a következők: amikor a kezelőben található, Előtte ... kódot végrehajtják, a művelet még nem történt meg, és megtagadhatjuk annak végrehajtását. Erre való az Elutasítás opció. Az On-kezelőkben a művelet már megtörtént, és nem tagadhatjuk meg az alkalmazás elindítását vagy kilépését.

Külső csatlakozó modul

  • mind a 3 területet tartalmazhatja
  • a konfiguráció gyökér részében található

A modul célja hasonló az alkalmazási modul céljához. Kezeli az alkalmazás kezdő és záró eseményeit. A külső csatlakozási modul akkor aktiválódik, amikor az alkalmazást com-connection módban indítják. Maga a külső csatlakozási folyamat nem interaktív folyamat. Ebben az üzemmódban a program a információs bázisés az alkalmazás ablaka nem nyílik meg, ami bizonyos korlátozásokat támaszt az interaktív munkára szánt módszerek használatában. Ebben a módban nem hívhat párbeszédablakokat, figyelmeztetéseket és üzeneteket küldhet a felhasználónak stb. Egyszerűen nem futnak.

Az alkalmazás modulhoz hasonlóan itt is elérhető mindhárom terület: változó deklarációk, eljárások és függvények leírásai, valamint a program fő szövege. A fő különbség az alkalmazás modulhoz képest, hogy com-connection módban az infobázissal minden munka a szerver oldalon történik, így a külső kapcsolati modul a szerver oldalon kerül összeállításra. Ennek megfelelően a gyakori ügyfélmodulok exportváltozói és metódusai nem érhetők el benne.

munkamenet modul

  • szerver oldalon hajtják végre
  • a konfiguráció gyökér részében található

Ez egy rendkívül speciális modul, amelyet kizárólag a munkamenet-paraméterek inicializálására terveztek. Miért kellett ehhez saját modult készíteni? Használata annak köszönhető, hogy maga az alkalmazás is elindítható különféle módok(amely egy felügyelt alkalmazásmodult, egy normál alkalmazásmodult vagy egy külső csatlakozási modult hajt végre), és a szekcióparamétereket inicializálni kell az indítási módtól függetlenül. Ahhoz, hogy ne ugyanazt a programkódot írjuk be mindhárom modulba, szükségünk volt rá kiegészítő modul, amely az alkalmazás indítási módjától függetlenül végrehajtódik.

Egyetlen "SetSessionParameters" esemény van a szekciómodulban, amely a legelső, még az alkalmazásmodul PreSystemBegin eseménye előtt aktiválódik. Nincs benne változó deklarációs rész és fő programrész. És az exportálási módszereket sem lehet deklarálni. A modul a szerver oldalon van lefordítva.

Általános modulok

  • tartalmazhat egy területet az eljárások és funkciók leírására
  • szerver vagy kliens oldalon fut (a modul beállításaitól függően)
  • a konfigurációs objektumok fájának ágában található "Általános" - "Általános modulok"

A közös modulok célja néhány általános algoritmus leírása, amelyeket más konfigurációs modulok hívnak meg. Az általános modul nem tartalmaz változó deklarációs területeket és a program törzsét. Ebben deklarálhatunk export metódusokat, amelyek elérhetőségét a modul beállításai határozzák meg (melyik oldalon fut: szerver vagy kliens oldalon). Tekintettel arra, hogy a változó deklaráció szakasza nem érhető el, nem lehet globális változókat definiálni megosztott modulokban. Ehhez használhatja az alkalmazás modult.

A megosztott modul viselkedése a beállított paraméterektől függ (globális vagy nem, különféle fordítási jelzők, elérhető-e szerverhívás stb.). Íme néhány tipp a megosztott modulok beállításához:

Jó gyakorlat, ha nem használjuk mindenhol a „Globális” zászlót. Ez csökkenti az alkalmazás indítási idejét, valamint javítja a kód olvashatóságát (persze, ha a közös modulnak teljesen értelmes neve van);
- Nem tanácsos egynél több összeállítási jelzőt használni. Nincs olyan sok metódus, amit különböző kontextusban kell végrehajtani, és ha mégis szükség van ilyen módszerekre, akkor külön közös modult lehet kijelölni hozzájuk;
- a "Szerverhívás" jelzőnek csak akkor van értelme, ha a modul "A szerveren" van lefordítva. Ezért az összes többi fordítási jelzőt el kell távolítani a különféle problémák elkerülése érdekében;
- ha a modul metódusaiban az adatok tömeges feldolgozása, az adatbázisba való olvasás és írás történik, akkor a munka sebességének növelése érdekében jobb, ha letiltja a hozzáférés-szabályozást a "Privileged" jelző beállításával. Ez a mód csak a kiszolgálón lefordított megosztott modulokhoz érhető el.

Űrlap modul

  • mind a 3 területet tartalmazhatja
  • szerver és kliens oldalon hajtják végre

Az űrlapmodult úgy tervezték, hogy kezelje a felhasználói műveleteket ezzel az űrlappal (gombkattintási esemény kezelése, űrlapattribútum módosítása stb.). Vannak olyan események is, amelyek közvetlenül az űrlaphoz kapcsolódnak (például annak megnyitása vagy bezárása). A kezelt és a normál űrlapok moduljai elsősorban abban különböznek egymástól, hogy a modul kezelt formában egyértelműen elválasztva a kontextustól. Minden eljárásnak vagy függvénynek rendelkeznie kell egy fordítási direktívával. Ha a fordítási direktíva nincs megadva, akkor ez az eljárás vagy függvény a szerver oldalon kerül végrehajtásra. A szokásos formában minden kód a kliens oldalon fut le.

A kezelt űrlapstruktúra tartalmaz egy változó deklarációs részt, az eljárások és funkciók leírását, valamint a program törzsét (az űrlap inicializálásakor fut le). A szabványos űrlap eseményeket az űrlap elvárt eljárásainak és funkcióinak listáján keresztül érhetjük el (Ctrl+Alt+P), vagy magának az űrlapnak a tulajdonságpalettáján keresztül.

Ha a fő attribútum hozzá van rendelve az űrlaphoz, akkor a fő attribútumként használt alkalmazásobjektum tulajdonságai és metódusai elérhetővé válnak az űrlapmodulban.

Objektum modul

  • mind a 3 területet tartalmazhatja
  • szerver oldalon hajtják végre

Ez a modul a legtöbb konfigurációs objektumhoz elérhető, és általában az objektumhoz közvetlenül kapcsolódó események feldolgozására szolgál. Például objektumok rögzítésének és törlésének eseményei, egy objektum adatainak kitöltésének ellenőrzése, dokumentum feladása stb.

Egyes objektummodul-események megduplázzák az űrlapmodul eseményeket. Például a rekordhoz kapcsolódó események. Meg kell azonban érteni, hogy az űrlapmodul eseményei csak az objektum adott formáján, azaz az adott űrlap megnyitásakor kerülnek végrehajtásra. Az objektummodul eseményei pedig mindenképpen meghívásra kerülnek, még az objektummal való programozás során is. Ezért ha olyan metódusokra van szüksége, amelyek egy objektumhoz vannak társítva anélkül, hogy az objektum egy adott formájához lennének kötve, akkor jobb, ha ehhez az objektummodult használja.

Objektumkezelő modul

  • mind a 3 területet tartalmazhatja
  • szerver oldalon hajtják végre

Az objektumkezelő modul csak az 1C 8.2-es verziótól kezdve jelent meg. A kezelőmodul minden alkalmazásobjektumhoz létezik, és ezt az objektumot konfigurációs objektumként kezeli. A menedzser modul lehetővé teszi egy objektum funkcionalitásának kiterjesztését olyan (írási) eljárások és függvények bevezetésével, amelyek nem az adatbázis-objektum egy adott példányára vonatkoznak, hanem magára a konfigurációs objektumra. Az objektumkezelő modul lehetővé teszi, hogy egy adott objektumhoz közös eljárásokat, függvényeket helyezzünk el, és ezeket kívülről, például feldolgozásból érjük el (természetesen, ha ez az eljárás vagy funkció az Export kulcsszóval történik). Mit ad ez nekünk újat? Általánosságban elmondható, hogy nem más, mint az eljárások objektumok szerinti rendszerezése és külön helyeken való tárolása - Object Manager Modules. Ezeket az eljárásokat és függvényeket ugyanígy elhelyezhetjük közös modulokban is, de az 1C azt tanácsolja, hogy az objektumok közös eljárásait és funkcióit helyezzük el az Object Manager Module-ban. Példák az Objektumkezelők modul eljárásainak és funkcióinak használatára: címtár vagy dokumentum egyes adatainak kezdeti kitöltése bizonyos feltételek mellett, címtár vagy dokumentum adatainak kitöltésének ellenőrzése bizonyos feltételek mellett stb.

Parancs modul

  • tartalmazhat egy szakaszt, amely eljárásokat és funkciókat ír le
  • ügyféloldalon hajtják végre

A parancsok az alkalmazásobjektumoknak vagy a konfiguráció egészének alárendelt objektumok. Minden parancshoz tartozik egy parancsmodul, amelyben leírhat egy előre meghatározott CommandProcess() eljárást a parancs végrehajtásához.

Mik azok a modulok és pontosan mire valók? A modul tartalmazza a programkódot. Sőt érdemes megjegyezni, hogy a 7.7-es platformmal ellentétben, ahol a kód mind az űrlapelemek tulajdonságaiban, mind az elrendezési táblák celláiban elhelyezhető, a 8.x platformon minden kódsort el kell helyezni. valamilyen modulban. Általában egy modul három részből áll - egy szakasz a változók leírására, egy szakasz az eljárások és funkciók leírására, valamint egy szakasz a fő program számára. Ez a struktúra néhány kivételtől eltekintve szinte minden platformmodulra jellemző. Egyes moduloknak nincs változó deklarációs szakasza és fő programrésze. Például a Session Module és bármely általános modul.

A modulok végrehajtási környezete általában kliens és szerver kontextusra oszlik. Emellett egyes modulok kliens és szerver oldalon is lefordíthatók. Néhányuk pedig tisztán szerveroldali vagy ügyféloldali. Így:

Alkalmazási modul

A modult úgy tervezték, hogy megragadja az alkalmazás indításának (a konfiguráció betöltésének) és annak befejezésének pillanatait. És a megfelelő eseményekben megszervezheti az ellenőrzési eljárásokat. Például az alkalmazás indításakor frissítsen bármilyen konfigurációs referenciaadatot, a munka végén kérdezze meg, hogy érdemes-e egyáltalán elhagyni, esetleg még nem ért véget a munkanap. Ezenkívül lehallgatja az eseményeket külső berendezésekről, például kereskedelmi vagy pénzügyi eszközökről. Érdemes megjegyezni, hogy az alkalmazásmodul csak interaktív indítás esetén fogja el a leírt eseményeket. Azok. amikor maga a programablak létrejön. Ez nem történik meg, ha az alkalmazás com-connection módban indul el.

A 8.2-es platformon két különböző alkalmazásmodul található. Ezek a Közös alkalmazás modul és a Felügyelt alkalmazás modul. Különböző kliensek indításakor aktiválódnak. A felügyelt alkalmazásmodul így aktiválódik, amikor a webes ügyfél, a vékony kliens és a vastag kliens felügyelt alkalmazás módban indul. A normál alkalmazásmodul pedig akkor indul el, amikor a vastag kliens normál alkalmazási módban elindul.

Az összes rész elhelyezhető az alkalmazás modulban - a változók, eljárások és funkciók leírása, valamint a fő program leírása. Az alkalmazás modult a kliens oldalon állítják össze, így ez erősen korlátoz minket sokféle adat elérhetőségében. Kibővítheti egy alkalmazásmodul környezetét a megosztott modulok metódusaival, amelyeknél be van állítva a Call Server tulajdonság. Minden exportálásként megjelölt változó és metódus elérhető lesz bármely ügyféloldali konfigurációs modulban. Bármilyen csábító is, ne tegyen túl sok módszert ide. Minél több kódot tartalmaz, annál hosszabb a fordítási idő, és ennek következtében az alkalmazás indítási ideje is, ami nagyon bosszantó a felhasználók számára.

Ahogy fentebb említettük, az alkalmazásmodul kezeli az alkalmazás kezdő és záró eseményeit. Ezen események mindegyikének kezeléséhez az alkalmazásmodulban van néhány kezelő: Előtte ... és Mikor ... A különbség köztük az, hogy amikor a kezelőben található kód végrehajtásra kerül, a művelet még nem történt meg. megtörtént, és megtagadhatjuk annak végrehajtását. Erre való az Elutasítás opció. Az On-kezelőkben a művelet már megtörtént, és nem tagadhatjuk meg az alkalmazás elindítását vagy kilépését.

Külső csatlakozó modul

A modul célja hasonló az alkalmazási modul céljához. Kezeli az alkalmazás kezdő- és végpontját. A külső csatlakozási modul akkor aktiválódik, amikor az alkalmazást com-connection módban indítják. Maga a külső csatlakozási folyamat nem interaktív folyamat. Ebben a módban programozott munka történik az információs bázissal, és az alkalmazás ablaka nem nyílik meg, ami bizonyos korlátozásokat ír elő az interaktív munkára szánt módszerek használatára vonatkozóan. Ebben a módban nem használhat párbeszédablak-hívásokat, figyelmeztető üzeneteket stb. Egyszerűen nem fognak működni.

Az alkalmazásmodulhoz hasonlóan itt is elérhetők a változókat, metódusokat és a főprogramot leíró szakaszok. Deklarálhat exportváltozókat és metódusokat is. A különbség az, hogy com-connection módban az infobázissal minden munka a szerver oldalon történik, így a külső kapcsolati modul kizárólag a szerveren kerül fordításra. Ennek megfelelően a gyakori ügyfélmodulok exportváltozói és metódusai nem érhetők el benne.

munkamenet modul

Ez egy rendkívül speciális modul, és kizárólag a munkamenet-paraméterek inicializálására szolgál. Miért kellett ehhez saját modult készíteni? Ennek az az oka, hogy az inicializálási folyamat megkövetelheti bizonyos kódok végrehajtását, emellett az alkalmazás különböző kliensek alatt is elindítható (ami különböző alkalmazásmodulok vagy külső csatlakozási modulok végrehajtását vonja maga után), és a munkamenet paramétereit kötelező bármely indítási módban inicializálható. Ezért szükség volt egy további modulra, amely bármely alkalmazásindítási módban végrehajtódik.

A szekciómodulban egyetlen "SetSessionParameters" esemény található, amely a legelsőként aktiválódik, még az alkalmazásmodul BeforeSystemStart eseménye előtt. Nincs benne változó deklarációs rész és fő programrész. És az exportálási módszereket sem lehet deklarálni. A modul a szerver oldalon van lefordítva.

Kerülje el azt a kísértést, hogy ez a modul az alkalmazás minden indításakor lefusson, és olyan kódot helyezzen el benne, amely nem kapcsolódik közvetlenül a munkamenet-paraméterek inicializálásához. Ez annak köszönhető, hogy a SetSessionParameters kezelő a rendszer működése közben többször is meghívható. Például ez történik, amikor nem inicializált paraméterekhez férünk hozzá. És bár el lehet fogni ennek az eseménynek az első indításának pillanatát (a RequiredParameters Undefined típusú), azonban meg kell jegyezni, hogy ez a modul privilegizált módban van fordítva, pl. nem szabályozza a hozzáférési jogokat. És a második pont, még mindig nem lehetünk száz százalékig biztosak abban, hogy a rendszer elindul. Hirtelen az alkalmazásmodul meghibásodik, és megpróbálunk valamilyen műveletet végrehajtani az adatbázissal.

Általános modulok

A modulok célja néhány általános algoritmus leírása, amelyeket más konfigurációs modulok hívnak meg. Az általános modul nem tartalmaz változó deklarációs részt és fő programrészt. Ebben deklarálhatunk export metódusokat, amelyek hozzáférhetőségi kontextusát a fordítási jelzők határozzák meg. Tekintettel arra, hogy a változó deklaráció szakasza nem érhető el, nem lehet globális változókat definiálni megosztott modulokban. Ehhez a visszatérési érték gyorsítótárazású közös modulok vagy egy alkalmazásmodul funkcióit kell használni. Nem szabad megfeledkezni arról, hogy még ha a közös modul újrahasználati tulajdonsága „A munkamenet időtartamára” értékre van állítva, ebben az esetben a gyorsítótárazott értékek élettartama nem haladja meg a 20 percet attól a pillanattól számítva. utoljára elérve.
A megosztott modul viselkedése a beállított paraméterektől függ (globális vagy nem, különféle fordítási jelzők, elérhető-e szerverhívás stb.). Ebben a cikkben nem veszünk figyelembe mindenféle beállítást, valamint a viselkedési jellemzőket és buktatókat, amelyek akkor merülnek fel, ha a tulajdonságjelzőket indokolatlanul állítják be. Ez egy külön cikk témája. Maradjunk csak néhány ponton, amelyeket be kell tartani a zászlók beállításakor:

  • Jó hüvelykujjszabály, hogy ne használjuk mindenhol a „Globális” zászlót. Ez csökkenti az alkalmazás indítási idejét, valamint javítja a kód olvashatóságát (persze, ha a közös modulnak teljesen értelmes neve van).
  • Nem tanácsos egynél több fordításjelzőt használni. Nincs olyan sok metódus, amit különböző kontextusokban kell végrehajtani, és ha mégis szükség van ilyen módszerekre, akkor külön közös modult lehet hozzájuk rendelni.
  • A "Call Server" jelző csak akkor értelmes, ha a modul "A szerveren" van fordítva. Ezért az összes többi fordítási jelzőt el kell távolítani a különféle problémák elkerülése érdekében.
  • Ha a modul módszereit tömeges adatfeldolgozásra, az adatbázisba való olvasásra és írásra használják, akkor a munka sebességének növelése érdekében célszerű letiltani a hozzáférés-szabályozást a "Privileged" jelző beállításával. Ez a mód csak a kiszolgálón lefordított megosztott modulokhoz érhető el.

Űrlap modul

A felhasználói műveletek feldolgozására szolgál, pl. az adatbevitellel és azok helyességének feldolgozásával kapcsolatos különféle események. Modul szabályos alakú teljes egészében az ügyfélen van összeállítva. A felügyelt űrlapmodult viszont egyértelműen lehatárolja a végrehajtási kontextus, így minden változónak és metódusnak rendelkeznie kell fordítási utasítással. Ha a direktíva nincs kifejezetten megadva, akkor ez a változó vagy metódus a szerver oldalon lesz lefordítva. Az űrlap modulban elérhetők a változók és metódusok leírására szolgáló szakaszok, valamint a főprogram részlege.

Objektum modul

Ez a modul sok konfigurációs objektumra jellemző, és általában az objektum események feldolgozására szolgál. Például az objektumok írásának és törlésének eseményei, dokumentumok feladása stb.

Egyes objektummodul-események megduplázzák az űrlapmodul eseményeket. Például a rekordhoz kapcsolódó események. Meg kell azonban érteni, hogy az űrlapmodul eseményei csak egy adott űrlapobjektumon kerülnek végrehajtásra. Általában több ilyen forma létezhet. Az objektummodul eseményei pedig mindenképpen meghívásra kerülnek, még az objektummal való programozás során is. Ezért, ha minden esetben szükséges valamilyen kódot végrehajtani, akkor jobb, ha ehhez egy objektummodul eseményt használunk.

Az objektummodult kizárólag a szerveren fordítják le. Ebben megadhatja azokat az exportálási változókat és metódusokat, amelyek más konfigurációs modulokban elérhetők lesznek. Ezen tulajdonságok és módszerek segítségével jelentősen bővíthetjük az objektum funkcionalitását.

Objektumkezelő modul

Ez a modul számos konfigurációs objektumhoz létezik. Ennek a modulnak az a fő célja, hogy újradefiniálja a szabványos kiválasztási eseményt, amely soronkénti bevitelkor történik, és kibővítse a menedzser funkcióit. A modul a szerver oldalon van lefordítva. Lehetőség van export tulajdonságok és módszerek definiálására. A menedzser export metódusainak meghívása nem igényli magát az objektumot.

A fentiekhez hozzáadhat néhány konfigurációs modult és a metódusok kölcsönös meghívásának módjait felügyelt alkalmazás módban. A nyíl azt az irányt jelzi, amelybe a megfelelő metódus hívásához léphet. Amint az a diagramból látható, a szerverkontextus teljesen zárt. De az ügyfélkörnyezetből elérhető a szerver metódusai.

Szimbólumok a sémán: O.M. Kliens - Kliens közös modul; O.M. Szerver - Szerver közös modul; M.F. Kliens - Az űrlap modul ügyfél eljárásai; M.F. Szerver – Az űrlapmodul szerver eljárásai.