Opšti moduli. Pravila za kreiranje zajedničkih modula Opis modula 1c

Gotovo svi konfiguracijski objekti imaju modul menadžera, a za većinu objekata objektni modul. Programeri početnici često ne razumiju razliku u svrsi ova dva modula.

Razumijevanje razlike u njihovoj namjeni omogućava vam da napišete programski kod koji je ispravnije strukture, au nekim slučajevima uštedite resurse 1C servera i povećate performanse aplikativnog rješenja.

U članku ćemo razmotriti fundamentalne razlike između ovih modula kako sa teorijske strane tako i na konkretnom praktičnom primjeru.

Teorija

Okrenimo se osnovama objektno orijentiranog programiranja (OOP) i napravimo analogiju s našim primjerom. U OOP-u se metode na objektima mogu podijeliti na statično (statično) i jednostavno. Jednostavne metode se mogu pozvati samo na određenom objektu kojem imamo pristup u trenutnom kontekstu koda. Statičke metode nemaju direktan pristup podacima objekta. Da biste pristupili objektu, prvo morate kreirati njegovu instancu. Isto važi i za platformu 1C:Enterprise 8.x.

U objektnom modulu, platforma pohranjuje procedure i funkcije koje se mogu pozvati samo kada se radi sa određenim objektom, na primjer, s objektom referentnog elementa "Nomenclature". Modul menadžera sadrži procedure i funkcije koje se mogu primijeniti na sve objekte datog tipa, ali uz početno kreiranje instance ovog objekta. To jest, da promijenite element nomenklature iz ovog modula, u početku, da se odnosi na element, izvršite metodu "GetObject ()" i onda radite s njim u budućnosti.

Pređimo s teorije na praksu.

Vježbajte

Pređimo na praktičan primjer. Pretpostavimo da treba da rešimo problem štampanja liste robe.Korisnik štampa proizvod ili direktno iz elementa direktorijuma ili iz obrasca liste proizvoda. Razmotrimo dva načina za postizanje zadatka.

Procedura ispisa u objektnom modulu

Dodajte sljedeću funkciju modulu objekta rječnika:

// Proslijediti referencu na element direktorija funkciji Funkcija PrintSelectedItems(Link) Izvoz TabDoc = Novi TabDoc; Izgled = Direktoriji. Roba. GetLayout(" Layout " ) ; Zahtjev = Novi zahtjev; Zahtjev. Tekst = " ODABIR | Stavke . Prezentacija AS robe,| Roba . Označi Izbriši,| Roba . šifra dobavljača |OD| Imenik . Proizvodi AS Proizvodi GDJE | Roba . Veza B(& ItemsArray)" ; Zahtjev. SetParameter(" Niz robe " , Veza) ; // Postavi odabir prema referenci

Programski kod je u potpunosti generisan od strane dizajnera štampe. Jedina stvar vrijedna pažnje je da se prikazuje referencom na element direktorija "Proizvodi" u zahtjevu. Referenca se prosljeđuje kao parametar funkciji. Kao rezultat poziva funkcije "Štampanje odabrane robe", vratit će se dokument proračunske tablice s popunjenom pozicijom stavke.

Programski kod za pozivanje metode objekta "PrintSelectedProducts" na naredbi obrasca "Print" predstavljen je na sljedećem popisu:

& OnClient procedura Print (Command) // Pozovite serversku proceduru da biste dobili generirani dokument proračunske tablice TabDoc = PrintServer() ; // Prikaži generirani dokument proračunske tablice TabDoc. Prikaži() ; EndProcedure & OnServer funkcija PrintServer() // Pretvorite objekt obrasca u objekt direktorija "Proizvodi" da biste pozvali funkciju iz modula objekta ItemObject = FormAttributeToValue(" Objekat " ) ; // Pozovite proceduru modula objekta, prosljeđujući tamo referencu na trenutni element direktorija. Rezultat // povratak na stranu klijenta Vrati ObjectItem. PrintSelectedProducts(Object.Reference) ; EndFunctions

Tako smo ispisali trenutni element direktorija, radeći sa njegovim objektom. Ali u zadatku je rečeno da se ispiše lista proizvoda koje sam korisnik mora izabrati. Prilikom rada sa objektom nije moguće dati korisniku takvu mogućnost na jednostavan način. Najispravnije bi bilo štampati iz liste elemenata imenika "Roba".

Procedura štampanja u modulu menadžera

Dodajte sljedeću proceduru izvoza u modul upravitelja direktorija:

// Prosljeđivanje niza veza do proizvoda Funkcija PrintSelectedItems(ItemsArray) Izvoz TabDoc = New SpreadsheetDocument; Izgled = Direktoriji. Roba. GetLayout(" Layout " ) ; Zahtjev = Novi zahtjev; Zahtjev. Tekst = " ODABIR | Stavke . Prezentacija AS robe,| Roba . Označi Izbriši,| Roba . šifra dobavljača |OD| Imenik . Proizvodi AS Proizvodi GDJE | Roba . Veza B(& ItemsArray)" ; Zahtjev. SetParameter(" Niz stavki " , Niz stavki) ; // Postavi filter po nizu Rezultat = Zahtjev. Izvrši () ; AreaTitle = Izgled. GetRegion(" Title " ) ; AreaFooter = Izgled. GetRegion(" Podrum " ) ; Područje zaglavlja tablice = Izgled. GetArea("Zaglavlje tabele") ; AreaFooterTables = Izgled. GetRegion("TableFooter" ) ; AreaDetailRecords = Izgled. GetRegion(" Detalji " ) ; TabDoc. Clear() ; TabDoc. Izlaz (zaglavlje područja) ; TabDoc. Izlaz (zaglavlje tablice regije) ; TabDoc. StartAutoGroupRows() ; SampleDetailRecords = Rezultat. Izaberi() ; Prilikom uzorkovanja detaljnih zapisa. Next() LoopDetailRecordsArea. Opcije. Fill(SelectionDetailRecords) ; TabDoc. Izlaz(RegionDetailRecords, SelectionDetailRecords. Level()) ; EndCycle ; TabDoc. EndAutoGroupRows() ; TabDoc. Izlaz(RegionFooterTables) ; TabDoc. Izlaz (podnožje površine) ; Return TabDoc; EndFunctions

Glavna razlika od funkcije u objektnom modulu je parametar funkcije. Sada se kao parametar prosljeđuje niz sa vezama do proizvoda koje je potrebno ispisati.

Programski kod komandnog modula obrasca "Ispis" je sljedeći:

& Na klijentskoj proceduri Print(Command) TabDoc = PrintServer() ; TabDoc. Prikaži() ; EndProcedure & OnServer funkcija PrintServer() // Prosljeđivanje niza veza odabranih proizvoda na popisu za pretraživanje // u funkciju modula upravitelja "PrintSelectedItems". Vratite priručnike. Roba. PrintSelectedItems(Stavke. Lista. Odabrani redovi) ; EndFunctions

U ovom slučaju, rezultat izvršavanja naredbe u načinu 1C:Enterprise bit će sljedeći:

U slučaju korištenja metode iz menadžerskog modula, možemo pristupiti podacima kataloga "Proizvodi" bez dobivanja objekta za svaku vezu. Pošto dobijanje objekta znači dobijanje svih podataka iz baze podataka po elementu direktorijuma i smeštanje primljenih podataka u RAM, implementacija zadatka na drugi način će pozitivno uticati na performanse. Zaista, u ovom slučaju ćemo koristiti minimum resursa (RAM) serverske mašine.

Šta koristiti?

Kao i uvijek, sve ovisi o konkretnom zadatku. Ako trebate ispisati dokument, onda je najbolja opcija korištenje modula menadžera. Ako je potrebno popuniti objekt, na primjer, eksternom obradom popunjavanja tabelarnih dijelova, onda je u ovom slučaju bolje postaviti procedure i funkcije u objektni modul, jer se njihov rad odnosi upravo na objekt.

U tipičnoj konfiguraciji "Trade Management" verzija 11, modul menadžera za štampanje dokumenata se koristi svuda. Ako pogledate konfiguraciju "Production Enterprise Management", tada se modul menadžera praktički ne koristi, jer je konfiguracija napisana u starijim verzijama platforme, gdje nije bilo pune podrške za ovaj mehanizam.

Konfiguracija s primjerima iz članka.

Članak nastavlja ciklus "Prvi koraci u razvoju na 1C", detaljno razmatra sljedeća pitanja:

  • Šta je softverski modul i od kojih dijelova se sastoji?
  • Čemu služi aplikativni modul? Zašto postoje dva? Kada počinje? Koji su detalji rada?
  • Koji su događaji povezani sa startom sistema, kako i gdje ih rješavati?
  • Čemu služi vanjski modul za povezivanje? Kada i kako ga koristiti?
  • Kada se koristi modul sesije?
  • Šta su zajednički moduli? Koja su njegova svojstva i pravila rada? Zašto koristiti svojstvo Reuse Return Values?
  • Kada se koristi modul obrasca i koji događaji se mogu rukovati u njemu?
  • Čemu služi objektni modul? Od kojih se sekcija sastoji? Kako pogledati dostupne događaje modula?
  • Koje su suptilnosti rada sa modulima upravitelja vrijednosti (za konstante) i modulima skupova zapisa (za registre)?
  • Koja je razlika između objektnog modula i modula menadžera? Kada biste trebali koristiti potonje?

Primjenjivost

Članak se bavi platformom 1C:Enterprise 8.3.4.496. Materijal je također relevantan za trenutna izdanja platforme.

Moduli u 1C:Enterprise 8.3

Moduli su oni objekti koji sadrže programski kod.

Na Platformi postoji prilično veliki broj tipova modula, od kojih svaki ima svoju svrhu i karakteristike.

Bilo koja linija koda mora biti u modulu. Postoje moduli opće namjene i objektni moduli. Neki moduli se mogu kompajlirati i na klijentu i na serveru, a neki samo na serveru.

Modul se može sastojati od nekoliko sekcija. Odjeljak deklaracije varijable opisuje lokalne varijable ovog modula, koje se kasnije mogu koristiti u bilo kojoj proceduri.

Unutar svake procedure možete pristupiti varijabli modula. Osim toga, unutar same procedure može postojati još jedna deklaracija varijable s istim imenom. Ovo će biti lokalna varijabla za ovu proceduru.

Unatoč istom imenu, to su dvije različite varijable: jedna se koristi unutar određene procedure, a druga se koristi izvan nje.

U nekim modulima, varijable se mogu postaviti na lokaciju kompilacije (dostupnost) na serveru ili na klijentu. Na primjer:

Nakon odjeljka deklaracije varijable slijedi odjeljak o procedurama i funkcijama, koji specificira lokalne metode modula. Neki moduli zahtijevaju od vas da navedete gdje će biti kompajlirana procedura ili funkcija.

U principu, direktiva o kompilaciji može biti izostavljena. U ovom slučaju, zadana direktiva kompilacije je Server. Međutim, radi pogodnosti analize programskog koda, preporučuje se eksplicitno naznačiti gdje će se ovaj postupak kompajlirati. Redosled kojim su procedure opisane nije bitan.

Na kraju modula, nakon opisa svih procedura i funkcija, nalazi se dio glavnog programa koji može sadržavati neke operatore koji inicijaliziraju lokalne varijable modula forme. Ova sekcija se izvršava kada se pristupi modulu.

Tako, na primjer, prilikom otvaranja forme elementa, prije svega se izvršava dio glavnog programa modula forme.

Treba napomenuti da sekcija deklaracije varijable i glavna programska sekcija ne postoje za sve module (tj. ovi sekcije su nevažeći u nekim modulima). Odjeljak za opis procedure i funkcije može postojati u apsolutno svakom modulu.

Aplikacioni modul

Ovaj modul je dizajniran za rukovanje događajima pokretanja i isključivanja aplikacije. Na primjer, kada pokrenete aplikaciju, možete preuzeti tečajeve s Interneta. Na kraju aplikacije možete se uvjeriti korisnika u njegove namjere da završi rad.

Također u aplikacijskom modulu postoje posebni rukovaoci koji vam omogućavaju presretanje vanjskih događaja iz opreme.

To mogu biti događaji sa čitača magnetnih kartica, fiskalnog registra. I ovi događaji se također mogu riješiti na neki način.

Treba napomenuti da se interaktivno pokretanje sistema prati u modulu aplikacije.

Aplikacijski modul neće raditi ako se program 1C pokrene, na primjer, u načinu com-veze. U ovom slučaju, prozor programa se ne kreira.

Treba napomenuti da u Platformi 8.3 postoje dva različita modula aplikacije: modul Upravljane aplikacije i modul Regularne aplikacije. Događaji modula upravljane aplikacije pokreću se kada se pokreću tanki i debeli klijenti upravljane aplikacije i web klijenta.

Modul Opća primjena radi kada je Thick Client pokrenut u modu Opća primjena, koji ima uobičajeni komandni interfejs u obliku glavni meni.

Ako je aplikacija pokrenuta i Upravljano, i u načinu rada Opća primjena, tada je potrebno opisati procedure rukovaoca kao za modul upravljana aplikacija, i za modul Opća primjena.

Modul upravljana aplikacija može se odabrati iz kontekstnog menija korijenskog čvora konfiguracije.

Ovaj modul se također može otvoriti iz palete svojstava osnovnog konfiguracijskog elementa.

Za otvaranje modula Opća primjena, trebali biste pogledati konfiguracijske postavke (naredba Opcije na meniju Servis).

Otvoriće se obrazac Opcije. Bookmark Uobičajeni su mod za uređivanje konfiguracije mora biti specificiran Upravljana aplikacija I Opća primjena.

U ovom slučaju, modul Opća primjena može se otvoriti i iz svojstava korijenskog čvora.

Lista događaja za koje se može obraditi Upravljano I Opća primjena isto.

U ovaj modul možete postaviti sekciju deklaracije varijable, odjeljak za opisivanje proizvoljnih procedura i funkcija i odjeljak za glavni program. Ali pored proizvoljnih procedura i funkcija, u modulu se mogu locirati posebni obrađivači događaja.

Lista dostupnih rukovalaca može se pogledati pozivanjem liste procedura i funkcija trenutnog modula dok je modul otvoren.

Otvoreni prozor Procedure i funkcije prikazuje sve procedure i funkcije ovog modula, kao i događaje za koje rukovatelji još nisu kreirani.

Postoje dva događaja povezana sa početkom sistema („prije” i „na”). Dva događaja vezana za gašenje sistema (“prije” i “u”). Kao i obrada eksternog događaja (na primjer, događaj opreme trgovine).

Kada se izvrši obrađivač događaja "prije", smatra se da se radnja još nije dogodila. Kada se izvrši obrađivač događaja „on“, radnja se već dogodila.

Događaj BeforeStartingSystem javlja se u trenutku kada se pokrene Enterprise 8.3, ali se sama aplikacija još nije pojavila na ekranu. Ovaj događaj ima parametar kao što je Odbijanje.

Ako je ovaj parametar postavljen na Istinito, tada se aplikacija neće pokrenuti. Događaj Prilikom pokretanja sistema pretpostavlja da je radnja već poduzeta, prozor je već kreiran i u ovom slučaju možemo, na primjer, prikazati neki poseban oblik. Više ne možete odbiti pokretanje.

Slično tome, prije isključivanja sistema, aplikacija je još uvijek otvorena i možete odabrati da je ne isključite. Kada je sistem ugašen, prozor aplikacije je već bio zatvoren. Moguće je samo izvršiti dodatne radnje, kao što je brisanje nekih datoteka ili slanje e-pošte.

U modulu upravljana aplikacija direktive za kompajliranje procedura i funkcija nisu specificirane, pošto je modul u potpunosti kompajliran na strani klijenta. To znači da u procedurama i funkcijama modula nećemo moći direktno pristupiti, na primjer, referentnim knjigama.

Ako iz modula upravljana aplikacija morate izvršiti poziv servera, a za to ćete morati kreirati specijal sa istaknutom zastavom .

U modulu Opća primjena nema takvih ograničenja, jer će ovaj modul biti preveden prilikom učitavanja debelog klijenta. Gotovo svi tipovi podataka dostupni su u Thick Clientu.

Procedure, funkcije i varijable aplikacijskog modula mogu se opisati kao izvoz.

Pošto je modul u potpunosti kompajliran na klijentu, to znači da u klijentskim procedurama možemo pristupiti ovoj metodi i ovom svojstvu.

Na primjer, iz modula forme nekog objekta, možete pozvati proceduru ili funkciju modula aplikacije. Međutim, preporučuje se korištenje općih modula za opisivanje općih algoritama. Glavna svrha aplikacijskog modula je rukovanje početnom i krajnjom točkom.

Po analogiji sa modulom aplikacije, ovaj modul je dizajniran za rukovanje događajem otvaranja programa i događajem gašenja.

Za razliku od modula aplikacije koji se pokreće interaktivnim pokretanjem aplikacije, modul eksterne veze radi u načinu com-konekcije, tj. kada se kreira objekt 1C:Enterprise 8 i uspostavi veza s određenom bazom podataka.

Ovaj modul ima događaje: Prilikom pokretanja sistema I prilikom gašenja sistema.

Modul vanjske veze može se otvoriti pomoću kontekstnog izbornika na razini osnovnog konfiguracijskog objekta ili palete svojstava za korijenski čvor.

Sam proces eksternog pridruživanja je proces programskog rada sa informacijskom bazom, a ne interaktivni. Shodno tome, u ovom trenutku nemoguće je koristiti dijaloške forme, prikazivati ​​poruke upozorenja, jer ne postoji korisnički interfejs.

U modulu eksterne veze moguće je opisati varijable izvoza i metode izvoza koje će biti dostupne na strani gdje se odvija eksterni poziv 1C:Enterprise 8.3.

Budući da u vanjskoj vezi nema korisničkog sučelja, modul vanjske veze se u potpunosti kompajlira na serveru.

modul sesije

Ovaj modul je potreban za inicijalizaciju parametara sesije. Parametri sesije su brze globalne varijable čije su vrijednosti dostupne bilo gdje u konfiguraciji.

Modul sesije možete otvoriti ili kroz kontekstni meni ili kroz paletu svojstava korijenskog čvora.

Događaj je obezbeđen u modulu sesije SettingSessionParameters.

Kada se aplikacija pokrene, ova procedura se zove prva. Parametri sesije su potrebni za bilo koju operaciju aplikacije: i kada se pokreće interaktivno i kada se pokreće u načinu eksterne veze.

Modul sesije opisuje različite akcije za inicijalizaciju parametara sesije u zavisnosti od različitih uslova.

Ovaj modul, po pravilu, opisuje nekoliko procedura koje se pozivaju iz procedure SettingSessionParameters. Stoga su svi ovi postupci izdvojeni u poseban modul.

Modul sesije uvijek radi u privilegovanom načinu. To znači da se prilikom pristupa bazi podataka neće izvršiti provjera dozvole. Modul sesije se kompajlira na serveru, tj. moguće je pozvati bilo koje serverske metode (uključujući čitanje vrijednosti iz baze podataka).

U modulu sesije moguće je definirati samo procedure i funkcije, tj. nema sekcije deklaracije varijable i glavnog programa. Ne možete deklarirati metode izvoza u modulu sesije.

Ako je pri pokretanju sistema potrebno izvršiti neke radnje na Serveru, na primjer, kreirati element nekog direktorija, tada je, kao opcija, moguće koristiti Session Module, jer kompajlira se na serveru i uvijek se pouzdano izvršava pri pokretanju sistema. Međutim, moraju se uzeti u obzir sljedeće tačke:

  • procedura SettingSessionParameters se izvršava ne samo pri pokretanju sistema, već i kada se pristupa neinicijaliziranim parametrima sesije. One. rukovalac SetSessionParameters se može pozvati više puta tokom izvršavanja aplikacije;
  • ako je broj elemenata u nizu parametara sesije jednak nuli (niz potrebnih parametara ima tip podataka Undefined), tada je to trenutak kada se aplikacija pokreće;
  • budući da modul sesije radi u privilegovanom režimu i neće biti provjera pristupa, trebali biste biti vrlo oprezni kada radite sa objektima baze podataka, jer korisnik može dobiti pristup podacima koji mu ne bi trebali biti dostavljeni;
  • kada se sistem pokrene, još se sa sigurnošću ne zna da li će aplikacija biti pokrenuta. U ovom slučaju, dodatne akcije se mogu izvesti u rukovatelju događaja SetSessionParameters događaja.

Ovi moduli su opisi nekih opštih algoritama, tj. procedure i funkcije koje se mogu pozvati sa raznih mjesta.

Logički povezane metode mogu se grupirati u različite zajedničke module. Ovi moduli se kreiraju unutar Generalne grane.

Možete dodati bilo koji broj zajedničkih modula. Da bi metode Common Module bile dostupne na drugom mjestu u konfiguraciji, one moraju biti definirane ključnom riječi Export. Klijentske procedure zajedničkih modula biće dostupne na Klijentu, a serverske procedure - na Serveru.

U Zajedničkim modulima dostupan je samo odjeljak koji opisuje procedure i funkcije. One. u Common modulu ne možete deklarirati varijable i ne možete opisati dio glavnog programa.

Ako je potrebna globalna varijabla, mogu se koristiti ili parametri sesije ili varijable za izvoz modula aplikacije.

Za zajedničke module možete postaviti neke parametre koji će utjecati na ponašanje ovog modula. Ako je svojstvo Global postavljeno za zajednički modul, tada će metode izvoza deklarirane u ovom modulu biti direktno dostupne izvana, bez ikakvih dodatnih instrukcija.

One. the Opšti modulće učestvovati u formiranju konteksta globalne konfiguracije.

Nekretnina Global za zajedničke module može biti korisno. Međutim, ne biste ga trebali koristiti univerzalno za sve uobičajene module.

One , koji su označeni sa Global, će se kompajlirati pri pokretanju sistema. Što je više takvih modula, sporije će se pokrenuti program.

Ako je zastava Global Za Opšti modul nije naveden, tada će se kompilacija ovog modula izvršiti u trenutku prvog poziva (tj. nakon što se sistem pokrene).

Osim toga, korištenje globalnih zajedničkih modula utiče na razumijevanje koda. Pozivanje metoda neglobalnog zajedničkog modula se vrši preko imena Opšti modul i naziv metode, na primjer:
Modul kalkulacije troškova Alocirajte indirektne troškove();

Istovremeno, nazivi opštih modula treba da odražavaju sadržaj procedura opisanih u njima. Navođenje imena zajedničkog modula prilikom pozivanja procedure čini kod lakšim za razumijevanje.

Za Opšti modul V Properties Palette svojstvo se može podesiti Privilegovani.

Prava pristupa se ne kontroliraju u privilegovanom modulu. Ovo je neophodno ako je u Opšti modul potrebno je izvršiti masovnu obradu podataka, dobijanje podataka iz baze podataka.

Kontrola pristupa povećava vrijeme pristupa bazi podataka, a grupni algoritmi često moraju da rade što je brže moguće.

Na primjer, platni spisak je operacija koja zahtijeva resurse. To treba uraditi što je brže moguće. Da bi se to postiglo, algoritmi koji izračunavaju plate stavljaju se u privilegovane .

Istovremeno, sve procedure koje obezbeđuju kompletiranje platnih dokumenata su van ovih Zajednički moduli. U ovim procedurama se vrši kontrola pristupa.

Na ovaj način se može postići značajno povećanje performansi. Ovo posebno vrijedi za slučaj korištenja mehanizma diferencijacije pristupa red po red zapisima tablice.

Ako je zajednički modul privilegovan, onda se procedure ovog modula mogu kompajlirati samo na serveru.

Postoje situacije kada bi neki objekt trebao biti nedostupan korisniku, na primjer, određeni direktorij. Ali prilikom izvođenja bilo kojeg dokumenta potrebno je obratiti se na ovaj vodič.

One. postoji potreba da se korisnikova prava privremeno prošire, a zatim vrate u prvobitno stanje. Ovaj efekat se može postići korištenjem privileged Zajednički moduli.

Da biste to učinili, u privilegovanom Opšti modul potrebno je izdati proceduru kojom se pristupa potrebnim podacima.

Ova procedura će biti pozvana iz odgovarajućeg dokumenta. One. korisniku se zapravo dodjeljuju proširena prava u trenutku pozivanja ove procedure.

Za Zajednički moduli moguće je odrediti lokaciju kompilacije. Zastavice se koriste za određivanje da li će zajednički modul biti dostupan na klijentu (upravljana aplikacija), na serveru, u načinu eksterne veze.

Osim toga, ako prebacite način uređivanja konfiguracije na Upravljanu aplikaciju i običnu aplikaciju, tada će biti moguć još jedan kontekst kompilacije - Klijent (normalna aplikacija).

Dakle, postoje četiri opcije za funkcionisanje programa. Ovisno o pokrenutoj aplikaciji, ovisno o radu na klijentu ili serveru, određeni zajednički moduli će biti dostupni ili nedostupni.

Pored mogućnosti specificiranja kompilacijskih zastavica, moguće je specificirati kompilacijske direktive za procedure i funkcije koje se nalaze u Common modulu.

Ako je direktiva kompilacije specificirana za metodu, onda iako je Generički modul dostupan u svim specificiranim kontekstima, dostupnost određene metode će biti ograničena direktivom o kompilaciji.

U ovom slučaju, proceduri se ne može pristupiti u kontekstu koji općenito nije dostupan za cijeli modul.

Ako direktiva kompilacije nije specificirana za proceduru (funkciju), tada će biti prevedena u svim kontekstima definiranim za modul.

One. u stvari, biće napravljeno više kopija postupka. Izbor određene kompajlirane instance zavisi od toga gde se poziva procedura (prema pravilu najbližeg poziva). Istovremeno, treba uzeti u obzir da kod takvog postupka mora biti napisan uzimajući u obzir njegovu dostupnost u svim kontekstima definisanim za modul.

Uobičajeni moduli koji su dostupni u nekoliko različitih konteksta u isto vrijeme uglavnom su namijenjeni kreiranju procedura koje su dostupne u nekoliko konteksta.

Prilikom kreiranja generičkog modula, dobra je praksa ne specificirati direktive kompilacije. One. pristupačnost procedura i funkcija treba da bude određena svojstvima samog modula.

Sa ovim pristupom, klijentske procedure će se nalaziti u zasebnim zajedničkim modulima, a serverske procedure će se nalaziti u zasebnim zajedničkim modulima.

Moduli koji imaju više zastavica kompilacije se rijetko koriste u praksi. Ovo su neke uobičajene radnje dostupne i na klijentu i na serveru. Obično su to neke jednostavne kalkulacije.

Bitan! Moguće je pristupiti metodama izvoza dijeljenog modula sa klijenta, ali samo ako je ovaj dijeljeni modul kompajliran samo na serveru. Istovremeno, poseban checkbox je namijenjen za omogućavanje pristupa od Klijenta. .

Za neglobalne Common module, moguće je keširati one vrijednosti koje vraćaju funkcije. One. sistem može zapamtiti rezultat svog izvršenja nakon prvog poziva funkcije. Ako se ova funkcija ponovo pozove sa istim parametrima, sistem će vratiti vrijednost već iz keša.

Svrha ovog mehanizma je da ubrza ponovljene pozive. Da biste konfigurirali ovo ponašanje, potrebno je Properties Palette modul za postavljanje odgovarajuće vrijednosti za svojstvo Reuse return values.

Podrazumevano, ovo svojstvo je postavljeno na Ne koristi. Ostale moguće vrijednosti: cache U vrijeme poziva, ili Za vrijeme trajanja sesije.

Ovo svojstvo ima smisla koristiti samo za one funkcije, čiji rezultat ovisi isključivo o ulaznim parametrima. Ovaj mehanizam je dostupan samo za neglobalne zajedničke module.

Ako je odabrana vrijednost odgovarajućeg parametra Za trajanje poziva, tada će keš memorija biti aktivna sve dok je pokrenuta procedura iz koje je pozvana metoda Common modula. Ako je vrijednost Za vrijeme trajanja sesije, tada se predmemorija uvjetno smatra aktivnom dok korisnik radi.

Međutim, postoje određena vremenska ograničenja. Keš memorija se automatski briše 20 minuta nakon keširanja vrijednosti.

Modul obrasca

Ovaj modul je dizajniran za obradu radnji korisnika. Na primjer, opišite algoritam reakcije programa kada se pritisne dugme. Ili, na primjer, u trenutku unosa vrijednosti u polje, odmah provjerite ispravnost.

Pored događaja povezanih sa kontrolama obrasca (dugmad, polja za unos), postoje događaji povezani direktno sa samim obrascem.

Na primjer, možete rukovati događajem otvaranja obrasca i izvršiti početnu inicijalizaciju. Također možete rukovati događajem zatvaranja obrasca i provjeriti da li je korisnik sve ispravno unio.

Postoje obrasci kojima se upravlja i obrasci uobičajeni. Moduli podataka obrasca razlikuju se prvenstveno po tome što je upravljani modul obrasca jasno odvojen u kontekst. Svaka procedura (funkcija) mora imati direktivu kompilacije. U svom normalnom obliku, sav kod se koristi na Klijentu.

U modulu upravljanog obrasca možete deklarirati procedure i funkcije, možete deklarirati varijable i možete opisati dio glavnog programa.

Programski kod glavnog programa će se izvršiti u trenutku inicijalizacije obrasca, tj. kada ga korisnik otvori. Slika prikazuje listu standardnih događaja za upravljani obrazac.

Lista upravljanih događaja obrasca je također vidljiva u listi svojstava za sam obrazac. Ova lista se poziva u uređivaču upravljanih obrazaca.

U upravljanom obliku, možete upravljati događajem pisanja stavke. Ovaj događaj je prisutan samo za oblike objekata (priručnici, dokumenti i neki drugi). Ako obrazac nije vezan za određeni objekt, onda nema događaja pisanja.

Za običan modul forme lista standardnih događaja je nešto manja, jer u upravljanom obliku, mnogi događaji se prave u parovima (jedan se izvršava na klijentu, a drugi na serveru). U uobičajenom obliku, sav kod se izvršava na Klijentu.

Objektni modul

Ovi moduli su tipični za imenike, dokumente, planove tipova obračuna, kontne planove i mnoge druge objekte. Objektni modul je dizajniran za rukovanje standardnim događajima. Na primjer, događaj za unos elementa direktorija, događaj za pisanje elementa, brisanje, postavljanje dokumenta itd.

U principu, događaj pisanja takođe postoji u modulu obrasca. Ali događaj pisanja u modulu obrasca se dešava tokom interaktivnog pisanja, kada se radi sa određenim obrascem.

Događaj pisanja u objektnom modulu će se pokrenuti na bilo koje pisanje iz bilo kojeg oblika datog objekta. Također, ako je objekt napisan programski, u tom slučaju će se pokrenuti događaj modula objekta.

U slučaju pisanja modula objekta, možete ugraditi sve provjere ispravnosti podataka koji se upisuju, budući da će ova procedura funkcionirati u vrijeme apsolutno svakog pisanja.

Modul ovog objekta može se pozvati preko kontekstnog menija, iz palete svojstava objekta i iz prozora za uređivanje objekta.

Slika ispod prikazuje listu dostupnih događaja modula direktorija.

U modulu objekata možete postaviti sekciju deklaracije varijable, opisati proizvoljne funkcije koje mogu ili ne moraju biti povezane sa događajem, kao i dio glavnog programa.

U glavnoj sekciji programa možete, na primjer, inicijalizirati lokalne varijable ovog modula. Ovaj programski kod će se izvršiti kada se pristupi ovom objektnom modulu.

Treba napomenuti da su sve procedure Object Modula kompajlirane na Serveru. U skladu s tim, direktive kompilacije nisu potrebne za procedure i funkcije Object Modula. Neki konfiguracijski objekti nemaju objektne module.

To je zbog karakteristika samih objekata. Takvi objekti uključuju Konstante I Registri. Za Konstantno ne postoji objektni modul, ali postoji vrlo sličan modul koji se zove Modul za upravljanje vrijednostima.

IN Modul za upravljanje vrijednostima možete upravljati snimanjem događaja Konstante i obrada čeka za popunjavanje.

Cijeli kontekst modula se izvršava na Serveru.

Za registre postoji Modul skupova zapisa.

Ovaj modul također ima mogućnost rukovanja događajima pisanja i obavljanja provjere populacije.

U Object Modules, Value Manager Modules (za konstante) i Recordset Modules (za registre), možete opisati metode koje se mogu izvesti za izvoz, a ove metode će biti dostupne izvana.

One. Osim korištenja fiksnih metoda klase objekata, možete kreirati dodatne metode za objekt u modulu objekta. Ovaj modul bi trebao opisati relevantnu proceduru sa ključnom riječi Izvoz.

Tada će se na ovu proceduru moći obratiti izvana. Štaviše, ova metoda će biti prikazana u kontekstu alata. Nove metode u kontekstualnom opisu su označene plavom bojom (plava ikona p() za procedure i f() za funkcije).

Slično, možete kreirati novo svojstvo deklariranjem varijable s ključnom riječi Izvoz. Ovoj imovini se može pristupiti i izvana.

Tako je moguće proširiti funkcionalnost objekata (dodati nove metode i nova svojstva). Svojstva su dinamička i nisu pohranjena u bazi podataka.

Ako trebate koristiti svojstvo za objekt koji će biti pohranjen u bazi podataka, trebali biste kreirati atribut objekta.

Menadžer modul

Ovaj modul postoji za mnoge objekte (direktorije, dokumente, registre, itd.). Modul se otvara ili preko kontekstnog menija za objekat ili preko Properties Palette, ili kroz prozor za uređivanje.

U modulu menadžera možete nadjačati neke standardne događaje, na primjer, in ProcessingReceivingDataChoice, kada je element odabran iz rječnika, možete izvršiti dodatno filtriranje ili provjeru.

Osim toga, možete kreirati dodatne metode u modulu menadžera i navesti da su to metode za izvoz. U ovom slučaju, moguć je pristup ovim metodama izvana.

Da biste izvršili ovaj poziv, morate dobiti tip podataka DirectoryManager.

Razlika između metoda izvoza modula menadžera i modula objekta je u tome što da biste pozvali metodu modula objekata, prvo morate dobiti sam objekt (odnosno, nekako dobiti vezu, a zatim pretvoriti ovu vezu u objekt).

Nakon toga, izvozne varijable i metode Object Modula će biti dostupne. Za modul menadžera, poziv je jednostavniji, na primjer:
Directories.Accounts.MethodName

To su dvije različite žalbe. Pretvori iz reference u objekt (metod GetObject) je prilično ozbiljna akcija za sistem, jer kada se objekat primi, čitaju se apsolutno svi podaci ovog objekta, što može biti prilično dugo.

Druga razlika je u tome ObjectModule prizvano u kontekstu određenog elementa. U skladu s tim, možemo pretpostaviti da je primjenjiv za ovaj element (u većini slučajeva, to je logika koja je postavljena).

Što se tiče Menadžerskog modula, on opisuje neku opću radnju za grupu ili za sve elemente direktorija ili nekog dokumenta. Na primjer, ako trebate ispisati referentnu stavku, možete koristiti modul objekta.

Ali u modulu menadžera moguće je napraviti univerzalniji mehanizam koji će ispisati, između ostalog, grupu elemenata.

Osim toga, pristup modulu objekta je i dalje duža radnja. Stoga je poželjnije riješiti ovaj problem u modulu menadžera.

Ovim završavamo naše upoznavanje sa modulima u konfiguraciji sistema 1C:Enterprise. Ako sumiramo sve navedeno, zaključak je sljedeći:

  • Softverski modul je dio konfiguracije koji može sadržavati samo tekst na ugrađenom 1C jeziku
  • Programski moduli su klasifikovani prema tipovima koje smo ispitali u ovom članku. Svaki pogled je definiran njegovim položajem i dostupnim programskim kontekstom.
  • Struktura modula se sastoji od nekoliko sekcija, koje su raspoređene u određenom redoslijedu. Sastav sekcija je određen tipom modula.

Također imajte na umu da smo namjerno izostavili jednu vrstu modula, odnosno komandni modul. Ne predstavlja ništa značajno i predlažemo da se upoznate sa njegovom funkcionalnošću.

Do sada smo sav naš programski kod razmatrali fragmentarno iz primijenjenog rješenja i, po pravilu, pisali smo ga u nekoj vlastitoj maloj test konfiguraciji. Jeste li svjesni da "ne možete jednostavno uzeti" i početi uređivati ​​kod tipične konfiguracije? Ne? Onda ćemo u sljedećem članku sve objasniti!

Opšti moduli 1C- objekt metapodataka konfiguracije 1C 8.3 i 8.2, koji pohranjuje programski kod koji se često poziva u konfiguraciji. Funkcija/procedura se može pozvati s bilo kojeg mjesta u konfiguraciji (ako je izvezena).

Kako koristiti zajednički modul

Dobra je praksa staviti proceduru ili funkciju u zajednički modul ako se poziva na više od jednog mjesta. Prvo, ako je postupak ispravljen, potrebno ga je ispraviti samo na jednom mjestu. Drugo, postiže veći red u kodu.

Tipičan primjer uobičajenog modula je obrada knjiženja prema nekom registru, dobijanje iznosa razlike u radnim danima, pretvaranje kurseva, preračunavanje količine/cijene/iznosa u tabelarnom dijelu i druge funkcije.

Opća svojstva modula

Jedna od glavnih razlika između zajedničkih modula i drugih modula je u tome što ne možete deklarirati dijeljene varijable.

Nabavite 267 1C video lekcija besplatno:

Pogledajmo pobliže paletu svojstava zajedničkog modula:

  • Global- ako je zastavica postavljena, funkcije i procedure iz ovog modula postaju dostupne u globalnom kontekstu. One. mogu se pozvati bilo gdje u konfiguraciji bez imena zajedničkog modula. Međutim, dodaje se uslov - imena procedura i funkcija u ovom zajedničkom modulu moraju biti jedinstvena unutar globalnog konteksta.
  • Server- Procedure i funkcije ovog zajedničkog modula mogu se izvršavati na serveru.
  • Spoljašnji spoj- programski kodovi ovog zajedničkog modula mogu se izvršiti kada su povezani sa eksternim izvorom (na primjer, COM).
  • Klijent (upravljana aplikacija)— Procedure i funkcije ovog zajedničkog modula mogu se koristiti u debelom klijentu u načinu upravljanja aplikacijom.
  • Klijent (redovna aplikacija)— programski kodovi ovog zajedničkog modula mogu se koristiti u debelom klijentu u normalnom načinu rada.
  • Poziv servera- oznaka koja omogućava klijentu da koristi procedure i funkcije iz ovog zajedničkog modula.
  • - ako je postavljeno na Tačno, provjera prava pristupa će biti onemogućena u ovom zajedničkom modulu.
  • Ponovna upotreba— definira postavke za vraćene vrijednosti, ako je opcija omogućena, onda će nakon prvog izvršavanja sistem zapamtiti vrijednost za ove ulazne parametre i vratiti gotovu vrijednost. Može poprimiti sljedeće vrijednosti: nije korišteno- ugasiti, u trenutku poziva- za vrijeme trajanja određene procedure, tokom sesije- dok korisnik ne zatvori sesiju (program).

Ako počinjete učiti 1C programiranje, preporučujemo naš besplatni kurs (ne zaboravite


Upravljani aplikacijski modul

Namijenjen je uglavnom da uhvati trenutak pokretanja aplikacije i trenutak gašenja. Postoje i rukovaoci koji vam omogućavaju da presretnete eksterni događaj sa opreme. To je interaktivno pokretanje sistema koje se prati u modulu upravljane aplikacije.

Događaji modula upravljane aplikacije se aktiviraju kada se pokrenu tanki klijent, Web klijent i debeli klijent upravljane aplikacije. U upravljačkom modulu aplikacijama se može pristupiti iz palete svojstava korijenskog čvora konfiguracije ili iz kontekstnog izbornika koji se poziva na korijenskom čvoru konfiguracije.

Redovni aplikativni modul

Standardni modul aplikacije igra istu ulogu kao modul upravljane aplikacije, samo se događaji regularnog modula aplikacije aktiviraju kada se pokrene debeli klijent obične aplikacije.

Redovni modul aplikacije će postati dostupan iz palete svojstava korijenskog čvora konfiguracije nakon postavljanja opcije "Uređivanje konfiguracije za režime pokretanja" u postavkama konfiguratora na kartici "Općenito" na "Upravljana aplikacija i normalno".

Eksterni priključni modul

Modul eksterne veze je dizajniran za rukovanje događajem prijave (ne interaktivno, već u načinu COM veze) i odjavom. Postoje odgovarajući rukovaoci. COM veza ne otvara interaktivni prozor, tako da funkcije za dijalog s korisnikom neće raditi. Moguće je opisati izvozne varijable i metode u modulu. Modul vanjske veze se kompajlira na serveru. One. moguće je pristupiti odgovarajućim konfiguracijskim objektima, na primjer direktorijima.

modul sesije

Postoji takav uobičajeni konfiguracijski objekt kao što su "Opcije sesije". Modul sesije je kreiran za inicijalizaciju parametara sesije (za to postoji poseban događaj, on počinje prvi kada se aplikacija pokrene).

Radi u privilegovanom načinu (ne provjerava prava pristupa prilikom pristupa bazi podataka). Modul sesije se kompajlira na serveru. Ne postoji odeljak deklaracije varijable i glavni programski odeljak, metode izvoza se ne mogu opisati, koristi se samo za postavljanje parametara sesije. Kao što vidite, modul sesije ima vrlo usku svrhu.

Opšti moduli

Opšti moduli opisuju neke opšte algoritme, sadrže funkcije koje se mogu pozvati sa različitih mesta. Zajednički moduli se mogu kompajlirati i na klijentu i na serveru.

U općim modulima dostupan je SAMO odjeljak koji opisuje procedure i funkcije. Ako trebate koristiti globalnu varijablu, tada možete koristiti ili parametre sesije ili varijablu za izvoz modula upravljane aplikacije.

U općem modulu možete postaviti neke parametre koji će utjecati na njegovo ponašanje. Ako je okvir za potvrdu "Globalno" postavljen u općem modulu, tada će njegove funkcije izvoza sudjelovati u formiranju globalnog konteksta. I njima se može pristupiti direktno iz drugog konteksta (bez pominjanja imena zajedničkog modula): CommonModuleMethod();

Ne biste trebali svuda koristiti svojstvo "Global" zajedničkih modula, jer takvi moduli se kompajliraju pri pokretanju sistema i usporavaju početak programa

Objektni modul

Mnogi konfiguracijski objekti (direktoriji, dokumenti, itd.) imaju objektni modul. U njega možete unijeti standardne događaje, kao što su kreiranje novog elementa direktorija, unos novog objekta, brisanje, obrada knjiženja dokumenta itd. Događaj pisanja postoji i u modulu forme (javlja se tokom procesa interaktivnog snimanja kada korisnik klikne na dugme “write”) i u modulu objekta.

Treba imati na umu da jedan objekt može imati nekoliko oblika. Stoga se događaj pisanja mora obraditi u objektnom modulu. Tamo se provjerava ispravnost snimljenih podataka.

Modul objekta se može pozvati iz palete svojstava datog objekta ili iz kontekstnog menija. Objektni modul ima istu strukturu kao i modul forme. Objektni modul se kompajlira na serveru, tako da direktive kompilacije nisu potrebne.

Modul obrasca

Modul obrasca je dizajniran za rukovanje radnjama korisnika (rukovanje događajem klika na dugme, itd.). Postoje i događaji povezani direktno sa samim oblikom (na primjer, događaj njegovog otvaranja, zatvaranja). Moduli upravljanog obrasca i redovni moduli obrasca razlikuju se prvenstveno po tome što je modul upravljanog obrasca jasno odvojen u kontekst. Svaka procedura mora imati direktivu za kompilaciju. U normalnom obliku, sav kod se izvršava na klijentu.

Struktura upravljanog obrasca sadrži odjeljak deklaracije varijable, odjeljak za procedure i funkcije i glavni programski dio (izvršava se kada se obrazac inicijalizira). Standardnim događajima obrasca možemo pristupiti preko liste procedura i funkcija (Ctrl+Alt+P) ili u paleti svojstava samog obrasca. Također, u upravljanom obliku, možete rukovati događajem zapisa elementa (ovaj događaj je prisutan samo za objekte: direktorije, dokumente).

Modul za upravljanje objektima

Modul menadžera pojavio se samo u 1C 8.2, postoji za mnoge konfiguracijske objekte. Glavna svrha modula za upravljanje objektima je da redefinira standardni događaj "ProcessingChoiceDataReceiving", a možemo i

Modul za upravljanje vrijednostima

Objekt konstantne konfiguracije nema objektni modul, već vrlo sličan modul, modul upravitelja vrijednosti. U modulu upravitelja konstantne vrijednosti možete opisati različite procedure (uključujući one za izvoz), kao i proces 3 događaja: BeforeWrite, OnWrite, ProcessingFillCheck. Ovaj modul se kompajlira na serveru.

Recordset moduli

Modul skupa zapisa je analogan modulu objekta i inherentan je registrima. Postoje standardni događaji u modulu recordset:

  • Prije snimanja
  • Prilikom snimanja
  • Obrada provjere popunjavanja

U modulu recordset postoji odjeljak za opisivanje varijabli, procedura i funkcija (uključujući funkcije za izvoz), odjeljak za glavni program.

1.1. Zajednički moduli se kreiraju za implementaciju procedura i funkcija koje se kombinuju prema nekim kriterijumima. U pravilu su procedure i funkcije jednog konfiguracijskog podsistema (prodaja, kupovina) ili procedure i funkcije slične funkcionalnosti (rad sa stringovima, opće namjene) smještene u jedan zajednički modul.

1.2. Kada razvijate dijeljene module, trebali biste odabrati jedan od četiri konteksta izvršavanja koda:

Uobičajeni tip modula Primjer imenovanja Poziv servera Server Spoljašnji spoj Klijent
(redovna primjena)
Klijent
(upravljana aplikacija)
1. ServerOpće namjene (ili server opće namjene)
2. Server za poziv od klijentaGeneral PurposeCallServer
3. KlijentKlijent opće namjene (ili Global Purpose General)
4. Klijent-serverGeneral PurposeClientServer

2.1. Zajednički moduli servera namijenjeni su za hostovanje serverskih procedura i funkcija koje nisu dostupne za korištenje iz klijentskog koda. Oni implementiraju svu internu serversku poslovnu logiku aplikacije.
Da bi konfiguracija ispravno radila u eksternim načinima povezivanja, upravljane i regularne aplikacije, serverske procedure i funkcije trebaju biti smještene u zajedničke module sa sljedećim karakteristikama:

  • Server(kvačica za potvrdu Poziv servera ispao),
  • Klijent (redovna aplikacija),
  • Spoljašnji spoj.

U ovom slučaju, zajamčeno je da se serverske procedure i funkcije mogu pozvati sa promjenjivim parametrima tipa (na primjer, DirectoryObject, DocumentObject i tako dalje.). Po pravilu, ovo je:

  • rukovaoci za pretplate na događaje dokumenata, direktorija, itd., koji uzimaju promjenjivu vrijednost (objekat) kao parametar.
  • serverske procedure i funkcije, kojima se objekt prosljeđuje kao parametar iz modula direktorija, dokumenata itd., kao i iz modula s pretplatama na događaje.

Zajednički moduli servera su imenovani prema općim pravilima za imenovanje objekata metapodataka.
Na primjer: Rad sa datotekama, Opće namjene

U nekim slučajevima može se dodati postfiks kako bi se spriječili sukobi imena sa svojstvima globalnog konteksta. "Server".
Na primjer: ScheduledTasksServer, Data ExchangeServer.

2.2. Zajednički moduli servera koji se pozivaju od klijenta sadrže serverske procedure i funkcije dostupne za korištenje iz klijentskog koda. Oni čine klijentski API servera aplikacija.
Takve procedure i funkcije su smeštene u zajedničke module sa atributom:

  • Server(kvačica za potvrdu Poziv servera instaliran)

Zajednički moduli servera koji se pozivaju od klijenta imenovani su prema općim pravilima za imenovanje objekata metapodataka i moraju biti imenovani postfiksom "poziv na server".
Na primjer: Rad sa datotekama Pozivanje servera

Imajte na umu da izvozne procedure i funkcije u takvim zajedničkim modulima ne smiju sadržavati promjenjive parametre tipa ( DirectoryObject, DocumentObject itd.), budući da je njihov prijenos sa (ili na) klijentski kod nemoguć.

Vidi također:Ograničenje postavljanja zastavice "poziv servera" za uobičajene module

2.3. Zajednički moduli klijenta sadrže klijentovu poslovnu logiku (funkcionalnost definirana samo za klijenta) i imaju sljedeće karakteristike:

  • Klijent (upravljana aplikacija)
  • Klijent (redovna aplikacija)

Izuzetak je kada bi klijentske procedure i funkcije trebale biti dostupne samo u načinu upravljanja aplikacijom (samo u redovnom aplikacijskom načinu ili samo u izlaznom načinu). U takvim slučajevima prihvatljiva je druga kombinacija ove dvije karakteristike.

Zajednički moduli klijenta imenovani su postfiksom "klijent".
Na primjer: WorkFilesClient, Opšte namjeneKupac

Vidi također: minimiziranje koda na strani klijenta

2.4. U nekim slučajevima moguće je kreirati klijent-server zajedničke module sa procedurama i funkcijama, čiji je sadržaj isti i na serveru i na klijentu. Takve procedure i funkcije su smeštene u zajedničke module sa karakteristikama:

  • Klijent (upravljana aplikacija)
  • Server(kvačica za potvrdu Poziv servera resetovati)
  • Klijent (redovna aplikacija)
  • Spoljašnji spoj

Uobičajeni moduli ove vrste su imenovani postfiksom "ClientServer".
Na primjer: WorkFilesClient, General PurposeClientServer

Općenito, nije preporučljivo definirati zajedničke module za server i klijenta (upravljanu aplikaciju) u isto vrijeme. Funkcionalnost definisana za klijenta i za server se preporučuje da se implementira u različite zajedničke module - vidi str. 2.1 i 2.3. Ovakvo eksplicitno razdvajanje poslovne logike klijenta i servera diktirano je razmatranjem povećanja modularnosti primijenjenog rješenja, pojednostavljivanja kontrole programera nad interakcijom klijent-server i smanjenja rizika od grešaka zbog fundamentalnih razlika u zahtjevima za razvoj klijenta i servera. kod (potreba da se minimizira kod koji se izvršava na klijentu, različita dostupnost objekata i tipova platformi, itd.). Istovremeno, treba imati na umu neizbježno povećanje broja zajedničkih modula u konfiguraciji.

Poseban slučaj mješovitih klijent-server modula su moduli forme i komande, koji su posebno dizajnirani za implementaciju serverske i klijentske poslovne logike u jednom modulu.

3.1. Nazive zajedničkih modula preporučuje se da se grade u skladu sa opštim pravilima za imenovanje objekata metapodataka. Ime zajedničkog modula mora odgovarati imenu podsistema ili zasebnog mehanizma čije procedure i funkcije implementira. Preporučljivo je izbjegavati uobičajene riječi kao što su "Procedure", "Functions", "Handleri", "Module", "Funkcionalnost", itd. u nazivima uobičajenih modula. i primjenjuju ih samo u izuzetnim slučajevima, kada potpunije otkrivaju svrhu modula.

Kako bi se napravila razlika između zajedničkih modula jednog podsistema, koji su kreirani za implementaciju procedura i funkcija koje se izvode u različitim kontekstima, preporučuje se da im se daju postfiksi opisani ranije u paragrafima. 2.1-2.4.

Dijeli