Vad är periodiska register över uppgifter i 1s. Periodiska register över information. Leker med omräkningar

Den här artikeln kommer att överväga ett sådant koncept som 1C-dokument, vilken typ av konfigurationsobjekt det är, vad dess syfte är, vilka anpassade egenskaper som finns för objektet; hur det är möjligt att arbeta med detta objekt interaktivt och programmatiskt.


Ett företags liv är inte möjligt utan registrering av olika typer av händelser som inträffar mycket ofta. Dessa händelser kallas affärstransaktion. Registreringen av en affärstransaktion i 1C är ett dokument.

Exempel på affärstransaktioner: mottagande av varor på lagret, avskrivning av varor från lagret, mottagande av medel i kassan, anställning av en anställd m.m.

Alla dessa transaktioner måste dokumenteras i lämpliga pappersdokument. Dokumentobjektet som är registrerat i 1C-systemet är exakt analogen till detta pappersdokument. Det bör noteras att vi har minst två olika konton. Dessa är management accounting och reglerad redovisning. I reglerad redovisning kan en affärstransaktion inte existera utan ett dokument som bekräftar det. I management accounting är närvaron av ett dokument för en affärstransaktion inte en förutsättning, eftersom listan över transaktioner som utförs i management accounting kan varieras. I det här fallet registreras viss information helt enkelt i form av ett elektroniskt dokument.

Så vi har ett pappersdokument och ett elektroniskt dokument. En analogi måste göras mellan dem. När du utfärdar ett pappersdokument är en förutsättning att det finns ett nummer och ett datum i det. På samma sätt måste ett elektroniskt dokument innehålla ett nummer och ett datum. Genom dessa fält kan vi hitta det dokument vi behöver. Därför är siffran och datum nyckelegenskaper.

Tänk på nyckelegenskapen "Datum för". I version 7.7 hette det "DataDoc", men i version 8 hette det helt enkelt "Datum för". Detta är en mycket viktig dokumentegenskap. Varför är det så? Tänk på situationen med en branschorganisation där registreringen av mottagandet av varor och dess försäljning utförs. Så det är inte möjligt att sälja varor vars mottagningsdatum är större än försäljningsdatumet, eftersom det är omöjligt att sälja varor som ännu inte har anlänt.

Observera att i vissa standardkonfigurationer är det möjligt att sälja varor som ännu inte har anlänt. Men detta är undantaget snarare än regeln och hänvisar till handelsföretagets detaljer.

Det är därför det är så viktigt att ha ett datum i ett dokument. Det bör också noteras att i fastigheten "Datum för" innehåller inte bara datum, utan även tidpunkt för dokumentet till närmaste sekund.

Mycket ofta räcker inte sådan dokumentidentifiering på tidsaxeln.

Låt oss föreställa oss en situation där 100 enheter varor anländer till lagret den 1:a i månaden. Sedan den 2:a dagen i samma månad kl. 23:59:59 säljs den, i mängden 80 enheter. Dokumentet utförs utan problem, eftersom det finns tillräckligt med varor. Antag att även den 2:a klockan 23:59:59 säljer någon annan samma produkt i mängden 50 enheter. Detta dokument kommer också att hållas utan problem, eftersom denna produkt är tillgänglig vid tiden 23:59:59. Även om vi faktiskt har, som ett resultat av det andra dokumentet, bildas ett negativt saldo på 30 enheter varor.

För att förhindra att sådana situationer uppstår läggs även dokumentets position, nämligen dess länk, till datum och tid. Denna identifiering av ett dokument med datum och tid + länk kallas tidens ögonblick. Och när du bokför det andra dokumentet kommer systemet att visa ett meddelande om bristen på 30 enheter och tillåter inte att dokumentet postas.

Hur får man ett ögonblick i tid? Och det erhålls med metoden "Ögonblick av tid", tillhörande klassen "DocumentObject". Detta returnerar datatypen "Ögonblick av tid".

Denna typ av data måste skickas som en parameter till förfrågningar som tar emot varubalansen.

Ett exempel på att få en tidpunkt:

&OnClient-procedur GetTimePoint(Command) GetTimePointOnServer(Object.Reference) ; EndProcedure &OnServer Procedur GetTimeOnServer(Reference) If Reference. Empty() Sedan Rapportera( "Dokument inte inspelat!"); Lämna tillbaka ; EndIf ; DocumentObject = Länk. GetObject() ; MomentTime = DocumentObject. Tidsögonblick() ; Report(MomentInTime) ; Slutprocedur // GetTimeOnServer()

Inställning av dokumenttid

Låt oss analysera hur systemet ställer in tidsstämpeln för nyinmatade dokument. När ett dokument skapas ställs det som standard in på det aktuella systemdatumet med noll tid, och när det skrivs ställs det in på den aktuella tidsstämpeln.


Det finns följande nyans i det operativa genomförandet. Om dess datum är lika med den aktuella tiden, kommer tiden att ställas in på den aktuella tiden. Om dokumentet postades icke-operativt, tilldelades den aktuella tidsstämpeln först vid tidpunkten för dess införande, och den skulle sedan förbli oförändrad. Om dokumentet inte matas in före det aktuella datumet tilldelas nolltidsstämpeln initialt, och vid inspelning tilldelas den senaste markeringen för den dagen. Det vill säga, systemet letar efter det senast inmatade dokumentet för denna dag, tittar på dess tid, ökar det med en sekund och tilldelar det till vårt dokument. Om du skapar ett dokument för ett datum då inget dokument av denna typ har angetts (till exempel varumottagning), men dokument av en annan typ har angetts (till exempel avskrivning av varor), tar systemet mest senaste datum för ett dokument av en annan typ, lägg till en sekund till det och tilldela vårt dokument. Om du skapar ett dokument med ett datum där inget dokument, ingen typ angavs, kommer plattformen att tilldela tiden 12:00:00 till det.

Och en annan situation. Låt oss föreställa oss att vi har ett dokument i databasen med en tidsstämpel på 23:59:59, och om vi lägger till en sekund till så blir det redan nästa dag. Därför lämnar systemet samma tid, det vill säga 23:59:59. Dokumenttidsinställningssystemet som beskrivs ovan är bara ett standardvärde. Men det är möjligt att åsidosätta detta beteende. Låt oss öppna dokumentformuläret i konfiguratorn och gå till dess egenskaper. I fastigheterna kommer vi att se fältet "AutoTime". Om vi ​​inte ändrar något i den här egenskapen, så sker bildandet av dokumenttiden som den beskrevs ovan. Men du kan ange tiden: aktuell eller i början av dagen, alltid den första, alltid den sista, och använd inte.

En annan viktig dokumentegenskap är siffra. Dokumentnumret, liksom datumet, är en obligatorisk egenskap för alla dokument. Det behövs för att identifiera dokumentet på utskriften.

Möjlighet att hålla

Ett dokument kan ha tre tillstånd: skapad, markerad för radering Och hölls. Ett bokfört dokument kan ändra ett företags ekonomiska ställning, ändra mängden varor i lager, etc. Det vill säga, ett ej postat dokument är ett slags utkast, och när det postas träder det i kraft och registrerar följaktligen någon händelse. 1C-systemet gör det möjligt att ändra det postade dokumentet, avbryta dess innehav, vilket, till skillnad från västerländska analoger av program, är en mjukare redovisningsprincip.

Standarddokumentdetaljer

Utöver de attribut som utvecklaren lägger till i dokumentet finns det även en standarduppsättning attribut som redan är inbäddade i dokumentet på plattformsnivå. Detta: länk, nummer, datum, raderingsmärke, postat. Du hittar dem på fliken. "Data", knapp "Standarddetaljer".

Vi har redan pratat om nummer och datum. En raderingsflagga är en boolean som innehåller information om huruvida dokumentet är markerat för radering eller inte. Länk- krav på unik identifiering av handlingen i dokumenttabellen. Hålls- boolesk egenskap som innehåller information om huruvida dokumentet har lagts upp eller inte.

Ett dokument kan vara i tre tillstånd:

  • Ej markerad för radering och inte utförd;
  • Ej markerad för radering och genomförd;
  • Markerad för radering och ej genomförd.

Som nämnts tidigare kan utvecklaren självständigt lägga till nödvändiga detaljer, såväl som tabelldelar. Varje tabelldel har ett standardattribut - "Linje nummer".


Lagring av dokument i infobasen

I databasen lagras varje typ av dokument i en separat tabell. Denna tabell innehåller alla detaljer i dokumentet. Tabelldelarna lagras i separata tabeller. Kopplingen till dokumenttabellen görs av attributet "Länk".

Dokumentnumrering

Varje dokument har ett nummer, vars inställning ställs in på fliken "Numrering". På den här fliken kan du ställa in den automatiska numreringsfunktionen, unikhetskontrollfunktionen, vilken typ av numret (numeriskt eller sträng) och dess längd.

Det rekommenderas att ställa in strängtypen för numret, eftersom det i framtiden kan vara nödvändigt att ange organisationsprefixet i numret, vilket händer väldigt ofta.

Prefixet ställs in i dokumentobjektmodulen, i proceduren "När du ställer in ett nytt nummer".

NewNumberSetting Procedure(StandardProcessing, Prefix) EndProcedure

Även på fliken "Numrering" vi kan ställa in frekvensen för dokumentet.

Möjliga värden:
  • Icke-periodisk;
  • Inom ett år;
  • Inom ett kvarter;
  • Inom en månad;
  • Inom en dag.
Välj vanligtvis värdet "inom ett år", betyder det att på det nya året kommer numreringen av dokument att börja från början.

Ibland finns det situationer då kontinuerlig numrering är nödvändig för flera typer av dokument. För dessa fall tillhandahåller systemet ett sådant objekt som en täljare.

Det måste anges i fältet "Täljare".

Håller dokument

Lite om handlingens uppförande. För systemet innebär att dokumentet postas om den booleska flaggan "Hålt" dokumentet är inställt på "Sann". I den allmänna listan är sådana dokument markerade med motsvarande ikon. För plattformen betyder detta inget mer, men ur programmets logik kan det publicerade dokumentet påverka företagets ekonomiska resultat. Det vill säga att den kan generera rörelser i register, baserat på vilka rapporter som genereras.

När en interaktiv eller programmatisk exekvering inträffar utlöses exekveringen av proceduren "HandlingHandling()", som finns i dokumentobjektmodulen.

// Infoga innehållet i hanteraren. Slutprocedur

Denna procedur har två parametrar: vägran Och läge. Om du ställer in felparametern till värdet "Sann", kommer inlägget inte att utföras. Parameter "Läge" ställer in dokumentbokföringsläget - operativ eller icke-operativa. Exploatören ska själv registrera rörelserna i registren i detta förfarande.

I vilka register dokumentet kommer att göra rörelser ställs in på fliken "Rörelser".

Exempel på efterbehandlingsprocedur

Procedur Hantering av bokföring (fel, inläggsläge) // Detta fragment är byggt av konstruktören. // Vid återanvändning av konstruktorn, manuella ändringar // kommer att förloras!!! // registrera GoodsInStock-kvitto Rörelse. varor i lager. log = sant; För varje TekRow-produkter från produkter Cykel rörelse = rörelse. varor i lager. Lägg till() ; Rörelse. MovementType = MovementTypeAccumulering. Kommande; Rörelse. period = datum; Rörelse. Produkt = TekRowProducts. Produkt; Rörelse. Kvantitet = CurrentLineProducts. Kvantitet; EndCycle ; //__REGISTER_MOTION_CONSTRUCTOR Slutprocedur

Dokumentåtkomsträttigheter

Det finns olika typer av åtkomst i 1C-systemet. Dessa är analysen av interaktiva åtgärder och analysen av programåtgärder.

Vad är interaktiva åtgärder? Dessa är åtgärder som utförs direkt av användaren: att trycka på knappar, kryssrutor, etc. Programatiska åtgärder utförs av någon algoritm, användaren kanske inte ens känner till dem.

Dokumentåtkomsträttigheter konfigureras på fliken "Rättigheter". Här ser vi flera sektioner, detta är sektionen där rollerna visas, sektionens direkträttigheter och sektionen "Begränsningar för dataåtkomst"(vi kommer inte att överväga det, det är nödvändigt när du använder den så kallade RLS-mekanismen).

Kapitel "Roly" visar alla roller som angetts i infobasen, för vilka i avsnittet "Rättigheter" vi ställer bara in åtkomsträttigheterna.

Möjliga typer av åtkomsträttigheter:
  • läsa (programmatiskt), titta (interaktivt);
  • lägga till (programmässigt), interaktivt lägga till (interaktivt);
  • ändra (programmässigt), redigering (interaktivt);
  • radering (programmatiskt), interaktiv radering (interaktivt);
  • ledning (programmässigt), interaktiv ledning (interaktivt);
  • ångra (programmässigt), interaktiv ångra (interaktivt);

Den interaktiva typen av åtkomst innehåller också sådana rättigheter som: interaktiv markering för radering, interaktiv avmarkering för radering, interaktiv radering av markerade, interaktiv icke-operativ exekvering, interaktiv modifiering av slutförda, inmatning per rad.

Tabelldel av dokumentet

De tabellformade delarna av dokumentet ställs in på fliken "Data" och är inget annat än samlingar vars element är raderna i tabellsektionen. Därför är det möjligt att kringgå dess element både genom en slinga och genom direktåtkomst via index (numrering börjar från noll).


Många programmerare som är bekanta med version 7.7 och vill behärska version 8 frågar var de periodiska referensdetaljerna och periodiska konstanterna har tagit vägen. Och om de inte är det, vilken mekanism ersätter dem då? I 1C:Enterprise 8 används periodiska informationsregister för att lagra historiken för värdeförändringar.

I allmänhet är informationsregister utformade för att lagra information utökad över en kombination av mätningar. Huvudskillnaden mellan det periodiska registret med information och det vanliga är att det innehåller ytterligare en systemdimension "Period" av typen "datum". Detta gör att du kan få inte bara aktuell information om objektet, utan även när som helst.

För en periodisk variabel anges egenskapen "Periodicity" under skapandet från följande möjliga värden:
- inom en sekund,
- inom en dag
- inom en månad
- inom kvartalet
- inom ett år
- efter registrarens position (tillgängligt om registrets inspelningsläge är "Inlämning till registraren").

Observera att informationsresurstypen kan vara antingen primitiv (nummer, sträng, datum, boolesk) eller referens (CatalogReference, DocumentReference, EnumReference, etc.). Dessutom kan även bilder och annan ostrukturerad information lagras i informationsregistret, eftersom du kan skapa en resurs av typen "ValueStorage".

Det enklaste exemplet på ett periodiskt informationsregister är Valutakurser. Detta informationsregister lagrar kurserna för alla valutor för varje dag.

Detaljerad information om strukturen för informationsregistret Växelkurser ges i följande tabell:
Mått: Valutatyp "ReferenceReference.Currencies", ledande, förbud mot tomma värden
Resurser: Kurstyp "antal", längd 15, precision 4, icke-negativ
Multipeltyp "nummer", längd 10, precision 0, icke-negativ
Frekvens inom en dag
Inspelningsläge Oberoende

Data i detta informationsregister kan matas in manuellt med hjälp av listformuläret.

UPPMÄRKSAMHET. I informationsregistret med en viss frekvens som inte är lika med "Efter position till registrator" kan man inte lägga in två poster med samma uppsättning mått och period, d.v.s. du kan inte ange två kurser för samma valuta på samma dag. Om registerregistreringsfrekvensen är inställd på "Enligt registrarens position" så innehåller även postens unikhetsnyckel en länk till registrardokumentet, d.v.s. En sådan reskontra kan inte innehålla två poster med samma uppsättning mått, period och registrator. Detta är en integrerad egenskap hos informationsregistret, vilket skiljer det från andra register.
Att lägga till nya poster i informationsregistret, samt att räkna upp befintliga poster, görs på ett vanligt sätt för alla register. I det här avsnittet kommer vi bara att täcka det viktigaste
- inhämta information från det periodiska registret vid en viss tidpunkt.

Få tillgång till periodisk information med metoder
Objektet RegisterInformationManager låter dig komma åt "totalerna" av registret. "Totalerna" i det periodiska registret av information är de första eller sista värdena av resurser för de angivna dimensionerna. Följande metoder används för detta:

Skaffa sig (<Период>, <Отбор>)

Returnerar som en struktur resursvärdena för en registerpost som motsvarar de angivna värdena för alla (!) registerdimensioner och perioder.
GetLatest (<Конец периода>, <Отбор>)
Denna metod returnerar det aktuella värdet av de resurser som är i kraft på det givna datumet. Om den inte hittar en post i registret för en given kombination av dimensioner för exakt den angivna perioden, returneras en struktur som innehåller resursvärdena för nästa senare post.
GetFirst (<Начало периода>, <Отбор>)
Denna metod fungerar på samma sätt som GetLast-metoden, men om posten inte hittas för närvarande, returneras en struktur som innehåller resursvärdena för närmaste tidigare post.
SliceRecent (<Конец периода>, <Отбор>)
Dessa metoder liknar GetLast- respektive GetFirst-metoderna, men de anger vanligtvis inte en eller flera dimensioner. Som ett resultat returneras inte en struktur, som i de tidigare fallen, utan en tabell med värden fylld med data från de hittade informationsregisterposterna.

När du anropar metoderna GetFirst, GetLast, SliceFirst och SliceLast kan den första parametern vara av typen "datum", Moment in Time eller Boundary, men den kan utelämnas alls, sedan resursvärden från det allra första eller sista registret post kommer att hittas, respektive.

Vi kommer att demonstrera användningen av dessa metoder med exempel:

Exempel 1. Att få växelkursen exakt på det angivna datumet (om det inte finns något register för detta specifika datum, kommer strukturelementen att innehålla tomma värden).


StructureRateMultiplicity = RegistersInformation.Currency Rates.Get(SelectionDate, CurrencySelection);
Om StructureCourseMultiplicity.Course = 0 Då
Show("Växelkursen för detta datum är inte specificerad!");
Annat
Report("Valutakurs:" + Förkortad LP(StructureCourseMultiplicity.Rate) + ", multiplicitet: " + AbbreviatedLP(StructureCourseMultiplicity.Multiplicity));
EndIf;

Exempel 2 Att få den aktuella växelkursen för ett givet datum (om det inte finns något register för detta specifika datum, kommer nästa senare post att hittas)

CurrencySelection = New Structure("Valuta", SelectCurrency);
StructureRateMultiplicity = RegistersInformation.Currency Rates.GetLast(SelectionDate, CurrencySelection);
Report("Den aktuella växelkursen för det givna datumet: " + StructureRateRatio.Rate);

Exempel 3 Hämta de aktuella kurserna för alla valutor på ett givet datum (valet är inte specificerat, d.v.s. vi vill få information om alla dimensionsvärden).

tzData = RegistersInformation.Currency Rates.SliceLast(SelectionDate,);

Report("För valuta " + String(Pr.Currency) + " växelkurs för det givna datumet: " + String(Pr.Rate) + ", multiplicitet: " + String(Pr.Currency));
EndCycle;

Exempel 4 Erhålla faktiska grossistpriser för varor (val av dimensionen "TypPris" anges)

SelectionPriceType = New Structure("PriceType", Enumerations.PriceTypes.Wholesale);
tzData = RegisterInformation.CompanyPrices.SliceLast(SelectionDate, SelectionPriceType);
För varje sida från datacykeln
Report("För artikel " + String(St.Nomenclature) + "grossistpris: " + String(St.Price));
EndCycle;

Få tillgång till periodisk information med frågor

För att erhålla denna information används en virtuell tabell över delen av de sista/första posterna i informationsregistret. Till sin struktur är den helt identisk med huvudtabellen i informationsregistret och innehåller följande fält:
<Имя измерения> - En uppsättning fält som innehåller värdena för registrets dimensioner. Fältnamnen motsvarar dimensionsnamnen.
<Имя реквизита> - En uppsättning fält som innehåller värdena för registerdetaljerna.
<Имя ресурса> - En uppsättning fält som innehåller värdena för registerresurserna.
Aktivitet- Innehåller ett tecken på inspelningsaktivitet. Poster för vilka värdet av denna egenskap är satt till False kommer inte att beaktas vid inhämtning av "första" eller "sista" posterna i registret, samt vid inhämtning av information vid en viss tidpunkt.
Tidsögonblick- Innehåller den tidpunkt då registret skrevs.
Linje nummer- Innehåller radnumret, vilket definieras som sekvensnumret för posten i postuppsättningen.
Period- Innehåller den period som registeranteckningen tillhör.
Registrator- Innehåller en länk till dokumentet med rörelseprotokoll.

När du kommer åt de virtuella tabellerna SliceFirst och SliceLast kan du ange följande alternativ:

Datum - Anger datum eller tidpunkt för vilken information kommer att tas emot. Om parametern inte är inställd kommer de senaste/tidigaste posterna att väljas.
Skick - Villkoret anges i frågespråket. Den kommer att användas för att begränsa sammansättningen av poster, bland vilka de senaste/tidigaste kommer att väljas. Villkoret kommer att tillämpas på de ursprungliga posterna, inte på de som redan har valts.

Här är exempel på hur du kan komma åt register i informationsregistret med hjälp av frågor:

Exempel 1 Välj alla informationsregisterposter

VÄLJ * FRÅN Dataregistret. Valutakurser

Exempel 2 Få den aktuella växelkursen för en valuta på ett givet datum

VÄLJ valuta, kurs
FROM DataRegister.Currency Rates.SliceLast(&SelectDate, Currency = &SelectCurrency);

Exempel 3 Välj aktuella växelkurser för alla valutor på ett givet datum

VÄLJ valuta, kurs
FROM DataRegister.Currency Rates.SliceLast(&SelectionDate);

Exempel 4 Få en uppdaterad prislista för ett givet datum (en viss pristyp anges, till exempel "Detaljhandel")

SELECT nomenklatur, pris
FROM DataRegister.CompanyPrices.LastSlice(&SelectDate,PriceType=&SelectPriceType);

Sammanfattning
– Det periodiska informationsregistret är ett kraftfullt verktyg för att lagra historik över förändringar i nästan vilken information som helst.
- Frekvensen för informationsregistret kan variera kraftigt: från registrardokumentets position (minsta frekvens) till ett år (maximal frekvens). 1C:Enterprise 8 har även icke-periodiska informationsregister.
- Informationsregistrets resurstyp kan vara primitiv (nummer, sträng, datum, boolesk), referens (referens till ett uppslagselement, dokument, uppräkningsvärde) eller Value Storage.
- Periodiskt informationsregister kan producera resursvärden exakt på ett givet datum, det senaste eller tidigaste värdet på ett givet datum, eller en del av det förra och en del av det senare på ett specifikt datum enligt de givna dimensionsvärdena.
– Tillgång till informationsregisteruppgifter är möjlig både med hjälp av metoder och med hjälp av förfrågningar.

Informationsregistret 1C 8 är ett metadataobjekt utformat för att lagra referensinformation i sammanhanget av de dimensioner som definierats av utvecklaren.

Ett typiskt exempel på användning av informationsregistret är att lagra information om växelkurs per valuta och period.

Låt oss titta närmare på informationsregistrets egenskaper och inställningar.

De två huvudegenskaperna för rollup-registret är − Periodicitet Och Inspelningsläge.

Detta är unika informationsregisteregenskaper som inget annat metadataobjekt har. Låt oss överväga dem mer i detalj.

Den här egenskapen låter dig lägga till ytterligare en dimension till listan över dimensioner — Period. Med dess hjälp kan du lösa ett stort antal uppgifter: lagra information i en databas, med hänsyn till relevansen för ett visst datum. Det finns många tillämpade exempel på användning av perioder: lagring av värdet på en valuta för varje dag, lagring av priset på en vara, etc.

Periodicitet kan ha följande värden:

  • Icke periodisk
  • inom en sekund
  • Inom en dag
  • Inom en månad
  • Inom blocket
  • Inom ett år

Få 267 1C-videolektioner gratis:

Om du väljer en annan periodicitet än alternativet Icke-periodisk kommer systemet att kontrollera posternas unika karaktär inom en angiven tidsperiod. Om posten inte är unik skickar 1C-systemet ett meddelande och låter dig inte skriva till databasen.

Och en av huvuddragen i det periodiska registret av information är förmågan att ta emot färdiga värden av "Klipp först" och "Klipp det sista". Denna information gör att du mycket snabbt kan få information från databasen om det senaste (första) inställda värdet på ett specifikt datum.

Inspelningsläge för informationsregistret

I 1C 8.2 och 8.3 kan denna egenskap vara antingen "Oberoende" eller "Underordnad registraren". I det första fallet kan anteckningar göras både programmatiskt och från informationsregisterförteckningsformuläret. I det andra fallet är det obligatoriskt att ange journalföringshandlingen. Detta medför vissa begränsningar, men öppnar samtidigt nya möjligheter.

Informationsregistrets dimensionsegenskaper

Du bör också vara uppmärksam på paletten för mätegenskaper i informationsregistret 1C 8.3. Speciellt på flaggor Leading och Main urval:

  • Ledande- en egenskap för dimensionen, vilket antyder information om att utan värdet av denna dimension, är registerposten meningslös. Detta innebär faktiskt att systemet, när ett värde tas bort från en dimension, även tar bort registerposten med dimensionen "Leading". Endast ett mått kan ställas in.
  • Huvudval- om registret är oberoende, kommer registreringen av ändringar för utbytesplanen att fastställas genom dessa mätningar. Liknande användning Huvudval per period omfattar grundval för perioden för periodiska register.

Programinmatning i informationsregistret 1C

Det finns två sätt att lägga till nya poster i informationsreskontran - med hjälp av posthanteraren och med en postuppsättning. Det första fallet är lämpligt för en enstaka post, det andra för två eller flera poster.

Använda Recording Manager:

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();

Med hjälp av en uppsättning poster i informationsregistret 1C:

NewRecordSet = DataRegisters.Currency Rates.CreateRecordSet();
//om du inte ställer in valet raderas alla register i informationsregistret
NewRecordSet.Selection.Currency.Set(Dollar, True);
NewRecordSet.Selection.Period.Set(Date(31,12,2016), True);
//vi bildar direkt rekordet för uppsättningen
NewRecordSet = NewRecordSet.Add();
NewSetRecord.Currency = References.Currencies.FindByName("USD");
NewSetRecord.Period = Datum(31,12,2016);
NewSetRecord.Course = 100;
NewSetRecord.Multiplicity = 1;
NewRecordSet.Write();

Informationsregister 1C det är en strukturerad datauppsättning med dimensioner och resurser. Designad för att lagra periodisk information.

Periodicitet

Information lagras i termer av mått och period. Registrera information, du kan ställa in frekvensen:

  • Icke periodisk
  • av registrator
  • andra
  • en vecka
  • månad
  • fjärdedel

Periodicitet krävs för att välja information från registret under en viss tidsperiod. Om du anger en frekvens kommer anteckningar i registret att göras med den period då anteckningen gjordes. Låt oss säga att om du tittar på registret "Artikelpriser" kan du se historiken för prisförändringar, med vilka mätningar och under vilken tidsperiod posten gjordes.

Periodicitet i informationsregister behövs för information som förändras över tid, till exempel: växelkurser, artikelpriser, artikelrabatter och marginaler m.m.

Registratorer

Om du skriver till informationsregistret med hjälp av ett dokument måste du ställa in inspelningsläget: "Inlämning till registrar" och välja det dokument som ska användas för att skriva till registret. Då kommer fältet "Registrator" upp i registret, där uppgifter kommer att lagras, vilket dokument anteckningen gjordes med. Registraren kan också användas som en period, för detta, specificera i fältet "Periodicality" - "By registrar". Underställning till registratorn görs när det krävs att registret binds hårt till dokumentet och att ändra registreringarna i registret i manuellt läge blir otillgängliga.

Det kan finnas flera dokument som kommer att vara registrarers roll. För att lägga till en registrar måste du gå till egenskaperna för det obligatoriska informationsregistret, gå till fliken "Registrarer" och markera rutorna bredvid de dokument som kommer att fungera som registrar.

Du kan se rörelserna som registraren gör från dokumentet. För att göra detta måste du gå till dokumentet du är intresserad av, klicka på: Gå - Dokumentförflyttningar genom registraren.

I registeregenskaperna, glöm inte att lägga till rättigheterna, de kan tilldelas på fliken "Rättigheter". Sedan måste du i listan över roller välja den roll som du vill lägga till rättigheter till registret och ställa in rättigheterna till den valda rollen i listan över rättigheter.

Det unika med rekord

Det unika med posten beror på perioden och mätningarna. Om du till exempel vill skriva en post med samma mått till registret "Artikelpriser" samma dag, kommer du inte att lyckas och programmet kommer att orsaka ett fel, eftersom registrets frekvens är inom en dag.

Om frekvensen bestäms av registratorn deltar han också i postens unika karaktär.

För icke-periodiska och oberoende register beror unikheten på kombinationen av mätningar.

Blanketter

För att se posterna, använd listformuläret, du kan ställa in urvalet för de fält du är intresserad av, se historiken för posterna och ändra dem genom postformuläret. Du kan se registerposterna enligt följande: i toppmenyn klickar du på knappen "Operationer" - "Informationsregister". I fönstret som öppnas väljer du det register du behöver. Därefter öppnas ett listformulär i form av en tabell, där varje rad är en unik post.

För att redigera/skapa, använd anmälningsformuläret, om inlägget är underordnat registratorn kommer fältet inte att vara tillgängligt och formuläret kommer inte att skapas.

Du behöver lägga till blanketter i konfiguratorn genom att gå till informationsregistret, i fliken "Blanketter" och klicka på "förstoringsglaset" bredvid önskad blanketttyp. Därefter öppnas ett fönster där du kan konfigurera fälten för det framtida formuläret (plats, namn och ordinera funktionalitet).


Mått, resurser och rekvisita

Måtten är avsedda att utgöra det unika med posten, de kan sedan användas för att välja och skära efter en specifik dimension. Kombinationen av mätningar utgör nyckeln till rekordet. Det är bättre att inte skapa ett stort antal dimensioner så att bordet inte växer och inte saktar ner i processen att arbeta med det.

Dimensioner har en kryssruta "Leading", om den är inställd kommer posten att lagras i databasen så länge denna dimension existerar. Flera ledande mätningar kan göras. Till exempel i informationsregistret "Artikelpriser" är den ledande dimensionen artikeln, om du raderar artikeln som deltar i posten så raderas posten i informationsregistret för denna artikel automatiskt.

Resurser är utformade för att lagra sammanfattande information: kvantitet, pris, etc. I framtiden kommer vi att få resurser under en viss tid (om registret är periodiskt), enligt mätningar.

Detaljer, i de flesta fall, är avsedda att lagra ytterligare information, de tar inte del i det unika med posten. Till exempel kan information som författare, kommentar etc. anges i detaljerna.

Du kan utföra följande åtgärder med informationsregistret:

  • Radering av en post i informationsregistret 1C

Egenheter

- Det unika med poster genom en uppsättning dimensioner: varje post i informationsregistret är ett nytt värde för resursen.

- Uppgifter om informationsregistret kan antingen vara periodiska eller inte.

– Informationsregistret kan vara beroende och oberoende av registratorn.

– Det går att göra ett klipp av första och sista skivan på önskat datum. Detta implementeras av virtuella tabeller: SliceFirst och SliceLast. För att använda dessa tabeller kan du använda både urval och fråga (i frågedesignern tar du bort dessa virtuella tabeller och du kan fråga dem). Dessa tabeller kommer att finnas tillgängliga om informationsregistret är periodiskt.

Registret "Nomenklaturpriser" är ett periodiskt register över uppgifter, anteckningar görs enligt registratorn.

Bilden visar att frekvensen är inställd inom ett dygn. Det innebär att priset kan ändras en gång om dagen enligt unika mått under dagen.

Registret är underställt dokumentet "Sätta priser för varor". Så, posten i registret kommer från detta dokument. Rörelser på ett specifikt dokument kan ses från formuläret för dokumentet "Ställa artikelpriser".

Registret är utformat för att lagra information om varans pris, med dimensionerna "Pristyp", "Nomenklatur" och "Kännetecknande för artikeln". De ledande dimensionerna är alla tre fält i dimensionen, det kommer att vara möjligt att göra ett urval på den under urvalet.

Slutsats: efter att ha läst artikeln kommer du att kunna skapa ett 1C-informationsregister, lägga till dimensioner och resurser, ställa in redigering och lista formulär. Skapa en post och gör ett urval av befintliga poster. Om du har några frågor, använd kommentarerna i artikeln, jag kommer att försöka snabbt svara på din fråga.

Mycket ofta i 1C-frågor måste du arbeta med datum. Speciellt när begäran är byggd till metadataobjekt som innehåller periodisk information. I regel handlar det om register (information, ackumulering, beräkning, redovisning). Tänk på de mest använda funktionerna i frågespråket 1C för att arbeta med datum. Vi kommer att bygga exempel utifrån informationsregistret Anställda Organisationer ZUP-konfigurationer version 2.5.

  • DATUM TID

    Låter dig få datumet i frågan (med eller utan tid) genom att ange år, månad, dag, timme, minut, sekund.
    Syntax:
    DATETIME(År, Månad, Dag, Timme, Minut, Sekund)
    Vanligtvis anges inte timme, minut och sekund. Låt oss ta ett miniexempel. Skriv in följande text i frågekonsolen:

    VÄLJ DATUMTID(2016, 1, 1)

    Som ett resultat av frågan får vi datumet - 2016-01-01
    Det är faktiskt svårt att föreställa sig en situation där datumet kommer att anges i begäran på detta sätt. När allt kommer omkring, när du behöver ange perioden, används parametrar. Men det finns ett fall då denna funktion är av särskilt värde. Det är då vi behöver ange ett tomt datum i fälten eller i frågevillkoren. Låt mig påminna dig om att för 1C-språket ser ett tomt datum ut - 0001.01.01. För att få ett tomt datum i begäran räcker det alltså att specificera DATETIME(1, 1, 1). Låt oss som exempel välja från informationsregistret Anställda Organisationer poster som inte är ifyllda Slutförandeperiod:

    VÄLJ Organisationsanställda.Period, Anställda i Organisationer.Anställda, Anställda i Organisationer.Position, Anställda i Organisationer.Organisationsavdelningen FRÅN Informationsregistret.Anställda i Organisationer AS Anställda i Organisationer WHERE Anställda i Organisationer,DATUM =Anställda i Organisationer. 1, 1)

  • BÖRJAN AV PERIODEN

    För det angivna datumet, returnerar början av perioden det tillhör.
    Syntax:
    START AV PERIOD(Datum, PeriodType)
    PeriodType kan ha följande värden: MINUTT, TIMME, DAG, VECKA, MÅNAD, KVARTAL, ÅR, DECADE, HALVÅR
    I frågekonsolen anger du:

    VÄLJ START PÅ PERIOD(DATETIME(2016, 1, 15), MONTH)

    Begäran återkommer - 2016-01-01
    Och nu ett exempel. Som ni vet, frekvensen av registret Anställda Organisationer en dag. Låt oss skapa en fråga där i stället för den faktiska perioden med poster, kommer datumet för början av månaden att visas.

    VÄLJ BÖRJAN PÅ PERIODEN (Anställda i Organisationer.Period, MÅNAD) SOM Början av månaden, Anställda i Organisationer.Anställd, Anställda i Organisationer.Position, Anställda i Organisationer.Organisationens avdelning FRÅN Informationsregistret.Anställda AS. Anställda i organisationer

  • SLUTPERIOD

    Syntaxen är densamma som för början av en period. Och som namnet antyder returnerar det slutet av perioden efter datum och typ av period. Vi kommer inte att överväga i detalj. Vi begränsar oss till ett miniexempel.
    Begäran:

    SELECT ENDPERIOD(DATETIME(2016, 1, 15), MONTH)

    Retur 31.01.2016 23:59:59
    Som du kan se returneras värdet exakt till tvåan.

  • LÄGG TILL

    Lägger till det angivna antalet tidsluckor till datumet.
    Syntax:
    ADDDATE(Datum, PeriodType, Count)
    PeriodType tar samma värden som för funktionen BÖRJAN AV PERIODEN
    Låt oss ta februari som exempel:

    SELECT ADDDATE(DATETIME(2016, 2, 15), MONTH, 2)

    Vi får datumet 04/15/2016 0:00:00 AM Trots att februari är en kort månad är dagen för det mottagna datumet densamma som den ursprungliga. Det är väldigt bekvämt att du inte behöver tänka på antalet dagar i månader.
    Siffran kan också vara negativ. Därefter räknas intervallet i motsatt riktning.

  • DATUMSKILLNAD

    Beräknar skillnaden mellan två datum i de angivna enheterna.
    Syntax:
    DATUMDIFF(Startdatum, Slutdatum, Periodtyp)
    Periodtypen kan ha följande värden: ANDRA, MINUTT, TIMME, DAG, MÅNAD, KVARTAL, ÅR
    Till exempel:

    SELECT DATUM DIFFERENCE(DATETIME(2016, 2, 15), DATETIME(2016, 3, 1), DAY)

    returnerar 15

Här övervägdes de mest använda funktionerna i frågespråket 1C. Resten används sällan. Vid behov finns exempel på att arbeta med dem i hjälpen som är inbyggd i 1C-plattformen.

Gillade du artikeln? Dela med vänner!