Mājas / Spēļu konsoles / Moduļi 1s uzņēmumā. Vispārīgie moduļi. Karogs "Ārēja pievienošanās"

Moduļi 1s uzņēmumā. Vispārīgie moduļi. Karogs "Ārēja pievienošanās"

Vispārīgie moduļi 1C- konfigurācijas metadatu 1C 8.3 un 8.2 objekts, kurā tiek saglabāts programmas kods, kas bieži tiek izsaukts konfigurācijā. Funkciju/procedūru var izsaukt no jebkuras vietas konfigurācijā (ja tā ir eksportēta).

Kā lietot koplietoto moduli

Laba prakse ir ievietot procedūru vai funkciju kopējā modulī, ja tā tiek izsaukta vairāk nekā vienā vietā. Pirmkārt, ja procedūra tiek labota, tā ir jālabo tikai vienā vietā. Otrkārt, tas panāk lielāku kārtību kodā.

Tipisks izplatīta moduļa piemērs ir grāmatojumu apstrāde pēc kāda reģistra, starpības summas iegūšana darba dienās, valūtas kursu konvertēšana, daudzuma/cenas/summas pārrēķins tabulas sadaļā un citas funkcijas.

Moduļa vispārīgie rekvizīti

Viena no galvenajām atšķirībām starp koplietotajiem moduļiem un citiem moduļiem ir tā, ka nevar deklarēt koplietotos mainīgos.

Saņemiet 267 1C video nodarbības bez maksas:

Sīkāk apskatīsim kopējā moduļa rekvizītu paleti:

  • Globāli- ja karodziņš ir iestatīts, šī moduļa funkcijas un procedūras kļūst pieejamas globālā kontekstā. Tie. tos var izsaukt jebkurā konfigurācijas vietā bez kopējā moduļa nosaukuma. Tomēr tiek pievienots nosacījums — procedūru un funkciju nosaukumiem šajā kopējā modulī ir jābūt unikāliem globālā kontekstā.
  • Serveris- Šī kopējā moduļa procedūras un funkcijas var izpildīt serverī.
  • Ārējais savienojums- šī kopējā moduļa programmu kodus var izpildīt, ja tie ir savienoti ar ārēju avotu (piemēram, COM).
  • Klients (pārvaldīta lietojumprogramma)— Šī kopējā moduļa procedūras un funkcijas var izmantot biezā klientā pārvaldītās lietojumprogrammas režīmā.
  • Klients (regulāra pieteikšanās)— šī kopējā moduļa programmu kodus var izmantot biezajā klientā parastajā lietojumprogrammas režīmā.
  • Servera zvans- karodziņš, kas ļauj klientam izmantot procedūras un funkcijas no šī kopējā moduļa.
  • - ja iestatīts uz True, piekļuves tiesību pārbaude tiks atspējota šajā kopējā modulī.
  • Atkārtoti izmantot— definē iestatījumus atgrieztajām vērtībām, ja opcija ir iespējota, tad pēc pirmās izpildes sistēma atcerēsies šo ievades parametru vērtību un atgriezīs gatavu vērtību. Tam var būt šādas vērtības: nav izmantots- izslēgt, zvana brīdī- noteiktas procedūras laikā, sesijas laikā- līdz lietotājs ir slēdzis sesiju (programmu).

Ja jūs sākat apgūt 1C programmēšanu, mēs iesakām mūsu bezmaksas kursu (neaizmirstiet

1.1. Kopīgi moduļi tiek izveidoti, lai ieviestu procedūras un funkcijas, kas ir apvienotas saskaņā ar dažiem kritērijiem. Parasti vienas konfigurācijas apakšsistēmas procedūras un funkcijas (pārdošana, pirkšana) vai līdzīgas funkcionalitātes procedūras un funkcijas (darbs ar virknēm, vispārējs mērķis) tiek ievietotas vienā kopējā modulī.

1.2. Izstrādājot koplietotus moduļus, jums vajadzētu izvēlēties vienu no četriem koda izpildes kontekstiem:

Kopējais moduļa veids Nosaukšanas piemērs Servera zvans Serveris Ārējais savienojums Klients
(regulāra lietošana)
Klients
(pārvaldīta lietojumprogramma)
1. ServerisVispārēja nolūka (vai vispārējas nozīmes serveris)
2. Serveris, lai zvanītu no klientaGeneral PurposeCallServer
3. KlientsVispārēja mērķa klients (vai vispārēja mērķa globāls)
4. Klients-serverisGeneral PurposeClientServer

2.1. Servera kopējie moduļi ir paredzēti servera procedūru un funkciju mitināšanai, kuras nav pieejamas lietošanai no klienta koda. Tie īsteno visu lietojumprogrammas iekšējo servera biznesa loģiku.
Lai konfigurācija darbotos pareizi ārējos savienojuma režīmos, pārvaldītās un regulārās lietojumprogrammas, servera procedūras un funkcijas ir jāievieto kopējos moduļos ar šādiem raksturlielumiem:

  • Serveris(izvēles rūtiņa Servera zvans nokrita),
  • Klients (regulāra pieteikšanās),
  • Ārējais savienojums.

Šajā gadījumā tiek garantēts, ka servera procedūras un funkcijas var izsaukt ar mainīga tipa parametriem (piemēram, DirectoryObject, DocumentObject utt.). Kā likums, tas ir:

  • apdarinātāji dokumentu, direktoriju utt. notikumu abonēšanai, kas kā parametru izmanto mainīgu vērtību (objektu).
  • servera procedūras un funkcijas, kurām kā parametrs tiek nodots objekts no direktoriju, dokumentu u.c. moduļiem, kā arī no moduļiem ar notikumu abonementiem.

Serveru kopējie moduļi tiek nosaukti saskaņā ar vispārīgajiem metadatu objektu nosaukumu piešķiršanas noteikumiem.
Piemēram: Darbs ar failiem, Vispārīgs mērķis

Dažos gadījumos var tikt pievienots postfix, lai novērstu nosaukumu konfliktus ar globālā konteksta rekvizītiem. "Serveris".
Piemēram: ScheduledTasksServer, Datu apmaiņas serveris.

2.2. Servera kopējie moduļi, kas jāizsauc no klienta satur servera procedūras un funkcijas, kas pieejamas lietošanai no klienta koda. Tie veido lietojumprogrammu servera klienta API.
Šādas procedūras un funkcijas tiek ievietotas kopējos moduļos ar atribūtu:

  • Serveris(izvēles rūtiņa Servera zvans uzstādīts)

Servera kopējie moduļi, kas jāizsauc no klienta, tiek nosaukti saskaņā ar vispārējiem metadatu objektu nosaukšanas noteikumiem, un tie jānosauc ar postfix "Servera zvans".
Piemēram: Darbs ar FilesCalling Server

Ņemiet vērā, ka eksporta procedūras un funkcijas šādos izplatītajos moduļos nedrīkst saturēt mainīga tipa parametrus ( DirectoryObject, DocumentObject utt.), jo to pārsūtīšana no (vai uz) klienta kodu nav iespējama.

Skatīt arī:Ierobežojums, lai iestatītu karodziņu "Servera izsaukums" parastajiem moduļiem

2.3. Klientu koplietotie moduļi satur klienta biznesa loģiku (funkcionalitāte definēta tikai klientam), un tai ir šādas īpašības:

  • Klients (pārvaldīta lietojumprogramma)
  • Klients (regulāra pieteikšanās)

Izņēmums ir gadījumi, kad klienta procedūrām un funkcijām jābūt pieejamām tikai pārvaldītās lietojumprogrammas režīmā (tikai parastajā lietojumprogrammas režīmā vai tikai izejošā režīmā). Šādos gadījumos ir pieņemama cita šo divu pazīmju kombinācija.

Klientu kopējie moduļi tiek nosaukti ar postfix "Klients".
Piemēram: WorkFilesClient, Vispārēja mērķa klients

Skatiet arī: klienta puses koda samazināšana

2.4. Dažos gadījumos ir iespējams izveidot klienta-servera kopējos moduļus ar procedūrām un funkcijām, kuru saturs ir vienāds gan serverī, gan klientā. Šādas procedūras un funkcijas ir ievietotas kopīgos moduļos ar šādām funkcijām:

  • Klients (pārvaldīta lietojumprogramma)
  • Serveris(izvēles rūtiņa Servera zvans nokrita)
  • Klients (regulāra pieteikšanās)
  • Ārējais savienojums

Parastie šāda veida moduļi tiek nosaukti ar postfiksu "Klientu serveris".
Piemēram: WorkFilesClient, General PurposeClientServer

Kopumā nav ieteicams vienlaikus definēt kopējos moduļus serverim un klientam (pārvaldītai lietojumprogrammai). Klientam un serverim definēto funkcionalitāti ieteicams ieviest dažādos koplietojamos moduļos - sk. 2.1 un 2.3. Šādu nepārprotamu klienta un servera biznesa loģikas nodalīšanu nosaka apsvērumi par pielietotā risinājuma modularitātes palielināšanu, izstrādātāja kontroles vienkāršošanu pār klienta un servera mijiedarbību un kļūdu riska samazināšanu, ko rada būtiskas atšķirības klienta un servera izstrādes prasībās. kods (nepieciešamība samazināt klientam izpildīto kodu, atšķirīga objektu un platformu veidu pieejamība utt.). Tajā pašā laikā jāpatur prātā neizbēgamais kopējo moduļu skaita pieaugums konfigurācijā.

Īpašs jaukto klienta-servera moduļu gadījums ir formu un komandu moduļi, kas ir īpaši izstrādāti servera un klienta biznesa loģikas ieviešanai vienā modulī.

3.1. Parasto moduļu nosaukumus ieteicams veidot saskaņā ar vispārīgajiem metadatu objektu nosaukumu piešķiršanas noteikumiem. Kopējā moduļa nosaukumam jāsakrīt ar apakšsistēmas vai atsevišķa mehānisma nosaukumu, kura procedūras un funkcijas tas īsteno. Izplatīto moduļu nosaukumos ieteicams izvairīties no tādiem izplatītiem vārdiem kā "Procedūras", "Funkcijas", "Apdarinātāji", "Modulis", "Funkcionalitāte" utt. un piemērot tos tikai izņēmuma gadījumos, kad tie pilnīgāk atklāj moduļa mērķi.

Lai atšķirtu vienas apakšsistēmas kopīgos moduļus, kas radīti dažādos kontekstos veikto procedūru un funkciju ieviešanai, ieteicams tiem piešķirt postfiksus, kas aprakstīti iepriekš punktos. 2.1-2.4.

Jaunajās 1C:Enterprise sistēmas konfigurāciju versijās daudzas funkcijas un procedūras ir pārvietotas no objektu moduļiem (dokumenti, direktoriji utt.) uz pārvaldnieka moduļiem. Apskatīsim atšķirības starp šiem diviem moduļiem.

Saskaņā ar objektorientētās programmēšanas teoriju objektu metodes iedala divās grupās: statiskās un vienkāršas. Vienkāršām metodēm ir piekļuve tikai noteiktam klases gadījumam. Statiskajām metodēm nav piekļuves objektu datiem, bet tās darbojas klasē kopumā.

Ja mēs to visu pārvēršam 1C: Enterprise sistēmas terminos, tad Objekta modulis satur vienkāršas metodes. Lai tos izmantotu, vispirms jāiegūst konkrēts objekts: direktorijas elements, dokuments utt. Vadītāja modulis satur statiskas metodes. Lai to izmantotu, nav nepieciešams atsevišķi iegūt katru konkrēto objektu, tas ļauj strādāt ar visu kolekciju uzreiz.

Objekta modulis var būt procedūras un funkcijas, kuras var izmantot ārēji. Lai to izdarītu, šāda procedūra vai funkcija tiek apzīmēta ar vārdu Eksportēt.

Funkcija NewFunction() Eksportēt

Lai izmantotu šādu funkciju no objekta moduļa, vispirms ir jāiegūst atsauce uz vajadzīgo objektu, izmantojot funkciju GetObject().



Per = objekts. NewFunction() ;

Tāpat jūs varat izveidot jaunus mainīgos, ko var izmantot no dažādiem konfigurācijas objektiem.

Mainīgais JaunsMainīgais eksports

DirectoryItem = Katalogi. Nomenklatūra. FindByCode("000000001" );
Objekts = direktorija elements. GetObject() ;
Objekts. JaunsMainīgais= );

Tādējādi ir iespējams papildināt objektu standarta procedūras, funkcijas un īpašības (mainīgos). Šādi mainīgie ir dinamiski, tie netiek glabāti informācijas bāzē un pastāv tikai strādājot ar saņemto objektu.

Vadītāja modulis ir visas tās pašas funkcijas, vienīgā atšķirība ir tā, ka jums nav nepieciešams iegūt konkrētu objektu, lai to izmantotu, pārvaldnieka modulis ļauj strādāt ar visu noteikta veida objektu kolekciju.

Procedūra NewProcedure() Eksportēt

DirectoryItem = Katalogi. Nomenklatūra. NewProcedure() ;

Vai mainīgajam:

Mainīgais JaunsMainīgais eksports

DirectoryItem = Katalogi. Nomenklatūra. jaunsMainīgais;

Apskatīsim atšķirības objekta moduļa un pārvaldnieka moduļa lietošanā uz dokumenta drukātās formas izveides procedūras piemēra.

Izmantojot objekta moduli, kods izskatīsies šādi:

Funkcija PrintDocument (Saite) Eksportēt
//Šai funkcijai ir jānodod saite uz konkrētu dokumentu
Atgriezt TabDoc;
EndFunctions

Dokumenta veidlapā ir jāizveido procedūra, kas nodod saiti uz dokumentu drukāšanas funkcijai.

&AtClient
Procedūras drukāšana (komanda)
TabDoc = PrintOnServer() ;
TabDoc. Show() ;
Procedūras beigas
&Serverī
Funkcija PrintOnServer()
Doc = FormAttributeToValue("Objekts") ;
Atgriezties Doc. DrukātDokuments(Objekts. Saite) ;
EndFunctions

Šīs metodes trūkums ir tāds, ka tā ļauj izdrukāt tikai vienu objektu. Ja jums ir jādrukā vairāki dokumenti vienlaikus, jums ir jāiegūst katrs no tiem un pēc tam jāizsauc funkcija no objekta moduļa. Tas prasa ievērojamus sistēmas resursus, jo, saņemot objektu, tas pilnībā iekļaujas RAM.

No veiktspējas viedokļa ir daudz labāk izmantot pārvaldnieka moduli, kad vien iespējams. Mūsu piemērā problēmas risinājums izskatīsies šādi.
Funkcija PrintOnServer()
Atgriezt dokumentus. MūsuDokuments. PrintDocument(ArrayReferences) ;
EndFunctions

Pārvaldnieka moduļa izmantošanas gadījumā drukas procedūru var izsaukt gan no dokumenta formas, gan no saraksta formas, nododot saites uz vairākiem masīvā esošajiem dokumentiem. Šajā gadījumā sistēmai nav jāsaņem katrs dokuments no masīva, kas ievērojami ietaupa sistēmas resursus.

Tātad, kad vajadzētu izmantot objekta moduli un kad izmantot pārvaldnieka moduli?

Viss atkarīgs no uzdevuma. Ja tā izpildei pietiek ar atsauci uz objektu (piemēram, drukas uzdevums), tad labāk izmantot pārvaldnieka moduli. Ja uzdevums ir mainīt datus, piemēram, aizpildot dokumentu, tad tas ir jāiegūst un jāizmanto objekta modulis.

Programmatūras moduļos ir izpildāms kods 1C valodā, kas nepieciešams, lai noteiktā veidā reaģētu uz sistēmas vai lietotāja darbībām, ja nepietiek ar vizuālās izstrādes rīkiem. Arī programmu moduļos varam aprakstīt savas metodes (procedūras un funkcijas).

Parasti programmatūras modulis sastāv no trim sadaļām:

  • mainīgā deklarācijas apgabals;
  • procedūru un funkciju apraksta apgabals;
  • programmas galvenais teksts.

Programmas moduļa struktūras piemērs:

//******************** MAINĪGĀ DEKLARĀCIJAS ZONA *************************

Rem uzvārda eksports; / /tas ir globāls mainīgais
Mainīgais vārds, uzvārds; //šis ir moduļa mainīgais
Mainīt vārdu; //tas ir arī moduļa mainīgais, un tam var piekļūt

//no jebkuras mūsu moduļa procedūras un funkcijas

//*************** PROCEDŪRAS UN FUNKCIJAS APRAKSTU JOMA ****************

Procedūra Procedūra1 ()
Mainīgais Kopējais ; / /Kopā ir lokāls mainīgais (procedūras mainīgais)

Kopā = Uzvārds + "" + Vārds + " "+ Patronīms;

Procedūras beigas

Funkcija Funkcija 1 ()

// funkciju priekšraksti

Atgriezties(Uzvārds + " " + Vārds );

EndFunctions

//**************************** PROGRAMMAS GALVENAIS TEKSTS ******************** *

Uzvārds = "Ivanovs";
Vārds = "Ivans";
Otrais vārds = "Ivanovičs";

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

Konkrētā programmas modulī var trūkt kāda no jomām.
Mainīgā deklarācijas joma tiek ievietots no moduļa teksta sākuma līdz pirmajam Procedūras vai Funkcijas priekšrakstam vai jebkuram izpildāmam priekšrakstam. Šajā sadaļā var būt tikai mainīgo deklarāciju paziņojumi.

Procedūru un funkciju apraksts tiek ievietots no pirmā procedūras vai funkcijas priekšraksta uz jebkuru izpildāmu paziņojumu ārpus procedūras vai funkcijas deklarācijas pamatteksta.

Galvenā programmas teksta zona tiek novietots no pirmā izpildāmā priekšraksta ārpus procedūru vai funkciju kopuma līdz moduļa beigām. Šajā sadaļā var būt tikai izpildāmi priekšraksti. Programmas galvenā teksta apgabals tiek izpildīts moduļa inicializācijas brīdī. Parasti galvenajā programmas sadaļā ir lietderīgi ievietot paziņojumus, lai inicializētu mainīgos ar dažām īpašām vērtībām, kas jāpiešķir pirms pirmā moduļa procedūru vai funkciju izsaukuma.

Programmas moduļi atrodas tajās konfigurācijas vietās, kur var būt nepieciešams konkrētu darbības algoritmu apraksts. Šie algoritmi jāveido kā procedūras vai funkcijas, kuras pati sistēma izsauks iepriekš noteiktās situācijās (piemēram, atverot atsauces formu, noklikšķinot uz pogas dialoglodziņā, mainot objektu utt.).

Katru atsevišķu programmas moduli sistēma uztver kā vienotu veselumu, tāpēc visas programmas moduļa procedūras un funkcijas tiek izpildītas vienotā kontekstā.

Moduļu izpildes konteksts ir sadalīts klienta un servera kontekstos. Turklāt dažus programmatūras moduļus var kompilēt gan klienta, gan servera pusē.

Lietojumprogrammas modulis (pārvaldīts vai parasts)

Lietojumprogrammas modulis apraksta to notikumu procedūras (apdarinātājus), kas tiek inicializēti sistēmas sākumā un beigās. Piemēram, startējot lietojumprogrammu, varat atjaunināt dažus konfigurācijas datus, un, izejot, varat jautāt, vai jums vispār vajadzētu iziet no programmas. Turklāt šis modulis pārtver notikumus no ārējām iekārtām, piemēram, tirdzniecības vai fiskālā aprīkojuma. Ir vērts atzīmēt, ka lietojumprogrammas modulis tiek izpildīts tikai interaktīvas lietojumprogrammas palaišanas gadījumā, tas ir, kad tiek palaists programmas logs. Tas nenotiek, ja lietojumprogramma tiek palaista režīmā com savienojumi.
1C 8 platformā ir divi dažādi lietojumprogrammu moduļi. Tie ir kopējās lietojumprogrammas modulis un pārvaldītās lietojumprogrammas modulis. Tie tiek aktivizēti, kad tiek startēti dažādi klienti. Piemēram, pārvaldītās lietojumprogrammas modulis tiek aktivizēts, kad tiek palaists tīmekļa klients, plāns klients un biezs klients pārvaldītās lietojumprogrammas režīmā. Un parastais lietojumprogrammas modulis tiek aktivizēts, kad biezais klients tiek palaists parastajā lietojumprogrammas režīmā. Lietojumprogrammas palaišanas režīma iestatījums ir iestatīts konfigurācijas rekvizītā “Galvenais palaišanas režīms”.

Lietojumprogrammas modulis var saturēt visas 3 sadaļas – mainīgo deklarācijas, procedūru un funkciju aprakstus, kā arī programmas galveno tekstu. Lietojumprogrammas modulis ir apkopots klienta pusē, kas mums ļoti ierobežo daudzu veidu datu izmantošanu. Lietojumprogrammas moduļa kontekstu var paplašināt, izmantojot koplietojamo moduļu metodes, kurām ir iestatīts rekvizīts Call Server. Visi lietojumprogrammas moduļa mainīgie un metodes, kas atzīmētas kā eksportētas, būs pieejami jebkurā klienta puses konfigurācijas modulī. Tomēr, lai cik vilinoši tas nebūtu, nevajadzētu šeit ievietot lielu skaitu procedūru un funkciju. Jo vairāk koda ir dotajā modulī, jo ilgāks ir kompilācijas laiks un līdz ar to arī lietojumprogrammas palaišanas laiks.

Kā minēts iepriekš, lietojumprogrammas modulis apstrādā lietojumprogrammas sākuma un beigu notikumus. Lai apstrādātu katru no šiem notikumiem lietojumprogrammas modulī, ir daži apstrādātāji Pirms ... un Kad ... Atšķirības starp tiem ir šādas: kad tiek izpildīts kods apstrādātājā Pirms ..., darbībai ir vēl nav notikusi, un mēs varam atteikties to izpildīt. Šim nolūkam ir paredzēta atteikuma opcija. Apdarinātājos Ieslēgtā darbība jau ir notikusi, un mēs nevaram atteikties palaist lietojumprogrammu vai iziet no tās.

Ārējā savienojuma modulis

  • var ietvert visas 3 zonas
  • atrodas konfigurācijas saknes sadaļā

Moduļa mērķis ir līdzīgs lietojumprogrammas moduļa mērķim. Tas apstrādā lietojumprogrammas sākuma un beigu notikumus. Ārējā savienojuma modulis tiek aktivizēts, kad lietojumprogramma tiek palaista savienojuma režīmā. Pats ārējais savienošanas process nav interaktīvs process. Šajā režīmā programma darbojas ar informācijas bāze un netiek atvērts aplikācijas logs, kas uzliek zināmus ierobežojumus interaktīvam darbam paredzēto metožu izmantošanai. Šajā režīmā nevar izmantot dialoga veidlapu izsaukumus, brīdinājumus un ziņojumus lietotājam utt. Viņi vienkārši nedarbosies.

Tāpat kā lietojumprogrammu modulī, arī šeit ir pieejamas visas trīs jomas: mainīgo deklarācijas, procedūru un funkciju apraksti, kā arī programmas galvenais teksts. Galvenā atšķirība no lietojumprogrammas moduļa ir tāda, ka com-savienojuma režīmā viss darbs ar informācijas bāzi notiek servera pusē, tāpēc ārējā savienojuma modulis tiek kompilēts servera pusē. Attiecīgi tajā nav pieejami parasto klientu moduļu eksporta mainīgie un metodes.

sesijas modulis

  • veikta servera pusē
  • atrodas konfigurācijas saknes sadaļā

Šis ir ļoti specializēts modulis, kas paredzēts tikai sesijas parametru inicializācijai. Kāpēc jums bija jāizveido savs modulis šim nolūkam? Tās izmantošana ir saistīta ar to, ka pašu lietojumprogrammu var palaist dažādi režīmi(izraisot pārvaldītās lietojumprogrammas moduļa, parastā lietojumprogrammas moduļa vai ārējā savienojuma moduļa izpildi), un sesijas parametri ir jāinicializē neatkarīgi no startēšanas režīma. Lai nerakstītu vienu un to pašu programmas kodu visos trīs šajos moduļos, mums vajadzēja papildu modulis, kas tiek izpildīts neatkarīgi no lietojumprogrammas startēšanas režīma.

Sesijas modulī ir viens notikums "SetSessionParameters", kas tiek aktivizēts pats pirmais, pat pirms lietojumprogrammas moduļa notikuma PreSystemBegin. Tam nav mainīgo deklarāciju sadaļas un galvenās programmas sadaļas. Un arī nav iespējams deklarēt eksporta metodes. Modulis ir apkopots servera pusē.

Vispārīgie moduļi

  • var saturēt procedūru un funkciju aprakstu
  • izpildīts servera vai klienta pusē (atkarīgs no moduļa iestatījumiem)
  • atrodas konfigurācijas objektu koka filiālē "Vispārīgi" - "Vispārīgie moduļi"

Parastie moduļi ir paredzēti, lai aprakstītu dažus izplatītus algoritmus, kas tiks izsaukti no citiem konfigurācijas moduļiem. Vispārējais modulis nesatur mainīgos deklarācijas apgabalus un programmas pamattekstu. Tajā var deklarēt eksporta metodes, kuru pieejamību noteiks moduļa iestatījumi (kurā pusē tas tiek izpildīts: servera vai klienta pusē). Sakarā ar to, ka mainīgā deklarācijas sadaļa nav pieejama, koplietotajos moduļos nav iespējams definēt globālos mainīgos. Šim nolūkam varat izmantot lietojumprogrammas moduli.

Koplietotā moduļa darbība ir atkarīga no iestatītajiem parametriem (globāls vai nē, dažādi kompilācijas karodziņi, vai ir pieejams servera izsaukums utt.). Šeit ir daži padomi koplietojamo moduļu iestatīšanai:

Laba prakse ir ne visur izmantot "Globālo" karogu. Tas samazinās lietojumprogrammas palaišanas laiku, kā arī uzlabos koda lasāmību (protams, ja kopējam modulim ir pilnīgi jēgpilns nosaukums);
- Nav vēlams izmantot vairāk kā vienu kompilācijas karogu. Metožu, kas jāveic dažādos kontekstos, nav tik daudz, un, ja šādas metodes tomēr ir nepieciešamas, tad tām var atvēlēt atsevišķu kopīgu moduli;
- karogam "Servera izsaukums" ir jēga tikai tad, ja modulis ir kompilēts "Serverī". Tāpēc visi pārējie kompilācijas karodziņi ir jānoņem, lai izvairītos no dažādām problēmām;
- ja moduļa metodēs ir datu masveida apstrāde, lasīšana un rakstīšana datu bāzē, tad, lai palielinātu darba ātrumu, labāk ir atspējot piekļuves kontroli, iestatot karogu "Priviliģēts". Šis režīms ir pieejams tikai koplietotiem moduļiem, kas apkopoti serverī.

Veidlapas modulis

  • var ietvert visas 3 zonas
  • veic servera un klienta pusē

Veidlapas modulis ir paredzēts, lai apstrādātu lietotāja darbības ar šo veidlapu (pogas klikšķa notikuma apstrāde, formas atribūta maiņa utt.). Ir arī notikumi, kas tieši saistīti ar pašu formu (piemēram, tās atvēršana vai aizvēršana). Pārvaldīto un parasto formu moduļi galvenokārt atšķiras ar to, ka modulis pārvaldītā forma skaidri nošķirts pēc konteksta. Katrai procedūrai vai funkcijai ir jābūt kompilācijas direktīvai. Ja kompilācijas direktīva nav norādīta, tad šī procedūra vai funkcija tiek izpildīta servera pusē. Parastajā formā viss kods tiek izpildīts klienta pusē.

