Blocarea obiectelor

Când se lucrează cu datele obiectului (directoare, documente, plan de conturi etc.), sistemul "1C: Enterprise" oferă două tipuri de încuietori: pesimiste și optimiste. Acestea vă permit să efectuați o schimbare holistică a obiectelor cu funcționarea simultană a mai multor utilizatori.







blocarea

Când se lucrează cu datele obiectului (directoare, documente, plan de conturi etc.), sistemul "1C: Enterprise" oferă două tipuri de încuietori: pesimiste și optimiste. Acestea vă permit să efectuați o schimbare holistică a obiectelor cu funcționarea simultană a mai multor utilizatori.

Blocarea pesimistă obiectivă

Blocarea pesimistă a obiectelor este proiectată pentru a interzice modificarea datelor obiect până când se elimină blocarea. Sistemul (cu ajutorul extensiilor de formă corespunzătoare a obiectelor) stabilește automat o blocare pesimistă, în momentul în care utilizatorul încearcă să schimbe datele obiectului. Dacă după aceea un alt utilizator, de exemplu, încearcă să editeze același obiect, el va primi un mesaj care să ateste că obiectul nu poate fi blocat. Când formularul este închis de către utilizator, această blocare va fi eliminată.

Fără salvarea documentului vom intra în baza de date a informațiilor sub utilizatorul "Ivanov II", vom deschide același document și vom încerca să efectuăm modificări în orice solicitare a documentului. Sistemul nu ne va permite să facem nicio modificare și vom raporta o eroare (Figura 1.4).

Rezultă că o blocare pesimistă asigură că utilizatorul, începând să modifice datele obiectului, va putea să scrie aceste modificări în baza de date.

Dezvoltatorul care utilizează instrumentele de limbaj încorporate poate utiliza o blocare pesimistă. Folosind metoda "Block ()", este instalată o blocare a obiectelor pesimiste și metoda de deblocare ("Unblock ()").


Să ne uităm la un alt exemplu. Sub utilizatorul "Vasilyev VV" din secțiunea "Informații de reglementare" vom deschide elementul din directorul "Depozite" cu numele "Depozit №1" și vom modifica numele (Figura 1.5).


Fără salvarea comutatorului în fereastra bazei de date care a fost lansată sub utilizatorul "Ivanov VV", în secțiunea "Informații de referință", deschidem procesarea "Șterge obiectul". Selectați elementul "Depozite" cu numele "Depozit №1" ca obiect de șters și faceți clic pe "Ștergeți obiectul" (Figura 1.6).

Ca rezultat, sistemul va elimina această intrare în director și sistemul nu va afișa un mesaj de eroare. Problema este că operația de blocare nu împiedică funcționarea modificării sau ștergerii unui obiect din baza de date.

Pentru a vă asigura că este imposibil să modificați sau să ștergeți un obiect blocat, este necesar să verificați blocarea obiectului.







Există două modalități de verificare:

  1. Metoda "Blocat ()" este folosită pentru a verifica dacă obiectul bazei de date este blocat de sesiunea curentă. Această metodă nu oferă posibilitatea de a verifica dacă obiectul este blocat deloc.
  2. Pentru a verifica obiectul bazei de date blocate, se folosește în general metoda "Block ()". O încercare de a bloca un obiect blocat provoacă o excepție, care poate fi procesată de construcția "Încercați ... .. Excluderea ... .. Încercați sfârșitul".

Închidere pesimistă în forme controlate

Când lucrați cu formulare gestionate, este posibil ca metodele "Block ()", "Unlock ()" și "Blocked ()" să nu funcționeze din cauza funcționării specifice a aplicației gestionate.

Faptul este că aceste metode sunt folosite pentru obiectele bazei de date. Obiectul bazei de date există numai pe server. Se pare că dezvoltatorul va trebui să execute un apel de server, să obțină obiectul bazei de date prin conversia formularului principal de solicitare a formularului utilizând formularul "Forms FormsValue". Apoi se numește una dintre metodele obiectului "Block ()", "Unlock ()" sau "Blocked ()". Dar această metodă de blocare va fi inutilă dacă sarcina este ca obiectul să fie blocat în timp ce forma este deschisă, deoarece obiectul recepționat va trăi până la sfârșitul apelului de server.

Pentru a lucra cu încuietori dintr-un formular gestionat, trebuie să utilizați metodele: "Blocați formulare de date pentru editare ()" și "Deblocați formulare de date pentru editare ()". Aceste metode sunt utilizate pentru a bloca sau a debloca datele principalelor elemente de recuzită.

Să luăm în considerare un exemplu. În secțiunea „Referințe normative“ deschide fiecare element al cărții de referință „Range“ sub utilizatorul „Vladimir Vasilev“, schimbări în numele sau salvate sub utilizatorul „Ivanov II“ otroem același element de referință. Dacă încercați să efectuați modificări, sistemul va afișa un mesaj de eroare.


În continuare, sub formă de element de ghidare pentru utilizator, „Vladimir Vasiliev,“ faceți clic pe „Deblocare“ (fig. 1.7) și încercați din nou pentru a face modificări la intrarea directorului pentru utilizator, „Ivanov II.“ În acest caz, sistemul va efectua modificări și va înregistra elementul directorului.


Pentru a dezactiva blocarea pesimistă în forme gestionate în proprietatea recuzelor principale, stegulețul "Date salvate" nu trebuie să fie bifat. Acest steag determină dacă datele recuzelor principale vor fi blocate în timpul editare interactivă sau nu Fig. (1.8).

Obiectiv optimist de blocare

Blocarea optimistă este o verificare efectuată înainte ca obiectul să fie scris în baza de date. Obiectul are o proprietate "DataData", care este citită din baza de date împreună cu obiectul. Blocarea optimistă efectuează înainte ca înregistrarea să compară valoarea proprietății "VersionData" a obiectului care este în RAM cu valoarea proprietății "DataData" a obiectului localizat în baza de date. Dacă valoarea proprietății "DataData" pentru obiecte diferă, atunci o blocare optimistă împiedică scrierea obiectului în baza de date și produce un mesaj de eroare.

În secțiunea „Referințe normative“ deschide orice element de director „Nomenclator“ sub utilizator „Vasil V.“ în continuare fără a închide element de formular „Ivanov II“, în conformitate cu utilizatorul în „Referințe normative“ proces deschis " Editați obiectul. "

În procesare, selectați aceeași nomenclatură și faceți clic pe butonul "Editați obiectul". Această comandă va adăuga numele ". "(Figura 1.9).

După schimbare, să încercăm să înregistrăm elementul deschis al carnetului de referință din nomenclatură sub utilizatorul "Vasiliev VV". Sistemul va emite un avertisment că aceste obiecte au fost modificate sau șterse și nu vor permite scrierea obiectului (Figura 1.10).

Pentru a dezactiva blocarea optimistă, trebuie să comparați versiunea cu versiunea obiectului bazei de date înainte de a scrie obiectul în memoria RAM. În cazul în care versiunile datelor sunt diferite, vom obține obiectul din baza de date și vom transfera modificările în acesta, apoi îl vom scrie.







Articole similare

Trimiteți-le prietenilor: