Çfarë është një mbajtës ngjarjesh në 1s. Të gjitha abonimet e ngjarjeve. Abonimet në ngjarjen "Kur postoni" një dokument

Ky artikull është një njoftim i funksionalitetit të ri.
Nuk rekomandohet përdorimi i përmbajtjes së këtij artikulli për të mësuar funksione të reja.
Një përshkrim i plotë i funksionalitetit të ri do të jepet në dokumentacionin për versionin përkatës.
Një listë e plotë e ndryshimeve në versionin e ri është dhënë në skedarin v8Update.htm.

Zbatuar në versionin EDT 1.7.0.567.

Në 1C: Enterprise Development Tools (EDT) ne kemi implementuar një prototip të një mjeti të ri. Emri i punës i këtij mjeti është redaktori Të gjitha abonimet e ngjarjeve. Do t'ju ndihmojë të analizoni me lehtësi abonimet për të gjitha ngjarjet që ekzistojnë në zgjidhjen e aplikacionit.

Abonimet e ngjarjeve

Platforma 1C:Enterprise ju lejon të krijoni abonime për ngjarjet e objekteve të konfigurimit në zgjidhjen e aplikacionit. Një abonim është një procedurë që do të ekzekutohet pasi të ketë ekzekutuar mbajtësi origjinal i ngjarjes. Komoditeti i abonimeve qëndron në faktin se një procedurë mund të "abonohet" në një ngjarje që i përket objekteve të ndryshme të konfigurimit. Kështu, nëse ekziston një algoritëm që duhet të ekzekutohet si gjatë regjistrimit të një organizate ashtu edhe gjatë regjistrimit të një departamenti, ai mund të vendoset në pajtim, dhe atëherë nuk do t'ju duhet as të ndryshoni mbajtësit për këtë ngjarje në vetë objektet.

Rezulton se abonimi është një mekanizëm i përshtatshëm dhe universal. Por në zgjidhjet e mëdha të aplikacioneve, numri i abonimeve të ngjarjeve mund të arrijë disa qindra. Bëhet e papërshtatshme t'i analizosh ato në pemën e konfigurimit, në një listë lineare. Për shembull, në një zgjidhje aplikimi 1C: Menaxhimi i ndërmarrjes (ERP) më shumë se 340 abonime në ngjarje.

EDT e bën disi më të lehtë punën me abonimet duke i shfaqur ato në panel Skema, kur hapet një modul i ndonjë objekti aplikacioni.


Kjo shfaqje e abonimeve është e përshtatshme për një sërë detyrash që lidhen me redaktimin e një moduli. Por ende nuk është i përshtatshëm kur duhet të gjeni dhe analizoni shpejt të gjitha algoritmet që ekzekutohen në abonime kur ndodh një ngjarje e veçantë.

Të gjitha abonimet e ngjarjeve

Për të hequr qafe shqetësimet e listuara më sipër, ne kemi zbatuar një mënyrë universale për të përfaqësuar abonimet, ngjarjet, objektet e konfigurimit dhe procedurat në të cilat zbatohen algoritmet e abonimit.


Si rezultat, mund të telefononi redaktorin Të gjitha abonimet e ngjarjeve për të gjithë konfigurimin, ose vetëm për një objekt - ndryshimi do të jetë vetëm në përbërjen e të dhënave, të filtruara në një farë mënyre.


Në anën e majtë, redaktori tregon të gjitha ngjarjet dhe në çdo ngjarje të gjitha abonimet e tij. Kur zgjidhni një abonim specifik, një listë e objekteve të konfigurimit në ngjarjet e të cilave është "pajtuar" abonimi shfaqet lart djathtas. Dhe moduli dhe procedura në të cilën ndodhet algoritmi i abonimit tregohen në fund djathtas. Duke klikuar dy herë mbi një procedurë, mund ta hapni atë në redaktuesin e integruar të gjuhës.

