Vytvářejte a mažte položky registru informací. Vytváření a mazání záznamů registru informací 1s 8 periodická změna registru informací podle dokumentu
Rychlý průchod
Možnost softwaru pro kompletní čištění:
Když provedete zápis do registru, informace budou rychle odstraněny. Pokud je registr informací velký, bude to nějakou dobu trvat, ale obvykle několik sekund.
Sada záznamů je speciální "správce" pro správu skupiny záznamů.
Pokud není nastaven výběr podle rozměrů a počáteční čtení není provedeno metodou Read(), pak se v okamžiku volání Write() uloží aktuální prázdný stav.
Interaktivní mazání záznamů registru informací
Ve spravovaném režimu provozu konfigurace je standardně povolen vícenásobný výběr záznamů registru a pokud je registr nezávislý (není podřízen matričnímu dokumentu), je možné skupinu záznamů smazat.
Vyberte přes shift a všechny záznamy příkazem Ctrl + A a stiskněte "Delete" nebo přes kontextové menu "Delete"
Pokud je počet záznamů větší než 1000, pak systém při výběru vydá upozornění na dobu trvání operací, ale umožní výběr pokračovat.
U seznamů s více než 5000 položkami se použití této metody nedoporučuje, protože když se seznam řádků v poli tabulky zvětší, jeho práce se dramaticky zpomalí.
V normálních formulářích je standardní mazat jeden řádek najednou.
Zpracování pro mazání záznamů registru informací
|
|
|
|
Skupinové zpracování informačních registrů na základě zpracování z Gmix |
|
Není to tak dávno, co jsem potřeboval vyčistit registr informací. Tento registr uchovával historii změn v některých konfiguračních objektech a obsahoval několik milionů záznamů.
Obvyklý způsob, jak programově vyčistit registr informací, který není podřízen registrátorovi, je zapsat prázdnou sadu záznamů, něco takového:
RecordSet = DataRegisters.OurRegister.CreateRecordSet(); RecordSet.Write();
Recordset=Informace o registrech. Náš registr CreateRecordSet() ; RecordSet. Napsat() ; |
Ale v tomto případě by čištění registru tímto způsobem trvalo mnoho hodin. Proto byl zvolen jiný způsob – rychlý způsob vymazání registru informací.
Krok 1. Vytvoříme záložní kopii databáze. Tato položka samozřejmě není povinná, ale zvyk vytvořit si záložní kopii před jakoukoli potenciálně nebezpečnou akcí vám rozhodně ušetří nervy / čas / plat / kariéru.
Krok 2. Zkopírujeme požadovaný registr informací.
Krok 3. Vymažte původní registr informací
Krok 4 Přejmenujte kopii na originál a použijte změny.
Takto jednoduchým způsobem bude vymazání informačního registru trvat několik minut, bez ohledu na velikost tohoto registru. Rozdíl je v tom, že ve druhé metodě je tabulka informačních registrů zcela odstraněna, což je mnohem rychlejší.
Podobným způsobem lze vymazat téměř jakýkoli konfigurační prvek. Ale za správnost účetnictví po takové operaci samozřejmě nikdo neručí.
Pokud jste našli chybu nebo nepřesnost, zvýrazněte část textu a klikněte Ctrl+Enter.
V tomto článku se podíváme, jak na to mazat a zapisovat položky registru informací. A v první řadě zvážíme mazání záznamů, protože. není ani tak důležité vytvářet nové záznamy, ale uložit ty stávající.
A při neopatrné manipulaci s registrem informací je velmi snadné smazat všechny existující záznamy, které budou zobrazeny níže. Jako příklad použijeme následující informační registr
Mazání záznamů registru informací
Jak víte, pro práci s registrem informací se používá sada záznamů. Napíšeme dva jednoduché řádky kódu pro náš registr a spustíme je ke spuštění
Recordset = RegistryInfo. Cena. CreateRecordSet() ; SetRecords. Napsat() ;
Gratulujeme! Právě jsme vyhodili všechny záznamy v informační knize. I když by se zdálo, že při zápisu prázdného souboru záznamů se nemůže stát nic kriminálního. Pokud se však obrátíte na asistenta syntaxe, uvidíte, že v tom není žádný rozpor. Pokud zapíšeme sadu záznamů a v metodě Napsat() parametry nejsou specifikovány Lhát(a ve výchozím nastavení je nahrazeno True), pak je stávající sada záznamů nahrazena tím, který zapisujeme, v souladu se zavedeným výběrem. A protože jsme nenastavili výběr, všechny položky registru jsou vybrány k nahrazení a jsou úspěšně nahrazeny prázdnou sadou položek. A to je hráblo, na které občas šlápnou vývojáři, kteří nejsou první den v 1C. Mimochodem, pokud chceme schválně úplně vyčistit registr, pak je to metoda, kterou bychom měli použít. Upozorňuji na to, protože dost často dochází ke kódu, kdy se před smazáním načte sada záznamů, pak se vymaže a teprve potom zapíše. I když čtení a mazání sady záznamů je zde zcela nadbytečné.
Nyní si představte, že nepotřebujeme mazat všechny položky registru, ale pouze s konkrétními naměřenými hodnotami. Algoritmus akce je v tomto případě stejný, pouze před záznamem je nutné nastavit příslušný filtr pro naši prázdnou sadu záznamů. V článku o, jako příklad, jsme zvažovali stejný registr informací - Cena. Dovolte mi připomenout, že jsme tam měli následující záznamy
Řekněme, že chceme odstranit záznamy kde Produkt - Tužka, A Období - 01.01.2017. Připomínám, že u periodických registrů informací lze výběr nastavit nejen podle rozměrů, ale také podle období. V tomto případě bude náš kód vypadat takto
Recordset = RegistryInfo. Cena. CreateRecordSet() ; SetRecords. Výběr. Doba. Set("20170101") ; SetRecords. Výběr. Produkt. Set(Adresáře. Zboží. FindByName("Tužka" ) ) ; SetRecords. Napsat() ;
Také chci upozornit na metodu Nainstalujte(). V případě, kdy typ srovnání ve výběru je Rovná se tato metoda umožňuje nastavit výběr s minimálním množstvím kódu.
Po provedení tohoto kódu zůstanou v našem registru následující položky
Při mazání záznamů mohou samozřejmě nastat složitější případy. Například, když potřebujete odstranit záznamy pro určité hodnoty zdrojů nebo atributů.
Zde již nelze použít výběr, protože. lze jej nastavit pouze pro dimenze, záznamníky a období. A zde již musíte projít jednu nebo více sad záznamů, jednotlivé záznamy smazat a sadu přepsat.
Přidávání záznamů do registru informací
Jako příklad vytváření záznamů registru informací obnovíme dříve smazané záznamy
Recordset = RegistryInfo. Cena. CreateRecordSet() ; SetRecords. Výběr. Doba. Set("20170101") ; SetRecords. Výběr. Produkt. Set(Adresáře. Zboží. FindByName("Tužka" ) ) ; NewRecord = RecordSet. Add() ; NewEntry. Období = "20170101"; NewEntry. Prodejce = Adresáře. Protistrany. FindByName("LLC "Lesprom" "" ); NewEntry. Produkt = Adresáře. Zboží. FindByName("Tužka" ) ; NewEntry. Částka = 10 ; NewRecord = RecordSet. Add() ; NewEntry. Období = "20170101"; NewEntry. Prodejce = Adresáře. Protistrany. FindByName("PJSC ""Papírnictví" "" ); NewEntry. Produkt = Adresáře. Zboží. FindByName("Tužka" ) ; NewEntry. Součet = 27; SetRecords. Write(False) ;
V metodě Napsat() parametr zodpovědný za nahrazení existujících položek je nastaven na Lhát. To znamená, že naše sada záznamů bude přidána pouze k té stávající. Poprvé kód funguje úspěšně. Pokud se pokusíme spustit tento kód znovu, zobrazí se okno s chybovou zprávou, protože již máme záznamy s takovým souborem měření a nelze přidat další stejné.
Pokud ale nastavíme režim přepsání na Pravda, pak se při opětovném nahrávání nevyskytne žádná chyba, protože existující záznamy budou přepsány.
V případě práce s jedním záznamem můžete místo sady záznamů použít správce záznamů.
V 1C existuje několik typů registrů:
- Akumulace, které uchovávají zůstatky nebo obraty v číselné formě;
- Pro mzdovou agendu se obvykle používají kalkulace, které uchovávají typy kalkulací a kalkulace samotné;
- Účetní oddělení s údaji o účetních kalkulacích ve tvaru Dt-Kt;
- informační rejstříky.
Posledním jmenovaným se budeme věnovat podrobněji, protože umožňují sestavovat data z databáze podle úseků měření. Například „Cenová nomenklatura“ ukládá data pro konkrétní nomenklaturu a charakteristiky pro určitý typ ceny.
Obr.1 Registr "Cenová nomenklatura"
Charakteristika
Registr může být periodický i neperiodický, kdy není nutné ukládat pořadí změn. Pokud ale přesto potřebujete ukládat, pak je nastaveno, v jakém období program nastaví kontrolu nad jedinečností záznamů: za sekundu, za den, měsíc, čtvrtletí a rok.
Obr.2 Periodicita a režim záznamu
Pokud se pokusíte vytvořit dva záznamy ve stejném období, program vygeneruje chybu "Záznam s takovými klíčovými poli existuje!" a nedovolí vám zapisovat do databáze.
Můžete také určit režim nahrávání. První s "Podání na podatelnu", ve kterém budou záznamy evidovány podle dokumentů a v každém z nich bude uveden registrátor dokumentů. Zvolíte-li druhý - nezávislý režim, pak data registrátor nezaznamenává, ale přidává např. přímo ze seznamu nebo jako zpracování.
Obr.3 Režimy záznamu
Zvláštností periodického registru je, že můžete použít výřez z posledních nebo prvních a získat hotové hodnoty z databáze o poslední / první nastavené hodnotě pro určité datum.
Zápis do registru informací 1C
Řádky v registru s tečkou a registrátorem obsahující informace o zdrojích v kontextu dimenzí se nazývají záznamy.
K přidání záznamu do registru se používá buď správce záznamů, nebo sada záznamů. Pokud mají položky v hlavní knize společný klíč, je nutné použít sadu záznamů. A pro záznam jednoho záznamu, pokud jsou všechny záznamy v registru jedinečné, musíte použít RecordManager.
Příklad záznamu při použití objektuRegisterRegisterRecordSet.
Použití Správce nahrávání:
NewRecord = RegistersInformation.Currency Rates.CreateRecordManager(); NewRecord.Currency = References.Currencies.FindByName("USD"); NewRecord.Period = Datum(31,12,2016); NewRecord.Course = 100; NewRecord.Multiplicity = 1; NewRecord.Record();Při použití sady záznamů a metody zápisu se záznam zapíše do registru podrobností sady záznamů. V tomto případě může dojít jak k pouhému přidání řádků, tak k nahrazení stávajících řádků v registru. U nezávislých registrů budou bez nastavení filtrů všechny záznamy v registru vymazány a nahrazeny přidanými záznamy.
Pokud zapíšete data bez výběru do podřízeného registru, dojde k chybě.
Příklad záznamu využívajícího sadu záznamů v informačním registru podřízeném registrátorovi Nomenklatura cen:
NewRecordSet =Informace o registrech.NomenklaturaCeny.CreateRecordSet(); NewRecordSet.Selection.Registrar.Set(Reference); NewRecordSet = NewRecordSet.Add(); NewSetRecord.Period = Reference.Date; NewSetRecord.Nomenclature = Reference.Nomenclature; NewSetRecord.Price = Reference.Price; NewRecordSet.Write();Příklad nahrávání přes správce nahrávání:
Record = RegistersInformation.Currency Rates.CreateRecordManager(); Record.Period = Datum; Record.Course = Kurz; Record.Currency = Měna; Write.Write();Vyhledávání a čtení v registru informací
Chcete-li najít záznam v registru informací a přečíst si jej, potřebujete pomoc s dotazy. Potřebujeme například získat ceny zadané určitým registrátorem:
VYBERTE ceny položek.Nomenklatura, ceny položek.Cena Z registru informací.Ceny položek JAKO Ceny položek KDE Ceny položek.Registrátor = &RegistrátorÚprava a mazání záznamů
Chcete-li odstranit záznam v registru informací, například všechny směnné kurzy EUR, použijte následující kód:
Struktura výběru = new Structure("Currency", Dictionaries.Currencies.FindBy Name("EUR")); Selection = Registry Information.Murrency Rates.Select(,SelectionStructure); While Selection.Next() LoopRecordManager = Selection.GetRecordManager(); Selection.GetRecordManager().Delete(); EndCycle;Pro rychlé a úplné vymazání registru můžete použít následující kód:
NewRecord =RegistersInformation.TestRegister.CreateRecordSet(); NewRecord.Record();Pro opravu a změnu registru, stejně jako pro rychlé naplnění registru daty, můžete napsat generické zpracování.