Hiter prehod
Programska možnost za popolno čiščenje:
Ko izvedete vnos v register, se podatki hitro izbrišejo. Če je register informacij velik, bo to trajalo nekaj časa, običajno pa nekaj sekund.
Recordset je poseben "upravljalec" za upravljanje skupine zapisov.
Če izbor po dimenzijah ni nastavljen in začetno branje ni izvedeno z metodo Read(), se v trenutku klica Write() shrani trenutno prazno stanje.
Interaktivno brisanje vnosov v register informacij
V upravljanem načinu delovanja konfiguracije je privzeto omogočena večkratna izbira vpisov v vpisnik, če je vpisnik samostojen (nepodrejen vpisniškemu dokumentu) pa je možen izbris skupine vnosov.
Izberite skozi shift in vse zapise z ukazom Ctrl + A in pritisnite "Delete" ali skozi kontekstni meni "Delete"
Če je število zapisov večje od 1000, bo sistem ob izbiri opozoril o trajanju operacij, vendar bo dovolil nadaljevanje izbire.
Pri seznamih z več kot 5000 vnosi uporaba te metode ni priporočljiva, saj ko se seznam vrstic v polju tabele poveča, se njeno delo močno upočasni.
V običajnih obrazcih je standardno brisati eno vrstico naenkrat.
Obdelava za brisanje vnosov v register informacij
|
|
|
|
Skupinska obdelava informacijskih registrov na osnovi obdelave iz Gmix |
|
V 1C obstaja več vrst registrov:
- Akumulacije, ki hranijo stanja ali promet v numerični obliki;
- Za obračun plač se običajno uporabljajo kalkulacije, ki hranijo vrste kalkulacije in same kalkulacije;
- Računovodske službe s podatki o računovodskih izračunih v obliki Dt-Kt;
- informacijski registri.
Na slednjih se bomo podrobneje posvetili, saj omogočajo zbiranje podatkov iz baze podatkov glede na odseke meritev. Na primer, »Nomenklatura cen« hrani podatke za določeno nomenklaturo in značilnosti za določeno vrsto cene.
Slika 1 Register "Nomenklatura cen"
Značilnosti
Register je lahko periodičen in neperiodični, ko ni potrebno shranjevati zaporedja sprememb. Če pa morate še vedno shraniti, potem je nastavljeno, v katerem obdobju bo program vzpostavil nadzor nad edinstvenostjo zapisov: na sekundo, na dan, mesec, četrtletje in leto.
Slika 2 Periodičnost in način snemanja
Če poskusite ustvariti dva zapisa v istem obdobju, bo program ustvaril napako "Zapis s takimi ključnimi polji obstaja!" in vam ne bo dovolil pisanja v bazo podatkov.
Določite lahko tudi način snemanja. Prvi z "Oddaja v vpisnik", v katerem bodo evidence evidentirane po dokumentih in v vsakem od njih bo naveden dokument-vpisnik. Če izberete drugi - neodvisni način, potem podatkov registrar ne beleži, ampak jih doda na primer neposredno iz seznama ali kot obdelavo.
Slika 3 Načini snemanja
Posebnost periodičnega registra je, da lahko uporabite rezino zadnjih ali prvih, tako da iz baze podatkov pridobite že pripravljene vrednosti o zadnji / prvi nastavljeni vrednosti za določen datum.
Vpis v register informacij 1C
Vrstice v registru s piko in registratorjem, ki vsebuje informacije o virih v kontekstu dimenzij, se imenujejo zapisi.
Za dodajanje vnosa v register se uporablja upravljalnik vnosov ali niz vnosov. Če imajo vnosi v knjigi skupni ključ, je treba uporabiti nabor zapisov. Če želite zabeležiti en zapis, če so vsi zapisi v registru edinstveni, morate uporabiti RecordManager.
Primer zapisa pri uporabi objektaRegisterRegisterRecordSet.
Uporaba upravitelja snemanja:
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();Ko uporabite nabor zapisov in metodo Write, se zapis zapiše v register podrobnosti nabora zapisov. V tem primeru lahko pride tako do samo dodajanja vrstic kot do zamenjave obstoječih vrstic v registru. Pri samostojnih registrih, brez nastavitve filtrov, se vsi vnosi v registru izbrišejo in nadomestijo z dodanimi vpisi.
Če v podrejeni register zapišete podatke brez izbire, bo prišlo do napake.
Primer zapisa z uporabo nabora zapisov v informacijskem registru, ki je podrejen registratorju Nomenklatura cen:
NewRecordSet =RegistriInformation.NomenclaturePrices.CreateRecordSet(); NewRecordSet.Selection.Registrar.Set(Reference); NewRecordSet = NewRecordSet.Add(); NewSetRecord.Period = Reference.Date; NewSetRecord.Nomenclature = Reference.Nomenclature; NewSetRecord.Price = Reference.Price; NewRecordSet.Write();Primer snemanja prek upravitelja snemanja:
Record = RegistersInformation.Currency Rates.CreateRecordManager(); Record.Period = Datum; Record.Course = Tečaj; Record.Currency = Valuta; Write.Write();Iskanje in branje v informacijskem registru
Če želite najti vnos v informacijskem registru in ga prebrati, potrebujete pomoč poizvedb. Na primer, pridobiti moramo cene, ki jih vnese določen registrar:
SELECT Prices of Items.Nomenclature, Prices of Items.Price FROM Register of Information.Prices of Items AS Cene artiklov WHERE Cene artiklov.Registrar = &RegistrarUrejanje in brisanje vnosov
Če želite izbrisati informacijski vnos v register, na primer vse menjalne tečaje EUR, uporabite naslednjo kodo:
Struktura izbire = nova struktura ("Valuta", Slovarji.Valute.Najdi po imenu ("EUR")); Izbira = Registri informacij. Valutni tečaji. Izberi (,SelectionStructure); Medtem ko Selection.Next() LoopRecordManager = Selection.GetRecordManager(); Selection.GetRecordManager().Delete(); EndCycle;Za hitro in popolno brisanje registra lahko uporabite naslednjo kodo:
NewRecord =RegistersInformation.TestRegister.CreateRecordSet(); NewRecord.Record();Za popravljanje in spreminjanje registra ter hitro polnjenje registra s podatki lahko napišete generično obdelavo.
V tem članku si bomo ogledali, kako brisanje in pisanje vnosov v register informacij. In najprej bomo razmislili o izbrisu evidence, saj. ni toliko pomembno ustvarjanje novih zapisov, ampak shranjevanje obstoječih.
In z neprevidnim ravnanjem z registrom informacij je zelo enostavno izbrisati vse obstoječe vnose, kar bo prikazano v nadaljevanju. Kot primer bomo uporabili naslednji register informacij
Brisanje vnosov v register informacij
Kot veste, se za delo z registrom informacij uporablja niz zapisov. Napišimo dve preprosti vrstici kode za naš register in ju zaženimo za izvedbo
Recordset =RegistersInfo. Cena. CreateRecordSet() ; SetRecords. Napiši();
čestitke! Pravkar smo izpraznili vse vnose v informacijski knjigi. Čeprav se zdi, da se pri pisanju praznega nabora zapisov ne more zgoditi nič kaznivega. Toda če se obrnete na pomočnika za sintakso, lahko vidite, da ni protislovja. Če zapišemo nabor zapisov in v metodo Napiši() parametri niso določeni laž(in True je privzeto nadomeščen), se obstoječ nabor zapisov nadomesti s tistim, ki ga pišemo, v skladu z vzpostavljenim izborom. In ker izbire nismo nastavili, so vsi vnosi v register izbrani za zamenjavo in so uspešno zamenjani s praznim nizom vnosov. In to je rake, na katerega včasih stopijo razvijalci, ki niso prvi dan v 1C. Mimogrede, če namenoma želimo popolnoma počistiti register, potem je to metoda, ki jo moramo uporabiti. Na to opozarjam, ker pogosto obstaja koda, ko se pred brisanjem niz zapisov prebere, nato počisti in šele nato zapiše. Čeprav je branje in brisanje nabora zapisov tukaj popolnoma odveč.
Zdaj pa si predstavljajte, da nam ni treba izbrisati vseh vnosov v register, ampak samo tiste z določenimi vrednostmi dimenzij. Algoritem dejanj je v tem primeru enak, le pred snemanjem je treba nastaviti ustrezen filter za naš prazen zapis. V članku o tem smo kot primer obravnavali isti register informacij - Cena. Naj vas spomnim, da smo tam imeli naslednje zapise
Recimo, da želimo izbrisati vnose kje Izdelek - Svinčnik, a Obdobje - 01.01.2017. Naj vas spomnim, da je za občasne registre informacij mogoče nastaviti izbor ne samo po dimenzijah, ampak tudi po obdobju. V tem primeru bo naša koda videti takole
Recordset =RegistersInfo. Cena. CreateRecordSet() ; SetRecords. Izbira. Pika. Set ("20170101") ; SetRecords. Izbira. Izdelek. Set(Imeniki. Blago. FindByName("Svinčnik" ) ) ; SetRecords. Napiši();
Prav tako želim opozoriti na metodo Namesti(). V primeru, ko je vrsta primerjave v izboru Enako ta metoda vam omogoča, da nastavite izbiro z minimalno količino kode.
Po izvedbi te kode bodo naslednji vnosi ostali v našem registru
Seveda lahko pride do bolj zapletenih primerov pri brisanju zapisov. Na primer, ko morate izbrisati zapise za določene vrednosti virov ali atributov.
Tukaj ni več možna uporaba selekcije, saj. nastavite ga lahko samo za dimenzije, zapisovalnike in obdobja. In tukaj je že treba iti skozi enega ali več sklopov zapisov, izbrisati posamezne zapise in prepisati niz.
Dodajanje vnosov v informacijski register
Kot primer izdelave vnosov informacijskega registra bomo obnovili predhodno izbrisane vnose
Recordset =RegistersInfo. Cena. CreateRecordSet() ; SetRecords. Izbira. Pika. Set ("20170101") ; SetRecords. Izbira. Izdelek. Set(Imeniki. Blago. FindByName("Svinčnik" ) ) ; NewRecord = RecordSet. Dodaj(); Nov vnos. Obdobje = "20170101"; Nov vnos. Prodajalec = Imeniki. Nasprotne stranke. FindByName("DOO "Lesprom" "" ) ; Nov vnos. Izdelek = Imeniki. Izdelki. FindByName("Svinčnik"); Nov vnos. Znesek = 10 ; NewRecord = RecordSet. Dodaj(); Nov vnos. Obdobje = "20170101"; Nov vnos. Prodajalec = Imeniki. Nasprotne stranke. FindByName("PJSC ""Pisalne potrebščine" "" ) ; Nov vnos. Izdelek = Imeniki. Izdelki. FindByName("Svinčnik"); Nov vnos. Vsota = 27; SetRecords. Write(False) ;
V metodi Napiši() parameter, odgovoren za zamenjavo obstoječih vnosov, je nastavljen na laž. To pomeni, da bo naš nabor zapisov dodan samo obstoječemu. Prvič, ko koda deluje uspešno. Če poskusimo ponovno izvesti to kodo, bomo prejeli okno s sporočilom o napaki, ker zapise s takšnim naborom meritev že imamo in je nemogoče dodati še enega enakega.
Če pa način preglasitve nastavimo na Resnica, potem pri ponovnem snemanju ne bo prišlo do napake, ker obstoječi vnosi bodo prepisani.
V primeru dela z enim samim zapisom lahko namesto niza zapisov uporabite upravitelja zapisov.
Ne tako dolgo nazaj sem moral počistiti register informacij. Ta register je hranil zgodovino sprememb v nekaterih konfiguracijskih objektih in je vseboval več milijonov vnosov.
Običajen način za programsko brisanje registra informacij, ki ni podrejen registrarju, je pisanje praznega niza zapisov, nekako takole:
RecordSet = DataRegisters.OurRegister.CreateRecordSet(); RecordSet.Write();
Recordset=RegistersInfo. Naš register CreateRecordSet() ; RecordSet. Napiši(); |
Toda v tem primeru bi čiščenje registra na ta način trajalo več ur. Zato je bila izbrana druga metoda - hiter načinčiščenje registra informacij.
Korak 1. Izdelamo varnostno kopijo baze podatkov. Ta postavka seveda ni obvezna, vendar vam bo navada izdelave varnostne kopije pred kakršnim koli potencialno nevarnim dejanjem zagotovo prihranila živce / čas / plačo / kariero.
Korak 2. Kopiramo zahtevani register informacij.
3. korak. Izbrišite izvirni register informacij
4. korak Preimenujte kopijo v izvirnik in uporabite spremembe.
Na tako preprost način bo čiščenje informacijskega registra trajalo nekaj minut, ne glede na velikost tega registra. Razlika je v tem, da se pri drugi metodi tabela registra informacij v celoti izbriše, kar je veliko hitreje.
Skoraj vsak konfiguracijski element je mogoče počistiti na podoben način. Seveda pa nihče ne jamči za pravilnost računovodstva po taki operaciji.
Če ste našli napako ali netočnost, označite del besedila in kliknite Ctrl+Enter.