Pārvaldītās formas struktūra satur mainīgo deklarācijas sadaļu, procedūru un funkciju aprakstus un programmas pamattekstu (tiek izpildīts, kad veidlapa tiek inicializēta). Standarta veidlapas notikumiem varam piekļūt, izmantojot veidlapas paredzamo procedūru un funkciju sarakstu (Ctrl+Alt+P) vai izmantojot pašas veidlapas rekvizītu paleti.

Ja formai tiek piešķirts galvenais atribūts, tad veidlapas modulī kļūst pieejami lietojumprogrammas objekta rekvizīti un metodes, kas tiek izmantotas kā galvenais atribūts.

Objekta modulis

  • var ietvert visas 3 zonas
  • veikta servera pusē

Šis modulis ir pieejams lielākajai daļai konfigurācijas objektu un parasti ir paredzēts ar objektu tieši saistītu notikumu apstrādei. Piemēram, objektu ierakstīšanas un dzēšanas notikumi, objekta rekvizītu aizpildīšanas pārbaude, dokumenta ievietošana utt.

Daži objekta moduļa notikumi dublē formas moduļa notikumus. Piemēram, ar ierakstu saistīti notikumi. Tomēr jāsaprot, ka formas moduļa notikumi tiks izpildīti tikai konkrētajā objekta formā, t.i., kad tiks atvērta konkrētā forma. Un objekta moduļa notikumi tiks izsaukti jebkurā gadījumā, pat programmas darba laikā ar objektu. Tāpēc, ja jums ir nepieciešamas metodes, kas saistītas ar objektu, nesaistot to ar noteiktu objekta formu, labāk šim nolūkam izmantot objekta moduli.

Objektu pārvaldnieka modulis

  • var ietvert visas 3 zonas
  • veikta servera pusē

Objektu pārvaldnieka modulis parādījās tikai sākot ar versiju 1C 8.2. Pārvaldnieka modulis pastāv visiem lietojumprogrammu objektiem un ir paredzēts, lai pārvaldītu šo objektu kā konfigurācijas objektu. Pārvaldnieka modulis ļauj paplašināt objekta funkcionalitāti, ieviešot (rakstīšanas) procedūras un funkcijas, kas neattiecas uz konkrētu datu bāzes objekta gadījumu, bet gan uz pašu konfigurācijas objektu. Objektu pārvaldnieka modulis ļauj izvietot kopējas procedūras un funkcijas dotajam objektam un piekļūt tām no ārpuses, piemēram, no apstrādes (protams, ja šī procedūra vai funkcija ir ar Export atslēgvārdu). Ko tas mums dod jaunu? Kopumā nekas cits kā procedūru organizēšana pa objektiem un glabāšana atsevišķās vietās - objektu pārvaldnieka moduļos. Tikpat labi mēs varam šīs procedūras un funkcijas ievietot kopējos moduļos, bet 1C iesaka objektu pārvaldnieka modulī ievietot kopīgas objektu procedūras un funkcijas. Objektu pārvaldnieku moduļa procedūru un funkciju izmantošanas piemēri: direktorijas vai dokumenta atsevišķu rekvizītu sākotnējā aizpildīšana noteiktos apstākļos, direktorija vai dokumenta rekvizītu aizpildīšanas pārbaude noteiktos apstākļos utt.

Komandu modulis

  • var saturēt sadaļu, kurā aprakstītas procedūras un funkcijas
  • izpildīts klienta pusē

Komandas ir objekti, kas ir pakārtoti lietojumprogrammas objektiem vai konfigurācijai kopumā. Katrai komandai ir komandu modulis, kurā varat aprakstīt iepriekš definētu CommandProcess() procedūru šīs komandas izpildei.

Kas ir moduļi un kam tieši tie paredzēti? Modulis satur programmas kodu. Turklāt ir vērts atzīmēt, ka atšķirībā no 7.7 platformas, kur kods varētu atrasties gan formas elementu īpašībās, gan izkārtojuma tabulu šūnās, 8.x platformā ir jāatrodas jebkurai koda rindiņai. kādā modulī. Parasti modulis sastāv no trim sadaļām - sadaļas mainīgo lielumu aprakstīšanai, sadaļas procedūru un funkciju aprakstīšanai un sadaļas galvenajai programmai. Šī struktūra ir raksturīga gandrīz visiem platformas moduļiem, ar dažiem izņēmumiem. Dažiem moduļiem nav mainīgo deklarāciju sadaļas un galvenās programmas sadaļas. Piemēram, sesijas modulis un jebkurš vispārīgais modulis.

Moduļu izpildes konteksts parasti ir sadalīts klienta un servera kontekstos. Turklāt dažus moduļus var kompilēt gan klienta, gan servera pusē. Un daži ir tikai servera vai klienta puses. Tātad:

Lietojumprogrammas modulis

Modulis ir paredzēts, lai uztvertu lietojumprogrammas palaišanas (konfigurācijas ielādes) un tās pabeigšanas mirkļus. Un atbilstošajos pasākumos jūs varat sakārtot verifikācijas procedūras. Piemēram, aplikācijas sākumā atjauniniet jebkurus konfigurācijas atsauces datus, darba beigās jautājiet, vai ir vērts to vispār atstāt, varbūt darba diena vēl nav beigusies. Turklāt tas pārtver notikumus no ārējām iekārtām, piemēram, tirdzniecības vai fiskālā aprīkojuma. Ir vērts atzīmēt, ka lietojumprogrammas modulis pārtver aprakstītos notikumus tikai interaktīvas palaišanas gadījumā. Tie. kad tiek izveidots pats programmas logs. Tas nenotiek, ja lietojumprogramma tiek palaista com-savienojuma režīmā.

