Abonamente la evenimente în cursuri 1c - proiect - 1c

Evenimente abonamente

Articolul examinează câteva exemple de utilizare a unuia dintre obiectele auxiliare ale platformei "1C: Enterprise 8" - abonamente la evenimente.







Abonamentele la eveniment vă permit să plasați agenți externi în module comune care vor fi executate după ce un anumit procesator de evenimente este executat în modulul obiect sau în modulul manager.

Nu este nevoie să efectuați nicio modificare a modulului de obiecte sau a modulului manager. Astfel, devine posibilă extinderea modulelor fără a le modifica - aceasta este o tehnică foarte utilă atunci când se schimbă soluțiile tipice.

Abonamentele la evenimente sunt descrise în secțiunea Generală a ferestrei de obiecte de configurare (figura 1).

  1. Managerul evenimentului pentru evenimentul Înainte de înregistrare () este executat în modulul Obiect document.
  2. Dacă, în timpul executării manualului, parametrul Failure este setat la True sau o excepție este aruncată, procesarea evenimentelor este terminată.
  3. Dacă procesarea evenimentului nu a fost întreruptă în al doilea pas, atunci executorii externi (abonamente la eveniment) definiți pentru evenimentul din fața înregistrării () sunt executați.
  4. Dacă, în timpul executării unui handler extern, parametrul Failure este setat la True sau o excepție este aruncată, execuția handlerului extern este terminată.

Cu ajutorul abonamentelor la evenimente puteți organiza executarea de diverse verificări. care sunt executate atunci când obiectele sunt scrise în baza de date.

Sarcina 1
Pentru a verifica duplicarea numelui atunci când scrieți elementul din directorul "Contractori" - fără modificarea modulelor din directorul propriu-zis.

client Flag (aplicație normală) este disponibilă în cazul în care parametrii stabiliți de editare de configurare a gestiona aplicații și aplicarea regulată.

În secțiunea Generală a ferestrei de obiecte de configurare, creați un nou abonament la eveniment. În paleta Proprietăți, introduceți numele verificării abonamentului CheckNameName. În caseta Selecție sursă, selectați tipul de date "Obiect director". Contractori. În câmpul Selecție eveniment, selectați Evenimentul înainte de înregistrare (). După procesarea acestui eveniment, va fi declanșată procedura de procesare a abonamentului la eveniment (Figura 2).

Abonamente la evenimente în cursuri 1c - proiect - 1c

În procedura pentru NamingReligibilityNotificationBorderInterest (), se face o cerere către directorul contrapărților. Ca parametru de interogare, numele elementului din directorul pe care îl înregistrați este transferat la. Dacă un element cu acest nume există deja în baza de date, parametrul Failure este setat la True (intrarea elementului este anulată) și este afișat un mesaj de diagnostic corespunzător.

Procedura de înregistrare Verificarea numelui directorului înainte de înregistrare ()

În practică, sarcina poate fi de a efectua deplasări pe registrele suplimentare atunci când se efectuează documente în configurații tipice. Crearea de registre suplimentare evită modificarea registrelor existente și, în același timp, oferă posibilitatea prelucrării suplimentare a datelor atunci când se realizează documente standard.







Creați un registru negociabil de acumulare a "ieșirii de numerar" și asigurați formarea mișcărilor în acest registru atunci când efectuați documentul "Comandă de numerar pentru cheltuieli" utilizând mecanismul de abonament la evenimente.

Creați un nou registru negociabil cu numele Cash Outflow. Selectați registratorul "Ordinul fluxului de numerar". Adăugați dimensiuni de registru:

Crearea resurselor de registru:

Creați un nou abonament la eveniment:

Nume - Mișcări la ieșirea din bani;
Sursă - DocumentObject.RCO;
Eveniment - Prelucrare.

În modulul general al aplicației Event Handlers, la eveniment, creați un handler pentru mutare pentru execuția banilor (). În handler, partea tabelară a documentului "Comandă de numerar pentru cheltuieli" este ocolită, iar mișcările se formează în registrul de acumulare al acumulării fluxului de numerar.

Înregistrarea procedurii de mișcare pentru procesarea fluxurilor de numerar ()

În configurațiile tipice, poate fi necesar să se perfecționeze forma de bază a unui obiect, de exemplu un document. Această sarcină poate fi rezolvată cu ajutorul abonamentelor la evenimente. Aceasta creează o copie a formei principale a documentului. Modificările necesare se fac în noul formular. Utilizând mecanismul de abonament la evenimente, puteți deschide un nou formular în locul formularului principal. În acest caz, forma principală, care este susținută, rămâne neschimbată.

Sarcina 3
Asigurați înlocuirea formularului principal al documentului "Comanda în numerar".

Creați o nouă formă a documentului "Comandă de numerar de cheltuială" cu formularul de nume DocumentCustomer. Adăugați modificări arbitrare ale formularului, de exemplu, modificați ordinea comenzilor. Pentru a apela acest formular, trebuie să utilizați abonamentul la Formularul de procesare a evenimentelor () în modulul managerului de documente "Comenzi de flux de numerar".

Creați un nou abonament la eveniment:

Nume - Formularul primar;
Sursă - DocumentManager.RCO;
Evenimente - Formulare de procesare.

În modulul general al Event Handler pentru eveniment, creați formatul principal de formular pentru procesarea formelor (). În handler, numele formularului care trebuie deschis este transmis ca parametru Formular selectat.
Opțiunea Standard Processing este setată la False pentru a dezactiva deschiderea formularului principal.

Înscrierea procedurii din formularul de bază pentru formularea formularelor de învățământ ()

Pentru a căuta abonamente la evenimente definite pentru un anumit obiect de configurare, puteți utiliza mecanismul pentru a căuta referințe de obiecte. Pentru a face acest lucru, selectați un obiect din fereastra de configurare a obiectelor și executați comanda Căutare referințe obiect din meniul contextual. Ca rezultat al executării comenzii, în fereastra mesajului de serviciu va fi afișată o listă de obiecte în care există legături către obiectul dorit.

Astfel, abonamentele pentru evenimente oferă posibilitatea de a adăuga noi funcționalități fără a modifica modulele obiect existente. Dezavantajele abonamentelor la evenimente includ:

Dacă trebuie să modificați un eveniment de tip, mecanismul de abonament la eveniment nu este disponibil. În acest caz, trebuie să faceți modificări ale formularului însuși sau să copiați formularul și să efectuați modificări în obiectul nou.

Mulțumesc! Utile. Dar managerul [Documente] și Handlerul de procesare a evenimentelor - Formulare funcționează numai pentru formularele Gestionate. Într-un client gros, nu am reușit. (Aveți nevoie de o înlocuire pentru unul gestionat) :(
În cazul în care apelați explicit formularul după nume din textul modulului: Deschideți formularul ("Document.RKO. [Form.Document Form]"): ((.
Problema de a sprijini dezvoltarea soluțiilor standard - rămâne deschisă "destul de complicată".

Abonamente la evenimente în cursuri 1c - proiect - 1c

Abonamente la evenimente în cursuri 1c - proiect - 1c

Mulțumesc foarte mult. O descriere detaliată bună. În sarcina # 1, funcționează bine dacă utilizatorul apasă "write", dar dacă apasă simultan "OK", apare un mesaj de eroare:
"...: Eroare la apelarea metodei context (scrie în formular)
Scrieți formularul ();
pentru motivul:
Nu am putut scrie: "Contrapărți"!
... "







Articole similare

Trimiteți-le prietenilor: