Platforma 1C je nástroj na vysoké úrovni pro práci s databázemi. Obecně nemusí vývojář přemýšlet o tom, co a jak se děje na straně DBMS, protože samotná platforma rozhoduje, kolik tabulek vytvoří a jaká pole v nich budou.
U velkých projektů je však potřeba pracovat s daty přímo, například analyzovat informace pomocí nástrojů třetích stran nebo, jako v mém případě, integrovat databázi s externími aplikacemi. V takové situaci je nutné mít představu o tom, která pole fyzických tabulek hledat potřebné informace.
Integrovaná funkce je určena právě pro takový případ. GetDatabaseStorageStructure ()který vrací všechna požadovaná data jako tabulku hodnot. Navíc některé podrobnosti (pole a indexy) této tabulky jsou samy o sobě tabulkami hodnot.
Na jedné straně je vhodné mít všechna data v jedné struktuře, ale na druhé straně vznikají při přenosu této tabulky klientovi další potíže (metoda Load () bohužel nenačte vnořené tabulky) . Z tohoto důvodu je nutné projít všechny řádky tabulky ve smyčce, což při velkých objemech vede ke zpomalení práce.
V tomto ohledu je nejlepší možností předat názvy objektů metadat funkci, aby se snížilo množství vrácených dat. Ne všechny tabulky DBMS jsou však spojeny s metadaty konfigurace, takže jsem nechal příležitost zobrazit celý seznam.
Funkce zpracování
Když je aktivován prvek stromu metadat, vyplní se seznam tabulek, polí a indexů. Když dvakrát kliknete na kořen stromu, zobrazí se všechny tabulky včetně tabulek služeb (nedoporučuje se, protože se zvyšuje množství vyhledávaných dat).
V tabulkových částech fungují standardní příkazy pro vyhledávání a seznamy.
Rozdíly od stávajících implementací
Existuje například několik podobných publikací a. Jejich nevýhodou je však absence stromu metadat, což ztěžuje navigaci. Hledání se také provádí podle názvů tabulek a polí v databázi, nikoli naopak.
Nejblíže funkčnosti publikaci autora (). Naproti tomu tato léčba obsahuje nejkompletnější strom metadata (výměnné plány, konstanty, deníky dokumentů atd.). kromědatová struktura je prezentována jasněji: seznam tabulek objektu metadat, seznam polí a seznam indexů jsou zobrazeny v samostatných tabulkových částech.
UPD-2018-01-06 (v1.3). Opravená chyba, ke které došlo v režimu kompatibility 8.3.7 a vyšším (chování platformy se změnilo).
UPD-2012-08-17 (v1.2). Byla vytvořena oprava pro správné zpracování naplánovaných úkolů, opravena položka pro zobrazení plánů typů výpočtu, opraveno chování při přepínání typu struktury v kořenovém adresáři konfigurace.
P.S. Někteří zaměstnavatelé se při najímání ptají na počet fyzických a virtuálních tabulek pro registry. Bylo by hezké znát odpovědi na tyto otázky, zejména proto, že se jedná o úroveň 1C: Profesionální. Pokud se chcete nejen naučit tuto odpověď, ale také „cítit“ tyto tabulky, pak je toto zpracování pro vás!
Data, která určují logiku fungování systému založeného na 1C: Enterprise, souvisí s informační základnou. Infobase je uložena v databázi ve formě sady tabulek, pro které 1C: Enterprise 8.1 může používat jeden ze čtyř systémů pro správu databází (DBMS):
* Vestavěnýv 1C: Enterprise 8.1 (souborová verze infobase). V tomto případě jsou všechna data z databáze uložena v souboru s názvem 1Cv8.1CD. Tento soubor má binární formát a je to v podstatě databáze pro DBMS zabudovanou do 1C: Enterprise 8.1.
* Microsoft SQL Server (verze infobase klient-server). Všechna data z databáze jsou uložena v databázi Microsoft SQL Server.
* PostgreSQL (verze infobase klient-server). Veškerá data z databáze jsou uložena v databázi PostgreSQL.
* IBM DB2 (verze infobase klient-server). Veškerá data z databáze jsou uložena v databázi IBM DB2.
Na úrovni databázových objektů (tabulky, pole, indexy atd.) Mají souborová i klientsko-serverová verze infobase podobný formát (liší se v nepodstatných detailech). Některé informace o tomto formátu jsou uvedeny níže.
Celá databáze je v databázi prezentována jako sada tabulek. Mezi nimi existuje několik tabulek, které jsou nutně přítomny v prezentaci jakékoli infobase:
* Konfigurace - hlavní konfigurace infobase. Tato konfigurace odpovídá struktuře skutečných dat a používá ji 1C: Enterprise 8.0 v režimu Enterprise.
* ConfigSave - konfigurace upravená konfigurátorem. Konfigurace z ConfigSave je přepsána v Config, když je v Konfigurátoru provedena „Aktualizace konfigurace databáze“, a naopak - když je v Konfigurátoru provedena operace „Konfigurace - Konfigurace databáze - Návrat do konfigurace databáze“.
* Soubory obsahuje informace o službě, například o práci s úložištěm konfigurace.
* Parametry obsahuje parametry základny. Mezi nimi:
=>
Seznam uživatelů databáze.
=>
Národní nastavení informační základny.
=>
Korespondenční tabulka objektů metadat a databázových objektů (tabulky, pole, indexy).
=>
Některé další informace.
* _YearOffset - posun dat v databázi. Tato tabulka je vytvořena pouze při použití serveru Microsoft SQL Server.
* DBSchema obsahuje informace o struktuře databáze 1C: Enterprise a definuje další databázové objekty používané touto infobází.
Při spuštění 1C: Enterprise kontroluje přítomnost uvedených tabulek v databázi, a pokud některá z nich chybí, zobrazí se zpráva „databáze zničena“. Absence všech uvedených tabulek znamená, že je základní databáze prázdná. V druhém případě budou tyto tabulky vytvořeny.
Seznam a struktura dalších databázových tabulek je dána specifickou konfigurací, konkrétně v ní definovanými objekty metadat. Každý název tabulky se skládá z abecední předpony následované číslem. Předpona definuje účel tabulky a číslo umožňuje rozlišovat mezi tabulkami stejného účelu, které odkazují na různé objekty metadat. Pokud je IBM DB2 používán jako DBMS, pak popsaná struktura nemá názvy tabulek, ale jejich aliasy.
Pokud konfigurace obsahuje alespoň jeden plán výměny se sadou příznaků „Distribuovaná databáze“, vytvoří se následující tabulky:
* _ConfigChangeRec - tabulka pro registraci změn v konfiguračních objektech.
* _ConfigChangeRec_ExtProps - tabulka názvů souborů změněných externích vlastností konfiguračních objektů.
Níže jsou uvedeny různé objekty metadat, kterým mohou tabulky odpovídat.
* Konstanty
=>
_Consts obsahuje aktuální hodnoty všech konstant definovaných v konfiguraci.
=>
_ConstsChangeRec - tabulka pro registraci neustálých změn. Vytvořeno, pokud se alespoň jedna konstanta účastní alespoň jednoho výměnného plánu.
* Burzovní plány
=>
_Uzel
=>
_Uzel
* Reference
=>
_Odkaz
=>
_Odkaz
=>
_ReferenceChangeRec
* Dokumenty
=>
_Dokument
=>
_Dokument
=>
_DocumentChangeRec
* Pořadí dokumentů
=>
_Sekvence
=>
_SequenceBoundary
=>
_SequenceChangeRec
* Časopisy dokumentů.
=>
_DocumentJournal
* Výčty
=>
_Enum
* Plány charakteristických typů
=>
_Chrc
=>
_Chrc
=>
_ChrcChangeRec
* Účtovní osnovy
=>
_Acc
=>
_Acc
=>
_Acc
=>
_AccChangeRec
* Plány typů výpočtu
=>
_CalcKind
=>
_CalcKind
=>
_CalcKind
=>
_CalcKind
=>
_CalcKindDN
=>
_CalcKind
=>
_CalcKindChangeRec
* Registry informací
=>
_InfoReg
=>
_InfoRegChangeRec
* Akumulační registry
=>
_AccumReg
=>
_AccumRegTotals
=>
_AccumRegTurnovers
=>
_AccumRegChangeRec
=>
_AccumRegOptions - tabulka nastavení úložiště pro souhrnné registry akumulace, jedna pro všechny akumulační registry.
* Účetní registry
=>
_AccntReg
=>
_AccntRegED
=>
_AccTtl0
=>
_AccTtl
=>
_AccTtlC
=>
_AccntRegChangeRec
=>
_AccntRegOptions - jedna tabulka pro ukládání součtů pro všechny účetní registry.
* Výpočtové registry
=>
_CalcReg
=>
_CalcRegActPer
=>
_CalcRegChangeRec
=>
_CalcRegRecalc
=>
_CalcRegRecalcChangeRec
* Podnikové procesy
=>
_BPRoutePoint
=>
_BusinessProcess
=>
_BusinessProcess
=>
_BusinessProcessChangeRec
* Úkoly
=>
_Úkol
=>
_Úkol
=>
_TaskChangeRec
Pokud používáte IBM DB2, předpony aliasů tabulky nezačínají podtržítkem, ale okamžitě začínají abecední částí.
Počet těchto tabulek závisí na funkčnosti konfigurace a může být poměrně velký. V normálním režimu 1C: Enterprise nekontroluje jejich přítomnost a integritu a konzistenci dat, která obsahují. Proto je důležité, aby databáze, která obsahuje infobázi 1C: Enterprise 8.1, byla chráněna před neoprávněným přístupem a aby její modifikace byla prováděna pouze pomocí 1C: Enterprise. Chcete-li to zkontrolovat, použijte funkci „Správa - testování a opravy“ zabudovanou do konfigurátoru.
Je také důležité, aby byla databáze s uložením infobase zálohována a obnovena pouze v plném rozsahu. Za tímto účelem se doporučuje používat nástroje pro zálohování databáze zabudované do použitého systému DBMS. Souborovou verzi infobase lze zálohovat zkopírováním souboru 1Cv8.1CD.
Konfigurátor má speciální funkci: Správa - Nahrát informační základnu. S jeho pomocí můžete nahrát do zadaného souboru (upload file) všechna data související s infobase a nic jiného. Zpětná funkce „Načíst databázi“ umožňuje načíst všechna data ze souboru pro nahrávání do aktuální databáze namísto stávajících. Tyto funkce lze také použít k zálohování dat infobase ve verzích souborů i klient-server.
Struktura v programovacím jazyce 1C 8.3 a 8.2 je sada párů „klíč“ a „hodnota“. Pole „Klíč“ má typ řetězce, „Hodnota“ může mít jakýkoli datový typ. Obvykle se používá k ukládání a přenosu sady parametrů mezi procedurami.
Strukturu v programovacím jazyce 1C lze pomocí konstrukce „Nové“ vytvořit dvěma způsoby.
První způsob:
Struktura \u003d Nová struktura;
Struktura. Vložit ("KeyParameter1", "Hodnoty parametru # 1");
Struktura. Vložit ("KeyParameter2", "Hodnoty parametru # 2");
Druhý způsob:
Struktura \u003d Nová struktura ("KeyParameter1, KeyParameter2", "hodnoty parametrů # 1", "hodnoty parametrů # 2");
Obě metody vytvoří strukturu, kterou můžete vidět na snímku obrazovky z ladění:
Získejte zdarma 267 1C videonávodů:
Změna
Strukturu můžete přidat nebo změnit pomocí metody „Insert ()“.
Structure.Insert ("KeyName", KeyValue);
Pokud potřebujete změnit hodnotu starého klíče, zadejte jeho název. Pokud přidáte nový klíč, přidejte jedinečný název relativní ke všem klíčům struktury.
Chcete-li odstranit prvek kolekce, musíte použít metodu „Odstranit“, při které předáte název klíče:
Structure.Remove ("KeyName");
Je také možné vymazat všechny objekty v kolekci:
Structure.Clear ();
Traverz struktury
Chcete-li iterovat po kolekci struktur, musíte použít konstrukci „Pro každý klíč a hodnotu ze smyčky struktury“.
Například:
Pro každý klíč a význam strukturní smyčky
…… // zpracovat například změnit hodnoty
Konec cyklu;
V každém cyklu bude vidět, že máme k dispozici následující pole: