Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Windows Phone
  • 1c duke thirrur një funksion nga një modul objekti. Thirrja jashtë kontekstit e metodave të objektit të përpunimit (raportit) në një formë të menaxhuar

1c duke thirrur një funksion nga një modul objekti. Thirrja jashtë kontekstit e metodave të objektit të përpunimit (raportit) në një formë të menaxhuar

Artikulli vazhdon ciklin "Hapat e parë në zhvillim në 1C", ai shqyrton në detaje çështjet e mëposhtme:

  • Çfarë është një modul kodi dhe nga cilat seksione përbëhet ai?
  • Për çfarë shërben një modul aplikimi? Pse janë dy? Kur fillon cila? Cilat janë hollësitë e punës?
  • Cilat ngjarje lidhen me fillimin e sistemit, si dhe ku të përpunohen ato?
  • Për çfarë shërben moduli i lidhjes së jashtme? Kur dhe si ta përdorni?
  • Kur përdoret moduli i sesionit?
  • Cilat janë modulet e zakonshme? Cilat janë vetitë dhe rregullat e punës së tij? Pse të përdorni veçorinë e Ripërdorimit të Vlerave të Kthuara?
  • Kur përdoret një modul formulari dhe cilat ngjarje mund të trajtojë?
  • Për çfarë shërben moduli i objektit? Nga cilat seksione përbëhet? Si mund t'i shikoj ngjarjet e disponueshme të një moduli?
  • Cilat janë hollësitë e punës me modulet e menaxherit të vlerave (për konstantet) dhe modulet e grupeve të të dhënave (për regjistrat)?
  • Cili është ndryshimi midis një moduli objekti dhe një moduli menaxheri? Kur duhet ta përdorni këtë të fundit?

Zbatueshmëria

Artikulli diskuton platformën "1C: Ndërmarrja" 8.3.4.496. Materiali është gjithashtu i rëndësishëm për versionet aktuale të platformës.

Modulet në "1C: Enterprise 8.3"

Modulet janë objekte që përmbajnë kodin e programit.

Platforma ka një numër mjaft të madh të llojeve të moduleve, secila prej të cilave ka qëllimin dhe veçoritë e veta.

Çdo linjë kodi duhet të jetë në një modul. Ekzistojnë module për qëllime të përgjithshme dhe module objektesh. Disa module mund të kompilohen si në Klient ashtu edhe në Server, dhe disa vetëm në Server.

Një modul mund të ndahet në disa seksione. Seksioni që përshkruan variablat përshkruan variablat lokale të këtij moduli, të cilat mund të përdoren më pas në çdo procedurë.

Brenda çdo procedure, mund t'i referoheni një variabli të modulit. Përveç kësaj, brenda vetë procedurës, mund të ketë një deklaratë tjetër ndryshore me të njëjtin emër. Kjo do të jetë një variabël lokale për këtë procedurë.

Pavarësisht të njëjtit emër, ato janë dy ndryshore të ndryshme: njëra përdoret brenda një procedure të caktuar dhe tjetra është jashtë saj.

Në disa module për variabla, mund të tregohet vendndodhja (disponueshmëria) e kompilimit në Server ose në Klient. Për shembull:

Seksioni që përshkruan variablat pasohet nga një seksion procedurash dhe funksionesh, ku tregohen metodat lokale të këtij moduli. Disa module duhet të specifikojnë se ku do të përpilohet procedura ose funksioni.

Në parim, direktiva e përpilimit mund të hiqet. Në këtë rast, direktiva e paracaktuar e përpilimit është Server. Sidoqoftë, për lehtësinë e analizimit të kodit të programit, rekomandohet të tregohet në mënyrë eksplicite se ku do të përpilohet kjo procedurë. Rendi në të cilin përshkruhen procedurat nuk ka rëndësi.

Në fund të modulit, pas përshkrimit të të gjitha procedurave dhe funksioneve, është një seksion i programit kryesor, ku mund të përmbahen disa operatorë, inicializohen variablat lokalë të modulit të formës. Ky seksion ekzekutohet kur hyni në modul.

Kështu, për shembull, kur hapni një formë elementi, para së gjithash, ekzekutohet seksioni kryesor i programit të modulit të formularit.

Duhet të theksohet se seksioni i deklarimit të ndryshoreve dhe seksioni kryesor i programit nuk ekzistojnë për të gjitha modulet (d.m.th., këto seksione nuk lejohen në disa module). Një seksion që përshkruan procedurat dhe funksionet mund të ekzistojë në absolutisht çdo modul.

Moduli i aplikimit

Ky modul është krijuar për të trajtuar ngjarjet e nisjes dhe mbylljes së aplikacionit. Për shembull, kur hapni një aplikacion, mund të shkarkoni normat e monedhës nga Interneti. Në fund të aplikacionit, mund të siguroheni që përdoruesi ka ndërmend të përfundojë punën.

Gjithashtu në modulin e aplikacionit ka mbajtës të veçantë që ju lejojnë të përgjoni ngjarjet e jashtme nga pajisjet.

Këto mund të jenë ngjarje nga një lexues i kartave magnetike, regjistrues fiskal. Dhe këto ngjarje gjithashtu mund të trajtohen në një farë mënyre.

Duhet të theksohet se është fillimi interaktiv i sistemit që gjurmohet në modulin e aplikacionit.

Moduli i aplikacionit nuk do të funksionojë nëse programi 1C niset, për shembull, në modalitetin e lidhjes. Në këtë rast, dritarja e programit nuk krijohet.

Duhet të theksohet se ekzistojnë dy module të ndryshme aplikimi në Platformën 8.3: moduli i aplikacionit të menaxhuar dhe moduli i aplikacionit të rregullt. Ngjarjet e modulit të aplikacionit të menaxhuar përpunohen kur hapet klienti Thin and Thick i aplikacionit të menaxhuar dhe klienti i Uebit.

Moduli Aplikim i rregullt funksionon kur klienti i trashë niset në modalitet Aplikim i rregullt, në të cilën ekziston një ndërfaqe e zakonshme komanduese në formë Menuja kryesore.

Nëse aplikacioni po ekzekutohet në Menaxhuar, dhe në modalitet Aplikim i rregullt, atëherë është e nevojshme të përshkruhen procedurat e mbajtësit si për modulin Aplikim i menaxhuar dhe për modulin Aplikim i rregullt.

Moduli Aplikim i menaxhuar mund të zgjidhet nga menyja e kontekstit të nyjës së konfigurimit rrënjë.

Gjithashtu, ky modul mund të hapet nga paleta e vetive të elementit të konfigurimit rrënjë.

Për të hapur një modul Aplikim i rregullt, duhet t'i referoheni cilësimeve të konfigurimit (komandë Parametrat në meny Shërbimi).

Do të hapet një formular Parametrat... Në një faqerojtës Janë të zakonshme Duhet të specifikohet mënyra e modifikimit të konfigurimit Aplikim i menaxhuar dhe Aplikim i rregullt.

Në këtë rast, moduli Aplikim i rregullt mund të hapet edhe nga vetitë e nyjës rrënjë.

Lista e ngjarjeve për të cilat mund të trajtohen Menaxhuar dhe Aplikim i rregulltështë i njëjtë.

Në këtë modul, mund të vendosni një seksion për deklarimin e variablave, një seksion për përshkrimin e procedurave dhe funksioneve arbitrare dhe një seksion për programin kryesor. Por përveç procedurave dhe funksioneve arbitrare, në modul mund të vendosen mbajtës të veçantë të ngjarjeve.

Lista e mbajtësve të disponueshëm mund të shihet duke thirrur listën e procedurave dhe funksioneve të modulit aktual ndërsa moduli është i hapur.

Në dritaren e hapur Procedurat dhe funksionet, shfaqen të gjitha procedurat dhe funksionet e këtij moduli, si dhe ngjarjet për të cilat ende nuk janë krijuar mbajtësit.

Ka dy ngjarje që lidhen me fillimin e sistemit ("para" dhe "në"). Dy ngjarje që lidhen me mbylljen e sistemit ("para" dhe "në"). Dhe gjithashtu përpunimi i ngjarjeve të jashtme (për shembull, ngjarjet e pajisjeve tregtare).

Kur zbatuesi i ngjarjeve "para" ekzekutohet, konsiderohet se veprimi ende nuk është kryer. Kur zbatuesi i ngjarjeve "on" ekzekutohet, veprimi është kryer tashmë.

Ngjarja Para fillimit të Sistemit ndodh në momentin kur lansohet Enterprise 8.3, por vetë aplikacioni ende nuk është shfaqur në ekran. Kjo ngjarje ka një parametër si p.sh Refuzimi.

Nëse ky parametër merr vlerën E vërtetë atëherë aplikimi nuk do të fillojë. Ngjarja Në fillim të sistemit supozon se veprimi tashmë ka përfunduar, dritarja tashmë është krijuar, me ç'rast mund, për shembull, të shfaqim ndonjë formë të veçantë. Nuk është më e mundur të refuzosh lëshimin.

Në mënyrë të ngjashme, përpara se të mbyllni sistemin, aplikacioni është ende i hapur dhe ju mund të refuzoni ta mbyllni atë. Kur sistemi u mbyll, dritarja e aplikacionit ishte tashmë e mbyllur. Është e mundur të kryhen vetëm veprime shtesë, për shembull, për të fshirë disa skedarë ose për të dërguar një e-mail.

Në modul Aplikim i menaxhuar Direktivat për përpilimin e procedurave dhe funksioneve nuk janë të specifikuara, pasi moduli është kompiluar tërësisht nga ana e Klientit. Kjo do të thotë se në procedurat dhe funksionet e modulit, ne nuk do të mund t'u referohemi drejtpërdrejt, për shembull, librave të referencës.

Nëse nga moduli Aplikim i menaxhuar ju duhet të bëni një thirrje Server, atëherë për këtë do t'ju duhet të krijoni speciale me flamur të shfaqur .

Në modul Aplikim i rregullt nuk ka kufizime të tilla, pasi ky modul do të përpilohet kur të ngarkohet klienti Fat. Pothuajse të gjitha llojet e të dhënave janë të disponueshme në Fat Client.

Procedurat, funksionet dhe variablat e modulit të aplikacionit mund të përshkruhen si eksport.

Meqenëse moduli është kompiluar tërësisht në Klient, kjo do të thotë që në procedurat e klientit mund t'i referohemi kësaj metode dhe kësaj vetie.

Për shembull, nga një modul formulari i një objekti, mund të thërrisni një procedurë ose funksion të një moduli aplikimi. Megjithatë, rekomandohet përdorimi i Common Modules për të përshkruar algoritmet e zakonshme. Qëllimi kryesor i një moduli aplikimi është të trajtojë pikën e fillimit dhe pikën e fundit.

Në analogji me modulin e aplikacionit, ky modul është krijuar për të trajtuar ngjarjen e hapjes së programit dhe ngjarjen e mbylljes.

Ndryshe nga moduli i aplikacionit, i cili inicohet në momentin e nisjes interaktive të aplikacionit, moduli i lidhjes së jashtme funksionon në modalitetin e lidhjes, d.m.th. kur krijohet një objekt 1C: Enterprise 8 dhe bëhet një lidhje me një bazë specifike.

Ky modul ka ngjarje: Në fillim të sistemit dhe Kur kompletoni sistemin e punës.

Një modul i lidhjes së jashtme mund të hapet duke përdorur ose menynë e kontekstit në nivelin e objektit të konfigurimit rrënjë, ose paletën e vetive për nyjen rrënjë.

Vetë procesi i lidhjes së jashtme është një proces i punës programatike me një infobazë, dhe jo një proces ndërveprues. Prandaj, në këtë moment nuk mund të përdorni format e dialogut, të shfaqni mesazhe paralajmëruese, pasi nuk ka ndërfaqe të përdoruesit.

Në modulin e lidhjes së jashtme është e mundur të përshkruhen variablat e eksportit dhe metodat e eksportit që do të jenë të disponueshme në anën ku bëhet thirrja e jashtme e 1C: Ndërmarrja 8.3.

Meqenëse nuk ka ndërfaqe të përdoruesit në lidhjen e jashtme, moduli i lidhjes së jashtme është kompiluar tërësisht në Server.

Moduli i sesionit

Ky modul nevojitet për të inicializuar parametrat e sesionit. Parametrat e sesionit janë variabla të shpejtë globalë, vlerat e të cilave janë të disponueshme kudo në konfigurim.

Ju mund ta hapni Modulin e Sesionit ose përmes menysë së kontekstit ose përmes paletës së vetive të nyjës rrënjë.

Moduli i Sesionit ofron një ngjarje SettingSessionParameters.

Kur fillon aplikimi, kjo procedurë quhet e para. Parametrat e sesionit kërkohen për çdo funksionim të aplikacionit: si gjatë nisjes interaktive ashtu edhe kur niset në modalitetin e lidhjes së jashtme.

Moduli i Sesionit përshkruan hapa të ndryshëm për të inicializuar parametrat e sesionit bazuar në kushte të ndryshme.

Ky modul, si rregull, përshkruan disa procedura që thirren nga një procedurë SettingSessionParameters... Prandaj, të gjitha këto procedura janë të ndara në një modul të veçantë.

Moduli i sesionit funksionon gjithmonë në modalitetin e privilegjuar. Kjo do të thotë që nuk do të ketë kontrolle të lejeve kur hyni në bazën e të dhënave. Moduli i sesionit kompilohet në Server, d.m.th. është e mundur të aksesoni çdo metodë nga ana e serverit (përfshirë vlerat e leximit nga baza e të dhënave).

Në Modulin e Sesionit është e mundur të përcaktohen vetëm procedurat dhe funksionet, d.m.th. nuk ka asnjë seksion të deklarimit të ndryshoreve dhe asnjë seksion të programit kryesor. Metodat e eksportit nuk mund të përshkruhen në Modulin e Sesionit.

Nëse, gjatë fillimit të sistemit, është e nevojshme të kryhen disa veprime në Server, për shembull, për të krijuar një element të ndonjë drejtorie, atëherë, si opsion, është e mundur të përdoret Moduli i Sesionit, pasi ai kompilohet në Server dhe ekzekutohet gjithmonë në mënyrë të besueshme në fillimin e sistemit. Sidoqoftë, pikat e mëposhtme duhet të merren parasysh:

  • procedurë SettingSessionParameters ekzekutohet jo vetëm në fillimin e sistemit, por edhe kur aksesoni parametrat e sesionit të painitializuar. ato. mbajtësi i SessionParameterSetting mund të thirret në mënyrë të përsëritur gjatë funksionimit të aplikacionit;
  • nëse numri i elementeve në grupin e parametrave të sesionit është i barabartë me zero (për grupin e parametrave të kërkuar, lloji i të dhënave është i Padefinuar), atëherë ky është momenti kur lansohet aplikacioni;
  • meqenëse Moduli i Sesionit funksionon në një mënyrë të privilegjuar dhe nuk do të ketë kontroll të të drejtave të aksesit, duhet të jeni shumë të kujdesshëm kur punoni me objektet e bazës së të dhënave, pasi përdoruesi mund të ketë akses në të dhënat që nuk duhet t'i ofrohen;
  • kur të fillojë sistemi, nuk dihet ende me siguri nëse aplikacioni do të hapet. Në këtë rast, veprimet e panevojshme mund të kryhen në mbajtësin e ngjarjeve SessionParametersSetting.

Këto module janë një përshkrim i disa algoritmeve të përgjithshme, d.m.th. procedurat dhe funksionet që mund të thirren nga vende të ndryshme.

Metodat e lidhura logjikisht mund të grupohen në module të ndryshme të përbashkëta. Këto module krijohen brenda degës General.

Ju mund të shtoni çdo numër modulesh të zakonshme. Që metodat e modulit të përbashkët të jenë të disponueshme diku tjetër në konfigurim, ato duhet të përcaktohen me fjalën kyçe Export. Procedurat e klientit të moduleve të zakonshme do të jenë të disponueshme në Klient, dhe procedurat e serverit - në Server.

Në modulet e zakonshme, disponohet vetëm seksioni që përshkruan procedurat dhe funksionet. ato. në modulin e Përgjithshëm, nuk mund të përshkruani variablat dhe nuk mund të përshkruani një seksion të programit kryesor.

Nëse keni nevojë për një ndryshore globale, mund të përdorni ose parametrat e sesionit ose variablat e eksportit të modulit të aplikacionit.

Për Modulet e Përbashkëta, mund të vendosni disa parametra që do të ndikojnë në sjelljen e këtij moduli. Nëse veçoria Globale është caktuar për modulin e Përgjithshëm, atëherë metodat e eksportit të deklaruara në këtë modul do të jenë të disponueshme drejtpërdrejt nga jashtë, pa asnjë udhëzim shtesë.

ato. të Moduli i përbashkët do të marrin pjesë në formimin e kontekstit të konfigurimit global.

Pronës globale për modulet e zakonshme mund të jetë e dobishme. Megjithatë, ju nuk duhet ta përdorni atë në mënyrë universale për të gjitha modulet e zakonshme.

ato të cilat shënohen me shenjën globale, do të përpilohet në fillimin e sistemit. Sa më shumë module të tilla të ketë, aq më ngadalë do të fillojë programi.

Nëse flamuri globale për Moduli i përbashkët nuk është specifikuar, atëherë përpilimi i këtij moduli do të kryhet në momentin e thirrjes së parë në të (d.m.th., pas fillimit të sistemit).

Përveç kësaj, përdorimi i moduleve të përbashkëta globale ndikon në kuptimin e kodit. Metodat e një moduli të përbashkët jo-global thirren përmes emrit Moduli i përbashkët dhe emri i metodës, për shembull:
Moduli i llogaritjes së kostos.Shpërndarja e kostove indirekte ();

Në këtë rast, emrat e moduleve të përbashkëta duhet të pasqyrojnë përmbajtjen e procedurave të përshkruara në to. Dhënia e emrit të Modulit të Përbashkët kur thirrni një procedurë ju ndihmon ta kuptoni më mirë kodin.

Për Moduli i përbashkët v Paleta e vetive mund të vendosë pronë I privilegjuar.

Të drejtat e aksesit nuk kontrollohen në një modul të privilegjuar. Kjo është e nevojshme nëse Moduli i përbashkët kërkohet kryerja e përpunimit të të dhënave në masë, duke marrë të dhëna nga baza e të dhënave.

Kontrolli i aksesit rrit kohën që duhet për të hyrë në bazën e të dhënave dhe algoritmet masive shpesh duhet të punojnë sa më shpejt që të jetë e mundur.

Për shembull, lista e pagave është një operacion intensiv i burimeve. Duhet të bëhet sa më shpejt që të jetë e mundur. Për këtë, algoritmet që llogaritin pagat vendosen në të privilegjuar .

Për më tepër, të gjitha procedurat që sigurojnë plotësimin e dokumenteve të listës së pagave janë jashtë këtyre Modulet e zakonshme... Pikërisht në këto procedura kryhet kontrolli i aksesit.

Kështu, ju mund të arrini një rritje të konsiderueshme të performancës. Kjo është veçanërisht e vërtetë për rastin e aplikimit të mekanizmit të kontrollit të qasjes linjë pas rreshti në regjistrimet e tabelave.

Nëse Moduli i Përbashkët është i privilegjuar, atëherë procedurat e këtij moduli mund të kompilohen vetëm në Server.

Ka situata kur një objekt duhet të jetë i paarritshëm për përdoruesin, për shembull, një direktori të caktuar. Por gjatë kryerjes së një dokumenti të vetëm, një apel në këtë drejtori është i nevojshëm.

ato. ekziston nevoja për zgjerimin e përkohshëm të të drejtave të përdoruesit, dhe më pas kthimin e tyre në gjendjen e tyre origjinale. Ky efekt mund të merret duke përdorur të privilegjuar Modulet e zakonshme.

Për këtë në një të privilegjuar Moduli i përbashkët duhet të hartohet një procedurë që akseson të dhënat e kërkuara.

Kjo procedurë do të thirret nga dokumenti përkatës. ato. Përdoruesit në fakt i jepen të drejta të zgjeruara në kohën kur thirret kjo procedurë.

Për Modulet e zakonshmeështë e mundur të specifikohet vendi i përpilimit. Flamujt përdoren për të vendosur nëse Moduli i Përbashkët do të jetë i disponueshëm në Klient (aplikacion i menaxhuar), në Server, në modalitetin e Lidhjes së Jashtme.

Përveç kësaj, nëse kaloni modalitetin e redaktimit të konfigurimit në aplikacionin e menaxhuar dhe një aplikacion të rregullt, atëherë do të jetë i mundur një kontekst tjetër përpilimi - Klienti (një aplikacion i rregullt).

Kështu, ekzistojnë katër opsione për funksionimin e programit. Në varësi të aplikacionit të ekzekutuar, në varësi të punës në Klient ose në Server, disa Module të Përbashkëta do të jenë të disponueshme ose të padisponueshme.

Përveç aftësisë për të specifikuar flamujt e përpilimit, është e mundur të specifikohen direktivat e përpilimit për procedurat dhe funksionet e vendosura në Modulin e Përbashkët.

Nëse një direktivë përpilimi specifikohet për një metodë, atëherë megjithëse Moduli i Përbashkët është i disponueshëm në të gjitha kontekstet e specifikuara, disponueshmëria e një metode të caktuar do të kufizohet nga direktiva e përpilimit.

Në këtë rast, procedura nuk mund të jetë e disponueshme në një kontekst që nuk është i disponueshëm në përgjithësi për të gjithë modulin.

Nëse nuk specifikoni një direktivë përpilimi për një procedurë (funksion), atëherë ajo do të përpilohet në të gjitha kontekstet e përcaktuara për modulin.

ato. në fakt do të bëhen disa kopje të procedurës. Zgjedhja e një shembulli specifik të kompiluar varet nga vendi ku thirret procedura (sipas rregullit të thirrjes më të afërt). Duhet të kihet parasysh se kodi i një procedure të tillë duhet të shkruhet duke marrë parasysh disponueshmërinë e tij në të gjitha kontekstet e përcaktuara për modulin.

Modulet e zakonshme që janë të disponueshme në disa kontekste të ndryshme në të njëjtën kohë kanë për qëllim kryesisht t'i bëjnë procedurat të disponueshme në kontekste të shumta.

Kur krijoni një modul të përgjithshëm, është praktikë e mirë të mos specifikoni direktivat e përpilimit. ato. disponueshmëria e procedurave dhe funksioneve duhet të përcaktohet nga vetitë e vetë modulit.

Me këtë qasje, procedurat e klientit do të vendosen në module të veçanta të përbashkëta, dhe procedurat e serverit do të vendosen në module të veçanta të përbashkëta.

Modulet që kanë të vendosur disa flamuj përpilimi përdoren rrallë në praktikë. Këto janë disa veprime të përgjithshme të disponueshme si në Klient ashtu edhe në Server. Zakonisht, këto janë një lloj llogaritjeje të thjeshtë.

E rëndësishme! Nga Klienti është e mundur të aksesoni metodat e serverit të eksportit të Modulit të Përbashkët, por vetëm nëse ky Modul i Përbashkët është kompiluar vetëm në Server. Në të njëjtën kohë, një kuti e veçantë e kontrollit synon të sigurojë akses nga Klienti. .

Për modulet e përbashkëta jo globale, është e mundur të ruhen vlerat e kthyera nga funksionet në memorie të fshehtë. ato. sistemi mund të kujtojë rezultatin e ekzekutimit të tij pas thirrjes së parë të funksionit. Nëse ky funksion thirret sërish me të njëjtat parametra, sistemi do ta kthejë vlerën nga cache.

Qëllimi i këtij mekanizmi është të përshpejtojë thirrjet e riprovës. Për të konfiguruar këtë sjellje, ju duhet Paleta e vetive modul, vendosni vlerën e duhur për vetinë e ripërdorimit të vlerës së kthimit.

Si parazgjedhje, kjo veti është caktuar në Mos përdor. Vlerat e tjera të mundshme: cache Në momentin e thirrjes ose Gjatë seancës.

Ka kuptim të përdoret kjo pronë vetëm për ato funksione, rezultati i të cilave varet vetëm nga parametrat e hyrjes. Ky mekanizëm është i disponueshëm vetëm për modulet e përbashkëta jo globale.

Nëse zgjidhet vlera e parametrit përkatës Në momentin e thirrjes, cache do të mbetet në fuqi për sa kohë që është duke u ekzekutuar procedura nga e cila është bërë thirrja në metodën e modulit të përbashkët. Nëse zgjidhet vlera e kohës së sesionit On, atëherë supozohet në mënyrë konvencionale se cache do të jetë aktive ndërsa përdoruesi është duke punuar.

Megjithatë, ka kufizime të caktuara kohore. Cache pastrohet automatikisht 20 minuta pasi vlera të ketë hyrë në cache.

Moduli i formularit

Ky modul është krijuar për të përpunuar veprimet e përdoruesit. Për shembull, përshkruani algoritmin e reagimit të programit kur shtypet një buton. Ose, për shembull, në momentin e futjes së një vlere në një fushë, kryeni menjëherë një kontroll korrektësie.

Përveç ngjarjeve që lidhen me kontrollet e formularit (butonat, fushat e hyrjes), ka ngjarje që lidhen drejtpërdrejt me vetë formularin.

Për shembull, mund të trajtoni ngjarjen e hapjes së formularit dhe të kryeni një inicializim fillestar. Ju gjithashtu mund të trajtoni ngjarjen e mbylljes së formularit dhe të kontrolloni nëse përdoruesi ka futur gjithçka saktë.

Ka forma të kontrolluara dhe forma të rregullta. Modulet e të dhënave të formularit ndryshojnë kryesisht në atë që një modul i formës së menaxhuar është i ndarë qartë në kontekst. Çdo procedurë (funksion) duhet të ketë një direktivë përpilimi. Në formë normale, i gjithë kodi përdoret në Klient.

Në një modul të formës së menaxhuar, mund të deklaroni procedura dhe funksione, mund të deklaroni variabla dhe mund të përshkruani një seksion të programit kryesor.

Kodi i programit të programit kryesor do të ekzekutohet në momentin e inicializimit të formularit, d.m.th. kur përdoruesi fillon ta hapë atë. Figura tregon një listë të ngjarjeve standarde për një formë të menaxhuar.

Lista e ngjarjeve të formave të menaxhuara është gjithashtu e dukshme në listën e pronave drejtpërdrejt për vetë formularin. Kjo listë thirret në redaktuesin e formularit të menaxhuar.

Në një formë të menaxhuar, ju mund të trajtoni ngjarjen e shkrimit të një artikulli. Kjo ngjarje është e pranishme vetëm për format e objekteve (libra referencë, dokumente dhe disa të tjera). Nëse formulari nuk është i lidhur me një objekt specifik, atëherë nuk ka asnjë ngjarje regjistrimi.

Për një modul të formës së zakonshme, lista e ngjarjeve standarde është disi më e vogël, pasi në një formë të kontrolluar, shumë ngjarje bëhen në çifte (njëra ekzekutohet në Klient dhe tjetra në Server). Në formën e tij të zakonshme, i gjithë kodi ekzekutohet në Klient.

Moduli i objektit

Këto module janë tipike për librat e referencës, dokumentet, grafikët e llojeve të shlyerjeve, hartat e llogarive dhe shumë objekte të tjera. Moduli i objektit është krijuar për të trajtuar ngjarje standarde. Për shembull, një ngjarje për futjen e një artikulli të katalogut, një ngjarje për shkrimin e një artikulli, fshirje, postim dokumenti, etj.

Në thelb, ngjarja e shkrimit ekziston edhe në modulin e formularit. Por ngjarja e regjistrimit në modulin e formularit ndodh gjatë regjistrimit interaktiv, kur punoni me një formë specifike.

Ngjarja e shkrimit në Njësinë e objektit do të ekzekutohet në çdo shkrim nga çdo formë e objektit të dhënë. Gjithashtu, nëse objekti është shkruar në mënyrë programore, atëherë ngjarja e modulit të objektit do të aktivizohet.

Në rastin e regjistrimit të Njësisë së objektit, mund të futni të gjitha kontrollet për korrektësinë e të dhënave të regjistruara, pasi kjo procedurë do të përpunohet në momentin e absolutisht çdo regjistrimi.

Moduli i këtij objekti mund të thirret përmes menysë së kontekstit, nga Paleta e vetive të objektit dhe nga dritarja e redaktimit të objektit.

Figura më poshtë tregon listën e ngjarjeve të disponueshme të modulit të referencës.

Në modulin e një objekti, mund të vendosni një seksion për përshkrimin e variablave, të përshkruani funksione arbitrare që mund ose nuk mund të lidhen me një ngjarje, si dhe një seksion të programit kryesor.

Në seksionin e programit kryesor, mund të inicializoni, për shembull, variablat lokale të këtij moduli. Ky kod programi do të ekzekutohet kur të hyni në këtë Njësi të objektit.

Duhet të theksohet se të gjitha procedurat e Njësisë së Objekteve janë kompiluar në Server. Prandaj, nuk ka nevojë të specifikohen direktivat e përpilimit për procedurat dhe funksionet e një Moduli Objekt. Disa objekte të konfigurimit nuk kanë module objekti.

Kjo është për shkak të veçorive të vetë objekteve. Objekte të tilla përfshijnë Konstante dhe Regjistrat... Për Konstante nuk ka asnjë modul objekti, por ekziston një modul shumë i ngjashëm i quajtur Nga moduli i menaxherit të vlerës.

V Moduli i menaxherit të vlerës ju mund të merreni me regjistrimin e ngjarjeve Konstante dhe përpunimi i kontrollit të mbushjes.

I gjithë konteksti i modulit ekzekutohet në Server.

Për regjistrat, ekziston një Modul Recordset.

Ky modul ka gjithashtu aftësinë për të trajtuar ngjarjet e shkrimit dhe për të kontrolluar mbushjen.

Te Modulet e Objekteve, Modulet e Menaxherit të Vlerave (për konstantet) dhe Modulet e grupit të Regjistrimeve (për regjistrat), mund të përshkruani metoda që mund të eksportohen dhe këto metoda do të jenë të aksesueshme nga jashtë.

ato. përveç përdorimit të metodave fikse të klasës së objektit, mund të krijoni metoda shtesë për objektin në Modulin e Objekteve. Ky modul duhet të përshkruajë procedurën përkatëse me fjalën kyçe Eksporti.

Atëherë do të jetë e mundur t'i referohemi kësaj procedure nga jashtë. Për më tepër, kjo metodë do të shfaqet në këshillën e veglave të kontekstit. Metodat e reja në këshillën kontekstuale të veglave theksohen me blu (ikona blu p () për procedurat dhe f () për funksionet).

Në mënyrë të ngjashme, ju mund të krijoni një pronë të re duke deklaruar një variabël me fjalën kyçe Eksporti... Kjo pronë mund të aksesohet edhe nga jashtë.

Kështu, është e mundur të zgjerohet funksionaliteti i objekteve (për të ripërcaktuar metoda të reja dhe veti të reja). Megjithatë, vetitë janë dinamike dhe nuk ruhen në bazën e të dhënave.

Nëse keni nevojë të përdorni një pronë për një objekt që do të ruhet në bazën e të dhënave, duhet të krijoni një atribut të objektit.

Moduli i menaxherit

Ky modul ekziston për shumë objekte (drejtori, dokumente, regjistra, etj.). Moduli hapet ose përmes menysë së kontekstit për objektin, ose përmes Paleta e vetive, ose përmes dritares së redaktimit.

Në modulin Menaxher, mund të anashkaloni disa nga ngjarjet standarde. Për shembull, në Processing DataGettingChoice kur një artikull zgjidhet nga kërkimi, mund të bëhen disa filtrim ose kontroll shtesë.

Përveç kësaj, në modulin Menaxher, mund të krijoni metoda shtesë dhe të tregoni që ato eksportohen. Në këtë rast, është e mundur të qaseni në këto metoda nga jashtë.

Për të ekzekutuar këtë thirrje, duhet të merrni llojin e të dhënave Drejtori i Drejtorisë.

Dallimi midis metodave të eksportimit të Modulit të Menaxherit dhe Modulit të Objekteve është se për të thirrur metodën e Modulit të Objektit, së pari duhet të merrni vetë objektin (d.m.th., të merrni disi një lidhje dhe më pas ta shndërroni këtë lidhje në një Objekt).

Pas kësaj, variablat e eksportit dhe metodat e Modulit të Objektit do të jenë të disponueshme. Për modulin e menaxherit, thirrja është më e thjeshtë, për shembull:
Drejtoritë.Contractors.MethodName

Këto janë dy thirrje të ndryshme. Shndërrimi nga referencë në objekt (metoda GetObject) Është një veprim mjaft serioz për sistemin, pasi kur merret një objekt, lexohen absolutisht të gjitha të dhënat e këtij objekti, të cilat mund të jenë mjaft të gjata.

Dallimi i dytë është se ObjectModule quhet në kontekstin e një elementi specifik. Prandaj, mund të supozojmë se është i zbatueshëm për një element të caktuar (në shumicën e rasteve, është kjo logjikë që parashtrohet).

Sa i përket modulit të menaxherit, ai përshkruan disa veprime të përgjithshme për një grup ose për të gjithë elementët e një drejtorie ose një dokumenti. Për shembull, nëse dëshironi të printoni një artikull të katalogut, mund të përdorni Modulin e Objekteve.

Por në modulin e Menaxherit është e mundur të bëhet një mekanizëm më universal që do të printojë, duke përfshirë një grup elementësh.

Për më tepër, qasja në Njësinë e një objekti është ende një veprim më i gjatë. Prandaj, është më e preferueshme që ky problem të zgjidhet në modulin e menaxherit.

Kjo përfundon njohjen tonë me modulet në konfigurimin e sistemit 1C: Enterprise. Nëse përmbledhim të gjitha sa më sipër, atëherë përfundimi është përfundimet e mëposhtme:

  • Një modul softuerësh është një pjesë e konfigurimit që mund të përmbajë vetëm tekst në gjuhën e integruar 1C
  • Modulet e softuerit klasifikohen sipas llojeve që kemi trajtuar në këtë artikull. Çdo pamje përcaktohet nga vendosja e saj dhe konteksti i disponueshëm i programimit.
  • Struktura e modulit përbëhet nga disa seksione, të cilat janë rregulluar në një sekuencë specifike. Struktura e seksioneve përcaktohet nga lloji i modulit.

Gjithashtu vini re se ne kemi hequr qëllimisht një lloj moduli, përkatësisht modulin e komandës. Nuk përfaqëson asgjë të jashtëzakonshme dhe ju ftojmë të njiheni vetë me funksionalitetin e tij.

Deri më tani, ne kemi konsideruar të gjithë kodin tonë të programit në mënyrë fragmentare nga zgjidhja e aplikuar, dhe si rregull, e kemi shkruar atë në një lloj konfigurimi të vogël provë. A e dini se "nuk mund ta pranoni" dhe filloni të redaktoni kodin e një konfigurimi tipik? Jo? Atëherë do t'i shpjegojmë të gjitha në artikullin tjetër!

Modulet e përgjithshme 1C- një objekt i konfigurimit të meta të dhënave 1C 8.3 dhe 8.2, i cili ruan kodin e programit, i cili shpesh quhet në konfigurim. Funksioni / procedura mund të thirret nga kudo në konfigurim (nëse eksportohet).

Si të përdorni një modul të përbashkët

Është praktikë e mirë të vendosësh një procedurë ose funksion në një modul të përbashkët nëse thirret në më shumë se një vend. Së pari, nëse një procedurë rregullohet, ajo duhet të rregullohet vetëm në një vend. Së dyti, kjo arrin një rregull më të madh në kod.

Një shembull tipik i një moduli të përbashkët është përpunimi i një transaksioni në një regjistër, marrja e numrit të diferencave midis ditëve të punës, konvertimi i kursit të monedhës, rillogaritja e sasive / çmimeve / shumave në seksionin tabelor dhe funksione të tjera.

Karakteristikat e zakonshme të modulit

Një nga veçoritë kryesore të moduleve të përbashkëta nga modulet e tjera është se nuk mund të deklaroni variabla të përbashkëta.

Merrni mësime video 267 1C falas:

Le të hedhim një vështrim më të afërt në paletën e vetive të modulit të përbashkët:

  • globale- nëse flamuri është vendosur, funksionet dhe procedurat nga ky modul bëhen të disponueshme në kontekstin global. ato. ato mund të thirren kudo në konfigurim pa emrin e modulit të përbashkët. Megjithatë, shtohet një kusht - emrat e procedurave dhe funksioneve në këtë modul të përbashkët duhet të jenë unikë brenda kontekstit global.
  • Serveri- procedurat dhe funksionet e këtij moduli të përbashkët mund të kryhen në server.
  • Lidhja e jashtme- kodet e programit të këtij moduli të zakonshëm mund të ekzekutohen kur lidhen me një burim të jashtëm (për shembull, COM).
  • Klient (aplikacion i menaxhuar)- Procedurat dhe funksionet e këtij moduli të zakonshëm mund të përdoren në klientin e trashë në modalitetin e aplikacionit të menaxhuar.
  • Klient (aplikim i rregullt)- Kodet e programit të këtij moduli të zakonshëm mund të përdoren në klientin e trashë në modalitetin normal të aplikimit.
  • Thirrja e serverit- një flamur që lejon klientin të përdorë procedurat dhe funksionet nga ky modul i përbashkët.
  • - nëse vendoset në True, kontrolli i të drejtave të aksesit do të çaktivizohet në këtë modul të përbashkët.
  • Ripërdorimi- përcakton cilësimet për vlerat e kthyera, nëse opsioni është i aktivizuar, atëherë pas ekzekutimit të parë sistemi do të kujtojë vlerën për këto parametra hyrëse dhe do të kthejë një vlerë të gatshme. Mund të marrë vlerat e mëposhtme: nuk përdoret- fike, në momentin e thirrjes- për kohëzgjatjen e një procedure të caktuar, për kohëzgjatjen e seancës- derisa përdoruesi të ketë mbyllur seancën (programin).

Nëse po filloni të mësoni programimin 1C, ju rekomandojmë kursin tonë falas (mos harroni

Awk 693 22.12.13 22:44 Tani në temë

() Le të fillojmë me gjënë kryesore. Marrëzia është një përpjekje për të ngjyrosur shprehjet me emocione. Gjë që është mjaft e vështirë të bëhet përmes zhanrit epistolar. Pra, kjo është një shprehje e keqkuptimit tim, dhe jo një përpjekje për të ofenduar. Është bukur të merresh me një person që e kupton këtë. Nëse lëndohesh, më fal.

Analogjia është thjesht e parëndësishme, për nga natyra e OOP. OOP është trashëgimtari i programimit procedural, modular. Është njësoj si të krahasosh babanë dhe djalin, ndërsa babain e jep si shembull të djalit.

Është e vështirë të argumentosh me deklaratën. Por në kuptimin e kësaj vërejtjeje, ajo lidhet dobët me vendin e komentuar në artikull.

Kjo lidhet me shembullin e dhënë në artikull. Atje metoda ka një direktivë përpilimi, dhe për disa arsye fjala kyçe "eksport" është lënë jashtë.

Nga fakti që atij nuk i është dashur kurrë të bëjë diçka, nuk rezulton ende se ajo nuk është relevante, ose që të tjerët nuk e bëjnë.

Po. Nuk më duhej të ndryshoja modulet e zakonshme për hir të përpunimit të jashtëm. Më duhej të bëja versione të ndryshme për konfigurime të ndryshme.

Në një aplikacion tipik, ato shpesh përdoren për detyra thjesht të përparme:

Kjo është vetëm ajo, ajo në të zakonshmen. Unë nuk e parashikoj vdekjen e tij (një zgjidhje mjaft e mirë dhe e provuar), por tendencat janë të tilla që 1C po ecën gjithnjë e më tej drejt llogaritjes së shpërndarë, me një shpërndarje të qartë të kodit në vendet e veprimit të tij. Rrallë rrotullohet këtu (nëse rrotullohet fare): "Gjithçka është në klientin, dhe më pas do ta kuptojmë" ose "Le ta tërheqim serverin disa herë - ne kemi një lidhje gigabit."

Unë mendoj se do të ishte e dobishme të zgjerohej abstraksioni i natyrshëm në konceptin e "CommonModule" dhe të futej në konfigurim
entitete të një lloji të ri, të themi, "ExecutableModule", të ngjashme me objektet e modulit nga MS VBA.
"SharedModules" do të ishte një rast i veçantë i objekteve "ExecutableModule", të vendosura afërsisht
në të njëjtin raport me objektet "Forma e Përgjithshme" dhe thjesht "Forma" ....

Për të filluar, do të ishte mirë të zbatohen hapësirat e emrave dhe meta të dhënat e moduleve në 1C, dhe jo siç është tani (citim nga ndihmësi i sintaksës); "E papërcaktuar - sepse nuk supozohet të funksionojë nga gjuha e integruar"

Le të themi se numri i shteteve të përdorura në formë është i madh, dhe le të themi se
kur përdorni formularin, probabiliteti për të realizuar një gjendje specifike është i vogël;

Në programimin klasik të uebit, kjo zgjidhet nga aftësia për të futur forma në forma dhe thirrje asinkrone (AJAX), për fat të keq kjo injorohet nga 1C. Pra, mbeten tre opsione:

1. Përdorni forma të ndryshme
2. Transferoni të gjitha të dhënat e nevojshme te klienti
3. Për të shtyrë serverin.

Në përgjithësi, thirrjet jashtë kontekstit drejt serverit nuk konsiderohen si një gjë e keqe për t'u shmangur.
- Në parim, madje ekziston një mendim (me të cilin nuk jam shumë dakord) se një numër "ekstra".
Thirrjet e kontekstit të serverit janë më pak të këqija nëse optimizimi i tyre "edhe" ngatërron "lexueshmërinë" e kodit.


Thirrjet jashtë kontekstit të serverit janë krijuar për të reduktuar trafikun kur transferoni të dhëna nga klienti në server. Vetëm kështu ndryshojnë nga ato kontekstuale.

Shembulli 1: ju duhet të merrni një kundërpalë në bazë të dokumentit.

serveri i klientit
1.formë përzgjedhjeje -> marrja e një formulari
2. Kur ndërroni<--
3. Merr kundërpalë -> Baza e dokumentit ["Kundërpalë"]

Në hapin e tretë, nuk ka kuptim të tërhiqni të gjithë formularin në server, me të gjitha detajet. Prandaj, këshillohet të përdorni OnServerWithoutContext.

Në rastin tuaj, thjesht mund të përdorni:

Për metodat e modulit të objektit:

& OnServerWithoutContext
Funksioni What_What_with_what_to (ObjectProcessing, ProcessingTypeString, Parametrat)
ReturnFormDataValue (ProcessingObject, Type (ProcessingTypeString)) .Ne kemi nevojë përFunksionin (Parametrat);
Funksioni i Fundit

Për metodat e modulit të menaxherit:

& OnServerWithoutContext
Funksioni What_What_What_That (Emri, Parametrat)
Përpunimi i Kthimit [Emri] .Funksioni Necessary (Parametrat);
Funksioni i Fundit

Artikujt kryesorë të lidhur