Dokumendid, akumulatsiooniregistrid, hoiusüsteemid. Dokumendid, akumulatsiooniregistrid, hoiuregister Kogumisregister kuidas muuta registripidajat kirjes

Selles artiklis tahan vaadelda sellist 1C:Enterprise 8 mehhanismi nagu akumulatsiooniregistrid. See mehhanism võimaldab meil koguda arvnäitajaid ettevõtte tegevuse kohta ning see töötleb neid näitajaid, arvutab välja tulemused ning võimaldab meil saada nende näitajate saldosid ja käivet. Näitena toon GoodsInWarehouses akumulatsiooniregistri konfiguratsioonist “Trade Management”

Seda registrit kasutatakse ettevõtte ladudes olevate kaupade jääkide hoidmiseks tootevaliku, tooteomaduste, seeria ja tootekvaliteedi kontekstis. Need. igal ajal näeme, kui palju konkreetses laos, näiteks “Kesklaos” hoiame kaupa “Meeste saapad”, mille tunnus on “suurus 43”, seeria kuupäevaga “20/08/2011” ja kvaliteet “uus” .


Ja selleks, et see oleks võimalik, tuleb andmed registrisse kirjutada. Platvorm 1C:Enterprise on loodud nii, et andmeid saab registrisse salvestada ainult viitega dokumentidele. Need. kui registris midagi muutub (kauba saabumine või müük), tuleb märkida seda teinud dokument. Tavaliselt salvestatakse andmed registrisse dokumendi postitamisel. Dokumendimoodulis on etteantud protseduur ProcessingProcessing, milles arendaja kirjeldab algoritmi, mille järgi akumulatsiooniregistrites kirjeid moodustatakse.

Vaatame registri loomise protsessi algusest peale. Nagu mäletate, lõime konfiguratsiooni, milles meil juba on kataloogid ja dokumendid. Nüüd lisame sellele kogumisregistri. Lisame kogumisregistri, nimetus “ProductsInWarehouses”, registri liik “Jääud”. “Käibe” registri tüüpi vaatame hiljem. Lisage andmete vahekaardile tüübi "Kataloog. Nomenklatuur" dimensioon "Nomenklatuur" ja lisage numbri (15,3) tüüpi ressurss "Kogus".


Nüüd peame tagama, et dokumendi postitamisel genereeritakse registrikanded. Kuid dokumentide hulgas on meil ainult “Kassa laekumise order” ja “Kuluarve”. Meil ei ole dokumenti, mis teeks sissetulevad liikumised meie registrisse. Loome selle. Koostame dokumendi nimega “Kauba positsioneerimine”, andmete vahekaardile lisame tabeliosa “Kaubad”, sellesse andmed “Nomenklatuur” ja “Kogus”.


Selleks, et meie dokument teeks liikumisi Liikumiste vahekaardil oleva akumulatsiooniregistri “ProductsInWarehouses” järgi, märgi see (register) linnukesega ja vajuta nupule “Liikumise konstruktor”. See konstruktor aitab meil kirjutada registrikirjete genereerimise algoritmi, mis asub juba mainitud protseduuris “Postitamise töötlemine”.

Kujundajas jäta registri liikumise tüübiks “Kviitung”, tabelijaotise väljalt vali “Tooted”, vajuta nuppu “Täida avaldised” ja seejärel nuppu OK.


Avaneb dokumendimoodul, milles on järeltöötluse protseduur juba loodud.
Töötlemisprotseduur (tõrge, režiim)
//((__CONSTRUCTOR_MOVEMENT_REGISTERS
// Selle fragmendi ehitas konstruktor.
// Konstruktori taaskasutamisel lähevad käsitsi tehtud muudatused kaotsi!!!

// registreeri GoodsInWarehouses Saabumine
Movements.ProductsInWarehouses.Write = Tõene;
Liikumised.Tooted ladudes.Clear();
Iga TechStringProducts From Products tsükli jaoks
Liikumine = Movements.ProductsIn Warehouses.Add();
Movement.MovementType = AccumulationMovementType.Incoming;
Movement.Period = kuupäev;


EndCycle;

//))__CONSTRUCTOR_MOVEMENT_REGISTERS
Menetluse lõpp

Nüüd käivitame ettevõtte režiimi ja loome mõned dokumendid. Nüüd on dokumentidel ülemises paneelis alammenüü “Mine”, kust saab vaadata registrites loodud liikumisdokumente.


Et näha, milliseid tooteid meil laos on, teeme aruande, mis näitab “ProductsInWarehouses” registris olevaid jääke.
Minge konfiguraatorirežiimi ja looge aruanne. Määrake nimeks "Ülejäänud tooted". Vormi vahekaardil looge uus aruandevorm ja määrake see peamiseks. Lisame vormile tabeldokumendi välja, seda saab teha menüüst "Vorm-sisesta juhtelement" ja valida elemendi tüüp - arvutustabeli dokumendiväli, anda sellele nimi TabDoc ja asetada see kogu vormile.


Seejärel läheme nuputöötlejasse “Genereeri”, kustutame seal asuva kommentaari, asetame kursori sündmuste käitleja protseduuri teksti sisse, teeme paremklõpsu ja valime “Tulemuste töötlemisega päringu konstruktor”. See võimaldab meil luua päringu ja kuvada selle tulemuse kohe aruandes.
Vahekaardil Tulemuste töötlemine valige "Väljund arvutustabeli dokumenti" ja minge vahekaardile "Tabelid ja väljad". Näeme, et ProductsInWarehouses tabel on esitatud nelja tabelina.

Esimene tabel on loetelu kirjetest, mille lõime dokumenditöötlusel, ülejäänud on virtuaalsed tabelid, mille platvorm ise loob. Need tabelid võimaldavad meil saada töödeldud registriandmeid - perioodi käive, saldod kuupäeva seisuga või saldod ja käive ühes tabelis. Soovime kuvada saldosid, seega valime tabeli Jäägid. Valige sellest tabelist kõik väljad Nomenklatuur ja Järelejäänud kogus. Klõpsake nuppu OK.
Disainer on loonud algoritmi, mis annab meile saldode aruande, peame lihtsalt näitama, kus aruannet kuvada.
Lisame rea:
"TabDoc = FormElements.TabDoc;" enne konstruktori loodud teksti.
TabDoc = FormElements.TabDoc;
//((QUERY_CONSTRUCTOR_WITH_RESULT_PROCESSING
// Selle fragmendi ehitas konstruktor.
// Konstruktori taaskasutamisel lähevad käsitsi tehtud muudatused kaotsi!!!

Layout = Reports.RemainingProducts.GetLayout("Paigutus");
Taotlus = uus taotlus;
Taotlus.Tekst =
"VALI
| Tooted ladudes Ülejäänud laoseisu,
| ESITLUS (Ladudesse jäävad tooted. Nomenklatuur),
| TootedLadudes Ülejäänud kogus
|ALT
| RegistreeriAccumulations.GoodsInWarehouses.Remains AS GoodsInWarehouses Remains";

Tulemus = Query.Run();

HeaderArea = Layout.GetArea("Päis");
AreaFooter = Layout.GetArea("Footer");
TableHeadArea = Layout.GetArea("Tabelipäis");
TableFooterArea = Layout.GetArea("Tabelijalus");
DetailRecordsArea = Layout.GetArea("Üksikasjad");

TabDoc.Clear();
TabDoc.Output(AreaHeader);
TabDoc.Output(Tabelipeaala);
TabDoc.StartAutoGroupingRows();

SelectionDetailRecords = Result.Select();
Kuigi SelectDetailRecords.Next() Loop
AreaDetailRecords.Parameters.Fill(SelectionDetailRecords);
TabDoc.Output(Detailed RecordsArea, DetailedRecords Selection.Level());
EndCycle;
TabDoc.FinishAutoGroupingRows();
TabDoc.Output(Tabelijaluse ala);
TabDoc.Output(AreaFooter);

//))CONSTRUCTOR_QUERY_WITH_RESULT_PROCESSING
Käivitame režiimi 1C:Enterprise ja vaatame, kuidas aruanne töötab.


Nagu näeme, on disainer loonud midagi meile enam-vähem vastuvõetavat.
Meil on ka “Kauba müük”, mis peaks meie saldosid vähendama. Teeme nii, et see ka registri järgi liigutusi moodustab.
Avage dokument vahekaardil Liikumised, märkige ruut meie registri kõrval ja klõpsake nuppu "Liikumise kujundaja".

Registreeri liikumise tüüp, määra kulu, vali tabeliosa “Tooted”, vajuta “Täida avaldised” ja “OK”. Disainer on genereerinud algoritmi dokumentide töötlemiseks, kontrollime seda. Selleks taaskäivitame režiimi 1C:Enterprise ja sisestame uuesti loodud “Tootemüügi” dokumendid.
Seejärel koostame uuesti saldode aruande.


Nagu näha, on saldod vähenenud, mõne positsiooni puhul isegi negatiivseks läinud. See juhtub seetõttu, et me ei kontrolli kaupade müümisel saldode olemasolu.
Meie register "GoodsInWarehouses" on tüüpiline saldoregistri näide, kus on nii sissetulevad kui ka väljaminevad liikumised. Kuid 1C süsteemil on endiselt pöörderegistrid.
Näitena toon registri “Müük”. Iga kord, kui müüme toote kliendile, fikseerime, kes mida ja kui palju meilt ostis. Ja siis aruandest näeme, kui palju meilt nii ja naa kaupa osteti. Eraldi sissetulevaid või väljuvaid liikumisi selles registris ei kajastata. Liigutused on samaväärsed. Nendel juhtudel kasutatakse pöörderegistrit.

Loome sellise registri oma konfiguratsioonis. Lisame uue akumulatsiooniregistri nimega "Müük", registri tüüp "Käive", andmete vahekaardile lisame dimensioonid "Klient" ja "Nomenklatuur", ressursid "Kogus" ja "Kogu".


Pöördume tagasi dokumendi "Toote müük" juurde, liikumise vahekaardil märkige ruut registri "Müük" kõrval ja klõpsake nuppu "Liikumiskujundaja". Klõpsake nuppu (+) (lisa) ja valige register "Müük", seejärel valige nagu tavaliselt tabeliosa ja klõpsake "Täida avaldised". "OK".
// Müügiregister
Movements.Sales.Record = tõene;
Liikumised.Müük.Clear();
Iga TechStringProducts From Products tsükli jaoks
Liikumine = Liikumised.Müük.Lisa();
Movement.Period = kuupäev;
Movement.Client = Klient;
Movement.Nomenclature = TechStringProducts.Nomenclature;
Movement.Quantity = TechStringProducts.Quantity;
Movement.Amount = TechStringProducts.Amount;
EndCycle;

Käivitame 1C ettevõtte režiimi, edastame “Tootemüügi” dokumendid, kontrollime, kas liikumised on moodustatud. Aruande saate ise genereerida; see kõik toimub samal põhimõttel nagu eelmine aruanne, peate valima tabeli "Müük. Käive".

Nüüd lisame oma konfiguratsioonile liidese, et me ei peaks dokumente avama menüü „Toimingud“ kaudu. Avage konfiguraatoris haru "Üldine", otsige sealt üles Liidesed ja lisage uus. Avaneb liidese kujundaja, milles klõpsake nuppu "Ehita". Kõik. Lihtsustatud liides on valmis. Et see vaikimisi avaneks, tuleb konfiguratsiooniatribuutides määrata meie loodud liides peamiseks liideseks (paremklõps seadistuspuu ülemisel elemendil - Properties).
Hankige see välimus:

See on kõik, mida ma teile täna akumulatsiooniregistrite kohta öelda tahtsin. Küsimuste korral kirjutage, aitan meeleldi.

Kirjutas: Roman Zabolotin
E-post: eval(unescape("%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72% 65%66%3d%22%6d%61%69%6c%74%6f%3a%72%7a%61%62%6f%6c%6f%74%69%6e%40%67%6d%61% 69%6c%2e%63%6f%6d%22%3e%72%7a%61%62%6f%6c%6f%74%69%6e%40%67%6d%61%69%6c%2e% 63%6f%6d%3c%2f%61%3e%27%29%3b"))

1C akumulatsiooniregister see on struktureeritud andmekogum, mis sisaldab teavet valitud dokumentide kõigi liikumiste (laekumine / kulu või käive) kohta.

Kogumisregistri tüübid

1C-s on ainult kahte tüüpi akumulatsiooniregistreid:

  • Revolutsioonid
    Kui plaanite registrist saada ainult pöördeid, määrake tüübiks kindlasti pöörded.
    Näiteks müüki registreerides on meile oluline müükide arv ja saldosid pole siin absoluutselt vaja. Seetõttu tuleb registritüübiks seada “Revolutsioonid”.
  • Ülejäägid
    Kui plaanite registrist saada saldosid ja käivet, määra tüübiks saldod. Võtame näiteks kogumisregistri “GoodsInWarehouses”, oluliseks infoks on nii saldod kui ka käive. Seetõttu tuleb registri tüübiks seada “Saldod”.

Tähelepanu: vale akumulatsiooniregistri tüübi valimine toob kaasa teabebaasi madala jõudluse.

Mõõtmed, ressursid, üksikasjad ja standardsed üksikasjad

Iga akumulatsiooniregister sisaldab mõõtmeid, ressursse, üksikasju ja standardandmeid.

Mõõtmised on vajalikud võtmekirjeandmete genereerimiseks, millest edaspidi saate saldosid või vaadata käivet teid huvitavate mõõtmiste kohta.
Samuti saate määrata mõõtmisomadused, et kontrollida, kas mõõtmine on täidetud (tühi väärtus põhjustab tõrke)

Vahendid vajalik kokkuvõtlike andmete salvestamiseks registris: kogus, kogus jne. Edaspidi saame ressursid kätte mõõtmiste teel.

Üksikasjad on peamiselt vajalikud seotud teabe salvestamiseks ja neid kasutatakse harva.

Standardsed üksikasjad on järgmised:

  • periood - kuupäev, millal registri liikumine tehti
  • registripidaja - dokument, millega tehti registrisse kanne
  • liikumise tüüp - tulu või kulu (saabumine suurendab ressursside hulka ja kulud vähenevad)

Registripidajad

Registripidajad on dokumendid, millega saab kogumisregistris liigutusi teha. Liikumisi 1C kogumisregistrisse saab teha ainult dokumentide (registripidajate) abil. Enamus akumulatsiooniregistris liikumise tekitamise algoritme moodustatakse objektimoodulis dokumendi konteerimisel, protseduuril “Kirjastuse töötlemine”.


Indekseerimise mõõtmed

Infobaasi jõudluse suurendamiseks on vajalik indekseerimine.
Atribuut „Indeks” tuleb määrata nende mõõtmete jaoks, mille jaoks kavatsete teha mitu valikut ja millel on suur hulk elemente.

Näiteks: akumulatsiooniregister “Palju kaupa ladudes”. Seal on dimensioon "Nomenklatuur" ja "StatusParties". Indekseerimise atribuut on otstarbekam määrata dimensioonile “Nomenklatuur” kui “Osa staatusele”, kuna nomenklatuuri valikute arv on palju suurem kui partii staatuse puhul.

Rekordite ainulaadsus

1C Enterprise kontrollib akumulatsiooniregistri kirjete unikaalsust ja seetõttu ei leia te kahte identset kirjet.

Kogumisregistri võimalused

  • teatud perioodi kirjete valik vastavalt määratud mõõtmetele
  • kirjete valik registripidaja poolt
  • saldode ja käibe saamine valitud kuupäevaks määratud mõõtudega
  • kindlaksmääratud kuupäeva kogusummade arvutamine

Näited kogumisregistriga töötamiseks

Näide jooksva kuupäeva saldode saamise kohta

Protseduur GetBalanceOnDate()
NewRequest = Uus taotlus;
Uuspäring.Tekst =
"VALI
| Kaubajäänused. Nomenklatuur,
| ItemRemaining.QuantityRemaining
|ALT
| RegisterAccumulation.GoodsInWarehouses.Remains(&CurrentDate,) AS ProductRemains";
NewQuery.SetParameter("CurrentDate", CurrentDate());

EndCycle;
Menetluse lõpp

Näide jooksva aasta käibe saamise kohta

NewRequest = Uus taotlus;
Uuspäring.Tekst =
"VALI
| Tootekäive. Nomenklatuur,
| Kaubakäive.Koguskäive
|ALT
| RegisterAccumulation.GoodsInWarehouses.Turnover(&StartPeriod, &EndPeriod,) AS Käive";

New Query.SetParameter("Perioodi algus", Aasta algus(CurrentDate()));
NewQuery.SetParameter("ConPeriod", CurrentDate());

SelectQuery = NewQuery.Execute().Select();

Kuigi QuerySelect.Next() Loop
EndCycle;

Näide, kuidas kogumisregistris liikumisi valida

NewRequest = Uus taotlus;
Uuspäring.Tekst =
"VALI
| TootedLadudes.Period,
| GoodsInWarehouses.Registr,
| Tooted ladudes, liikumise tüüp.
| Tooted ladudes, nomenklatuur.
| Tooted Ladudes. Kogus
|ALT
| Kogumisregister.GoodsInWarehouses AS GoodsInWarehouses";

SelectQuery = NewQuery.Execute().Select();

Kuigi QuerySelect.Next() Loop
EndCycle;

Kogumisregistri nimekirja vormid

Vorme kasutatakse valitud registri kõigi liikumiste visuaalseks vaatamiseks. Selles näete, millistel dokumentidel on kulu või laekumine fikseeritud, samuti näete, milliseid mõõte kasutatakse. Seal saab ka liigutusi sortida või valikuid teha.
Süsteem loob automaatselt loendivormi või saate seda ise kohandada.

Dokumendid on 1C raamatupidamise olemus. Igal dokumendil on tulemus, näiteks +10 kaupa saabus.

Aruanded – võimaldab vaadata tulemusi. Need tulemused võetakse kokku ja näidatakse kasutajale.

Dokumente on aga palju ja kui oleks vaja nende tulemusi kokku võtta, oleks see liiga keeruline. Seetõttu on leiutatud parem viis!

Dokumendid salvestavad oma tulemused (nimetatakse "liikumisteks") spetsiaalsetesse tabelitesse - 1C registritesse, mis ise võtavad tulemused kokku nii, et aruandes kuvatakse lihtsalt eelnevalt arvutatud kogusummad.

Täna räägime 1C registritest ja nende kasutamisest.

1c register on tabel, sama mis Excelis, iga dokument kirjutab 1c registrisse ühe või mitu rida oma liikumisi (tulemusi) mõne märgiga - pluss või miinus. See tähendab, et 1C registri kogusumma on muutunud vastavaks.

