Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Windows telefon
  • Poziv funkcije 1s iz objektnog modula. Izvan konteksta pozivanje metoda objekta obrade (izvještaja) u upravljanom obliku

Poziv funkcije 1s iz objektnog modula. Izvan konteksta pozivanje metoda objekta obrade (izvještaja) u upravljanom obliku

Članak nastavlja ciklus "Prvi koraci u razvoju na 1C", u njemu se detaljno razmatraju 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 početkom 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, ovo 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 procedura ili funkcija biti kompajlirana.

U principu, direktiva o kompilaciji može biti izostavljena. U ovom slučaju, default 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 gašenja 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 Parametri na meniju Servis).

Otvoriće se obrazac Parametri. 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 nalaziti posebni rukovaoci 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.

Dva su događaja povezana sa startom sistema (“prije” i “u”). 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 rukovalac događajem “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 Odbijanje.

Ako je ovaj parametar postavljen na Tačno, 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 trebate 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 Client-u.

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 sa 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 rada. 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), onda 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 rukovaocu 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 dostupne izvana direktno, 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, obračun plaća 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 privilegiranoj 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 istovremeno dostupni u nekoliko različitih konteksta prvenstveno su dizajnirani da kreiraju procedure 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 odvojenim 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 normalni. 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 rukovati 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 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 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, jer će ova procedura funkcionirati u vrijeme apsolutno svakog upisivanja.

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 odjeljak za opisivanje varijabli, opisati proizvoljne funkcije koje možda nisu povezane s 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 se sve procedure Object Modula kompajliraju na Serveru. Shodno tome, direktive kompilacije nisu potrebne za procedure i funkcije modula objekta. 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.

V 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 skupa 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 kontekstualnom opisu 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 (imenike, 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. Shodno tome, 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 Object Module.

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 nizu. 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 naziva zajedničkog modula. Međutim, dodat je 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.
  • Vanjski 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

Awk 693 22.12.13 22:44 Sada u temi

() Počnimo od glavne stvari. Gluposti i besmislice su pokušaj bojanja izraza emocijama. Što je prilično teško izvesti kroz epistolarni žanr. Dakle, ovo je izraz mog nesporazuma, a ne pokušaj uvrede. Lijepo je poslovati sa nekim ko ovo razumije. Ako sam te povrijedio, žao mi je.

Analogija je jednostavno neprikladna, po prirodi OOP-a. OOP je nasljednik proceduralnog, modularnog programiranja. To je kao porediti oca i sina, a davati primjer ocu sina.

Teško je raspravljati sa izjavom. Ali u smislu značenja, ova primjedba je slabo povezana s mjestom koje je komentarisano u članku.

Ovo se odnosi na primjer dat u članku. Tamo metoda ima direktivu kompilacije, a ključna riječ "export" je iz nekog razloga izostavljena.

To što on nikada nije morao nešto da uradi ne znači da to nije relevantno, ili da drugi to ne rade.

Da. Nisam morao mijenjati uobičajene module za eksternu obradu. Bilo je potrebno napraviti različite verzije, za različite konfiguracije.

U tipičnoj aplikaciji, oni se često koriste za rješavanje zadataka isključivo interfejsa:

To je samo to, to je uobičajeno. Ne predviđam njegovu smrt (prilično dobro i provjereno rješenje), ali trendovi su takvi da 1C ide sve dalje ka distribuiranom računarstvu, sa jasnom alokacijom koda na mjesta djelovanja. Ovdje se rijetko kotrlja (ako se uopće kotrlja): "Sve je na klijentu, pa ćemo onda to shvatiti" ili "Povući ćemo server par puta - ipak imamo gigabit."

Mislim da bi bilo korisno proširiti apstrakciju svojstvenu konceptu "GeneralModule" i uvesti u konfiguraciju
entiteti novog tipa, recimo "Module Executable", slični objektima Modula iz MS VBA.
"SharedModules" bi bio poseban slučaj "Module Executable" objekata, otprilike
u istom omjeru kao objekti "GeneralForm" i samo "Form"....

Za početak, bilo bi lijepo implementirati prostore imena i metapodatke modula u 1C, a ne kao što je sada (citat iz pomoćnika za sintaksu); "Nedefinirano - jer se ne očekuje da radi na ugrađenom jeziku"

Recimo da je broj stanja korištenih u obrascu velik, i recimo to
kada se koristi obrazac, vjerovatnoća realizacije određenog stanja je mala;

U klasičnom web programiranju to se rješava mogućnošću ugniježđenja formi u forme i asinhronim pozivima (AJAX), nažalost to 1C ignorira. Dakle, to ostavlja tri opcije:

1. Koristite različite oblike
2. Prenesite sve potrebne podatke klijentu
3. Povucite server.

Općenito, pozivi servera izvan konteksta se ne smatraju lošom stvari i treba ih izbjegavati.
- U principu, postoji čak i mišljenje (sa kojim se baš i ne slažem) da je neki "ekstra" broj
serverski kontekstni pozivi su manje zlo ako njihova optimizacija "previše" zbuni "čitljivost" koda.


Pozivi servera izvan konteksta su dizajnirani da smanje promet prilikom prijenosa podataka sa klijenta na server. Samo po tome se razlikuju od kontekstualnih.

Primjer 1: trebate dobiti drugu stranu na osnovu dokumenta.

klijent server
1. izaberite obrazac --> primite obrazac
2. Prilikom mijenjanja<--
3. Nabavite račun --> DocumentReason["Account"]

U trećem koraku, nema smisla prevlačiti cijeli obrazac na server, sa svim detaljima. Stoga je preporučljivo koristiti OnServerWithoutContext.

U svojoj verziji možete jednostavno koristiti:

Za metode objektnog modula:

&OnServerWithoutContext
Funkcija Something_with_something(ProcessingObject, ProcessingTypeString, Parameters)
Vraćanje FormDataToValue(ProcessingObject, Type(ProcessingTypeString)).DesiredFunction(Parameters);
EndFunctions

Za metode modula menadžera:

&OnServerWithoutContext
Funkcija Something_with_something(Naziv, Parametri)
Povrat Obrada[Ime].DesiredFunction(Parameters);
EndFunctions

Top Related Articles