8.2 platformā ir divi dažādi lietojumprogrammu moduļi. Tie ir kopējās lietojumprogrammas modulis un pārvaldītās lietojumprogrammas modulis. Tie tiek aktivizēti, kad tiek startēti dažādi klienti. Šādi tiek aktivizēts pārvaldītās lietojumprogrammas modulis, kad tīmekļa klients, plāns klients un biezais klients tiek palaists pārvaldītās lietojumprogrammas režīmā. Un parastais lietojumprogrammas modulis tiek aktivizēts, kad biezais klients tiek palaists parastajā lietojumprogrammas režīmā.

Lietojumprogrammas modulī var ievietot visas sadaļas - mainīgo, procedūru un funkciju aprakstus, kā arī galvenās programmas aprakstus. Lietojumprogrammas modulis ir apkopots klienta pusē, tāpēc tas ievērojami ierobežo daudzu veidu datu pieejamību. Lietojumprogrammas moduļa kontekstu var paplašināt, izmantojot koplietojamo moduļu metodes, kurām ir iestatīts rekvizīts Call Server. Visi mainīgie un metodes, kas ir atzīmētas kā eksportētas, būs pieejami jebkurā klienta puses konfigurācijas modulī. Tomēr, lai cik vilinoši tas būtu, nelieciet šeit pārāk daudz metožu. Jo vairāk koda tajā ir, jo ilgāks ir kompilācijas laiks un līdz ar to arī lietojumprogrammas palaišanas laiks, kas lietotājiem ir ļoti kaitinoši.

Kā minēts iepriekš, lietojumprogrammas modulis apstrādā lietojumprogrammas sākuma un beigu notikumus. Lai apstrādātu katru no šiem notikumiem lietojumprogrammas modulī, ir daži apdarinātāji Pirms ... un Kad ... Atšķirība starp tiem ir tāda, ka tad, kad tiek izpildīts kods apdarinātājā Pirms ..., darbība vēl nav veikta. un mēs varam atteikties to izpildīt. Šim nolūkam ir paredzēta atteikuma opcija. Apdarinātājos Ieslēgtā darbība jau ir notikusi, un mēs nevaram atteikties palaist lietojumprogrammu vai iziet no tās.

Ārējā savienojuma modulis

Moduļa mērķis ir līdzīgs lietojumprogrammas moduļa mērķim. Tas apstrādā lietojumprogrammas sākuma un beigu punktus. Ārējā savienojuma modulis tiek aktivizēts, kad lietojumprogramma tiek palaista savienojuma režīmā. Pats ārējais savienošanas process nav interaktīvs process. Šajā režīmā notiek programmatisks darbs ar informācijas bāzi un lietojumprogrammas logs netiek atvērts, kas uzliek noteiktus ierobežojumus interaktīvam darbam paredzēto metožu izmantošanai. Šajā režīmā nevar izmantot dialoga formas zvanus, brīdinājuma ziņojumus utt. Viņi vienkārši nedarbosies.

Tāpat kā lietojumprogrammas modulī, šeit ir pieejamas sadaļas mainīgo lielumu, metožu aprakstīšanai un sadaļas galvenajai programmai. Varat arī deklarēt eksporta mainīgos un metodes. Atšķirība ir tāda, ka com-savienojuma režīmā viss darbs ar informācijas bāzi notiek servera pusē, tāpēc ārējā savienojuma modulis tiek kompilēts tikai serverī. Attiecīgi tajā nav pieejami parasto klientu moduļu eksporta mainīgie un metodes.

sesijas modulis

Šis ir ļoti specializēts modulis un paredzēts tikai sesijas parametru inicializācijai. Kāpēc jums bija jāizveido savs modulis šim nolūkam? Tas ir saistīts ar faktu, ka inicializācijas procesam var būt nepieciešams izpildīt kādu kodu, turklāt lietojumprogrammu var palaist dažādos klientiem (kas noved pie dažādu lietojumprogrammu moduļu vai ārējā savienojuma moduļa izpildes), un sesijas parametriem ir jābūt var inicializēt jebkurā palaišanas režīmā. Tāpēc bija nepieciešams papildu modulis, kas tiek izpildīts jebkurā lietojumprogrammas palaišanas režīmā.

Sesijas modulī ir viens notikums "SetSessionParameters", kas tiek aktivizēts pats pirmais, pat pirms lietojumprogrammas moduļa notikuma BeforeSystemStart. Tam nav mainīgo deklarāciju sadaļas un galvenās programmas sadaļas. Un arī nav iespējams deklarēt eksporta metodes. Modulis ir apkopots servera pusē.

Izvairieties no kārdinājuma, ka šis modulis tiek izpildīts katru reizi, kad tiek palaista lietojumprogramma, un ievietojiet tajā kodu, kas nav tieši saistīts ar sesijas parametru inicializēšanu. Tas ir saistīts ar faktu, ka SetSessionParameters apdarinātāju sistēmas darbības laikā var izsaukt atkārtoti. Piemēram, tas notiek, kad mēs piekļūstam neinicializētiem parametriem. Un, lai gan ir iespējams noķert šī notikuma pirmās palaišanas brīdi (RequiredParameters ir Undefined tips), tomēr jāņem vērā, ka šis modulis ir kompilēts priviliģētajā režīmā, t.i. tas nekontrolē piekļuves tiesības. Un otrs punkts, mēs joprojām nevaram būt simtprocentīgi pārliecināti, ka sistēma tiks iedarbināta. Pēkšņi lietojumprogrammas modulis neizdosies, un mēs cenšamies veikt kādu darbību ar datu bāzi.

Vispārīgie moduļi

