Contacte

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 - tabel de plan de schimb.
=> _Nodul _VT - sectiune tabulara a planului de schimb, creata pentru fiecare sectiune tabulara.
* Referințe
=> _Referinţă - tabel de referință.
=> _Referinţă _VT - secțiunea tabelară a cărții de referință - pentru fiecare secțiune tabelară.
=> _ReferenceChangeRec - tabel pentru înregistrarea modificărilor în director. Creat dacă directorul participă la cel puțin un plan de schimb.
* Documentele
=> _Document - un tabel de documente pentru fiecare obiect de metadate „document”.
=> _Document _VT - secțiunea tabelară a documentului - pentru fiecare secțiune tabelară a fiecărui document.
=> _DocumentChangeRec - un tabel pentru înregistrarea modificărilor la obiectul metadatelor de tip „document”. Creat pentru fiecare obiect de metadate de tip „document”, dacă participă la cel puțin un plan de schimb.
* Secvențe de documente
=> _Secvenţă - tabel de înregistrare a documentelor - pentru fiecare secvență.
=> _SequenceBoundary - un tabel cu limitele secvenței - pentru fiecare secvență.
=> _SequenceChangeRec - tabel de înregistrare a modificărilor de secvență. Creat pentru fiecare secvență care participă la cel puțin un plan de schimb.
* Jurnalele de documente.
=> _DocumentJournal - se creează un tabel jurnal de documente pentru fiecare jurnal de documente.
* Enumerări
=> _Enum - tabel de enumerare - câte unul pentru fiecare enumerare.
* Planuri de tipuri de caracteristici
=> _Chrc - tabelul principal al diagramei de tipuri de caracteristici.
=> _Chrc _VT - secțiune tabelară a diagramei de tipuri de caracteristici - pentru fiecare secțiune tabelară.
=> _ChrcChangeRec - un tabel pentru înregistrarea modificărilor în planul tipurilor caracteristice. Creat dacă diagrama tipurilor de caracteristici participă la cel puțin un plan de schimb.
* Planuri de conturi
=> _Acc - tabelul principal al planului de conturi.
=> _Acc _ExtDim - un tabel de tipuri de subconturi ale planului de conturi, creat pentru planul de conturi dacă numărul maxim de subconturi este mai mare decât zero.
=> _Acc _VT - secțiune tabelară a planului de conturi, creată pentru fiecare secțiune tabelară a planului de conturi.
=> _AccChangeRec - un tabel pentru înregistrarea modificărilor în planul de conturi. Creat dacă planul de conturi participă la cel puțin un plan de schimb.
* Planuri de tipuri de calcul
=> _CalcKind - tabelul principal al diagramei de tipuri de calcul.
=> _CalcKind _BaseCK - un tabel cu tipuri de calcul de bază, creat pentru o diagramă cu tipuri de calcul dacă proprietatea sa „Dependență de bază” are o altă valoare decât „Nu depinde”.
=> _CalcKind _DisplacedCK - tabel de tipuri de calcul deplasate, creat pentru diagrama de tipuri de calcul dacă caseta de selectare „Folosește perioada de valabilitate” este bifată pentru acesta.
=> _CalcKind _LeadingCK - tabelul principalelor tipuri de calcul - pentru fiecare diagramă a tipurilor de calcul.
=> _CalcKindDN - se creează un tabel auxiliar pentru ordinul de preempțiune dacă pentru graficul tipurilor de calcul este bifată caseta de selectare „Perioada de valabilitate a utilizărilor”.
=> _CalcKind _VT - secțiune tabelară a planului de tipuri de calcul, creată pentru fiecare secțiune tabelară.
=> _CalcKindChangeRec - un tabel pentru înregistrarea modificărilor în planul de tipuri de calcul. Creat dacă diagrama tipurilor de calcul participă la cel puțin un plan de schimb.
* Registre de informații
=> _InfoReg - tabelul mișcărilor registrului de informații.
=> _InfoRegChangeRec - tabel de înregistrare a modificărilor în registrul de informații. Creat dacă registrul de informații participă la cel puțin un plan de schimb.
* Registre de acumulare
=> _AccumReg - tabelul mișcărilor registrului de acumulare.
=> _AccumRegTotals - un tabel de totaluri ale registrului de acumulare, dacă registrul suportă solduri.
=> _AccumRegTurnovers - tabelul cifrelor de afaceri din registrul de acumulare, dacă registrul suportă rulaje.
=> _AccumRegChangeRec - un tabel pentru înregistrarea modificărilor în registrul de acumulare. Creat dacă registrul de acumulare participă la cel puțin un plan de schimb.
=> _AccumRegOptions - un tabel de setări pentru stocarea totalurilor registrelor de acumulare, unul pentru toate registrele de acumulare.
* Registre contabile
=> _AccntReg - tabelul mișcărilor registrului contabil.
=> _AccntRegED - un tabel de valori al subconto-ului registrului contabil, creat dacă se referă la un plan de conturi, în care numărul maxim de subconto este mai mare decât zero.
=> _AccTtl0 - tabelul totalurilor conturilor.
=> _AccTtl - unde i este de la 1 la număr maxim subconto. Tabelul totalurilor pentru contul cu numărul de tipuri de subconto egal cu i.
=> _AccTtlC - un tabel al totalurilor cifrelor de afaceri între conturi, numai pentru registrul contabil care susține corespondența.
=> _AccntRegChangeRec - un tabel pentru înregistrarea modificărilor în registrul contabil. Creat dacă registrul contabil participă la cel puțin un plan de schimb.
=> _AccntRegOptions - un tabel de setări pentru stocarea totalurilor, unul pentru toate registrele contabile.
* Registre de calcul
=> _CalcReg - tabelul mișcărilor registrului de calcul.
=> _CalcRegActPer - se creează tabelul perioadelor de valabilitate efective pentru registrul de decontare dacă pentru registrul de decontare este setată caseta de validare „Perioada de valabilitate”.
=> _CalcRegChangeRec - un tabel pentru înregistrarea modificărilor în registrul de calcul. Creat pentru fiecare registru de decontare care participă la cel puțin un plan de schimb.
=> _CalcRegRecalc - pentru fiecare alocare se creează un tabel de alocare a registrului de decontare.
=> _CalcRegRecalcChangeRec - tabel de înregistrare a modificărilor de recalculare. Creat dacă alocarea participă la cel puțin un plan de schimb.
* Procese de afaceri
=> _BPRoutePoint - un tabel de puncte de traseu al procesului de afaceri pentru fiecare proces de afaceri.
=> _BusinessProcess - tabelul principal al procesului de afaceri.
=> _BusinessProcess _VT - parte tabelară a procesului de afaceri pentru fiecare parte tabelară.
=> _BusinessProcessChangeRec - un tabel pentru înregistrarea modificărilor în procesul de afaceri. Creat pentru fiecare proces de afaceri care participă la cel puțin un plan de schimb.
* Sarcini
=> _Sarcină - tabelul principal de sarcini.
=> _Sarcină _VT - secțiune tabelară a sarcinii pentru fiecare secțiune tabelară.
=> _TaskChangeRec - un tabel pentru înregistrarea modificărilor în sarcini. Creat pentru fiecare obiect de metadate de tip „sarcină” care participă la cel puțin un plan de schimb.

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!



Ți-a plăcut articolul? Împărtășește-l