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 să lucrați direct cu datele, de exemplu, pentru a analiza informații cu instrumente terțe sau, ca în cazul meu, pentru a integra o bază de date cu aplicații externe. Într-o astfel de situație, este necesar să avem o idee despre câmpurile tabelelor fizice pentru a căuta informațiile de care avem nevoie.
Funcția încorporată este concepută pentru un astfel de caz. GetDatabaseStorageStructure ()care returnează toate datele necesare ca un tabel de valori. Mai mult, unele detalii (câmpuri și indici) ale acestui tabel sunt în sine tabele de valori.
Pe de o parte, este convenabil să aveți toate datele într-o structură, dar, pe de altă parte, apar dificultăți suplimentare cu transferul acestei tabele către client (metoda Load (), din păcate, nu încarcă tabelele 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 lucrului.
În acest sens, cea mai bună opțiune este să treceți numele obiectelor de metadate funcției pentru a reduce cantitatea de date returnate. Cu toate acestea, nu toate tabelele SGBD sunt asociate cu metadatele de configurare, așa că am lăsat ocazia să vizualizez lista completă.
Funcționalitate de procesare
Când elementul arborelui de 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 (nerecomandat, deoarece cantitatea de date căutate crește).
În secțiunile tabulare, funcționează comenzile standard de căutare și listă.
Diferențe față de implementările existente
Există mai multe publicații similare, de exemplu, și. Cu toate acestea, dezavantajul lor este absența unui arbore de metadate, ceea ce face navigarea dificilă. Căutarea este efectuată și de numele tabelelor și câmpurilor din baza de date și nu invers.
Cea mai apropiată funcționalitate de publicația autorului (). În schimb, acest tratament conține cel mai complet copac metadate (planuri de schimb, constante, jurnale de documente etc.). în afară destructura datelor este prezentată mai clar: lista tabelelor obiectului de metadate, lista câmpurilor și lista indexurilor 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 mai mare (comportamentul platformei s-a schimbat).
UPD-2012-08-17 (v1.2). S-a făcut un patch pentru procesarea corectă a sarcinilor programate, elementul pentru afișarea planurilor tipurilor de calcul a fost remediat, comportamentul la schimbarea tipului de structură în rădăcina de configurare a fost remediat.
P.S. Unii angajatori întreabă despre numărul de tabele fizice și virtuale pentru registre atunci când angajează. Ar fi frumos să știm răspunsurile la aceste întrebări, mai ales că acesta este nivelul 1C: Professional. Dacă doriți nu numai să învățați acest răspuns, ci și să „simțiți” aceste tabele, atunci această procesare este pentru dvs.!
Datele care determină logica funcționării sistemului pe baza 1C: Enterprise sunt legate de baza de informații. Baza de date 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 (SGBD):
* Incorporatîn 1C: Enterprise 8.1 (versiunea de fișier a infobazei). În acest caz, toate datele infobase 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 infobazei). Toate datele infobase sunt stocate în baza de date Microsoft SQL Server.
* PostgreSQL (versiunea client-server a infobazei). Toate datele infobase sunt stocate în baza de date PostgreSQL.
* IBM DB2 (versiunea client-server a infobazei). Toate datele infobase sunt stocate în baza de date IBM DB2.
La nivelul obiectelor bazei de date (tabele, câmpuri, indici etc.), atât versiunea fișier, cât și versiunea client-server a infobazei au un format similar (diferind în 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 există mai multe tabele care sunt neapărat prezente în prezentarea oricărei baze de date:
* Config - configurația principală a infobazei. 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 "Actualizarea configurației bazei de date" este efectuată în Configurator și invers - când operația "Configurare - Configurare bază de date - Reveniți la configurația bazei de date" este realizată în Configurator.
* Fișiere conține informații despre servicii, de exemplu, despre lucrul cu magazinul de configurații.
* Params conține parametrii infobazei. Printre ei:
=>
Lista utilizatorilor infobase.
=>
Setări naționale de bază de informații.
=>
Tabel de corespondență a obiectelor metadate și a obiectelor bazei de date (tabele, câmpuri, indici).
=>
Alte informații.
* _YearOffset - compensarea datelor din baza de date. Acest tabel este creat numai atunci când se utilizează Microsoft SQL Server.
* DBSchema conține informații despre structura bazei de date 1C: Enterprise și definește alte obiecte de baze de date utilizate de această bază de date.
La pornirea 1C: Enterprise, verifică prezența tabelelor listate în baza de date și, dacă lipsește vreunul dintre ele, se afișează mesajul „baza de date distrusă”. Absența tuturor tabelelor listate înseamnă că baza de date este goală. În acest din urmă caz, aceste tabele vor fi create.
Lista și structura altor tabele de baze de date sunt determinate de o configurație specifică, și anume de obiectele de metadate definite în aceasta. Fiecare nume de tabel este format dintr-un prefix alfabetic urmat de un număr. Prefixul definește scopul tabelului, iar numărul vă permite să faceți distincția între tabelele cu același scop care se referă la diferite obiecte de metadate. Dacă IBM DB2 este utilizat ca SGBD, atunci structura descrisă nu are numele tabelelor, ci aliasurile acestora.
Dacă configurația conține cel puțin un plan de schimb cu semnalizatorul „Infobase distribuite” setat, vor fi create următoarele tabele:
* _ConfigChangeRec - tabel pentru înregistrarea modificărilor obiectelor de configurare.
* _ConfigChangeRec_ExtProps - tabel cu numele fișierelor 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
* Documente
=>
_Document
=>
_Document
=>
_DocumentChangeRec
* Secvențe de documente
=>
_Secvenţă
=>
_SequenceBoundary
=>
_SequenceChangeRec
* Jurnale de documente.
=>
_DocumentJournal
* Enumerări
=>
_Enum
* Planuri de tipuri caracteristice
=>
_Chrc
=>
_Chrc
=>
_ChrcChangeRec
* Planuri de conturi
=>
_Acc
=>
_Acc
=>
_Acc
=>
_AccChangeRec
* Planuri de tipuri de calcul
=>
_CalcKind
=>
_CalcKind
=>
_CalcKind
=>
_CalcKind
=>
_CalcKindDN
=>
_CalcKind
=>
_CalcKindChangeRec
* Registrele de informații
=>
_InfoReg
=>
_InfoRegChangeRec
* Registre de acumulare
=>
_AccumReg
=>
_AccumRegTotals
=>
_AccumRegTurnovers
=>
_AccumRegChangeRec
=>
_AccumRegOptions - tabel cu setările de stocare pentru totalurile de registre de acumulare, unul pentru toate registrele de acumulare.
* Registrele contabile
=>
_AccntReg
=>
_AccntRegED
=>
_AccTtl0
=>
_AccTtl
=>
_AccTtlC
=>
_AccntRegChangeRec
=>
_AccntRegOptions - un tabel pentru stocarea totalelor pentru toate registrele contabile.
* Registre de calcul
=>
_CalcReg
=>
_CalcRegActPer
=>
_CalcRegChangeRec
=>
_CalcRegRecalc
=>
_CalcRegRecalcChangeRec
* Procese de afaceri
=>
_BPRoutePoint
=>
_Proces de afaceri
=>
_Proces de afaceri
=>
_BusinessProcessChangeRec
* Sarcini
=>
_Sarcină
=>
_Sarcină
=>
_TaskChangeRec
Când utilizați IBM DB2, prefixele aliasului tabelelor nu încep cu un 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 lor, precum și integritatea și consistența datelor pe care le conțin. Prin urmare, este important ca baza de date care conține baza de date 1C: Enterprise 8.1 să fie protejată împotriva accesului neautorizat și ca modificarea sa să fie efectuată numai prin intermediul 1C: Enterprise. Pentru a o verifica, utilizați funcția „Administrare - Testare și reparare” încorporată în configurator.
De asemenea, este important ca baza de date care stochează baza de date să fie copiată și restaurată numai în întregime. În acest scop, se recomandă utilizarea instrumentelor de backup pentru baze de date încorporate în SGBD-ul folosit. Versiunea fișierului bazei de date poate fi copiată prin copierea fișierului 1Cv8.1CD.
Configuratorul are o funcție specială: Administrare - Încărcare bază de informații. Cu ajutorul acestuia, puteți încărca în fișierul specificat (încărcați fișierul) toate datele legate de baza de date și nimic altceva. Funcția inversă „Load infobase” permite încărcarea tuturor datelor din fișierul de încărcare în baza de date curentă în locul celor existente. Aceste funcții pot fi, de asemenea, utilizate pentru a face copii de siguranță a datelor infobase atât în \u200b\u200bversiunea fișier, cât și în versiunea client-server.
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ă \u003d Structură nouă;
Structură. Inserare ("KeyParameter1", "Valori ale parametrului # 1");
Structură. Inserare ("KeyParameter2", "Valori ale parametrului # 2");
A doua cale:
Structură \u003d Structură nouă ("KeyParameter1, KeyParameter2", "Parameter values \u200b\u200b# 1", "Parameter values \u200b\u200b# 2");
Ambele metode vor crea structura pe care o puteți vedea în captura de ecran din depanare:
Obțineți gratuit 267 tutoriale video 1C:
Schimbarea
Puteți adăuga sau modifica structura folosind metoda „Insert ()”.
Structure.Insert ("KeyName", KeyValue);
Dacă trebuie să modificați valoarea vechii chei, introduceți numele acesteia. Dacă adăugați o nouă cheie, 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 „Ștergeți”, unde treceți numele cheii:
Structure.Remove ("KeyName");
De asemenea, este posibil să ștergeți toate obiectele din colecție:
Structure.Clear ();
Traversarea structurii
Pentru a itera peste colecția de structuri, trebuie să utilizați construcția „Pentru fiecare cheie și valoare din bucla de structură”.
De exemplu:
Pentru fiecare cheie și semnificație a buclei structurii
…… // procesul, de exemplu, schimbă valorile
Sfârșitul ciclului;
În fiecare ciclu, se va vedea că următoarele câmpuri sunt disponibile pentru noi: