Structura de stocare a bazei de date (formulare gestionate). Structura de stocare a bazei de date (formulare gestionate) Structură de tabel 1c
Platforma 1C este un instrument de nivel înalt pentru lucrul cu baze de date. În general, dezvoltatorul nu trebuie să se gândească la ce și cum se întâmplă pe partea DBMS, deoarece platforma însăși decide câte tabele ar trebui să creeze și ce câmpuri vor fi în interiorul lor.
Cu toate acestea, în proiectele mari este nevoie de a lucra direct cu datele, de exemplu, pentru a analiza informații folosind instrumente terțe sau, ca în cazul meu, pentru a integra baza de date cu aplicații externe. Într-o astfel de situație, este necesar să avem o idee în ce câmpuri de tabele fizice să căutăm informațiile de care avem nevoie.
Funcția încorporată este destinată doar unui astfel de caz GetDatabaseStorageStructure(), care returnează toate datele necesare sub forma unui tabel de valori. Mai mult, unele detalii (câmpuri și indici) ale acestui tabel sunt ele însele tabele de valori.
Pe de o parte, este convenabil să aveți toate datele într-o singură structură, dar, pe de altă parte, apar dificultăți suplimentare la transferul acestui tabel către client (metoda Load(), din păcate, nu încarcă tabele imbricate). Din acest motiv, trebuie să parcurgeți toate intrările din tabel într-o buclă, ceea ce duce la o muncă mai lentă pentru volume mari.
Din acest motiv, o opțiune mai bună ar fi să treceți numele obiectelor metadate în funcție pentru a reduce cantitatea de date returnate. Cu toate acestea, nu toate tabelele DBMS sunt asociate cu metadatele de configurare, așa că am lăsat opțiunea de a vizualiza lista completă.
Funcționalitatea de procesare
Când un element arbore de metadate este activat, lista de tabele, câmpuri și indici va fi populată. Când faceți dublu clic pe rădăcina arborelui, sunt afișate toate tabelele, inclusiv tabelele de servicii (nu este recomandat, deoarece volumul de date căutate crește).
În părțile tabelare funcționează comenzile standard de căutare și listă.
Diferențele față de implementările existente
Există mai multe publicații similare, de exemplu, și. Cu toate acestea, inconvenientul lor este lipsa unui arbore de metadate, ceea ce îngreunează navigarea. Căutarea este efectuată și după numele tabelelor și câmpurilor din baza de date și nu invers.
Funcționalitatea este cea mai apropiată de publicația autorului (). În schimb, această prelucrare conține cel mai complet arbore metadate (planuri de schimb, constante, jurnalele documentelor etc.). in afara de asta structura datelor este prezentată mai clar: lista de tabele a obiectului de metadate, lista de câmpuri și lista de indici sunt afișate în părți tabulare separate.
UPD-2018-01-06 (v1.3). S-a remediat o eroare care a apărut în modul de compatibilitate 8.3.7 și o versiune ulterioară (comportamentul platformei s-a schimbat).
UPD-2012-08-17 (v1.2). A fost realizat un patch pentru procesarea corectă a sarcinilor de rutină, elementul pentru afișarea planurilor de tipuri de calcul a fost reparat și comportamentul la schimbarea tipului de structură în rădăcina de configurare a fost reparat.
P.S. Unii angajatori, la angajare, întreabă de numărul de mese fizice și virtuale pentru registre. Ar fi bine să cunoaștem răspunsurile la aceste întrebări, mai ales că acesta este 1C: Nivel profesional. Dacă vrei nu doar să înveți acest răspuns, ci și să „simți” aceste tabele, atunci acest tratament este pentru tine!
Structura în limbajul de programare 1C 8.3 și 8.2 este un set de perechi „Cheie” și „Valoare”. Câmpul „Cheie” are un tip șir, în timp ce câmpul „Valoare” poate accepta orice tip de date. Utilizat de obicei pentru a stoca și transfera un set de parametri între proceduri.
O structură în limbajul de programare 1C poate fi creată în două moduri folosind constructul „Nou”.
Prima cale:
Structură = Structură nouă;
Structure.Insert ("ParameterKey1", "ParameterValues No.1");
Structure.Insert ("ParameterKey2", "ParameterValues No.2");
A doua cale:
Structură = Structură nouă ("ParameterKey1, ParameterKey2", "ParameterValues No.1", "ParameterValues No.2");
Ambele metode vor crea structura care poate fi văzută în captura de ecran de la depanare:
Obțineți 267 de lecții video pe 1C gratuit:
Schimbare
Puteți adăuga sau modifica o structură folosind metoda „Insert()”.
Structure.Insert("KeyName", KeyValue);
Dacă trebuie să modificați valoarea vechii chei, introduceți numele acesteia. Dacă adăugați o cheie nouă, adăugați un nume unic în raport cu toate cheile din structură.
Pentru a șterge un element de colecție, trebuie să utilizați metoda „Ștergere”, unde treceți numele cheii:
Structure.Delete("KeyName");
De asemenea, este posibil să ștergeți toate obiectele dintr-o colecție:
Structure.Clear();
Traversarea structurii
Pentru a itera printr-o colecție a unei structuri, trebuie să utilizați construcția „For Each KeyValue From Structure Loop”.
De exemplu:
Pentru fiecare semnificație cheie din bucla de structură
…… //procesează, de exemplu, schimbă valori
EndCycle;
În fiecare ciclu veți vedea că următoarele câmpuri sunt disponibile pentru noi:
Datele care determină logica de funcționare a sistemului bazat pe 1C:Enterprise aparțin bazei de informații. Baza de informații este stocată într-o bază de date sub forma unui set de tabele, pentru care 1C:Enterprise 8.1 poate utiliza unul dintre cele patru sisteme de gestionare a bazelor de date (DBMS):
* Incorporatîn 1C:Enterprise 8.1 (versiunea de fișier a bazei de informații). În acest caz, toate datele din baza de informații sunt stocate într-un fișier numit 1Cv8.1CD. Acest fișier are un format binar și este în esență o bază de date pentru SGBD încorporat în 1C:Enterprise 8.1.
*Microsoft SQL Server(versiunea client-server a bazei de informații). Toate datele din baza de date sunt stocate într-o bază de date Microsoft SQL Server.
* PostgreSQL(versiunea client-server a bazei de informații). Toate datele din baza de date sunt stocate într-o bază de date PostgreSQL.
* IBM DB2(versiunea client-server a bazei de informații). Toate datele din baza de date sunt stocate în baza de date IBM DB2.
La nivelul obiectelor bazei de date (tabele, câmpuri, indecși etc.), atât versiunile fișier, cât și versiunile client-server ale bazei de informații au un format similar (diferind prin detalii minore). Câteva informații despre acest format sunt incluse mai jos.
Întreaga bază de informații este prezentată în baza de date ca un set de tabele. Printre acestea există mai multe tabele care sunt în mod necesar prezente în vederea oricărei baze de informații:
*Config- configurația de bază a bazei de informații. Această configurație corespunde structurii reale de date și este utilizată de 1C:Enterprise 8.0 în modul Enterprise.
*ConfigSave- configurație editată de Configurator. Configurația din ConfigSave este rescrisă în Config când se efectuează „Actualizarea configurației bazei de date” în Configurator și invers - când se efectuează operația „Configurare - Configurare baze de date - Revenire la Configurare DB” din Configurator.
* Fișiere conține informații de serviciu, de exemplu, despre lucrul cu depozitul de configurare.
* Parametrii conține parametrii bazei de informații. Printre ei:
=>
Lista utilizatorilor bazei de informații.
=>
Setările bazei de informații naționale.
=>
Tabel de corespondență între obiectele metadate și obiectele bazei de date (tabele, câmpuri, indecși).
=>
Alte informatii.
*_YearOffset- compensarea datei în baza de date. Acest tabel este creat numai când se utilizează Microsoft SQL Server.
* Schema DBS conține informații despre structura bazei de date 1C:Enterprise și definește alte obiecte de bază de date utilizate de această bază de informații.
Când pornește 1C:Enterprise, verifică prezența tabelelor listate în baza de informații și dacă lipsește vreuna dintre ele, este afișat mesajul „baza de informații a fost distrusă”. Absența tuturor tabelelor enumerate înseamnă că baza de informații este goală. În acest din urmă caz, aceste tabele vor fi create.
Lista și structura altor tabele de baze de date este determinată de configurația specifică, și anume, obiectele de metadate definite în aceasta. Fiecare nume de tabel constă dintr-un prefix de literă urmat de un număr. Prefixul determină scopul tabelului, iar numărul vă permite să distingeți între tabelele cu același scop care aparțin unor obiecte de metadate diferite. Dacă IBM DB2 este utilizat ca SGBD, atunci structura descrisă nu este numele tabelelor, ci aliasurile acestora.
Dacă cel puțin un plan de schimb este definit în configurația cu setul de flag „Bază de informații distribuite”, atunci vor fi create următoarele tabele:
*_ConfigChangeRec- tabel pentru înregistrarea modificărilor la obiectele de configurare.
* _ConfigChangeRec_ExtProps- tabel cu nume de fișiere ale proprietăților externe modificate ale obiectelor de configurare.
Mai jos sunt enumerate diferitele obiecte de metadate cărora le poate corespunde fiecare tabel.
*Constante
=>
_Consts conține valorile curente ale tuturor constantelor definite în configurație.
=>
_ConstsChangeRec - tabel pentru înregistrarea modificărilor constante. Creat dacă cel puțin o constantă este implicată în cel puțin un plan de schimb.
*Partajați planuri
=>
_Nodul
=>
_Nodul
* Directoare
=>
_Referinţă
=>
_Referinţă
=>
_ReferenceChangeRec
* Documentație
=>
_Document
=>
_Document
=>
_DocumentChangeRec
* Secvențe de documente
=>
_Secvenţă
=>
_SequenceBoundary
=>
_SequenceChangeRec
* Jurnalele documentelor.
=>
_DocumentJournal
* Transferuri
=>
_Enum
* Planuri pentru tipuri de caracteristici
=>
_Chrc
=>
_Chrc
=>
_ChrcChangeRec
* Planuri de conturi
=>
_Acc
=>
_Acc
=>
_Acc
=>
_AccChangeRec
* Planuri pentru tipuri de calcul
=>
_CalcKind
=>
_CalcKind
=>
_CalcKind
=>
_CalcKind
=>
_CalcKindDN
=>
_CalcKind
=>
_CalcKindChangeRec
* Registre de informații
=>
_InfoReg
=>
_InfoRegChangeRec
* Registre de acumulare
=>
_AccumReg
=>
_AccumRegTotals
=>
_AccumRegTurnovers
=>
_AccumRegChangeRec
=>
_AccumRegOptions - tabel de setări pentru stocarea totalurilor registrelor de acumulare, unul pentru toate registrele de acumulare.
* Registre contabile
=>
_AccntReg
=>
_AccntRegED
=>
_AccTtl0
=>
_AccTtl
=>
_AccTtlC
=>
_AccntRegChangeRec
=>
_AccntRegOptions - tabel de setări pentru stocarea totalurilor, unul pentru toate registrele contabile.
* Registre de calcul
=>
_CalcReg
=>
_CalcRegActPer
=>
_CalcRegChangeRec
=>
_CalcRegRecalc
=>
_CalcRegRecalcChangeRec
* Procese de afaceri
=>
_BPRoutePoint
=>
_BusinessProcess
=>
_BusinessProcess
=>
_BusinessProcessChangeRec
* Sarcini
=>
_Sarcină
=>
_Sarcină
=>
_TaskChangeRec
Când se utilizează IBM DB2, prefixele de alias de tabel nu încep cu un caracter de subliniere, ci încep cu o literă.
Numărul acestor tabele depinde de funcționalitatea configurației și poate fi destul de mare. În modul normal, 1C:Enterprise nu verifică disponibilitatea acestora, precum și integritatea și consistența datelor conținute în acestea. Prin urmare, este important ca baza de date în care se află baza de informații 1C:Enterprise 8.1 să fie protejată împotriva accesului neautorizat și modificarea acesteia să fie efectuată numai folosind instrumentele 1C:Enterprise. Pentru a verifica, trebuie să utilizați funcția „Administrare - Testare și corectare” încorporată în configurator.
De asemenea, este important ca backup-ul și recuperarea bazei de date care stochează baza de informații să fie efectuate numai ca întreg. În acest scop, se recomandă utilizarea instrumentelor de backup a bazei de date încorporate în SGBD utilizat. Copierea versiunii de fișier a bazei de informații poate fi efectuată prin copierea fișierului 1Cv8.1CD.
Configuratorul are o functie speciala: Administrare - Incarcare infobaza. Cu ajutorul acestuia, puteți încărca în fișierul specificat (fișier de încărcare) toate datele legate de baza de informații și nu mai mult. Funcția inversă „Încărcare baza de informații” vă permite să încărcați toate datele din fișierul de încărcare în baza de informații curentă în locul celor existente. Aceste funcții pot fi, de asemenea, utilizate pentru a crea copii de siguranță ale bazei de informații atât în versiunea de fișiere, cât și în versiunea client-server.