1c corespondența tabelelor și obiectelor sql. Structura de stocare a bazei de date (formulare gestionate). Diferențele față de implementările existente
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 de șir, „Valoare” poate lua orice tip de date. Este de obicei folosit pentru a stoca și transfera un set de parametri între proceduri.
Structura în limbajul de programare 1C poate fi creată în două moduri folosind construcția „Nouă”.
Prima cale:
Structură = Structură nouă;
Structură. Inserare ("KeyParameter1", "Valorile parametrului # 1");
Structură. Inserare ("KeyParameter2", "Valorile parametrului # 2");
A doua cale:
Structură = Structură nouă („KeyParameter1, KeyParameter2”, „Valorile parametrului # 1”, „Valorile parametrului # 2”);
Ambele metode vor crea structura care poate fi văzută în captura de ecran din depanare:
Obțineți gratuit tutoriale video 267 1C:
Schimbarea
Puteți adăuga sau modifica structura folosind metoda „Inserare ()”.
Structure.Insert („KeyName”, KeyValue);
Dacă trebuie să modificați valoarea cheii vechi, introduceți numele acesteia. Daca adaugati cheie nouă, adăugați un nume unic în raport cu toate cheile de structură.
Pentru a șterge un element al colecției, trebuie să utilizați metoda „Ștergere”, unde treceți numele cheii:
Structure.Remove ("KeyName");
De asemenea, este posibil să ștergeți toate obiectele din colecție:
Structure.Clear ();
Parcursul structurii
Pentru a itera asupra colecției unei structuri, trebuie să utilizați constructul „Pentru fiecare cheie și valoare din bucla de structură”.
De exemplu:
Pentru fiecare cheie și semnificație a buclei de structură
…… // procesează, de exemplu, schimbă valori
Sfârșitul ciclului;
În fiecare ciclu se va vedea că următoarele câmpuri ne sunt disponibile:
Datele care determină logica funcționării sistemului bazat pe 1C: Enterprise sunt legate de baza de informații. Depozitare baza de informatii se desfășoară î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, de fapt, este o bază de date pentru DBMS î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 în baza de date Date Microsoft SQL Server.
* PostgreSQL(versiunea client-server a bazei de informații). Toate datele din baza de date sunt stocate în baza de date 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 infobazei au un format similar (diferind prin detalii nesemnificative). Unele informații despre acest format sunt conținute mai jos.
Întreaga bază de date este prezentată în baza de date ca un set de tabele. Printre acestea se numără mai multe tabele care sunt neapărat prezente în prezentarea oricărei baze de informații:
* Configurare- configurația principală 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 suprascrisă în Config atunci când în Configurator se realizează „Actualizarea configurației bazei de date” și invers - când se realizează operația „Configurare - Configurare baze de date - Revenire la configurația bazei de date” în Configurator.
* Fișiere conţine informatii de serviciu, de exemplu, despre lucrul cu magazinul de configurare.
* Parametrii conține parametrii bazei de informații. Printre ei:
=>
Lista utilizatorilor bazei de informații.
=>
Base de informații setările naționale.
=>
Tabel de corespondență al obiectelor metadate și al obiectelor bazei de date (tabele, câmpuri, indecși).
=>
Alte informatii.
* _YearOffset- offset de date în baza de date. Acest tabel este creat doar atunci când folosind 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 date.
La pornirea 1C: Enterprise, verifică prezența tabelelor listate în infobază, iar dacă lipsește vreuna dintre ele, se afișează mesajul „infobase destroyed”. 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 o configurație specifică, și anume, de obiectele de metadate definite în aceasta. Fiecare nume de tabel constă dintr-un prefix alfabetic urmat de un număr. Prefixul definește scopul tabelului, iar numărul vă permite să distingeți între tabelele cu același scop care se referă la diferite obiecte de metadate. Dacă IBM DB2 este utilizat ca DBMS, atunci structura descrisă nu are numele tabelelor, ci alias-urile acestora.
Dacă cel puțin un plan de schimb este definit în configurația cu setul de flag „Bază de informații distribuite”, se vor crea următoarele tabele:
* _ConfigChangeRec- un tabel pentru înregistrarea modificărilor la obiectele de configurare.
* _ConfigChangeRec_ExtProps- tabel cu numele de fișiere ale proprietăților externe modificate ale obiectelor de configurare.
Mai jos sunt enumerate diferitele obiecte de metadate cărora le pot corespunde tabelele.
*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ă participă la cel puțin un plan de schimb.
* Schimb de planuri
=>
_Nodul
=>
_Nodul
* Referințe
=>
_Referinţă
=>
_Referinţă
=>
_ReferenceChangeRec
* Documentele
=>
_Document
=>
_Document
=>
_DocumentChangeRec
* Secvențe de documente
=>
_Secvenţă
=>
_SequenceBoundary
=>
_SequenceChangeRec
* Jurnalele de documente.
=>
_DocumentJournal
* Enumerări
=>
_Enum
* Planuri de tipuri de caracteristici
=>
_Chrc
=>
_Chrc
=>
_ChrcChangeRec
* Planuri de conturi
=>
_Acc
=>
_Acc
=>
_Acc
=>
_AccChangeRec
* Planuri de tipuri de calcul
=>
_CalcKind
=>
_CalcKind
=>
_CalcKind
=>
_CalcKind
=>
_CalcKindDN
=>
_CalcKind
=>
_CalcKindChangeRec
* Registre de informații
=>
_InfoReg
=>
_InfoRegChangeRec
* Registre de acumulare
=>
_AccumReg
=>
_AccumRegTotals
=>
_AccumRegTurnovers
=>
_AccumRegChangeRec
=>
_AccumRegOptions - un 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 - un 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 imediat cu o parte alfabetică.
Numărul acestor tabele depinde de funcționalitatea configurației și poate fi destul de mare. În modul normal, 1C: Enterprise nu verifică prezența acestora, precum și integritatea și consistența datelor pe care le conțin. Prin urmare, este important ca baza de date în care se află baza de date 1C: Enterprise 8.1 să fie protejată împotriva accesului neautorizat și ca modificarea acesteia să fie efectuată numai prin intermediul 1C: Enterprise. Pentru verificare, trebuie să utilizați funcția „Administrare - Testare și reparare” încorporată în configurator.
De asemenea, este important ca baza de date care stochează baza de informații să fie copiată și restaurată numai în întregime. În acest scop, se recomandă utilizarea fondurilor Rezervă copie baze de date încorporate în SGBD utilizat. Versiunea de fișier a bazei de informații poate fi copiată prin copierea fișierului 1Cv8.1CD.
Configuratorul are functie speciala: Administrare - Descărcați baza de informații. Poate fi folosit pentru a descărca fișierul specificat(fișier dump) toate datele legate de baza de informații și nimic altceva. Funcția inversă „Încărcarea bazei de informații” permite încărcarea tuturor datelor 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 face copii de siguranță ale datelor bazei de informații atât în versiunea de fișiere, cât și în versiunea client-server.
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 va crea ș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, de a analiza informațiile cu instrumente terțe sau, ca în cazul meu, de a integra o bază de date cu aplicatii externe... Într-o astfel de situație, este necesar să avem o idee în ce câmpuri ale tabelelor fizice să căutăm informațiile de care avem nevoie.
Funcția încorporată este concepută doar pentru un astfel de caz. GetDatabaseStorageStructure () care returnează toate datele necesare ca un tabel de valori. Mai mult, unele dintre detaliile (câmpuri și indici) din acest 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 cu transferul acestui tabel către client (metoda Load () , din păcate, nu încarcă tabele imbricate ). Având în vedere acest lucru, este necesar să parcurgeți toate rândurile tabelului într-o buclă, ceea ce, cu volume mari, duce la o încetinire a activității.
În acest sens, cea mai bună opțiune ar fi să treceți numele obiectelor metadate la funcția de reducere a cantității de date returnate. Cu toate acestea, nu toate tabelele DBMS sunt asociate cu metadatele de configurare, deci capacitatea de a vizualiza lista plina Am plecat.
Funcționalitatea de procesare
Când un element al arborelui metadate este activat, lista de tabele, câmpuri și indici este completată. Când faceți dublu clic pe rădăcina arborelui, sunt afișate toate tabelele, inclusiv tabelele de servicii (nu este recomandat, deoarece cantitatea de date căutate crește).
V secțiuni tabelare comenzile standard de căutare și listă funcționează.
Diferențele față de implementările existente
Există mai multe publicații similare, de exemplu, și. Cu toate acestea, inconvenientul lor constă în absența 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.
Cel mai apropiat ca funcționalitate de publicația autorului (). Spre deosebire de ea, prelucrare dată conţine cel mai complet arbore metadate (planuri de schimb, constante, jurnale de documente 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 secțiuni 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 a fost modificat).
UPD-2012-08-17 (v1.2). A fost realizat un patch pentru procesarea corectă a sarcinilor programate, a fost reparat elementul pentru afișarea planurilor de tipuri de calcul, a fost reparat comportamentul la schimbarea tipului de structură în rădăcina de configurare.
P.S. Unii angajatori, la angajare, pun o întrebare despre 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 numai să înveți acest răspuns, ci și să „simți” aceste tabele, atunci această procesare este pentru tine!