Dokumenti, mis registreeris liikumised 1C registris, nimetatakse registripidajaks. Liikumise kuupäev ja kellaaeg on võrdsed (99% juhtudest) dokumendi kuupäevaga. Liikumise kuupäeva nimetatakse perioodiks.

Iga 1C register võtab tavaliselt arvesse ühe konkreetse kataloogi liikumisi. Näiteks 1C register Kaubad ladudes - kaupade liikumine (1C “nomenklatuuri järgi”) - kui palju kaupu lattu saabus, kui palju lahkus. Registreerige 1C Vastastikused arveldused osapooltega (ostjad ja tarnijad) - lepingute liikumine osapooltega - kui palju vastaspool meile pärast ostu võlgneb või kui palju me talle pärast maksmist võlgneme. Kataloogi, mille kontekstis registrit peetakse, nimetatakse 1C registri põhidimensiooniks (analüütikaks).

Muidugi ei tee keegi 1C registrile üht põhimõõtmist. Kui võtta arvesse kaupade liikumist, siis ei huvita meid mitte ainult see, milline kaup on vähenenud või suurenenud, vaid ka näiteks millises laos. Seetõttu on "igaks juhuks" alati kolm kuni viis lisamõõtmist, mida võib nimetada 1C registri täiendavaks analüütikaks.

Kuidas toimub dokumentide postitamine registrite kaudu?

Dokumentide liikumised 1C registrites

Vaatame, kuidas 1C registrid töötavad. Siin on meil kauba vastuvõtu dokument, millelt näeme, et toode Õli on jõudnud Pealattu.

Loogika ja matemaatika osas on sellel dokumendil järgmine tulemus:

Kremli õli, Pealadu +10 (tk)

Kontrollime – kas see on tõsi?

See menüüpunkt näitab meile kõiki selle dokumendi liikumisi registrites. Nagu näeme, liikus dokument läbi terve hulga 1C registreid, millest igaühes salvestas erineva teabe (vastavalt 1C registri eesmärgile). 1C Kaupade ladudes registri järgi tegi ta meie arvutatud lähetuse.

Kuidas see 1C registris välja näeb? Avame 1C registri menüü Toimingud kaudu.

1C register on avatud. Selles on palju andmeid. Teeme valiku ainult meie dokumendi põhjal.

Selle tulemusena näeme oma dokumendi liikumist läbi 1C registri. See langeb täpselt kokku sellega, mida me käsitsi arvutasime:

  • Pluss – liikumise tüüp (sissetulek/kulu)
  • Registripidaja on meie dokument
  • Aktiivsus – see liikumisstring on kehtiv (st pole keelatud)
  • Nomenklatuur, põhimõõde
  • Ladu, lisamõõt
  • Kogus, ressurss (see tähendab, arv, mida me loeme).

Kui valime mitte dokumendi, vaid nomenklatuuri järgi (täpselt samamoodi), siis näeme kõigi seda nomenklatuuri mõjutanud dokumentide liikumist. Üks dokument - ostsime kauba. Teine müüdi. Loomulikult ei näita 1C register ise kogusummat - selleks peate kasutama aruannet või päringut.

1C registrid on erinevad (me käsitleme seda allpool). Erinevatesse 1C registritesse postitused näevad samuti erinevad. Vaatasime nüüd 1C akumulatsiooniregistri kandeid. Nii näevad välja meie sama dokumendi konteeringud 1C raamatupidamisregistri järgi, mis töötab 1C raamatupidamise (maksu) kontoplaani alusel.

Miks on vaja 1C registreid?

1C registreid on erinevat tüüpi. 1C registri kasutamise eesmärk sõltub selle tüübist.

  • 1C teaberegistrid
    See on tavaline tabel, nagu Excelis. Sellel puuduvad liikumised (sissetulekud/kulud). 1C teaberegistrit kasutatakse tavaliselt täiendavate kataloogiandmete salvestamiseks. 1C teaberegistri abil saate korraldada
  • Raamatupidamisregistrid 1C
    Kasutaja seisukohalt peetakse raamatupidamist raamatupidamise kontoplaanil. Tegelikult peetakse raamatupidamist 1C raamatupidamisregistrite tabelis, mis on tehtud 1C kontoplaani kontekstis.
  • 1C akumulatsiooniregistrid (1C saldoregister)
    Dokumendi liikumise tabel + ja –, mis arvutab automaatselt perioodi alguses kogusumma ja perioodi lõpu summa. Näiteks Lopati toote liikumine oli +10 ja siis -8. See tähendab, et alguses oli jääk 0 ja lõpus oli jääk 2.

    1C akumulatsiooniregister vaatega “Saldod” tähendab, et liikumised salvestatakse (laekumised ja kulud, mida nimetatakse ka “käibeks”) ning lisaks arvutatakse automaatselt kogusummad (nimetatakse “saldodeks”).

    1C saldoregistrit kasutatakse juhul, kui kataloogis võib loogiliselt olla jääk. Näiteks kui võtta arvesse kaupade liikumist, siis kasutame 1C saldoregistrit - võib ju öelda, et Lopati toodet on alles 3 tükki.

  • Kogumisregistrid 1C (pöörderegister 1C)
    Dokumentide liikumise tabel + ja -, mis ei arvesta kogusummat.

    1C käiberegister ei erine saldoregistrist, välja arvatud see, et see ei arvuta saldosid automaatselt.

    1C pöörderegistrit kasutatakse juhul, kui kataloogis ei saa loogiliselt jääki olla. Kui on vaja arvestada kaupade müüki, siis kasutame käiberegistrit.

    Näiteks toodete müük oli +10 (müüsime) ja siis -2 (nadsid meile tagasi). Me ei saa öelda, et müügisaldo on saanud 8, sest loogiliselt ei eksisteeri müügibilansi mõistet, me ütleme, et kogukäive (iga käiberea summa) on muutunud 8-ks.

  • 1C arveldusregistrid

    Liikumiste tabel arvutusliikide ja perioodide lõikes. Kasutatakse palgaarvestuses (nn komplekssed perioodilised arvutused).

Kus asuvad 1C registrid?

Dokumendi täitmine koodis (programmis) on ette nähtud programmeerija poolt. Selleks avage . Leidke rida nagu "Procedure ProcessingProcessing(". Avage rist ja näete programmi selle dokumendi töötlemiseks.

1C registrite seadistamine ja arendamine

1C registrite põhifunktsioonid vahekaardi järgi:

Igas tõeliselt töötavas 1C andmebaasis võib tekkida olukord, kus dokument teeb töötlemise ajal palju liigutusi - mitu tuhat või isegi mitukümmend tuhat. See artikkel on pühendatud selliste suurte kirjekogumite andmebaasi kirjutamise iseärasustele.

Ühel meie tehnoloogiaekspertide poolt läbi viidud tulemusanalüüsi tööl seisid nad silmitsi probleemiga ühes raamatupidamisregistris mitu tuhat liigutust teinud dokumendi konteerimise tühistamisega. Probleem avaldus dokumendi tühistamise aja ettearvamatus. See aeg varieerus tavalisest (umbes minut) sama dokumendi jaoks ilmselgelt ebapiisavaks (pool tundi või rohkem). Mõnel juhul ei saanud meie eksperdid protsessi üldse tühistada – protsess lõppes alles tööpäeva lõpus ja see tühistati 1C serveri taaskäivitamisel.

Suurte komplektide salvestamise probleem on eriti terav dokumentide tühistamise puhul. Selle põhjuseks on asjaolu, et komplekte saab osade kaupa lisada:

Sellel teemal läbi viidud väike uuring näitas, et platvormi 1C:Enterprise 8.1.15.41 praeguse (kirjutamise ajal) väljaande kasutamisel sõltub komplektide salvestamise aeg lineaarselt komplektis olevate kirjete arvust, st 3000 tehingu 6 osa ja 18 000 tehingu ühe osa salvestamise aeg on sama. Meil oli aga ka infot, et mitme portsjonina salvestamine võib mõnel juhul olla efektiivsem ning alljärgnevas artiklis kirjeldatud töö käigus saime teoreetilise selgituse, miks see nii võib olla.

Täitmise tühistamisel ei ole võimalik komplekte osade kaupa salvestada - kustutada saab ainult kogu registripidaja poolt etteantud valik.

On teada, et suurte akumulatsiooniregistri kirjete komplektide kirjutamine 32-bitise 1C:Enterprise serveriga võib mälupuuduse teatega ebaõnnestuda, kuid sel juhul, kuigi kasutati 32-bitist serverit, sõnumeid ei väljastatud ja kogumisregistriga töö ei käinud, ja raamatupidamisregistriga.

Algatasime selle probleemi arutelu 1C partnerite konverentsil http://partners.v8.1c.ru/forum/thread.jsp?id=856332 (vajab registreerimist).

Kolleegid rahustasid mind, kinnitades, et põhimõttelisi piiranguid antud juhul ei olnud ja probleemil peab olema lahendus. Näitena toodi andmed reaalsete dokumentide kohta, mis tegid 250 000 tehingut.

Üks huvitavaid ideid (Sergey Doronin, VDGB-Soft, Yoshkar-Ola http://www.vdgb-soft.ru/) oli tühistada dokumendi postitamine väljaspool tehingut:

Lahenduse leidis kliendifirma spetsialist, kes tühistas probleemse dokumendi postitamise, lülitades andmebaasi eksklusiivsele režiimile (koodifragment süntaksiabist):

Selle fakti kohta saime selgituse 1C-lt (ka konverentsil):

"Eksklusiivses režiimis ei helistata hallatavale lukuhaldurile. Kuna teil on üsna palju liigutusi, kulutab lukuhaldur märkimisväärselt palju aega ressursside ükshaaval lukustamiseks jagatud režiimis. Teie olukorras võib eksklusiivse režiimi seadistamise asemel enne liikumiste salvestamise alustamist olla soovitatav panna tervele raamatupidamisregistrile kontrollitav lukk.

Saadud vastus võimaldas mitte ainult põhjendada eksperimentaalselt leitud probleemi lahendamise meetodit, vaid ka selgitada veel kahte punkti:

  • Miks võib kirjete komplekti mitme osana kirjutamine mõnel juhul olla tõhusam kui ühes, nagu eespool kirjeldatud.
  • Miks on standardsetes 1C lahendustes, näiteks dokumendi "Valuutafondide ümberhindlus" moodulis konfiguratsioonis "1C: Manufacturing Enterprise Management 8" selline ilmselgelt üleliigne blokeering paigaldatud.

Peale probleemi lahendamist saadi info alternatiivse probleemi lahendamise viisi kohta (Pigolkin Stanislav, Axelot, Moskva http://www.axelot.ru/). Sel eesmärgil on soovitatav kogusummade kasutamine keelata:

Teave meetodi SetUseTotals (<Признак>) süntaksiabis öeldakse:

"Määrab summade kasutamise lipu. Kui kogusummade kasutamine on keelatud, siis registrikirjete komplekti kirjutades summasid ümber ei arvutata, kuid virtuaalsed tabelid saldode ja käibe arvutamiseks pole saadaval.
See registri töörežiim võimaldab suurendada registrikirjete komplekti kirjutamise kiirust. See võib olla kasulik andmete hulgi allalaadimisel.
Kui seate lipu kogusummasid kasutama, arvutatakse kõik summad uuesti.

Suurte kirjekogumite kirjutamisel 1C-registritesse on küll teatud eripära, kuid see on üsna teostatav. Rasketel juhtudel kasutatakse ülaltoodud meetodeid, näiteks:

  • salvestamine mitmes osas;
  • registreerida väljaspool tehingut;
  • andmebaasi ülekandmine eksklusiivsesse režiimi;
  • kontrollitud eksklusiivse luku seadmine kogu registrile;
  • kogusummade kasutamise keelamine

aitab probleemi lahendada. Iga meetodi kasutamine peaks olema kooskõlas konkreetse baasi olemasoleva tegelikkusega ja kompleksi töökorraldusega, kasutades platvormi 1C:Enterprise 8.

GC Trade Soft, Moskva

Iga arvestussüsteemi ülesanne on salvestada ja operatiivselt kuvada kasutajale infot, s.t. Mis tahes süsteemikujunduse eesmärk on kasutajale viivitamatult aruanne esitada. Saadud andmete abil tehakse ettevõtetes reeglina juhtimisotsuseid.

Oletame, et meil on 1000 erinevat dokumenti: kauba vastuvõtmine, mahakandmine, tagastamine, müük jne. Ja iga dokument muudab teatud toote kogust laos. Et saada infot laos oleva hetkekoguse kohta, tuleb kõik läbi teha: mõni suurendab kauba kogust, mõni vähendab, mõni võib suurendada või vähendada. Ja kui on vaja arvestada ka laoga, organisatsiooniga?.. Selline süsteem on väga ressursimahukas.

Selle protsessi lihtsustamiseks tulid 1C arendajad välja spetsiaalsete konfiguratsiooniobjektidega. Neid kasutatakse teabe salvestamise ja hankimise hõlbustamiseks, 1C 8.3 ja 8.2 puhul kasutatakse selles artiklis konkreetselt igasuguseid registreid Kogumisregistrid.

Kogumisregister ise on tabel teabega, mis kogub teatud dokumentide kõik liikumised (laekumised/ mahakandmised või käibed). Vaatame, kuidas näeb liikumistabel välja tüüpilise akumulatsiooniregistri “Kaubad ladudes” näitel “Kaubanduse haldamine 10.3” konfiguratsioonis:

Siin näeme, et 1C “Müügi” dokumendid vähendavad teatud toote kogust teatud ladustamiskohas ja vastuvõtudokumendid, vastupidi, suurendavad kogust. Tulemusena saame üldpildi, milles on selgelt näha, mida, millal ja millises koguses raamatupidamise järgi laekus (maha kantud). Sellist tabelit kasutades on aruannet palju mugavam koostada.

Kogumisregister konfiguraatoris

Mis on akumulatsiooniregister konfiguratsiooni arendamise seisukohalt? Alustuseks vaatame akumulatsiooniregistri välju:

Hankige 267 videotundi 1C-s tasuta:

Kogumisregistris on Mõõtmed, ressursid, üksikasjad ja standardsed üksikasjad.

Vaatleme esmalt kogumisregistri standardandmeid:

  • perioodi— liikumise kuupäev ei pea ühtima dokumendi kuupäevaga;
  • registripidaja- dokument, mis teeb kande registrisse;
  • rea number— registripidaja sees kordumatu registri rea seerianumber;
  • tegevust— vastutab kirjete jõudmise eest virtuaalsetesse tabelitesse (nende kohta lähemalt allpool);
  • vaadeliikumine- tulu või kulu.

Akumulatsiooniregistri mõõtmised

Dimensioon on jaotis, milles peetakse arvestust. Ülaltoodud näites on raamatupidamise jaotis järgmine: ladu, nomenklatuur, toote omadused, tooteseeria, kvaliteet. See tähendab, et meid huvitavad mõõtmised täpsustades saame koguse – ressursi – igal ajal kätte. Erinevate dimensioonide kontekstis saate tulevikus näiteks kindla kuupäeva saldod hankida.

Kogumisregistri ressurss

Ressurss on numbriväli, kuhu salvestatakse teave ülalkirjeldatud dimensioonide kontekstis.

Vastasel juhul saab mõõtmete/ressursside vastasmõju skemaatiliselt kujutada koordinaatsüsteemina:

Kaks mõõdet - abstsiss ja koordinaatsüsteemi ordinaat, s.o. selles näites on mõõtmeteks ladu ja artikkel. Mõõtmete ristumiskohas saame koguse – ressursi. Näiteks toote “pliiats” “põhilaos” on laos 1 tk.

Kogumisregistri andmed 1C

Kogumisregistri andmed toimivad “kommentaarina” või lisainfona mõõtude, saldode/käibete osas. Kasutatud üsna harva.

Kogumisregistri tüübid

Kogumisregistreid on kahte tüüpi – käibed ja saldod.

Kui akumulatsiooniregistri eesmärk ei ole saldode saamine, on vaja kasutada kogumisregistri tüüpi - p/min. Käiberegistri kasutamise tüüpiline näide on müügimahtude registreerimine. Sel juhul peame ainult teadma, milline müük teatud aja jooksul oli, sel juhul pole saldodel mõtet.

Kui kogumisregistri kasutamise eesmärk on teatud perioodi saldosid hankida, vajame registrit vormiga ülejäägid. See tüüp võimaldab teil saada nii saldosid kui ka käivet. Sellise registri jaoks arvutab süsteem automaatselt saldod. “Jääku” registri näiteks on kaup ladudes, raha kassas.

Registritüübi kasutamine ülejäägid kust pääseb rpm, peetakse süsteemi toimivuse seisukohalt akumulatsiooniregistri ülesehituses veaks.

Olenevalt registri tüübist loob süsteem akumulatsiooniregistri jaoks erinevad virtuaalsed tabelid. Virtuaalne tabel on kiire viis profiiliteabe hankimiseks registritest.

Kogumisregistri jaoks on see:

  • Ülejäägid;
  • Revolutsioonid;
  • Jäägid ja käibed.

Lahenduse arendaja jaoks võetakse andmed ühest (virtuaalsest) tabelist, kuid tegelikult võtab 1C platvorm need paljudest tabelitest, muutes need vajalikuks vormiks.

Akumulatsiooniregistrite nõuetekohane projekteerimine

Nõutavatest aruannetest tuleb kujundada akumulatsiooniregistrid. Kõige keerulisem asi 1C 8.3 süsteemis on teabe õige salvestamine, et seda saaks igal ajal hõlpsalt kätte saada.

Registrikujunduse tunnuste hulgas tuleb märkida vajadust mõõtmete korrektseks järjestamiseks registris. Eelkõige tuleb süsteemi panna need mõõdud, mida kõige sagedamini küsitakse.

Kogumisregistri mõõtmete indekseerimine

Kogumisregistri mõõtmistel on "indekseerimise" omadus. See omadus tuleb määrata mõõtmistele juhtudel, kui plaanitakse andmete vastuvõtmisel mõõtmisel sageli valikuid rakendada ja sellel mõõtmisel võib olla palju väärtusvalikuid.

Näiteks register on “ProductsInWarehouses”, mõõtmed “Ladu, Nomenklatuur”, ressursiks “Kogus”.

Õigem on indekseerida “Nomenklatuur”, kuid välja “Ladu” ei tohiks indekseerida, sest ladude arv süsteemis ei ole reeglina oluline.