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 - tabulka výměnného plánu.
=> _Uzel _VT - tabulková část výměnného plánu vytvořená pro každou tabulkovou část.
* Reference
=> _Odkaz - referenční tabulka.
=> _Odkaz _VT - tabulková část příručky - pro každou tabulkovou část.
=> _ReferenceChangeRec - tabulka pro registraci změn v adresáři. Vytvořeno, pokud se adresář účastní alespoň jednoho výměnného plánu.
* Dokumenty
=> _Dokument - tabulka dokumentů pro každý objekt metadat "dokument".
=> _Dokument _VT - tabulková část dokumentu - pro každou tabulkovou část každého dokumentu.
=> _DocumentChangeRec - tabulka pro registraci změn u objektu metadat typu „dokument“. Vytvořeno pro každý objekt metadat typu „dokument“, pokud se účastní alespoň jednoho výměnného plánu.
* Pořadí dokumentů
=> _Sekvence - tabulka registrace dokumentů - pro každou sekvenci.
=> _SequenceBoundary - tabulka hranic sekvence - pro každou sekvenci.
=> _SequenceChangeRec - tabulka registrace změn sekvence. Vytvořeno pro každou sekvenci, která se účastní alespoň jednoho výměnného plánu.
* Časopisy dokumentů.
=> _DocumentJournal - tabulka deníku dokumentů vytvořená pro každý deník dokumentů.
* Výčty
=> _Enum - tabulka výčtu - jedna pro každý výčet.
* Plány charakteristických typů
=> _Chrc - hlavní tabulka grafu charakteristických typů.
=> _Chrc _VT - tabulková část tabulky charakteristických typů - pro každou tabulkovou část.
=> _ChrcChangeRec - tabulka pro registraci změn v plánu charakteristických typů. Vytvořeno, pokud se tabulka charakteristických typů účastní alespoň jednoho výměnného plánu.
* Účtovní osnovy
=> _Acc - hlavní tabulka účtové osnovy.
=> _Acc _ExtDim - tabulka typů podúčtů účtové osnovy vytvořená pro účtovou osnovu, pokud je maximální počet podúčtů větší než nula.
=> _Acc _VT - tabulková část účtové osnovy, vytvořená pro každou tabulkovou část účetní osnovy.
=> _AccChangeRec - tabulka pro registraci změn v účtové osnově. Vytvořeno, pokud se účtová osnova účastní alespoň jednoho výměnného plánu.
* Plány typů výpočtu
=> _CalcKind - hlavní tabulka grafu typů výpočtu.
=> _CalcKind _BaseCK - tabulka základních typů výpočtu, vytvořená pro graf typů výpočtu, pokud má její vlastnost „Základní závislost“ jinou hodnotu než „Nezávisí“.
=> _CalcKind _DisplacedCK - tabulka nahrazených typů výpočtů, vytvořená pro tabulku typů výpočtů, pokud je pro ni zaškrtnuto políčko „Používá dobu platnosti“.
=> _CalcKind _LeadingCK - tabulka hlavních typů výpočtu - pro každý graf typů výpočtu.
=> _CalcKindDN - pomocná tabulka pro předkupní příkaz, vytvořená, pokud je v tabulce typů výpočtu zaškrtnuto políčko „Používá dobu platnosti“.
=> _CalcKind _VT - tabulková část tabulky typů výpočtů, vytvořená pro každou tabulkovou sekci.
=> _CalcKindChangeRec - tabulka pro registraci změn v plánu typů výpočtu. Vytvořeno, pokud se tabulka typů výpočtu účastní alespoň jednoho výměnného plánu.
* Registry informací
=> _InfoReg - tabulka pohybů informačního registru.
=> _InfoRegChangeRec - tabulka registrace změn v registru informací. Vytvořeno, pokud se informační registr účastní alespoň jednoho výměnného plánu.
* Akumulační registry
=> _AccumReg - tabulka pohybů akumulačního registru.
=> _AccumRegTotals - tabulka součtů akumulačního registru, pokud registr podporuje zůstatky.
=> _AccumRegTurnovers - tabulka otáček akumulačního registru, pokud registr podporuje otáčky.
=> _AccumRegChangeRec - tabulka pro registraci změn v akumulačním registru. Vytvořeno, pokud se akumulační registr účastní alespoň jednoho výměnného plánu.
=> _AccumRegOptions - tabulka nastavení úložiště pro souhrnné registry akumulace, jedna pro všechny akumulační registry.
* Účetní registry
=> _AccntReg - tabulka pohybů účetního registru.
=> _AccntRegED - tabulka hodnot dílčího účetního registru, vytvořená, pokud odkazuje na účtovou osnovu, která má maximální počet dílčích obrysů větší než nula.
=> _AccTtl0 - tabulka součtů účtů.
=> _AccTtl - kde i je od 1 do maximálního počtu subkonta. Tabulka součtů pro účet s počtem typů podkonta rovným i.
=> _AccTtlC - tabulka součtů obratů mezi účty, pouze pro účetní registr, který podporuje korespondenci.
=> _AccntRegChangeRec - tabulka pro registraci změn v účetním registru. Vytvořeno, pokud se účetní registr účastní alespoň jednoho výměnného plánu.
=> _AccntRegOptions - jedna tabulka pro ukládání součtů pro všechny účetní registry.
* Výpočtové registry
=> _CalcReg - tabulka pohybů výpočtového registru.
=> _CalcRegActPer - tabulka skutečných dob platnosti pro registr vypořádání je vytvořena, pokud je pro registr vypořádání nastaveno zaškrtávací políčko „Doba platnosti“.
=> _CalcRegChangeRec - tabulka pro registraci změn v registru výpočtu. Vytvořeno pro každý registr vypořádání účastnící se alespoň jednoho výměnného plánu.
=> _CalcRegRecalc - pro každé zúčtování se vytvoří tabulka pro vymazání registru výpočtu.
=> _CalcRegRecalcChangeRec - tabulka registrace změn přepočtu. Vytvořeno, pokud se alokace účastní alespoň jednoho výměnného plánu.
* Podnikové procesy
=> _BPRoutePoint - tabulka směrovacích bodů obchodního procesu pro každý obchodní proces.
=> _BusinessProcess - hlavní tabulka obchodního procesu.
=> _BusinessProcess _VT - tabulková část obchodního procesu pro každou tabulkovou část.
=> _BusinessProcessChangeRec - tabulka pro registraci změn v obchodním procesu. Vytvořeno pro každý obchodní proces účastnící se alespoň jednoho výměnného plánu.
* Úkoly
=> _Úkol - hlavní tabulka úkolů.
=> _Úkol _VT - tabulková část úkolu pro každou tabulkovou část.
=> _TaskChangeRec - tabulka pro registraci změn v úkolech. Vytvořeno pro každý objekt metadat typu „task“, který se účastní alespoň jednoho výměnného plánu.

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: