Dom - Zdravlje djece i odraslih
Globalni modul 1s 8.3. Opšti moduli. External Join flag

Softverski moduli sadrže izvršni kod u 1C jeziku koji je neophodan kako bi se na određeni način odgovorilo na radnje sistema ili korisnika kada alati za vizualni razvoj nisu dovoljni. Također možemo opisati vlastite metode (procedure i funkcije) u softverskim modulima.

Obično se softverski modul sastoji od tri sekcije:

  • područje deklaracije varijable;
  • područje opisa procedura i funkcija;
  • glavni tekst programa.

Primjer strukture programskog modula:

//******************** PROMJENLJIVO DEKLARACIJSKO PODRUČJE **********************

Perem Prezime Izvoz; / /ovo je globalna varijabla
Promijeniti ime, patronim; //ovo je varijabla modula
Perem puno ime; //ovo je također varijabla modula i može joj se pristupiti

//iz bilo koje procedure i funkcije našeg modula

//*************** PODRUČJE OPIS PROCEDURA I FUNKCIJA ****************

Procedura Procedura1 ()
Varijabla Ukupno ; / /Rezultat je lokalna varijabla (varijabla procedure)

Ukupno = Prezime + " "+ Ime + " "+ Srednje ime;

Kraj procedure

Funkcija Funkcija1()

// operatori funkcije

Povrat (Prezime + " "+ Ime);

EndFunction

//******************** GLAVNI TEKST PROGRAMA ***********************

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

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

U određenom softverskom modulu može nedostajati bilo koje od područja.
Područje deklaracije varijable postavljen od početka teksta modula do prve naredbe procedure ili funkcije ili bilo koje izvršne naredbe. Ovaj odjeljak može sadržavati samo izjave deklaracije varijable.

Područje za opisivanje procedura i funkcija postavljen iz prve naredbe procedure ili funkcije u bilo koju izvršnu naredbu izvan tijela opisa procedure ili funkcije.

Oblast teksta glavnog programa se postavlja od prve izvršne naredbe izvan tijela procedura ili funkcija do kraja modula. Ovaj odjeljak može sadržavati samo izvršne izraze. Glavna tekstualna oblast programa se izvršava u trenutku inicijalizacije modula. Obično, u dijelu glavnog programa, ima smisla postaviti operatore za inicijalizaciju varijabli sa bilo kojim specifičnim vrijednostima koje se moraju dodijeliti prije prvog poziva procedurama ili funkcijama modula.

Softverski moduli se nalaze na onim mjestima u konfiguraciji koja mogu zahtijevati opis određenih operativnih algoritama. Ovi algoritmi trebaju biti formalizirani u obliku procedura ili funkcija koje će sam sistem pozvati u unaprijed određenim situacijama (na primjer, prilikom otvaranja obrasca direktorija, prilikom pritiska na dugme u dijaloškom okviru, prilikom promjene objekta, itd.) .

Svaki pojedinačni softverski modul sistem doživljava kao jedinstvenu cjelinu, pa se sve procedure i funkcije softverskog modula izvode u jednom kontekstu.

Kontekst izvršavanja modula podijeljen je na klijenta i servera. Osim toga, neki softverski moduli mogu se kompajlirati i na strani klijenta i na strani servera.

Aplikacioni modul (upravljani ili redovni)

Aplikacioni modul opisuje procedure (handlere) događaja koji se inicijaliziraju na početku i na kraju sistema. Na primjer, kada se aplikacija pokrene, možete ažurirati neke konfiguracijske podatke, a kada izađete iz aplikacije možete pitati da li se uopće isplati izlaziti iz programa. Osim toga, ovaj modul presreće događaje sa eksterne opreme, na primjer, trgovačke ili fiskalne. Vrijedi napomenuti da se modul aplikacije izvršava samo kada se aplikacija pokreće interaktivno, odnosno kada se pokrene prozor programa. To se ne dešava ako je aplikacija pokrenuta u načinu com veze.
U platformi 1C 8 postoje dva različita modula aplikacije. To su modul Regularne aplikacije i modul Upravljane aplikacije. Pokreću se kada se pokrenu različiti klijenti. Stoga se modul Managed Application aktivira kada se web klijent, tanki klijent i debeli klijent pokreću u načinu upravljanja aplikacijom. A obični modul aplikacije se pokreće kada se debeli klijent pokrene u normalnom režimu aplikacije. Postavka načina pokretanja aplikacije navedena je u svojstvu konfiguracije "Osnovni način pokretanja".

Aplikacioni modul može sadržati sva 3 sekcije - deklaracije varijabli, opise procedura i funkcija, kao i glavni tekst programa. Aplikacioni modul je kompajliran na strani klijenta, što uvelike ograničava našu upotrebu mnogih tipova podataka. Možete proširiti kontekst modula aplikacije koristeći metode uobičajenih modula koji imaju postavljeno svojstvo “Poziv servera”. Sve varijable i metode aplikacijskog modula koje su označene kao izvoz će biti dostupne u bilo kojem konfiguracijskom modulu koji se izvodi na strani klijenta. Međutim, koliko god primamljivo bilo, ovdje ne biste trebali postavljati veliki broj procedura i funkcija. Što više koda ima u datom modulu, to je duže vrijeme kompilacije, a samim tim i vrijeme pokretanja aplikacije.

Kao što je gore navedeno, modul aplikacije upravlja događajima pokretanja i završetka aplikacije. Za rukovanje svakim od ovih događaja u aplikacijskom modulu postoji par rukovatelja Prije... i Kada... Razlike između njih su sljedeće: kada se izvršava kod u rukovatelju Prije..., akcija još nije dogodio i možemo odbiti da ga izvršimo. Ovo je ono čemu služi opcija Odbij. U rukovateljima On.. radnja se već dogodila i ne možemo odbiti pokretanje aplikacije ili izlazak iz nje.

Eksterni priključni modul

  • može sadržavati sve 3 oblasti
  • nalazi se u korijenskom dijelu konfiguracije

Svrha modula je slična svrsi aplikativnog modula. Obrađuje početne i završne događaje aplikacije. Modul eksterne veze se pokreće kada se aplikacija pokrene u načinu com veze. Sam proces vanjskog pridruživanja nije interaktivni proces. U ovom načinu rada dolazi do programskog rada sa informacijskom bazom i prozor aplikacije se ne otvara, što nameće određena ograničenja u korištenju metoda namijenjenih interaktivnom radu. U ovom režimu se ne mogu koristiti pozivi na forme za dijalog, upozorenja i poruke korisniku itd. Oni jednostavno neće biti pogubljeni.

Kao iu aplikacijskom modulu, ovdje su dostupna sva tri područja: deklaracije varijabli, opisi procedura i funkcija, kao i glavni tekst programa. Glavna razlika u odnosu na modul aplikacije je u tome što se u načinu com-konekcije sav rad sa info bazom odvija na strani servera, tako da se modul eksterne veze kompajlira na strani servera. Shodno tome, izvozne varijable i metode uobičajenih klijentskih modula nisu dostupne u njemu.

Modul sesije

  • radi na strani servera
  • nalazi se u korijenskom dijelu konfiguracije

Ovo je visoko specijalizirani modul dizajniran isključivo za inicijalizaciju parametara sesije. Zašto ste morali da napravite sopstveni modul za ovo? Njegova upotreba je zbog činjenice da se sama aplikacija može pokrenuti u različitim načinima (što rezultira izvršavanjem bilo modula upravljane aplikacije, običnog aplikativnog modula ili modula eksterne veze), a inicijalizacija parametara sesije se mora izvršiti bez obzira načina pokretanja. Kako ne bismo pisali isti programski kod u sva tri ova modula, potreban nam je dodatni modul koji radi bez obzira na način pokretanja aplikacije.

U modulu sesije postoji jedan događaj “SettingSessionParameters”, koji se izvršava vrlo prvi, čak i prije događaja modula aplikacije BeforeSystemStartOperation. Odjeljak deklaracije varijable i glavni programski dio nisu dostupni u njemu. Također ne možete deklarirati metode izvoza. Modul se kompajlira na strani servera.

Zajednički moduli

  • može sadržavati područje koje opisuje procedure i funkcije
  • izvršava se na strani servera ili klijenta (ovisno o postavkama modula)
  • nalazi se u grani stabla konfiguracijskih objekata “Općenito” - “Opći moduli”

Zajednički moduli su namijenjeni za opis nekih uobičajenih algoritama koji će biti pozvani iz drugih konfiguracijskih modula. Opšti modul ne sadrži područja deklaracije varijabli i glavni tekst programa. U njemu možete deklarisati metode izvoza, čija će dostupnost biti određena postavkama modula (na kojoj strani se izvršava: na strani servera ili klijenta). Zbog činjenice da odjeljak opisa varijable nije dostupan, globalne varijable se ne mogu definirati u zajedničkim modulima. Za to možete koristiti modul aplikacije.

Ponašanje zajedničkog modula zavisi od postavljenih parametara (globalno ili ne, razne zastavice kompilacije, da li je dostupan poziv servera, itd.). Evo nekoliko savjeta za postavljanje uobičajenih modula:

Dobra je praksa da se globalna zastava ne koristi svuda. Ovo će smanjiti vrijeme pokretanja aplikacije, a također će poboljšati čitljivost koda (naravno, ako zajednički modul ima potpuno smisleno ime);
- Nije preporučljivo koristiti više od jedne zastavice kompilacije. Ne postoji toliko mnogo metoda koje treba izvršiti u različitim kontekstima, a ako su takve metode još uvijek potrebne, onda im se može dodijeliti poseban zajednički modul;
- oznaka “Call server” ima smisla samo ako je modul kompajliran “Na serveru”. Stoga, sve ostale zastavice kompilacije treba ukloniti kako bi se izbjegli različiti problemi;
- ako metode modula uključuju masovnu obradu podataka, čitanje i upisivanje u bazu podataka, onda je za povećanje brzine rada bolje onemogućiti kontrolu pristupa postavljanjem zastavice „Privilegirano“. Ovaj način rada je dostupan samo za dijeljene module kompajlirane na serveru.

Modul obrasca

  • može sadržavati sve 3 oblasti
  • izvršava se na strani servera i klijenta

Modul obrasca je dizajniran za obradu radnji korisnika sa ovim obrascem (obrada događaja klika na dugme, promjena atributa obrasca, itd.). Postoje i događaji povezani direktno sa samim obrascem (na primjer, njegovo otvaranje ili zatvaranje). Moduli upravljanog i regularnog oblika razlikuju se prije svega po tome što je modul upravljanog oblika jasno podijeljen na kontekst. Svaka procedura ili funkcija mora imati direktivu kompilacije. Ako direktiva kompilacije nije navedena, tada se ova procedura ili funkcija izvršava na strani poslužitelja. U svom normalnom obliku, sav kod se izvršava na strani klijenta.

Struktura upravljanog obrasca sadrži odeljak za deklaracije varijabli, opise procedura i funkcija i glavni tekst programa (izvršen u trenutku inicijalizacije obrasca). Događajima standardnog obrasca možemo pristupiti preko liste očekivanih procedura i funkcija obrasca (Ctrl+Alt+P), ili kroz paletu svojstava samog obrasca.

Ako obrascu ima dodijeljen glavni atribut, tada svojstva i metode aplikacijskog objekta koji se koristi kao glavni atribut postaju dostupni u modulu obrasca.

Objektni modul

  • može sadržavati sve 3 oblasti
  • radi na strani servera

Ovaj modul je dostupan za većinu konfiguracijskih objekata i općenito je namijenjen za obradu događaja direktno povezanih s objektom. Na primjer, događaji snimanja i brisanja objekata, provjera kompletnosti detalja objekta, objavljivanje dokumenta itd.

Neki događaji modula objekta dupliraju događaje modula obrasca. Na primjer, događaji povezani sa snimkom. Međutim, treba shvatiti da će se događaji modula forme izvršavati isključivo u specifičnom obliku objekta, odnosno kada se specifična forma otvori. A događaji objektnog modula će se pozivati ​​u svakom slučaju, čak i u trenutku programskog rada s objektom. Stoga, ako su vam potrebne metode povezane s objektom, a da nisu vezane za određeni oblik objekta, onda je za to bolje koristiti objektni modul.

Modul za upravljanje objektima

  • može sadržavati sve 3 oblasti
  • radi na strani servera

Modul za upravljanje objektima pojavio se tek počevši od verzije 1C 8.2. Modul menadžera postoji za sve objekte aplikacije i dizajniran je za upravljanje ovim objektom kao konfiguracijskim objektom. Modul menadžera vam omogućava da proširite funkcionalnost objekta uvođenjem (pisanja) procedura i funkcija koje se ne odnose na određenu instancu objekta baze podataka, već na sam objekat konfiguracije. Modul menadžera objekata vam omogućava da postavite opšte procedure i funkcije za dati objekat i pristupite im izvana, na primer, iz obrade (naravno, ako ova procedura ili funkcija ima ključnu reč Export). Šta nam ovo novo daje? Općenito, ništa osim organiziranja procedura po objektima i pohranjivanja na odvojena mjesta - moduli za upravljanje objektima. Te procedure i funkcije možemo jednako uspješno smjestiti u opće module, ali 1C preporučuje postavljanje općih procedura i funkcija objekata u modul za upravljanje objektima. Primjeri korištenja procedura i funkcija modula za upravljanje objektima: početno popunjavanje pojedinačnih detalja direktorija ili dokumenta pod određenim uvjetima, provjera kompletnosti detalja direktorija ili dokumenta pod određenim uvjetima, itd.

Komandni modul

  • može sadržavati odjeljak koji opisuje procedure i funkcije
  • izvršeno na strani klijenta

Naredbe su objekti podređeni objektima aplikacije ili konfiguraciji u cjelini. Svaka naredba ima komandni modul u kojem se može opisati predefinirana procedura CommandProcess() za izvršavanje te naredbe.

Danas ćemo pogledati uobičajene module, šta su, zašto su potrebni i kako ih koristiti. Funkcije koje se koriste u nekoliko dokumenata možete staviti u zajednički modul. Na primjer, izračunavanje iznosa u tabelarnom dijelu dokumenta.

Na primjer, uzmimo našu staru konfiguraciju, koju sam koristio u prethodnim člancima. U njemu imamo dva dokumenta: dolazak robe u skladište i puštanje robe u skladište. Oba dokumenta imaju procedure koje izračunavaju iznos u tabelarnom redu.

Svaki dokument sadrži istu šifru za obračun iznosa.

Materijali za postupakPriceOnChange(Element)
TabularPart Red = Elements.Materials.CurrentData;
TabularPartLine.Amount = TabularPartLine.Quantity * TabularPartLine.Price;
Kraj procedure

Danas ćemo ga premjestiti u zajednički modul i pozvati ga iz dokumenta.

Kreiramo opći modul za izračunavanje iznosa

I tako da počnemo, prvo morate kreirati zajednički modul. Da biste to učinili, idite u konfigurator, potražite stavku Opći moduli, kliknite desnom tipkom miša i dodajte nove, napišite naziv WorkWithDocuments. U njega unosimo sljedeći kod.

Takođe obavezno označite polja pored Klijent (upravljana aplikacija) i Server u prozoru sa svojstvima.

Sada morate malo promijeniti kod u modulu obrasca dokumenta. Na lijevoj strani u konfiguraciji tražimo dokument Dolazak robe, proširite prozore na prozor Obrasci, dvaput kliknite na Obrazac dokumenta i u prozoru obrasca koji se otvori idite na karticu Modul na dnu. Imamo ovaj kod

Ova procedura radi kada se mijenja količina u tabelarnom dijelu dokumenta prijema robe i izračunava iznos.

&OnClient



Kraj procedure

A ova procedura počinje da radi kada se cena promeni u tabelarnom delu dokumenta Prijem robe i izračuna iznos.

&OnClient

TabularPart Red = Elements.Materials.CurrentData;
TabularPartLine.Amount = TabularPartLine.Quantity * TabularPartLine.Price;
Kraj procedure

Zamijenite ga ovim

&OnClient
Procedura MaterialsQuantityOnChange(Element)
TabularPart Red = Elements.Materials.CurrentData;

Kraj procedure
&OnClient
Materijali za postupakPriceOnChange(Element)
TabularPart Red = Elements.Materials.CurrentData;
WorkWithDocuments.CalculateSum(TabularPartRow);
Kraj procedure

Kao što ste primijetili, mijenja se samo jedna linija; na prvi pogled može izgledati da je jedna linija zamijenjena drugom. Ali ne zaboravite da je ovo primjer. U stvari, količina koda može biti mnogo veća ako, na primjer, izvršite proračune koristeći složenu formulu, u kom slučaju će kod biti primjetno smanjen.

Isto radimo za dokument Otpuštanje robe iz skladišta, pokrećemo i provjeravamo funkcionalnost koda. Dakle, ti i ja smo napravili prvi zajednički modul, nadam se da će moj članak nekome biti od koristi.

Članak nastavlja seriju "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 ih ima dvoje? Kada se koji lansira? Koje su suptilnosti rada?
  • Koji su događaji povezani s početkom rada sistema, kako i gdje ih obraditi?
  • Čemu služi vanjski modul za povezivanje? Kada i kako ga koristiti?
  • Kada se koristi modul sesije?
  • Šta su uobičajeni moduli? Koja su njegova svojstva i pravila rada? Zašto koristiti svojstvo “Ponovna upotreba povratnih vrijednosti”?
  • Kada se koristi modul obrasca i koji događaji se mogu obraditi u njemu?
  • Čemu služi objektni modul? Od kojih se sekcija sastoji? Kako mogu vidjeti dostupne događaje modula?
  • Koje su suptilnosti rada sa modulima upravitelja vrijednosti (za konstante) i modulima skupova zapisa (za registre)?
  • Koje su razlike između objektnog modula i modula menadžera? Kada biste trebali koristiti potonje?

Primjenjivost

Članak govori o platformi 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 nekom 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 opisa 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 ove procedure.

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 mogu imati lokaciju kompilacije (dostupnost) na serveru ili klijentu. Na primjer:

Nakon odjeljka koji opisuje varijable slijedi dio procedura i funkcija, gdje su naznačene lokalne metode ovog modula. Neki moduli moraju specificirati gdje će se procedura ili funkcija kompajlirati.

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 dati 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 i inicijalizirati lokalne varijable modula forme. Ova sekcija se izvršava prilikom pristupa modulu.

Tako, na primjer, prilikom otvaranja obrasca elementa, prvo se izvršava glavni programski dio modula forme.

Treba napomenuti da odeljak deklaracije varijable i glavni programski odeljak ne postoje za sve module (tj. ovi odeljci nisu važeći u nekim modulima). Odjeljak za opisivanje procedura i funkcija može postojati u apsolutno svakom modulu.

Aplikacioni modul

Ovaj modul je dizajniran za rukovanje događajima pokretanja i završetka aplikacije. Na primjer, kada pokrenete aplikaciju, možete preuzeti kurseve valuta sa Interneta. Prilikom ukidanja aplikacije, možete potvrditi s korisnikom da on ili ona namjeravaju zatvoriti.

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

To mogu biti događaji iz čitača magnetnih kartica ili fiskalnog registra. I ovi događaji se takođe mogu obraditi na neki način.

Imajte na umu da se interaktivno pokretanje sistema nadgleda 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 se obrađuju kada se pokrenu Managed Application Thin and Thick Client i Web Client.

Modul Redovna primjena radi kada se pokreće Thick Client u načinu rada Redovna primjena, koji sadrži uobičajeni komandni interfejs u obliku Glavni meni.

Ako je aplikacija pokrenuta Upravljano, i u načinu rada Redovna primjena, tada je potrebno opisati procedure rukovaoca kao za modul Upravljana aplikacija, i za modul Redovna primjena.

Modul Upravljana aplikacija može se odabrati iz kontekstnog menija korijenskog konfiguracijskog čvora.

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

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

Forma će se otvoriti Opcije. Na obeleživaču Uobičajeni su način uređivanja konfiguracije mora biti specificiran Upravljana aplikacija I Redovna primjena.

U ovom slučaju modul Redovna primjena također će biti moguće otvoriti iz svojstava korijenskog čvora.

Lista događaja za koje se može obraditi Upravljano I Redovna primjena je isti.

Ovaj modul može sadržavati odjeljak deklaracije varijable, odjeljak opisa proizvoljnih procedura i funkcija i glavni programski dio. 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 kada je modul otvoren.

Prozor Procedure and Functions koji se otvara 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 povezana sa gašenjem sistema (“prije” i “u”). I također obrada vanjskih događaja (na primjer, događaji komercijalne opreme).

Kada se izvrši obrađivač događaja "prije", smatra se da se radnja još nije dogodila. Kada se izvrši rukovalac događajem „at“, radnja je već završena.

Događaj Prije pokretanja sistema javlja se u trenutku kada se pokrene Enterprise 8.3, ali se sama aplikacija još nije pojavila na ekranu. Ovaj događaj ima sljedeći parametar: Odbijanje.

Ako ovaj parametar ima vrijednost Istinito, tada se aplikacija neće pokrenuti. Događaj Prilikom pokretanja sistema pretpostavlja da je radnja već završena, prozor je već kreiran i u ovom slučaju možemo, na primjer, prikazati neki poseban obrazac. Više nije moguće odbiti lansiranje.

Slično, prije isključivanja sistema, aplikacija je još uvijek otvorena i možete je odbiti zatvoriti. Kada se sistem isključi, prozor aplikacije je već zatvoren. Moguće je izvršiti samo dodatne radnje, na primjer, brisanje nekih datoteka ili slanje e-pošte.

U modulu Upravljana aplikacija Smjernice za kompajliranje procedura i funkcija nisu specificirane, jer 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 trebate izvršiti poziv servera, tada ćete za to morati kreirati specijal sa zastavom .

U modulu Redovna primjena Nema takvih ograničenja, jer će ovaj modul biti preveden prilikom učitavanja debelog klijenta. Gotovo sve vrste podataka dostupne su u debelom klijentu.

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

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, možete pozvati proceduru ili funkciju modula aplikacije iz modula forme objekta. Međutim, preporučuje se korištenje zajedničkih modula za opisivanje općih algoritama. Glavna svrha aplikativnog modula je obrada početne i krajnje točke.

Po analogiji sa modulom aplikacije, ovaj modul je dizajniran da obradi događaj otvaranja programa i događaj gašenja.

Za razliku od modula aplikacije, koji se pokreće u trenutku interaktivnog pokretanja aplikacije, modul eksterne veze radi u načinu COM veze, tj. kada je objekt 1C:Enterprise 8 kreiran i povezan s određenom bazom podataka.

Ovaj modul ima događaje: Prilikom pokretanja sistema I Nakon isključivanja sistema.

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

Sam proces eksternog povezivanja je proces programskog rada sa informacijskom bazom, a ne interaktivni. Shodno tome, u ovom trenutku ne možete koristiti dijaloške forme ili prikazati 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 vanjskom spoju nema korisničkog sučelja, vanjski modul za spajanje 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.

Modul sesije pruža događaj SettingSessionParameters.

Kada se aplikacija pokrene, ova procedura se prvo poziva. 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 dozvola. Modul sesije se kompajlira na serveru, tj. Moguće je pristupiti svim serverskim metodama (uključujući čitanje vrijednosti iz baze podataka).

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

Ako je prilikom pokretanja sistema potrebno izvršiti neke radnje na Serveru, na primjer kreirati element direktorija, tada je, kao opcija, moguće koristiti Modul sesije, 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 pozivati ​​više puta tokom rada aplikacije;
  • ako je broj elemenata u nizu parametara sesije nula (niz potrebnih parametara ima tip podataka Undefined), onda je to trenutak kada se aplikacija pokreće;
  • budući da modul sesije radi u privilegovanom režimu i neće biti provere prava pristupa, trebalo bi da radite veoma pažljivo sa objektima baze podataka, pošto korisnik može da dobije pristup podacima koji mu ne bi trebalo da budu dati;
  • Kada se sistem pokrene, još se sa sigurnošću ne zna da li će aplikacija biti pokrenuta. U ovom slučaju, nepotrebne radnje se mogu izvesti u rukovaocu događaja SetSessionParameters.

Ovi moduli predstavljaju opis 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 serverskih – na Serveru.

U Opštim modulima dostupan je samo odeljak koji opisuje procedure i funkcije. One. u Općem modulu ne možete opisati varijable i ne možete opisati dio glavnog programa.

Ako je potrebna globalna varijabla, možete koristiti ili parametre sesije ili varijable za izvoz modula aplikacije.

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

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

Nekretnina Global za opšte module može biti korisno. Međutim, ne biste ga trebali koristiti svugdje za sve uobičajene module.

One , koji su označeni znakom 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 navedeno, tada će se kompilacija ovog modula izvršiti u trenutku prvog poziva (tj. nakon pokretanja sistema).

Osim toga, korištenje globalnih zajedničkih modula utiče na razumijevanje koda. Metode neglobalnog zajedničkog modula se pozivaju kroz ime Opšti modul i naziv metode, na primjer:
Modul za izračunavanje troškova.DistributeIndirectCosts();

U ovom slučaju, nazivi zajedničkih modula moraju odražavati sadržaj procedura opisanih u njima. Navođenje imena zajedničkog modula prilikom pozivanja procedure pomaže boljem razumijevanju koda.

Za Opšti modul V Paleta svojstava možete postaviti svojstvo Privilegovani.

Privilegirani modul ne kontrolira prava pristupa. Ovo je neophodno ako Opšti modul Potrebno je izvršiti masovnu obradu podataka, dobijanje podataka iz baze podataka.

Kontrolisanje prava pristupa povećava vreme potrebno za pristup bazi podataka, a masovni 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 prava pristupa.

Na ovaj način mogu se postići značajna poboljšanja performansi. Ovo je posebno tačno kada se koristi mehanizam za kontrolu pristupa red po red zapisima tabele.

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 izrade bilo kojeg dokumenta potrebno je upućivanje na ovu referentnu knjigu.

One. Potrebno je privremeno proširiti korisnička prava, a zatim ih vratiti 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 Trebali biste kreirati proceduru koja 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. Oznake se koriste za određivanje da li će zajednički modul biti dostupan na klijentu (upravljana aplikacija), na serveru ili u načinu eksterne veze.

Osim toga, ako prebacite mod za uređivanje konfiguracije na Upravljana aplikacija i redovna aplikacija, tada će biti moguć drugi kontekst kompilacije - Klijent (obična 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 zajedničkom modulu.

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

U ovom slučaju, proceduri se ne može pristupiti u kontekstu koji nije dostupan cijelom modulu.

Ako ne navedete direktivu kompilacije za proceduru (funkciju), ona će biti prevedena u svim kontekstima definiranim za modul.

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

Generički moduli koji su istovremeno dostupni u nekoliko različitih konteksta prvenstveno su dizajnirani da kreiraju procedure koje su dostupne u više konteksta.

Prilikom kreiranja opšteg modula, smatra se dobrom praksom da se ne specificiraju direktive za kompilaciju. One. Dostupnost 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 postavljeno nekoliko kompilacijskih zastavica koriste se izuzetno rijetko u praksi. Ovo su neke uobičajene radnje dostupne i na klijentu i na serveru. Obično su to neke jednostavne kalkulacije.

Bitan! Klijentu je moguće pristupiti metodama servera za izvoz zajedničkog modula, ali samo ako je ovaj zajednički modul kompajliran samo na serveru. U ovom slučaju je obezbeđena posebna zastavica koja omogućava pristup klijentu .

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

Svrha ovog mehanizma je da ubrza ponovljene pozive. Da biste konfigurirali ovo ponašanje, potrebno je Paleta svojstava modul, postavite odgovarajuću vrijednost za svojstvo Ponovna upotreba povratnih vrijednosti.

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

Ovo svojstvo ima smisla koristiti samo za one funkcije čiji rezultati zavise isključivo od ulaznih parametara. Ovaj mehanizam je dostupan samo za neglobalne zajedničke module.

Ako je odabrana vrijednost odgovarajućeg parametra Za trajanje poziva, keš će raditi sve dok je pokrenuta procedura iz koje je pozvana metoda General Module. Ako je odabrana vrijednost za vrijeme trajanja sesije, tada se uvjetno pretpostavlja da će keš raditi dok korisnik radi.

Međutim, postoje određena vremenska ograničenja. Keš memorija se automatski briše 20 minuta nakon što vrijednost uđe u keš memoriju.

Modul obrasca

Ovaj modul je dizajniran za obradu radnji korisnika. Na primjer, opišite algoritam kako program reaguje 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 upravljati događajem zatvaranja obrasca i provjeriti da li je korisnik sve ispravno unio.

Postoje kontrolisane forme i regularne forme. Moduli ovih obrazaca razlikuju se prvenstveno po tome što je modul upravljane forme jasno podijeljen na kontekst. Svaka procedura (funkcija) mora imati direktivu kompilacije. U 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 korisnik počne da ga otvara. Slika prikazuje listu standardnih događaja za upravljani obrazac.

Lista događaja upravljanog obrasca je takođe vidljiva u listi svojstava direktno 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 objektne forme (direktorije, dokumente i neke druge). Ako obrazac nije vezan za određeni objekt, onda nema događaja pisanja.

Za modul regularnog oblika lista standardnih događaja je nešto manja, jer u upravljanom obliku, mnogi događaji su napravljeni da budu upareni (jedan se izvršava na klijentu, a drugi na serveru). U svom normalnom obliku, sav kod se izvršava na Klijentu.

Objektni modul

Ovi moduli su tipični za imenike, dokumente, planove za vrste kalkulacija, 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 javlja se tokom procesa interaktivnog snimanja, kada se radi sa određenim obrascem.

Događaj pisanja u modulu objekta će se izvršiti na bilo kojem zapisu iz bilo kojeg oblika datog objekta. Dodatno, ako je objekt napisan programski, aktivirat će se događaj modula objekta.

U slučaju pisanja Object Modula, možete ugraditi sve provjere ispravnosti podataka koji se upisuju, jer će se ova procedura izvršiti u trenutku apsolutno svakog snimanja.

Modul ovog objekta može se pozvati kroz kontekstni meni, iz palete svojstava objekta i iz prozora za uređivanje objekta.

Slika ispod prikazuje listu dostupnih događaja modula direktorija.

U Object Module možete postaviti odeljak za opisivanje varijabli, opisivanje proizvoljnih funkcija koje možda nisu povezane sa događajem, kao i deo glavnog programa.

U glavnom dijelu programa možete, na primjer, inicijalizirati lokalne varijable datog 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. Shodno tome, direktive za kompilaciju za procedure i funkcije Object Modula nisu potrebne. 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 događajima pisanja Konstante i obrada verifikacije popunjavanja.

Cijeli kontekst modula se izvršava na Serveru.

Za registre postoji Recordset Module.

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

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 odgovarajuću proceduru sa ključnom riječi Izvoz.

Tada će biti moguće pristupiti ovoj proceduri izvana. Štaviše, ova metoda će biti prikazana u kontekstu alata. Nove metode u opisu konteksta su istaknute plavim fontom (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.

Na ovaj način je moguće proširiti funkcionalnost objekata (definirati nove metode i nova svojstva). Međutim, 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 Paleta svojstava, ili kroz prozor za uređivanje.

U modulu menadžera možete nadjačati neke standardne događaje, na primjer, in ProcessingReceivingSelectionData, kada je element odabran iz direktorija, može se izvršiti neko dodatno filtriranje ili provjera.

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

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

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

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

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

Druga razlika je u tome Objektni modul naziva se u kontekstu određenog elementa. U skladu s tim, možemo pretpostaviti da je primjenjiv za dati element (u većini slučajeva, upravo je to logika koja se koristi).

Što se tiče menadžerskog modula, on opisuje neku uobičajenu radnju za grupu ili za sve elemente direktorija ili nekog dokumenta. Na primjer, ako trebate ispisati stavku direktorija, možete koristiti Objektni modul.

Ali u modulu menadžera moguće je kreirati 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 ukratko 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
  • Softverski moduli su klasifikovani prema tipovima o kojima smo govorili u ovom članku. Svaki pogled je određen njegovim položajem i dostupnim programskim kontekstom.
  • Struktura modula sastoji se od nekoliko sekcija, koje su raspoređene u određenom nizu. Sastav sekcija je određen tipom modula.

Također imajte na umu da smo namjerno izostavili jednu vrstu modula, odnosno komandni modul. Nije ništa posebno i pozivamo vas da se upoznate sa njegovom funkcionalnošću.

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

Šta su moduli i čemu su tačno namenjeni? Modul sadrži programski kod. Štoviše, vrijedno je napomenuti da, za razliku od platforme 7.7, gdje se kod može nalaziti u svojstvima elemenata forme iu ćelijama tabela izgleda, na platformi 8.x bilo koji red koda mora biti smješten u nekom modulu . Tipično, modul se sastoji od tri sekcije - odjeljka za opisivanje varijabli, odjeljka za opisivanje procedura i funkcija i odjeljka za glavni program. Ova struktura je tipična za skoro sve module platforme, sa nekim izuzecima. Neki moduli nemaju odjeljak opisa varijable ili glavni programski dio. Na primjer, modul sesije i bilo koji opći modul.

Kontekst izvršavanja modula općenito je podijeljen na klijenta i servera. Osim toga, neki moduli se mogu kompajlirati i na strani klijenta i na strani servera. A neki su isključivo na strani servera ili klijenta. dakle:

Aplikacioni modul

Modul je dizajniran da uhvati trenutke pokretanja aplikacije (učitavanja konfiguracije) i prestanka njenog rada. A procedure verifikacije se mogu postaviti u odgovarajuće događaje. Na primjer, prilikom pokretanja aplikacije ažurirajte neke referentne konfiguracijske podatke, a kada završite posao, pitajte je li se uopće isplati napustiti, možda radni dan još nije gotov. Osim toga, presreće događaje iz vanjske opreme, na primjer, trgovačke ili fiskalne. Vrijedi napomenuti da aplikacijski modul presreće opisane događaje samo kada se pokrene interaktivno. One. kada se kreira sam prozor programa. To se ne dešava ako je aplikacija pokrenuta u načinu com veze.

Postoje dva različita modula aplikacije u 8.2 platformi. To su modul Regularne aplikacije i modul Upravljane aplikacije. Pokreću se kada se pokrenu različiti klijenti. Ovako se pokreće modul upravljane aplikacije kada se web klijent, tanki klijent i debeli klijent pokreću u načinu upravljanja aplikacijom. A obični modul aplikacije se pokreće kada se debeli klijent pokrene u normalnom režimu aplikacije.

Aplikacioni modul može sadržati sve sekcije - opise varijabli, procedura i funkcija, kao i opise glavnog programa. Aplikacijski modul se kompajlira na strani klijenta, tako da nas to uvelike ograničava u dostupnosti mnogih vrsta podataka. Možete proširiti kontekst modula aplikacije koristeći metode uobičajenih modula koji imaju postavljeno svojstvo “Poziv servera”. Sve varijable i metode koje su označene kao izvoz bit će dostupne u bilo kojem konfiguracijskom modulu koji radi na strani klijenta. Međutim, koliko god primamljivo bilo, ovdje ne biste trebali objavljivati ​​veliki broj metoda. Što više koda sadrži, to je duže vrijeme kompilacije, a samim tim i vrijeme pokretanja aplikacije, što je vrlo neugodno za korisnike.

Kao što je gore navedeno, modul aplikacije upravlja događajima pokretanja i završetka aplikacije. Za rukovanje svakim od ovih događaja u aplikacijskom modulu postoji par rukovatelja Prije... i Kada... Razlike između njih su takve da prilikom izvršavanja koda u rukovatelju Prije... akcija još nije bila dogodio i možemo odbiti da ga izvršimo. Ovo je ono čemu služi opcija Odbij. U rukovateljima On.. radnja se već dogodila i ne možemo odbiti pokretanje aplikacije ili izlazak iz nje.

Eksterni priključni modul

Svrha modula je slična svrsi aplikativnog modula. Obrađuje početnu i krajnju tačku aplikacije. Modul eksterne veze se pokreće kada se aplikacija pokrene u načinu com veze. Sam proces vanjskog pridruživanja je neinteraktivan proces. U ovom načinu rada dolazi do programskog rada sa informacijskom bazom i prozor aplikacije se ne otvara, što nameće određena ograničenja u korištenju metoda namijenjenih interaktivnom radu. U ovom režimu se ne mogu koristiti pozivi na forme za dijalog, poruke upozorenja itd. Oni jednostavno neće raditi.

Kao iu aplikacijskom modulu, ovdje su dostupne sekcije za opisivanje varijabli, metoda i odjeljak za glavni program. Također možete deklarirati izvozne varijable i metode. Razlika je u tome što se u načinu com veze sav rad sa info bazom odvija na strani servera, pa se modul eksterne veze kompajlira isključivo na serveru. Shodno tome, izvozne varijable i metode uobičajenih klijentskih modula nisu dostupne u njemu.

Modul sesije

Ovo je visoko specijalizovan modul i namenjen je isključivo za inicijalizaciju parametara sesije. Zašto ste morali da napravite sopstveni modul za ovo? To je zbog činjenice da proces inicijalizacije može zahtijevati izvršavanje nekog koda, a osim toga, aplikacija se može pokrenuti pod različitim klijentima (što dovodi do izvršavanja različitih modula aplikacije ili eksternog modula za povezivanje), a inicijalizacija parametri sesije moraju biti urađeni u bilo kojem načinu pokretanja. Stoga je bio potreban dodatni modul koji radi u bilo kojem načinu pokretanja aplikacije.

U modulu sesije postoji jedan događaj “SettingSessionParameters”, koji se izvršava vrlo prvi, čak i prije događaja modula aplikacije BeforeSystemStartOperation. Odjeljak deklaracije varijable i glavni programski dio nisu dostupni u njemu. Također ne možete deklarirati metode izvoza. Modul se kompajlira na strani servera.

Ne treba vas dovoditi u iskušenje činjenica da se ovaj modul izvršava svaki put kada se aplikacija pokrene, i da u njega ne treba postavljati kod koji nije direktno povezan sa inicijalizacijom parametara sesije. Ovo je zbog činjenice da se rukovalac SetSessionParameters može više puta pozivati ​​tokom rada sistema. Na primjer, to se događa u slučajevima kada pristupamo neinicijaliziranim parametrima. I iako je moguće uhvatiti trenutak prvog pokretanja ovog događaja (RequiredParameters je tipa Undefined), treba uzeti u obzir da je ovaj modul kompajliran u privilegovanom modu, tj. ne kontroliše prava pristupa. A druga stvar je da još uvijek ne možemo biti sto posto sigurni da će sistem biti pokrenut. Odjednom dolazi do kvara u aplikacijskom modulu i pokušavamo izvršiti neke radnje s bazom podataka.

Zajednički moduli

Moduli su namijenjeni da opišu neke uobičajene algoritme koji će biti pozvani iz drugih konfiguracijskih modula. Opšti modul ne sadrži odjeljak opisa varijable i glavni programski dio. U njemu možete deklarisati metode izvoza, čiji će kontekst pristupačnosti biti određen oznakama kompilacije. Zbog činjenice da odjeljak opisa varijable nije dostupan, globalne varijable se ne mogu definirati u zajedničkim modulima. Da biste to učinili, trebate koristiti funkcije zajedničkih modula s keširanjem povratnih vrijednosti ili modul aplikacije. Vrijedno je imati na umu da čak i ako je svojstvo ponovne upotrebe dijeljenog modula postavljeno na "Za vrijeme trajanja sesije", tada u ovom slučaju životni vijek keširanih vrijednosti ne prelazi 20 minuta od trenutka posljednjeg pristupa njima.
Ponašanje zajedničkog modula zavisi od postavljenih parametara (globalno ili ne, razne zastavice kompilacije, da li je dostupan poziv servera, itd.). U ovom članku nećemo razmatrati sve vrste postavki, kao ni karakteristike ponašanja i zamke koje nastaju pri nerazumnom postavljanju zastavica svojstava. Ovo je tema za poseban članak. Zaustavimo se samo na nekoliko tačaka kojih se treba pridržavati prilikom postavljanja zastava:

  • Dobro pravilo je da se globalna zastava ne koristi svuda. Ovo će smanjiti vrijeme pokretanja aplikacije, a također će poboljšati čitljivost koda (naravno, ako zajednički modul ima potpuno smisleno ime).
  • Nije preporučljivo koristiti više od jedne zastavice kompilacije. Ne postoji mnogo metoda koje treba izvršiti u različitim kontekstima, a ako su takve metode i dalje potrebne, onda se za njih može dodijeliti poseban zajednički modul.
  • Oznaka "Poziv servera" ima smisla samo ako je modul kompajliran "Na serveru". Stoga, sve ostale zastavice kompilacije treba ukloniti kako bi se izbjegli različiti problemi.
  • Ako metode modula uključuju ogromnu obradu podataka, čitanje i upisivanje u bazu podataka, tada je za povećanje brzine rada bolje onemogućiti kontrolu prava pristupa postavljanjem zastavice „Privileged“. Ovaj način rada je dostupan samo za dijeljene module kompajlirane na serveru.

Modul obrasca

Dizajniran je za obradu radnji korisnika, tj. razni događaji vezani za unos podataka i obradu ispravnosti njihovog unosa. Modul uobičajenog oblika se u potpunosti sastavlja na klijentu. Modul upravljanog obrasca jasno je razgraničen kontekstom izvršavanja, tako da sve varijable i metode moraju imati direktivu kompilacije. Ako direktiva nije eksplicitno specificirana, tada će se ova varijabla ili metoda kompajlirati na strani servera. Modul forme sadrži sekcije za opise varijabli i metoda, kao i odjeljak za glavni program.

Objektni modul

Ovaj modul je tipičan za mnoge konfiguracijske objekte i općenito je namijenjen za obradu događaja objekata. Na primjer, događaji za snimanje i brisanje objekata, događaji za knjiženje dokumenata itd.

Neki događaji modula objekta dupliraju događaje modula obrasca. Na primjer, događaji povezani sa snimkom. Međutim, imajte na umu da će se događaji modula obrasca izvršavati isključivo na specifičnoj formi objekta. Općenito, može postojati nekoliko ovih oblika. A događaji objektnog modula će se pozivati ​​u svakom slučaju, čak i u trenutku programskog rada s objektom. Stoga, ako trebate izvršiti neki kod u svim slučajevima, onda je bolje koristiti događaj objektnog modula za to.

Objektni modul se kompajlira isključivo na serveru. U njemu možete definirati izvozne varijable i metode koje će biti dostupne u drugim konfiguracijskim modulima. Koristeći ova svojstva i metode, možemo značajno proširiti funkcionalnost objekta.

Modul za upravljanje objektima

Ovaj modul postoji za mnoge konfiguracijske objekte. Glavna svrha ovog modula je da redefinira standardni događaj odabira koji se javlja prilikom ulaska u liniju i da proširi funkcionalnost menadžera. Modul se kompajlira na strani servera. Omogućava vam da definirate svojstva i metode izvoza. Pozivanje menadžerovih metoda izvoza ne zahtijeva kreiranje samog objekta.

Svemu gore navedenom možete dodati sliku nekih konfiguracijskih modula i načina međusobnog pozivanja metoda u načinu upravljanja aplikacijom. Strelica pokazuje smjer u kojem se možete okrenuti da biste pozvali odgovarajuću metodu. Kao što se može vidjeti iz dijagrama, kontekst servera je potpuno zatvoren. Ali iz konteksta klijenta moguće je pristupiti serverskim metodama.

Simboli na dijagramu: O.M. Klijent - Zajednički modul klijenta; O.M. Server - serverski zajednički modul; M.F. Klijent - Klijentske procedure modula obrasca; M.F. Server - Serverske procedure modula obrasca.

Svaki program se sastoji od programskog koda, odnosno, zapravo niza radnji napisanih na bilo kom jeziku koje se moraju izvršiti.

Međutim, baš ovaj program mora biti negdje napisan, odnosno negdje lociran. U većini slučajeva, programski kod je napisan u običnim tekstualnim datotekama. Jedina razlika je u tome što ekstenzija u njima nije .txt, već .cpp ili .php.

Gdje je napisan 1C program?

Šta je Modul 1C?

Naravno, 1C kod može biti napisan i u nekom tekstualnom fajlu. Međutim, postoji koncept 1C konfiguracije - koji uključuje ne samo listu postavki, predložaka obrazaca itd., već i 1C programski kod. Stoga je 1C kod pohranjen u konfiguraciji.

Konfiguracija se sastoji od 1C objekata, kao što smo već raspravljali u prethodnim lekcijama. Svaki 1C objekt sadrži ugniježđene objekte, na primjer, direktorij ima nekoliko oblika.

Svaki 1C objekt, uključujući i neke ugniježđene, ima svoj vlastiti Modul - tekstualnu datoteku koja sadrži programski kod.

Postoje i objektno nezavisni moduli u kojima se može napisati programski kod koji je nezavisan od određenog objekta.

Dakle, u 1C nema "jednog" programa. Postoji skup modula za pisanje programskog koda za svaki 1C konfiguracijski objekt.

Kako se koriste 1C moduli?

Cijeli program se može grubo podijeliti u dvije vrste:

  • Objektna metoda
  • Reakcija na događaje.

Metode. Kao što smo ranije rekli, 1C objekat je integralna struktura koja uključuje i podatke i metode za njihovu obradu. Ove metode su skup radnji (metoda) koje se mogu pozvati za obradu podataka. Primjer takve akcije je DirectoryObject.Write() – upisuje element direktorija u bazu podataka.

Metode mnogih 1C objekata mogu biti standardne (tj. programirane na 1C platformi) i napisane od strane programera na 1C jeziku. Uz pomoć drugog, možete proširiti funkcionalnost 1C objekata kako želite.

Događaji. Događaji su dostupni u mnogim drugim razvojnim alatima. Svrha programa nije samo da izračuna nešto pri pokretanju, već i da podrži rad korisnika.

Korisnički događaj - korisnik je pritisnuo dugme. Kao odgovor, neki dio koda će se izvršiti, reagirajući na radnje korisnika.

Sistemski događaji - snimili smo 1C objekat u bazu podataka. Dogodio se sistemski događaj “Write object”. Moguće je konfigurisati reakciju koja će se desiti na događaje izazvane ne od strane korisnika (koji je pritisnuo dugme ili uradio nešto drugo), već od samog sistema. Upečatljiv primjer takvog događaja je početak programa.

Redoslijed izvođenja 1C modula

Mnogi jezici imaju takav koncept kao "ulazna tačka". Ovo je prva linija ili funkcija koja će se izvršiti kada se program pokrene.

U 1C postoji nekoliko takvih ulaznih tačaka - za svaku vrstu klijenta. Odnosno, kada se pokreće debeli klijent, postoji jedna ulazna tačka, kada se pokreće tanki klijent, druga. Ovo vam omogućava da programirate funkcije koje su različite za različite tipove klijenata.

Ulazna tačka u odgovarajućem modulu su rukovaoci sistemskim događajima BeforeSystemStart() i WhenSystemStart(), respektivno (tj. redom). Ove funkcije se prvo izvršavaju, mogu nešto automatski pokrenuti.

Ako ništa nije pokrenuto automatski, tada se 1C sučelje otvara pred korisnikom i onda sve ovisi o njemu. On pritisne dugme – izvršava se rukovalac klika na dugme (koji zauzvrat takođe može da pokrene nešto automatski).

Rad sa 1C modulima

Proizvedeno u konfiguratoru. Modul možete otvoriti pomoću prozora Konfiguracija.

 


Pročitajte:



911 Operativni kredit čini život lakšim

911 Operativni kredit čini život lakšim

Credit 911 LLC pruža neciljane potrošačke kredite do plaće u gradovima Moskvi, Sankt Peterburgu, Tveru i Bratsku. Zajmoprimac takođe može...

Vojna hipoteka će biti podvrgnuta promjenama Maksimalni iznos vojne hipoteke godišnje

Vojna hipoteka će biti podvrgnuta promjenama Maksimalni iznos vojne hipoteke godišnje

Zakon o davanju hipoteka građanima na služenju vojnog roka stupio je na snagu početkom 2005. godine, a projekat je osmišljen kako bi se obezbijedio adekvatan smještaj...

Dodatni porezi na zemljište su dodati za prethodne godine

Dodatni porezi na zemljište su dodati za prethodne godine

Poresko obaveštenje koje sadrži obračune (preračune) za porez na zemljište u blizini Moskve zajedno sa obračunima za ostale poreze na imovinu fizičkih lica...

Kredit osiguran zemljištem

Kredit osiguran zemljištem

– jedan od vidova modernog kreditiranja. Svaki vlasnik zemljišta može računati da će dobiti takav zajam. Međutim, biće potrebno mnogo...

feed-image RSS