Moduļi ir paredzēti, lai aprakstītu dažus izplatītus algoritmus, kas tiks izsaukti no citiem konfigurācijas moduļiem. Vispārīgajā modulī nav mainīgo deklarācijas sadaļas un galvenās programmas sadaļas. Tajā var deklarēt eksporta metodes, kuru pieejamības kontekstu noteiks kompilācijas karodziņi. Sakarā ar to, ka mainīgā deklarācijas sadaļa nav pieejama, koplietotajos moduļos nav iespējams definēt globālos mainīgos. Lai to izdarītu, jums ir jāizmanto parasto moduļu funkcijas ar atgriešanas vērtību kešatmiņu vai lietojumprogrammu modulis. Jāpatur prātā, ka pat tad, ja kopējā moduļa atkārtotas izmantošanas rekvizīts ir iestatīts uz "Uz sesijas laiku", šajā gadījumā kešatmiņā saglabāto vērtību kalpošanas laiks nepārsniedz 20 minūtes no brīža, kad tās tika izmantotas. pēdējo reizi piekļūts.
Koplietotā moduļa darbība ir atkarīga no iestatītajiem parametriem (globāls vai nē, dažādi kompilācijas karodziņi, vai ir pieejams servera izsaukums utt.). Šajā rakstā mēs neapskatīsim visu veidu iestatījumus, kā arī darbības iezīmes un nepilnības, kas rodas, ja īpašuma karodziņi ir iestatīti nepamatoti. Šī ir atsevišķa raksta tēma. Pakavēsimies tikai pie dažiem punktiem, kas būtu jāievēro, uzstādot karogus:

  • Tas ir labs noteikums, lai ne visur izmantotu "Globālo" karogu. Tas samazinās lietojumprogrammas palaišanas laiku, kā arī uzlabos koda lasāmību (protams, ja kopējam modulim ir pilnīgi jēgpilns nosaukums).
  • Nav vēlams izmantot vairāk kā vienu kompilācijas karogu. Nav tik daudz metožu, kas jāveic dažādos kontekstos, un, ja šādas metodes tomēr ir nepieciešamas, tad tām var atvēlēt atsevišķu kopīgu moduli.
  • Karogam "Zvanu serveris" ir nozīme tikai tad, ja modulis ir apkopots "Serverī". Tāpēc visi pārējie kompilācijas karodziņi ir jānoņem, lai izvairītos no dažādām problēmām.
  • Ja moduļa metodes tiek izmantotas datu masveida apstrādei, lasīšanai un rakstīšanai datu bāzē, tad, lai palielinātu darba ātrumu, labāk ir atspējot piekļuves kontroli, uzstādot karogu "Privileģēts". Šis režīms ir pieejams tikai koplietotiem moduļiem, kas apkopoti serverī.

Veidlapas modulis

Tas ir paredzēts, lai apstrādātu lietotāja darbības, t.i. dažādi notikumi, kas saistīti ar datu ievadi un to ievades pareizības apstrādi. Modulis regulāra forma pilnībā sastādīts pēc klienta. No otras puses, pārvaldītās veidlapas modulis ir skaidri norobežots ar izpildes kontekstu, tāpēc visiem mainīgajiem un metodēm ir jābūt kompilācijas direktīvai. Ja direktīva nav skaidri norādīta, šis mainīgais vai metode tiks apkopota servera pusē. Veidlapas modulī ir pieejamas sadaļas mainīgo un metožu aprakstīšanai, kā arī sadaļa galvenajai programmai.

Objekta modulis

Šis modulis ir raksturīgs daudziem konfigurācijas objektiem un kopumā paredzēts objektu notikumu apstrādei. Piemēram, objektu rakstīšanas un dzēšanas notikumi, dokumentu izvietošanas notikumi utt.

Daži objekta moduļa notikumi dublē formas moduļa notikumus. Piemēram, ar ierakstu saistīti notikumi. Tomēr jāsaprot, ka formas moduļa notikumi tiks izpildīti tikai noteiktā formas objektā. Kopumā var būt vairākas no šīm formām. Un objekta moduļa notikumi tiks izsaukti jebkurā gadījumā, pat programmas darba laikā ar objektu. Tāpēc, ja visos gadījumos ir nepieciešams izpildīt kādu kodu, tad labāk šim nolūkam izmantot objekta moduļa notikumu.

Objekta modulis tiek kompilēts tikai serverī. Tajā varat definēt eksporta mainīgos un metodes, kas būs pieejamas citos konfigurācijas moduļos. Ar šo īpašību un metožu palīdzību varam būtiski paplašināt objekta funkcionalitāti.

Objektu pārvaldnieka modulis

Šis modulis pastāv daudziem konfigurācijas objektiem. Šī moduļa galvenais mērķis ir no jauna definēt standarta atlases notikumu, kas notiek ievades laikā pa rindiņām, un paplašināt pārvaldnieka funkcionalitāti. Modulis ir apkopots servera pusē. Ir iespējams definēt eksporta īpašības un metodes. Pārvaldnieka eksportēšanas metožu izsaukšanai nav nepieciešams izveidot pašu objektu.

Visam iepriekšminētajam varat pievienot attēlu ar dažiem konfigurācijas moduļiem un veidiem, kā savstarpēji izsaukt metodes pārvaldītās lietojumprogrammas režīmā. Bultiņa norāda virzienu, kurā varat doties, lai izsauktu atbilstošo metodi. Kā redzams diagrammā, servera konteksts ir pilnībā slēgts. Bet no klienta konteksta ir iespējams piekļūt servera metodēm.

Simboli uz shēmas: O.M. Klients - Klienta kopējais modulis; O.M. Serveris – servera kopējais modulis; M.F. Klients - veidlapas moduļa klienta procedūras; M.F. Serveris — veidlapas moduļa servera procedūras.