Information registers

The main purpose of the information register is to store significant information for a specific combination of values that could be expanded over time. Information registers with information expanded in time are called periodical.
For example, if we want to store information about competitors' prices for the goods that we sell, this information could be expanded by adding goods or competitors. If we also want to track price register records and if we enter this information periodically, the stored information can be expanded over time, as well.
An information register is a data array required to implement a function that would be able to provide required information on a specific set of arguments. Function arguments are called dimensions and function results are called resources. In the above example, "CompetitorsPrices" register will contain "Competitor" and "Product" dimensions and "Price" resource. There may be more than one resource: for example, you can store wholesale and retail prices.
To expand the information in time you have to use the Period field in the register. It is not entered as a dimension, but is automatically added by the system when a periodical register is created.
For periodical data registers the system supports standard operations, such as obtaining the latest or the earliest value for a specific combination of dimensions (e.g. getting latest entered price for a specific good and a specific competitor) or summary of latest or earliest values. For example, you can receive all of the latest entered prices for various goods and competitors.
If a register is not periodical, no Period field is created for it. In the above example, CompetitorsPrice register may be non-periodical, if we do not want to store price history, but only current prices. In this case, the function will be able to tell us, what is the price of a specific competitor on a specific good, but it won't be able, what was the price in the beginning of the year.
These principles imply that the system can only have one record with a specific set and period of dimensions. In fact, there really can be only one price for each good for each competitor. If we want to store different prices in the database, we need to create an additional dimension to store a value that makes these prices different. For example, we may create "InfoSource" dimension. In this case, we will be able to enter competitors' prices from different sources.
The uniqueness of the records by the dimension set makes information registers fundamentally different from accumulation registers in which more than one record can be entered with the same value and period.
Lines of the information register containing information about resource values for specific dimensions and specific periods, are called records. Records may be entered into the data register in two ways: manually or with documents.
These two options influence only the way the information is entered and not the main principle of the register functioning.
A document that enters a record into the information register is called a recorder.
Registers that are recorded independently may be freely edited manually or using the script tools. If a dimensions of such register is assigned as the master dimension and its value is a reference to a database object, this record will have sense only while this object exists. For example, if you specify "Competitor" dimension as the master dimension, it is considered that this record has sense as information about this competitor. Correspondingly, when a competitor is deleted, all records related to this competitor will be deleted automatically.
If a register is maintained by a recorder, this means that the records in this register will be strictly subordinate to the recorder documents. Usually it means that records are created when documents are registered. When a document is deleted, the records will be deleted automatically. Unlike master dimensions, there may be only one recorder.
You can use InformationRegisterManager. object for general operations with the information register (searching, selecting and creating register records) in program modules. You can use the InformationRegisterRecordManager. object to read, write and delete some records of the information register, which is not controlled by recorders. You can use the InformationRegisterRecordSet. object to read a record set and record it into database basing on specific filter criteria. You can use InformationRegisterSelection. object for dynamic tab through register records.

    

1C:Enterprise Developer's Community