Kontakty

1c korešpondencia sql tabuliek a objektov. Štruktúra úložiska databázy (spravované formuláre). Rozdiely od existujúcich implementácií

Štruktúra v programovacom jazyku 1C 8.3 a 8.2 je množina párov „Kľúč“ a „Hodnota“. Pole "Kľúč" má typ reťazca, "Hodnota" môže mať akýkoľvek typ údajov. Zvyčajne sa používa na ukladanie a prenos súboru parametrov medzi procedúrami.

Štruktúru v programovacom jazyku 1C je možné vytvoriť dvoma spôsobmi pomocou konštrukcie „Nová“.

Prvý spôsob:

Štruktúra = Nová štruktúra;
Štruktúra. Vložte ("Parameter kľúča1", "Hodnoty parametra # 1");
Štruktúra. Vložte ("Parameter kľúča2", "Hodnoty parametra # 2");

Druhý spôsob:

Štruktúra = Nová štruktúra ("Parameter kľúča1, Parameter kľúča2", "Hodnoty parametra č. 1", "Hodnoty parametra č. 2");

Obe metódy vytvoria štruktúru, ktorú môžete vidieť na snímke obrazovky z ladenia:

Získajte bezplatné videonávody 267 1C:

Zmena

Štruktúru môžete pridať alebo zmeniť pomocou metódy "Vložiť ()".

Structure.Insert ("KeyName", KeyValue);

Ak potrebujete zmeniť hodnotu starého kľúča, zadajte jeho názov. Ak pridáte nový kľúč, pridajte jedinečný názov vzhľadom na všetky kľúče štruktúry.

Ak chcete odstrániť prvok kolekcie, musíte použiť metódu „Odstrániť“, kde zadáte názov kľúča:

Structure.Remove ("KeyName");

Je tiež možné vymazať všetky objekty v kolekcii:

Structure.Clear ();

Priebeh štruktúry

Ak chcete opakovať kolekciu štruktúry, musíte použiť konštrukciu „Pre každý kľúč a hodnotu zo slučky štruktúry“.

Napríklad:

Pre každý kľúč a význam štruktúrnej slučky
…… // spracovať napríklad zmenu hodnôt
Koniec cyklu;

V každom cykle uvidíme, že máme k dispozícii nasledujúce polia:

Údaje, ktoré určujú logiku fungovania systému založeného na 1C: Enterprise, súvisia s informačnou základňou. Skladovanie informačnú základňu sa vykonáva v databáze vo forme súboru tabuliek, pre ktoré môže 1C: Enterprise 8.1 používať jeden zo štyroch systémov správy databáz (DBMS):
* Vstavaný v 1C: Enterprise 8.1 (verzia súboru infobase). V tomto prípade sú všetky údaje informačnej databázy uložené v súbore s názvom 1Cv8.1CD. Tento súbor má binárny formát a v skutočnosti je databázou pre DBMS zabudovanú do 1C: Enterprise 8.1.
* Microsoft SQL Server (klientsko-serverová verzia infobázy). Všetky údaje databázy sú uložené v databáze údaje spoločnosti Microsoft SQL Server.
* PostgreSQL(klientsko-serverová verzia infobázy). Všetky údaje databázy sú uložené v databáze PostgreSQL dáta.
* IBM DB2(klientsko-serverová verzia infobázy). Všetky údaje informačnej databázy sú uložené v databáze IBM DB2.

Na úrovni databázových objektov (tabuľky, polia, indexy a pod.) má súborová aj klientsko-serverová verzia infobázy podobný formát (líši sa v nepodstatných detailoch). Niektoré informácie o tomto formáte sú uvedené nižšie.

Celá informačná báza je prezentovaná v databáze ako súbor tabuliek. Medzi nimi je niekoľko tabuliek, ktoré sú nevyhnutne prítomné v prezentácii akejkoľvek informačnej databázy:

* Konfigurácia- hlavná konfigurácia informačnej bázy. Táto konfigurácia zodpovedá skutočnej dátovej štruktúre a používa ju 1C: Enterprise 8.0 v režime Enterprise.
* ConfigSave- konfigurácia upravená konfigurátorom. Konfigurácia z ConfigSave sa prepíše v Config, keď sa v konfigurátore vykoná "Aktualizácia konfigurácie databázy" a naopak - keď sa v konfigurátore vykoná operácia "Konfigurácia - Konfigurácia databázy - Návrat do konfigurácie databázy".
* Súbory obsahuje servisné informácie, napríklad o práci s ukladacím priestorom konfigurácií.
* Parametre obsahuje parametre infobase. Medzi nimi:
=> Zoznam užívateľov infobase.
=> Národné nastavenia informačnej bázy.
=> Tabuľka korešpondencie objektov metadát a objektov databázy (tabuľky, polia, indexy).
=> Niektoré ďalšie informácie.
* _YearOffset- posun dátumov v databáze. Táto tabuľka sa vytvorí iba vtedy pomocou Microsoftu SQL Server.
* DBSchema obsahuje informácie o štruktúre databázy 1C: Enterprise a definuje ďalšie databázové objekty používané touto infobázou.

Pri spustení 1C: Enterprise skontroluje prítomnosť uvedených tabuliek v infobáze a ak niektorá z nich chýba, zobrazí sa hlásenie „infobáza zničená“. Absencia všetkých uvedených tabuliek znamená, že informačná základňa je prázdna. V druhom prípade sa vytvoria tieto tabuľky.

Zoznam a štruktúra ostatných databázových tabuliek je určená špecifickou konfiguráciou, konkrétne objektmi metadát, ktoré sú v nej definované. Každý názov tabuľky pozostáva z abecednej predpony, za ktorou nasleduje číslo. Predpona definuje účel tabuľky a číslo vám umožňuje rozlíšiť medzi tabuľkami s rovnakým účelom a odkazmi na rôzne objekty metadát. Ak sa IBM DB2 používa ako DBMS, potom opísaná štruktúra nemá názvy tabuliek, ale ich aliasy.

Ak je v konfigurácii definovaný aspoň jeden výmenný plán s nastaveným príznakom "Distribuovaná infobáza", vytvoria sa nasledujúce tabuľky:

* _ConfigChangeRec- tabuľka pre registráciu zmien v konfiguračných objektoch.
* _ConfigChangeRec_ExtProps- tabuľka názvov súborov zmenených externých vlastností konfiguračných objektov.

Nižšie sú uvedené rôzne objekty metadát, ktorým môžu tabuľky zodpovedať.

* Konštanty
=> _Consts obsahuje aktuálne hodnoty všetkých konštánt definovaných v konfigurácii.
=> _ConstsChangeRec - tabuľka na registráciu konštantných zmien. Vytvorené, ak sa aspoň jedna konštanta zúčastňuje aspoň jedného výmenného plánu.
* Výmenné plány
=> _Uzol - tabuľka výmenného plánu.
=> _Uzol _VT - tabuľková časť výmenného plánu, vytvorená pre každú tabuľkovú časť.
* Referencie
=> _Odkaz - referenčná tabuľka.
=> _Odkaz _VT - tabuľková časť referenčnej knihy - pre každú tabuľkovú časť.
=> _ReferenceChangeRec - tabuľka na registráciu zmien v adresári. Vytvorí sa, ak sa adresár zúčastňuje aspoň jedného výmenného plánu.
* Dokumenty
=> _Dokument - tabuľka dokumentov pre každý objekt metadát "dokument".
=> _Dokument _VT - tabuľková časť dokumentu - pre každú tabuľkovú časť každého dokumentu.
=> _DocumentChangeRec - tabuľka na registráciu zmien objektu metadát typu „dokument“. Vytvorené pre každý objekt metadát typu „dokument“, ak sa zúčastňuje aspoň jedného plánu výmeny.
* Sekvencie dokumentov
=> _Sekvencia - tabuľka registrácie dokumentov - pre každú sekvenciu.
=> _SequenceBoundary - tabuľka hraníc sekvencií - pre každú sekvenciu.
=> _SequenceChangeRec - tabuľka evidencie sekvenčných zmien. Vytvorené pre každú sekvenciu, ktorá sa zúčastňuje aspoň jedného plánu výmeny.
* Denníky dokumentov.
=> _DocumentJournal - tabuľka denníka dokladov, vytvorená pre každý denník dokladov.
* Výčty
=> _Enum - enumeračná tabuľka - jedna pre každý enumeračný zoznam.
* Plány typov charakteristík
=> _Chrc - hlavná tabuľka tabuľky charakteristických typov.
=> _Chrc _VT - tabuľková časť tabuľky typov charakteristík - pre každú tabuľkovú časť.
=> _ChrcChangeRec - tabuľka na registráciu zmien v pláne charakteristických typov. Vytvorí sa, ak sa tabuľka charakteristických typov zúčastňuje aspoň jedného výmenného plánu.
* Účtovné osnovy
=> _Acc - hlavná tabuľka účtovej osnovy.
=> _Acc _ExtDim - tabuľka typov podúčtov účtového rozvrhu, vytvorená pre účtový rozvrh v prípade, že maximálny počet podúčtov je väčší ako nula.
=> _Acc _VT - tabuľkový oddiel účtového rozvrhu, vytvorený pre každý tabuľkový oddiel účtového rozvrhu.
=> _AccChangeRec - tabuľka pre evidenciu zmien účtového rozvrhu. Vytvorí sa, ak sa účtová osnova zúčastňuje aspoň jedného výmenného plánu.
* Plány typov výpočtov
=> _CalcKind - hlavná tabuľka tabuľky typov výpočtu.
=> _CalcKind _BaseCK - tabuľka základných typov výpočtov, vytvorená pre tabuľku typov výpočtov, ak jej vlastnosť "Základná závislosť" má inú hodnotu ako "Nezávisí".
=> _CalcKind _DisplacedCK - tabuľka presunutých typov výpočtu, vytvorená pre tabuľku typov výpočtu, ak je pre ňu zaškrtnuté políčko "Používa dobu platnosti".
=> _CalcKind _LeadingCK - tabuľka hlavných výpočtových typov - pre každú tabuľku výpočtových typov.
=> _CalcKindDN - pomocná tabuľka pre predkupný príkaz, ktorá sa vytvorí, ak je v tabuľke typov výpočtu zaškrtnuté políčko "Používa dobu platnosti".
=> _CalcKind _VT - tabuľková časť plánu typov výpočtov, vytvorená pre každú tabuľkovú časť.
=> _CalcKindChangeRec - tabuľka pre evidenciu zmien v pláne druhov kalkulácií. Vytvorí sa, ak sa tabuľka typov výpočtu zúčastňuje aspoň jedného plánu výmeny.
* Registre informácií
=> _InfoReg - tabuľka pohybov registra informácií.
=> _InfoRegChangeRec - tabuľka registrácie zmien v registri informácií. Vytvorí sa, ak sa informačný register zúčastňuje aspoň jedného plánu výmeny.
* Akumulačné registre
=> _AccumReg - tabuľka pohybov registra akumulácie.
=> _AccumRegTotals - tabuľka súčtov registra akumulácie, ak register podporuje zostatky.
=> _AccumRegTurnovers - tabuľka obratov registra akumulácie, ak register podporuje obraty.
=> _AccumRegChangeRec - tabuľka na registráciu zmien v akumulačnom registri. Vytvorí sa, ak sa akumulačný register zúčastňuje aspoň jedného výmenného plánu.
=> _AccumRegOptions - tabuľka nastavení pre ukladanie súčtov akumulačných registrov, jedna pre všetky akumulačné registre.
* Účtovné registre
=> _AccntReg - tabuľka pohybov účtovného registra.
=> _AccntRegED - tabuľka hodnôt čiastkového súpisu účtovného registra, vytvorená, ak sa vzťahuje na účtovú osnovu, v ktorej je maximálny počet čiastkových súpisov väčší ako nula.
=> _AccTtl0 - tabuľka súčtov účtov.
=> _AccTtl - kde i je od 1 do maximálny počet subconto. Tabuľka súčtov pre účet s počtom typov subkonta rovným i.
=> _AccTtlC - tabuľka celkových obratov medzi účtami, len pre účtovný register, ktorý podporuje korešpondenciu.
=> _AccntRegChangeRec - tabuľka na evidenciu zmien v účtovnom registri. Vytvorí sa, ak sa účtovný register zúčastňuje aspoň jedného výmenného plánu.
=> _AccntRegOptions - tabuľka nastavení ukladania súčtov, jedna pre všetky účtovné registre.
* Výpočtové registre
=> _CalcReg - tabuľka pohybov výpočtového registra.
=> _CalcRegActPer - tabuľka skutočných dôb platnosti pre register zúčtovania sa vytvorí, ak je pre register zúčtovania nastavené zaškrtávacie políčko "Doba platnosti".
=> _CalcRegChangeRec - tabuľka na registráciu zmien v registri výpočtov. Vytvorený pre každý register osád, ktorý sa zúčastňuje aspoň jedného výmenného plánu.
=> _CalcRegRecalc - pre každý prepočet sa vytvorí tabuľka pre prepočet kalkulačného registra.
=> _CalcRegRecalcChangeRec - tabuľka evidencie zmien prepočtu. Vytvorí sa, ak sa alokácia zúčastňuje aspoň jedného výmenného plánu.
* Obchodné procesy
=> _BProutePoint - tabuľka bodov trasy obchodného procesu pre každý obchodný proces.
=> _BusinessProcess - hlavná tabuľka obchodného procesu.
=> _BusinessProcess _VT - tabuľková časť obchodného procesu pre každú tabuľkovú časť.
=> _BusinessProcessChangeRec - tabuľka na registráciu zmien v obchodnom procese. Vytvorené pre každý obchodný proces, ktorý sa zúčastňuje aspoň jedného výmenného plánu.
* Úlohy
=> _Úloha - tabuľka hlavných úloh.
=> _Úloha _VT - tabuľková časť úlohy pre každú tabuľkovú časť.
=> _TaskChangeRec - tabuľka na registráciu zmien v úlohách. Vytvorené pre každý objekt metadát typu „úloha“, ktorý sa zúčastňuje aspoň jedného plánu výmeny.

Keď používate IBM DB2, predpony aliasov tabuliek nezačínajú podčiarkovníkom, ale okamžite začínajú abecednou časťou.

Počet týchto tabuliek závisí od funkčnosti konfigurácie a môže byť dosť veľký. V normálnom režime 1C: Enterprise nekontroluje ich prítomnosť, ako aj integritu a konzistenciu údajov, ktoré obsahujú. Preto je dôležité, aby databáza, v ktorej sa nachádza informačná báza 1C: Enterprise 8.1, bola chránená pred neoprávneným prístupom a aby sa jej úprava vykonávala iba pomocou 1C: Enterprise. Na overenie je potrebné použiť funkciu „Správa – test a opravy“ zabudovanú v konfigurátore.

Dôležité je aj to, aby sa databáza uchovávajúca infobázu zálohovala a obnovovala len celá. Na tento účel sa odporúča použiť finančné prostriedky Rezervovať kópiu databázy vložené do používaných DBMS. Verziu súboru informačnej databázy je možné zálohovať skopírovaním súboru 1Cv8.1CD.

Konfigurátor má špeciálna funkcia: Administrácia - Uvoľnite informačnú základňu. Dá sa použiť na vyloženie zadaný súbor(súbor výpisu) všetky údaje súvisiace s infobázou a nič iné. Reverzná funkcia "Načítať infobázu" umožňuje načítanie všetkých údajov z nahrávaného súboru do aktuálnej infobáze namiesto existujúcich. Tieto funkcie je možné použiť aj na zálohovanie dát infobase vo verziách súborov aj klient-server.

Platforma 1C je nástroj na vysokej úrovni pre prácu s databázami. Vo všeobecnosti vývojár nemusí premýšľať o tom, čo a ako sa deje na strane DBMS, pretože platforma sama rozhoduje o tom, koľko tabuliek vytvorí a aké polia budú v nich.

Vo veľkých projektoch je však potrebné pracovať s údajmi priamo, napríklad analyzovať informácie pomocou nástrojov tretích strán alebo ako v mojom prípade integrovať databázu s externé aplikácie... V takejto situácii je potrebné mať predstavu o tom, v ktorých poliach fyzických tabuliek hľadať informácie, ktoré potrebujeme.

Vstavaná funkcia je určená práve pre takýto prípad. GetDatabaseStorageStructure () ktorý vráti všetky požadované údaje ako tabuľku hodnôt. Navyše, niektoré detaily (polia a indexy) tejto tabuľky sú samotné tabuľky hodnôt.

Na jednej strane je výhodné mať všetky dáta v jednej štruktúre, no na druhej strane vznikajú ďalšie ťažkosti s prenosom tejto tabuľky klientovi (metóda Load (), bohužiaľ, nenačítava vnorené tabuľky ). Vzhľadom na to je potrebné prebehnúť všetky riadky tabuľky v slučke, čo pri veľkých objemoch vedie k spomaleniu práce.

Najlepšou možnosťou by preto bolo odovzdať názvy objektov metaúdajov funkcii, aby sa znížilo množstvo vrátených údajov. Nie všetky tabuľky DBMS sú však spojené s metaúdajmi konfigurácie, takže možnosť zobrazenia úplný zoznam Odišiel som.

Funkcionalita spracovania

Keď je aktivovaný prvok stromu metadát, vyplní sa zoznam tabuliek, polí a indexov. Keď dvakrát kliknete na koreň stromu, zobrazia sa všetky tabuľky vrátane servisných tabuliek (neodporúča sa, pretože sa zvyšuje množstvo vyhľadávaných údajov).

V tabuľkové častištandardné príkazy vyhľadávania a zoznamu fungujú.

Rozdiely od existujúcich implementácií

Existuje niekoľko podobných publikácií, napríklad a. Ich nevýhoda však spočíva v absencii stromu metadát, čo sťažuje navigáciu. Vyhľadávanie sa vykonáva aj podľa názvov tabuliek a polí v databáze a nie naopak.

Funkčne najbližšie k publikácii autora (). Na rozdiel od nej, dané spracovanie obsahuje najkompletnejší strom metaúdaje (výmenné plány, konštanty, denníky dokumentov atď.). Okrem toho dátová štruktúra je prezentovaná prehľadnejšie: zoznam tabuliek objektu metadát, zoznam polí a zoznam indexov sú zobrazené v samostatných tabuľkových sekciách.

UPD-2018-01-06 (v1.3). Opravená chyba, ktorá sa vyskytla v režime kompatibility 8.3.7 a vyššej (zmenené správanie platformy).

UPD-2012-08-17 (v1.2). Bola urobená záplata pre správne spracovanie naplánovaných úloh, opravená položka pre zobrazenie plánov výpočtových typov, opravené správanie pri prepínaní typu štruktúry v koreňovom adresári konfigurácie.

P.S. Niektorí zamestnávatelia pri prijímaní do zamestnania kladú otázku o počte fyzických a virtuálnych stolov pre registre. Bolo by pekné poznať odpovede na tieto otázky, najmä preto, že ide o úroveň 1C: Professional. Ak sa chcete nielen naučiť túto odpoveď, ale si tieto tabuľky aj „ohmatať“, potom je toto spracovanie určené práve vám!



Páčil sa vám článok? Zdieľaj to