Ndërsa jeni në redaktues, mund të analizoni jo vetëm abonimet individuale, por edhe të gjitha abonimet që lidhen me një ngjarje. Nëse zgjidhni një ngjarje, redaktori do të shfaqë të gjitha modulet dhe të gjitha procedurat e nënshkruara për të përpunuar këtë ngjarje.


Nëse telefononi redaktuesin në një objekt konfigurimi, do të shfaqen vetëm ngjarjet dhe abonimet e atij objekti dhe vetë objekti do të theksohet gjithmonë me të kuqe në listën burimore. Në këtë mënyrë mund të kontrolloni shpejt, për shembull, nëse abonimi që zgjidhni funksionon për të gjitha objektet e konfigurimit për të cilat nevojitet.


Thirrja e redaktuesit duke përdorur një komandë konteksti (në një objekt konfigurimi) ju lejon të zvogëloni menjëherë numrin e abonimeve të shfaqura në redaktues. Për shembull, mund të shikoni abonimet vetëm për ato ngjarje që përpunohen në modulin e objektit ose në modulin e menaxherit.


Për më tepër, redaktori përmban një filtër universal me të cilin mund të personalizoni përbërjen e objekteve, ngjarjeve dhe procedurave në çfarëdo mënyre.


Vini re se me këtë filtër mund të zgjidhni jo vetëm objekte specifike që janë burim ngjarjesh, por edhe grupe llojesh si p.sh. Objekti i Drejtorisë, DokumentObjekt dhe të tjerët. Komplete të tilla llojesh përfshijnë të gjitha drejtoritë ose të gjitha dokumentet që janë në konfigurim.

Duke kërkuar sipas vargut, mund të gjeni shpejt vetëm ato abonime që lidhen me mekanizmin që ju intereson.


Në çdo kohë, mund të filtrosh shpejt përmbajtjen sipas ngjarjes ose burimit të shfaqur në redaktues. Për shembull, keni gjetur një abonim Kontrolloni Formulën e Llogaritjes. Burimi i tij është plani i llojeve të llogaritjes Mban.


Duke përdorur komandën e kontekstit në planin e llojeve të llogaritjes, mund të shihni shpejt vetëm ato abonime që lidhen me ngjarjet e tij.


Shtimi automatik i pikave të ndërprerjes

Një mënyrë e zakonshme për të analizuar abonimet e ngjarjeve është të shikoni në mënyrë sekuenciale të gjitha procedurat e thirrura në korrigjues në rendin në të cilin janë ekzekutuar. Për ta bërë këtë, redaktori ofron një mjet të përshtatshëm për shtimin automatik të pikave të ndërprerjes tek mbajtësit.

Para së gjithash, mund ta telefononi këtë mjet direkt në redaktues.


Mund të gjeni dhe zgjidhni objektin që ju intereson, të zgjidhni një nga ngjarjet e tij dhe të shënoni, për shembull, të gjithë mbajtësit. Pas klikimit Ne rregull pikat e ndërprerjes do të shtohen në rreshtin e parë të ekzekutueshëm të secilit mbajtës të kontrolluar dhe të gjitha këto pika do të shfaqen në panel Pikat e ndërprerjes në perspektivë Korrigjimi.


Një mënyrë tjetër për të shtuar pikat e ndërprerjes është e përshtatshme kur e keni gjetur tashmë objektin ose ngjarjen që ju intereson në redaktues. Në këtë rast, mund të telefononi komandën që ju përshtatet nga menyja e kontekstit.


Dhe së fundi, mënyra e tretë që mund të përdorni është të shtoni automatikisht pikat e ndërprerjes gjatë korrigjimit. Në këtë rast nuk keni nevojë të hapni redaktorin sepse komanda add është pikërisht në panel Pikat e ndërprerjes.


Pra, redaktori Të gjitha abonimet e ngjarjeveështë një mjet universal që ju lejon të përdorni një sërë skenarësh analizash. Do të jetë e dobishme jo vetëm për zhvilluesit që e njohin mirë zgjidhjen e aplikacionit, por edhe për specialistët e zbatimit ose specialistët e IT-së që duhet të kuptojnë funksionalitetin e panjohur.

Kur përdoruesi kryen ndonjë veprim, platforma 1C gjeneron ngjarje të programit. Si rregull, nuk gjenerohet një ngjarje, por një zinxhir i tërë ngjarjesh. Detyra e programuesit është të vendosë saktë kodin e programit në ngjarje në mënyrë që të arrijë sjelljen e pritur nga programi. Sidoqoftë, kjo nuk do të jetë e lehtë për një programues fillestar 1C për të bërë, për arsyet e renditura më poshtë.

Ngjarjet mund të gjenerohen në një formë të kontrolluar: Në ReadingOnServer, OnCreatingOnServer, OnOpening, etj.

Ngjarjet në një formë të kontrolluar krijohen në klient dhe në server: BeforeRecord, BeforeRecordOnServer.

Ngjarjet thirren në module të ndryshme: ElementForm, ObjectModule, ManagerModule.

Disa ngjarje mund të thirren disa herë nëse ka disa elementë të drejtorisë në listë, për shembull: ProcessingGetView.

Një formë e menaxhuar mund të hapet si rezultat i veprimeve të ndryshme të përdoruesit dhe zinxhirët e thirrjeve të ngjarjeve do të ndryshojnë. Çdo nga veprimet e mëposhtme të përdoruesit me direktorinë do të hapë një formë të kontrolluar: krijimi i një elementi të ri, kopjimi i një elementi, ndryshimi i një elementi ekzistues të drejtorisë.

Ngjarjet gjenerohen gjithashtu nga elementët e formës: kur shtoni një rresht në pjesën tabelare, kur redaktoni një rresht në pjesën tabelare, kur aktivizoni një rresht ose fushë, kur zgjidhni një artikull kërkimi në fushën e hyrjes, etj.

Për të kuptuar më mirë logjikën dhe sekuencën e ngjarjeve të shkaktuara, mund të përdorni zhvillimin "Studimi i ngjarjeve" bashkangjitur këtij artikulli. Duke ditur kontekstin e thirrjes së ngjarjes, sekuencën e ngjarjeve dhe veprimet që do të kryejë përdoruesi, do të jetë më e lehtë të kuptosh se në cilin mbajtës të ngjarjes është më mirë të vendosësh kodin e programit.

Udhëzime për përdorimin e programit Event Study

Programi Studimi i Ngjarjeve tregon ngjarjet që gjeneron platforma 1C gjatë veprimeve interaktive të përdoruesit. Parimi i funksionimit është si më poshtë: përdoruesi hap drejtorinë, programi tregon zinxhirin e ngjarjeve. Përdoruesi shënon një artikull drejtorie për fshirje dhe programi shfaq sekuencën e ngjarjeve që ndodhin. Ngjarjet shfaqen me një vonesë të lehtë prej 3 sekondash si parazgjedhje, kjo është e nevojshme për të ndarë një zinxhir ngjarjesh nga një zinxhir tjetër ngjarjesh. Prandaj, duhet të kryeni veprime ndërvepruese "ngadalë".

Të gjitha ngjarjet shfaqen në një dritare të veçantë "Ngjarjet e fundit". Këtu mund të aktivizoni ose çaktivizoni regjistrimin e ngjarjeve. Si parazgjedhje, regjistrimi i ngjarjeve aktivizohet kur hapet për herë të parë. Unë ju këshilloj të vendosni dritaren "Ngjarjet e fundit" në fund të ekranit menjëherë kur filloni programin, për shikim të përshtatshëm të ngjarjeve.

Vetë programi nuk mund të përcaktojë se çfarë veprimi shkaktoi zinxhirin e ngjarjeve; Unë ju këshilloj të shkruani në fushën "Shkaku i veprimit" emrat e veprimeve tuaja të fundit, për shembull, "Formulari i listës së drejtorive është i hapur", "Një element në drejtori lista është shënuar për fshirje, etj. Kjo do ta bëjë më të lehtë analizimin e veprimeve dhe ngjarjeve.

Ngjarjet regjistrohen dhe shfaqen për objektet e vendosura në seksionin "Gjurmimi i ngjarjeve", me kusht që regjistrimi i ngjarjeve të jetë i aktivizuar në formularin "Ngjarjet e fundit".

Të gjitha ngjarjet e regjistruara mund të shihen përmes "Raportit të ngjarjeve", i cili ndodhet në seksionin "Shërbimi".

Për të pastruar shpejt të gjitha veprimet dhe ngjarjet e regjistruara, në seksionin "Shërbimi", zgjidhni "Pastro ngjarjet dhe veprimet".

Abonimi në një ngjarje 1C 8.3 dhe 8.2 është një objekt konfigurimi që ju lejon të caktoni një mbajtës për një ngjarje objekti specifik. Një mbajtës i tillë mund t'u caktohet disa objekteve të konfigurimit në të njëjtën kohë, për shembull, në të gjitha dokumentet në të njëjtën kohë.

Le t'i hedhim një vështrim më të afërt këtij objekti të meta të dhënave.

  • Kur instaloni një numër të ri
  • Kur kopjoni
  • Përpunim Mbushje
  • Para Regjistrimit
  • Kur Regjistrohet
  • Para Fshirjes
  • Përpunimi Kryerja
  • Përpunimi HeqjaKryen
  • PërpunimKontrollPlotësim

Mund të abonoheni në një ngjarje vetëm në objekt, jo në formë.

Rendi i thirrjes së mbajtësve në 1C 8

Trajtuesit e abonimit të ngjarjeve thirren pas mbajtësit të objektit, d.m.th. nëse abonimi i ngjarjes është vendosur në ngjarjen "ProcessingProcessing", atëherë së pari do të ekzekutohet mbajtësi nga moduli i objektit dhe më pas mbajtësi nga abonimi.

Merrni 267 mësime video në 1C falas:

Nëse ka disa abonime në një ngjarje, atëherë, duke gjykuar nga përvoja, abonimi që është më i lartë në pemën e konfigurimit quhet i pari. Edhe pse vetë kompania 1C raporton se ky prioritet nuk është përcaktuar.

Përdorimi i abonimeve të ngjarjeve në 1C

Përdorimi i abonimeve është shumë i përshtatshëm, për shembull, për të regjistruar ndryshime për . Ose ndonjë veprim tjetër që është i njëjtë për objekte të ndryshme konfigurimi.

Unë shpesh përdor abonimet e ngjarjeve për të mos ndryshuar standardin. Kjo është shumë e përshtatshme, për shembull, në një abonim mund të rregullojmë lëvizjet e dokumenteve ose të shtojmë lëvizje në regjistra të rinj pa ndryshuar konfigurimin.

Vendosja e një abonimi në ngjarje

Vendosja e një abonimi është shumë e thjeshtë:

  • Burimi— llojet e të dhënave për të cilat është instaluar mbajtësi;
  • Ngjarje— ngjarja për të cilën është instaluar mbajtësi;
  • Trajtues— tregon procedurën nga e cila do të vendoset mbajtësi i ngjarjeve.

Kur zhvilloni ose modifikoni zgjidhje aplikimi në platformën 1C:Enterprise 8.x, është shumë shpesh e nevojshme të kryhen disa veprime standarde për një grup objektesh konfigurimi (për shembull, drejtoritë). Për të mos përshkruar veprimet e kryera në modulin e secilit objekt, zhvilluesi mund të përdorë mekanizmin standard të platformës - abonimin e ngjarjeve.

Abonimet e ngjarjeve ju lejojnë të përgjoni ngjarjet e objekteve të konfigurimit, të tilla si drejtoritë, dokumentet, planet e llojeve karakteristike dhe të tjera. Sot në artikull do të shqyrtojmë çështjen e sekuencës së ekzekutimit të mbajtësve të abonimit të ngjarjeve, dhe gjithashtu do të analizojmë sjelljen e platformës me disa abonime të ngjarjeve për një veprim (për shembull, gjatë regjistrimit).

Sjellja standarde

Lëreni shembullin tonë të përdorë një direktori të caktuar "SimpleDirectory". Ai ka abonime të ngjarjeve të krijuara për çdo ngjarje në të cilën zhvilluesi mund të ndërhyjë. Procedurat e mbajtësit të ngjarjeve janë të vendosura në modulin e përbashkët të serverit përkatës.

Rendi i thirrjes së mbajtësve të abonimit është i njëjtë si në sjelljen standarde të platformës kur punoni me këtë objekt. Meqenëse në shembullin tonë po shqyrtojmë të punojmë me një direktori, unë propozoj të shqyrtojmë skemën për thirrjen e mbajtësve në varësi të veprimeve me një objekt (shih pamjen tjetër të ekranit).

Siç mund ta shohim, në fazën fillestare thirren mbajtësit e ngjarjeve "ProcessingFill" (për të krijuar një element të ri) ose "Për kopjimin" (për të krijuar një element bazuar në një ekzistues). Në të dyja rastet, pas thirrjes së mbajtësve të emërtuar, ekzekutohet procedura "OnInstallNewCode", ku zhvilluesi mund të vendosë një prefiks në kod ose të anashkalojë sjelljen e platformës kur cakton një kod të ri.

Kur shkruani një element drejtorie, qoftë një element i ri ose një ekzistues, quhen tre mbajtës: "ProcessingFillCheck" (në këtë fazë mbajtësi mund të kontrollojë saktësinë e të dhënave të futura dhe, nëse ka gabime, të refuzojë të shkruajë). "Para Write" (derisa objekti të shkruhet në bazën e të dhënave, mund të rregulloni vlerat e detajeve dhe të kontrolloni çdo kusht shtesë) dhe më pas "OnRecord" (është bërë një regjistrim në bazën e të dhënave, por transaksioni nuk është mbyllur. , zhvilluesi mund të kontrollojë të dhënat pas regjistrimit dhe, nëse është e nevojshme, të anulojë transaksionin).

Ngjarja "BeforeDelete" ndodh vetëm nëse një objekt fshihet drejtpërdrejt nga baza e informacionit. Në mënyrë tipike, asnjë përdorues nuk ka leje të fshijë drejtpërdrejt pa kontrolluar integritetin e referencës. Fshirja duhet të kryhet gjithmonë duke përdorur përpunimin "Fshirja e objekteve të shënuara". Në rastin e fundit thirret edhe mbajtësi "Para Delete".

Kështu, nëse krijojmë një artikull direktoriumi dhe e shkruajmë atë në bazën e informacionit, platforma do të thërrasë mbajtësit e mëposhtëm të ngjarjeve në rendin e specifikuar:

Sa i përket objekteve të tjera të konfigurimit, funksionimi i mekanizmit të pajtimit të ngjarjeve do të jetë i ngjashëm, vetëm ngjarjet dhe rendi i tyre mund të ndryshojnë. Shikoni ndihmësin e sintaksës për më shumë detaje.

Ana pa dokumente

Tani le të shohim një situatë interesante. Le të themi se për direktorinë tonë "SimpleDirectory" janë përcaktuar tre abonime në ngjarjen "BeforeRecord":

Në çfarë rendi mendoni se do të thirren mbajtësit e këtyre abonimeve? Le të mos hamendësojmë. Unë do të jap rezultatin e regjistrimit të një elementi ku mbajtësi për çdo abonim shfaq një mesazh me emrin e abonimit të thirrur (shih pamjen e mëposhtme të ekranit).

Nga pamja e ekranit nuk është e vështirë të merret me mend se rendi i thirrjes së procedurave të mbajtësit të abonimit të ngjarjeve korrespondon me rendin e objekteve të meta të dhënave në degën "Abonimet e ngjarjeve". Kjo veçori nuk përshkruhet në asnjë literaturë referuese në platformën 1C:Enterprise, kështu që duhet të keni kujdes kur e përdorni në konfigurim, pasi veçoritë e padokumentuara mund të ndryshojnë nga versioni në version i 1C:Enterprise dhe në të njëjtën kohë të mungojnë nga lista e ndryshimeve të programit.

Tërheqje

Ju mund të pyesni: "Pse të krijoni abonime të shumta për një ngjarje të objektit të konfigurimit?" Përgjigja është e thjeshtë. Nëse disa njerëz janë të përfshirë në zhvillim, atëherë ndërhyrja në mekanizmat e krijuar nga njëri-tjetri mund të çojë në funksionimin e gabuar të programit. Në raste të tilla, gjëja më logjike për të bërë do të ishte krijimi i abonimeve të veçanta të ngjarjeve për secilin zhvillues në përputhje me detyrën në fjalë. Sigurisht, është e mundur që në të ardhmen ato të kombinohen në një procedurë të vetme mbajtëse.

Kur një përdorues klikon në një buton, një formë hapet ose mbyllet, shkruhet një dokument, ndodh një ngjarje.

Para se të regjistrojmë çdo dokument, duam të kontrollojmë nëse ky detaj është plotësuar.

Si ta bëjmë atë?

Abonimet në ngjarjet 1C

Abonimi në ngjarjet 1C është , ndodhet në degën e konfigurimit të ngjarjeve të Përgjithshme/Abonimet në 1C.

Abonimi në një ngjarje 1C ju lejon të caktoni një mbajtës kur ndodh një ngjarje për disa objekte (drejtori, dokumente).

Le të shtojmë një abonim të ri në ngjarjen 1C dhe të vendosim emrin.

Në pronën e abonimit të ngjarjeve 1C Burimi - duhet të zgjidhni një ose më shumë dokumente, drejtori - objekte në të cilat vendosim mbajtësin.

Në pronën e abonimit të Ngjarjeve 1C, duhet të zgjidhni një nga opsionet për ngjarjet standarde që mund të ndodhin me dokumentet dhe drejtoritë e zgjedhura.

Ne thjeshtojmë duke thënë "dokumente dhe libra referencë" - në fakt, ju mund të përdorni shumë objekte 1C. Fatkeqësisht, nuk mund të abonoheni në ngjarjet e formës 1C - për shembull, kur hapni një formular, për të cilën shumë programues pendohen.

Grupi i ngjarjeve të mundshme varet nga objekti. Kini kujdes, sepse nëse zgjidhni disa (shumë) objekte, atëherë lista e ngjarjeve do të përmbajë vetëm ato ngjarje që mund të ketë secili prej objekteve të zgjedhur (d.m.th., ngjarje të përbashkëta për të gjitha objektet e zgjedhura).

Pas kësaj, gjithçka që mbetet është krijimi i një funksioni mbajtës. Për ta bërë këtë, konfigurimi duhet të ketë të kontrolluar kutinë e Serverit në vetitë. Kur klikoni butonin "xhami zmadhues", do të krijohet një funksion - një mbajtës.

Të gjitha! Sapo jemi abonuar në ngjarjen 1C BeforeRecording për të gjitha dokumentet. Tani, kur regjistrojmë ndonjë dokument, funksioni ynë do të ekzekutohet, i cili përfshin një kontroll.

Në mënyrë që të refuzoni të shkruani një dokument nëse kontrolli është negativ, duhet të vendosni parametrin e funksionit