Documents, accumulation registers, storage systems. Documents, accumulation registers, storage register Accumulation register how to change the registrar in the record

In this article I want to look at such a 1C:Enterprise 8 mechanism as accumulation registers. This mechanism allows us to accumulate numerical indicators about the company’s activities, and it processes these indicators, calculates the results and allows us to obtain balances and turnover for these indicators. As an example, I will give the accumulation register of GoodsInWarehouses from the “Trade Management” configuration

This register is used to store the balance of goods in the company's warehouses in the context of product range, product characteristics, series and product quality. Those. at any time we can see how much in a particular warehouse, for example “Central Warehouse” we store the item “Men’s Boots”, with the characteristic “size 43”, series dated “08/20/2011” and quality “new”.


And for this to be possible, data must be written to the register. The 1C:Enterprise platform is designed in such a way that you can only record data in the register with reference to documents. Those. if something changes in the register (arrival of goods, or its sale), the document that did this must be indicated. Typically, data is recorded in the register when a document is posted. In the document module, there is a predefined procedure ProcessingProcessing, in which the developer describes the algorithm by which records in the accumulation registers are formed.

Let's look at the register creation process from the very beginning. As you remember, we created a configuration in which we already have directories and documents. Now we will add an accumulation register to it. We add an accumulation register, the name “ProductsInWarehouses”, the type of register “Remains”. We will look at the type of the “Turnover” register later. On the data tab, add the “Nomenclature” dimension of the “Directory.Nomenclature” type and add the “Quantity” resource of the number(15,3) type.


Now, we need to ensure that register entries are generated when posting a document. But among the documents we only have “Cash Receipt Order” and “Expense Invoice”. We do not have a document that would make incoming movements into our register. Let's create it. We create a document, the name “Positioning of goods”, on the data tab we add the tabular part “Goods”, in it the details “Nomenclature” and “Quantity”.


In order for our document to make movements according to the accumulation register “ProductsInWarehouses” on the Movements tab, mark it (register) with a checkmark and click the “Movement Constructor” button. This constructor helps us write an algorithm for generating register entries, which is located in the already mentioned procedure “Processing Posting”.

In the designer, leave the register movement type as “Receipt”, in the Tabular section field select “Products”, click the “Fill in expressions” button and then the OK button.


A document module will open in which the Post Processing procedure has already been created.
ProcessingProcedure(Failure, Mode)
//((__CONSTRUCTOR_MOVEMENT_REGISTERS
// This fragment was built by the constructor.
// When reusing the constructor, changes made manually will be lost!!!

// register GoodsInWarehouses Arrival
Movements.ProductsInWarehouses.Write = True;
Movements.ProductsInWarehouses.Clear();
For Each TechStringProducts From Products Cycle
Movement = Movements.ProductsInWarehouses.Add();
Movement.MovementType = AccumulationMovementType.Incoming;
Movement.Period = Date;


EndCycle;

//))__CONSTRUCTOR_MOVEMENT_REGISTERS
End of Procedure

Now let's launch Enterprise mode and create some documents. Documents now have a “Go” submenu in the top panel, where you can view the movement documents created in registers.


To see what products we have in our warehouse, we will make a report that will show the balances in the “ProductsInWarehouses” register.
Go to Configurator mode and create a report. Set the name to “Remaining Products”. On the form tab, create a new report form and assign it as the main one. We add a Tabular Document Field to the form, this can be done through the “Form-Insert Control” menu and select the type of element - a spreadsheet document field, assign it the name TabDoc and place it on the entire form.


Then we go to the “Generate” button handler, delete the comment located there, place the cursor in the text of the event handler procedure, right-click and select “Query constructor with result processing”. This will allow us to create a query and immediately display its result in the report.
On the Result Processing tab, select “Output to Spreadsheet Document” and go to the “Tables and Fields” tab. We see that the ProductsInWarehouses table is presented in the form of four tables.

The first table is a list of records that we created in document processing, the rest are virtual tables that the platform creates itself. These tables allow us to obtain processed register data - turnover for the period, balances as of date, or balances and turnover in one table. We want to display balances, so we select the Remains table. From this table, select all fields Nomenclature and QuantityRemaining. Click OK.
The designer has generated an algorithm that will give us a report on balances; we just need to indicate where to display the report.
Let's add the line:
“TabDoc = FormElements.TabDoc;” before the text generated by the constructor.
TabDoc = FormElements.TabDoc;
//((QUERY_CONSTRUCTOR_WITH_RESULT_PROCESSING
// This fragment was built by the constructor.
// When reusing the constructor, changes made manually will be lost!!!

Layout = Reports.RemainingProducts.GetLayout("Layout");
Request = New Request;
Request.Text =
"CHOOSE
| Products in Warehouses Remaining stock. Nomenclature,
| PRESENTATION(ProductsInWarehousesRemains.Nomenclature),
| ProductsIn WarehousesRemaining.QuantityRemaining
|FROM
| RegisterAccumulations.GoodsInWarehouses.Remains AS GoodsInWarehousesRemains";

Result = Query.Run();

HeaderArea = Layout.GetArea("Header");
AreaFooter = Layout.GetArea("Footer");
TableHeadArea = Layout.GetArea("TableHeader");
TableFooterArea = Layout.GetArea("TableFooter");
DetailRecordsArea = Layout.GetArea("Details");

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

SelectionDetailRecords = Result.Select();
While SelectDetailRecords.Next() Loop
AreaDetailRecords.Parameters.Fill(SelectionDetailRecords);
TabDoc.Output(DetailedRecordsArea, DetailedRecords Selection.Level());
EndCycle;
TabDoc.FinishAutoGroupingRows();
TabDoc.Output(TableFooterArea);
TabDoc.Output(AreaFooter);

//))CONSTRUCTOR_QUERY_WITH_RESULT_PROCESSING
Let's launch 1C:Enterprise mode and see how the report works.


As we can see, the designer has created something more or less acceptable for us.
We also have “Sale of goods”, which should reduce our balances. Let's make it so that it also forms movements according to the register.
Open the document, on the Movements tab, check the box next to our register, and click the “Movement Designer” button.

Register movement type, set the expense, select the “Products” tabular part, click “Fill in expressions” and “OK”. The designer has generated an algorithm for document processing, let's check it. To do this, let’s restart the 1C:Enterprise mode and re-enter the created “Product Sales” documents.
Then we will generate a report on balances again.


As you can see, the balances have decreased, even going negative for some positions. This happens because we do not control the presence of balances when selling goods.
Our “GoodsInWarehouses” register is a typical example of a balance register; it has both incoming and outgoing movements. But the 1C system still has revolution registers.
As an example, I will give the “Sales” register. Every time we sell a product to a client, we record who bought what and how much from us. And then in the report we can see how much product so and so bought from us. Separate incoming or outgoing movements will not be recorded in this register. The movements will be equivalent. In these cases, the revolution register is used.

Let's create such a register in our configuration. Let’s add a new accumulation register, name “Sales”, register type “Turnover”, on the data tab we’ll add the “Client” and “Nomenclature” dimensions, resources “Quantity” and “Amount”.


Let’s return to the “Product Sales” document, on the movement tab, check the box next to the “Sales” register, and click the “Movement Designer” button. Click the (+) (add) button and select the “Sales” register, then, as usual, select the tabular part and click “Fill in expressions”. "OK".
// Sales register
Movements.Sales.Record = True;
Movements.Sales.Clear();
For Each TechStringProducts From Products Cycle
Movement = Movements.Sales.Add();
Movement.Period = Date;
Movement.Client = Client;
Movement.Nomenclature = TechStringProducts.Nomenclature;
Movement.Quantity = TechStringProducts.Quantity;
Movement.Amount = TechStringProducts.Amount;
EndCycle;

We launch 1C into Enterprise mode, transfer the “Product Sales” documents, check whether the movements are formed. You can generate the report yourself; this is all done according to the same principle as the previous report; you need to select the table “Sales.Turnover”.

Now let’s add an interface to our configuration so that we don’t have to open documents through the “Operations” menu. Open the “General” branch in the configurator, look for Interfaces in it and add a new one. The interface designer will open, in it click the “Build” button. All. The simplified interface is ready. In order for it to open by default, you need to set the interface we created as the main interface in the configuration properties (right-click on the topmost element of the configuration tree - Properties).
Get this look:

That's all I wanted to tell you today about accumulation registers. If you have any questions, write, I will be glad to help.

Written by: Roman Zabolotin
Email: 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 accumulation register this is a structured data set that contains information about all movements (receipt / expense or turnover) of selected documents.

Types of accumulation register

In 1C there are only two types of accumulation register:

  • Revolutions
    If you plan to receive only revolutions from the register, be sure to set the type to revolutions.
    For example, when registering sales, the number of sales is important to us and balances are absolutely not needed here. Therefore, the register type must be set to “Revolutions”.
  • Leftovers
    If you plan to receive balances and turnover from the register, set the type to balances. For example, let’s take the accumulation register “GoodsInWarehouses”; in it, important information will be both balances and turnover. Therefore, the register type must be set to “Balances”.

Attention: choosing the wrong type of accumulation register will result in low performance of the information base.

Dimensions, Resources, Details and Standard Details

Any accumulation register contains dimensions, resources, details and standard details.

Measurements are needed to generate key record data, from which in the future you can obtain balances or view turnover for the measurements you are interested in.
You can also set the measurement properties to check whether the measurement is filled in (an empty value will cause an error)

Resources needed to store summary data in a register: quantity, amount, etc. In the future, we will receive resources by measurements.

Details are mainly needed to store related information and are rarely used.

Standard details are as follows:

  • period - the date when the register movement was performed
  • registrar - a document with which an entry was made in the register
  • type of movement - income or expense (arrival increases the amount of resources, and expense decreases)

Registrars

Registrars are documents that can make movements in the accumulation register. Movements to the 1C accumulation register can only be made using documents (registrars). Most of the algorithms for creating movement in the accumulation register are formed when posting a document in the object module, the “Processing Posting” procedure.


Indexing dimensions

Indexing is required to increase the performance of the information base.
The “Index” property must be specified for dimensions for which you plan to perform multiple selections and which have a large number of elements.

For example: the accumulation register “Lots of Goods in Warehouses”. There is a dimension “Nomenclature” and “StatusParties”. It is more expedient to set the indexation attribute for the “Nomenclature” dimension than for “Part Status”, since the number of nomenclature options is much higher than for batch status.

Uniqueness of records

1C Enterprise controls the uniqueness of entries in the accumulation register, and therefore you will not find two identical entries.

Capabilities of the accumulation register

  • a selection of records for a certain period according to specified dimensions
  • selection of records by registrar
  • obtaining balances and turnover for a selected date with specified measurements
  • calculating totals for a specified date

Examples of working with the accumulation register

An example of obtaining balances for the current date

Procedure GetBalanceOnDate()
NewRequest = New Request;
NewQuery.Text =
"CHOOSE
| Commodity Remains.Nomenclature,
| ItemRemaining.QuantityRemaining
|FROM
| RegisterAccumulation.GoodsInWarehouses.Remains(&CurrentDate,) AS ProductRemains";
NewQuery.SetParameter("CurrentDate", CurrentDate());

EndCycle;
End of Procedure

An example of obtaining turnover for the current year

NewRequest = New Request;
NewQuery.Text =
"CHOOSE
| ProductTurnover.Nomenclature,
| CommodityTurnover.QuantityTurnover
|FROM
| RegisterAccumulation.GoodsInWarehouses.Turnover(&StartPeriod, &EndPeriod,) AS Turnover";

New Query.SetParameter("Start of Period", Start of Year(CurrentDate()));
NewQuery.SetParameter("ConPeriod", CurrentDate());

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

While QuerySelect.Next() Loop
EndCycle;

Example of how to select movements in the accumulation register

NewRequest = New Request;
NewQuery.Text =
"CHOOSE
| ProductsInWarehouses.Period,
| GoodsInWarehouses.Registrar,
| Products in Warehouses. Type of Movement,
| Products in Warehouses. Nomenclature,
| ProductsIn Warehouses.Quantity
|FROM
| Accumulation Register.GoodsInWarehouses AS GoodsInWarehouses";

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

While QuerySelect.Next() Loop
EndCycle;

Accumulation register list forms

Forms are used to visually view all movements of a selected register. In it you can see which documents record the expense or receipt, and also see what measurements are used. You can also sort movements or make selections there.
The system will automatically generate a list form or you can customize it yourself.

Documents are the essence of accounting in 1C. Each document has a result, for example +10 items arrived.

Reports – allow you to view the results. These results are summarized and shown to the user.

However, there are a lot of documents and if it were necessary to summarize their results, it would be too difficult. Therefore, a better way has been invented!

Documents record their results (called “movements”) in special tables - 1C registers, which themselves summarize the results so that the report simply displays the pre-calculated totals.

Today we will talk about 1C registers and their use.

The 1c register is a table, the same as in Excel, each document writes one or several lines of its movements (results) with some sign - plus or minus - into the 1c register. This means that the total of the 1C register has changed to the corresponding figure.

The document that recorded movements in the 1C register is called the Registrar. The date and time of the movement are equal (in 99% of cases) to the document date. The date of movement is called the Period.

Each 1C register usually takes into account the movements of one particular directory. For example, the 1C register Goods in warehouses - movements of goods (in terms of 1C “nomenclature”) - how many goods arrived at the warehouse, how many left. Register 1C Mutual settlements with counterparties (buyers and suppliers) - movements of contracts with counterparties - how much the counterparty owes us after the purchase or how much we owe him after payment. The directory in the context of which the register is maintained is called the main dimension (analytics) of the 1C register.

Of course, no one makes one basic measurement to the 1C register. After all, if we take into account the movement of goods, then we are interested not only in which goods have decreased or increased, but also, for example, in which warehouse. Therefore, there are always three to five additional measurements “just in case,” which can be called additional analytics of the 1C register.

How is a document posted through registers?

Document movements across 1C registers

Let's see how 1C registers work. Here we have a goods receipt document, in which we see that the product Oil has arrived at the Main warehouse.

In terms of logic and mathematics, this document has the result:

Kremlin oil, Main warehouse +10 (pcs)

Let's check - is this true?

This menu item will show us all the movements of the document that it has made in registers. As we can see, the document made movements through a whole bunch of 1C registers, in each of which it recorded different information (in accordance with the purpose of the 1C register). According to the 1C Goods in Warehouses register, he made the posting that we calculated.

How does it look in the 1C register? Let's open the 1C register through the Operations menu.

The 1C register has opened. There is a lot of data in it. We will make a selection only based on our document.

As a result, we see the movement of our document through the 1C register. It exactly coincides with what we calculated manually:

  • Plus – type of movement (income/expense)
  • The registrar is our document
  • Activity – this motion string is valid (i.e. not disabled)
  • Nomenclature, main dimension
  • Warehouse, additional dimension
  • Quantity, resource (that is, the number we count).

If we select not by document, but by nomenclature (in exactly the same way), then we will see the movements of all documents that affected this nomenclature. One document - we bought the goods. The other one was sold. Naturally, the 1C register itself does not show the total - for this you need to use a report or a query.

1C registers are different (we will discuss this below). Postings to different 1C registers also look different. We have now looked at the entries in the 1C accumulation register. This is what the postings of our same document look like according to the 1C accounting register, which works on the basis of the 1C accounting (tax) chart of accounts.

Why are 1C registers needed?

1C registers come in different types. The purpose of using the 1C register depends on its type.

  • 1C information registers
    This is a regular table, like in Excel. It has no movements (income/expenses). The 1C information register is usually used to store additional directory data. Using the 1C information register you can organize
  • Accounting registers 1C
    From the user's point of view, accounting is maintained on the accounting chart of accounts. In fact, accounting is kept in the table of 1C accounting registers, which are made in the context of the 1C chart of accounts.
  • 1C accumulation registers (1C balance register)
    Document movement table + and –, which automatically calculates the total at the beginning of the period and the total at the end of the period. For example, the movement of the Lopat product was +10, and then -8. This means that the remainder at the beginning was 0, and the remainder at the end became 2.

    The 1C accumulation register with the “Balances” view means that movements will be stored (receipts and expenses, which are also called “Turnover”) and additionally, totals will be automatically calculated (called “Balances”).

    The 1C balance register is used in the case when the directory logically may have a remainder. For example, when we take into account the movement of goods, we will use the 1C balance register - after all, we can say that there are 3 pieces of the Lopat product left.

  • Accumulation registers 1C (revolution register 1C)
    Table of movement of documents + and -, which does not count the total.

    The 1C turnover register is no different from the balance register, except that it does not automatically calculate balances.

    The 1C revolution register is used in the case when the directory logically cannot have a remainder. If we need to take into account sales of goods, then we will use the turnover register.

    For example, product sales were +10 (we sold) and then -2 (they returned to us). We cannot say that the balance of sales has become 8, because logically the concept of balance of sales does not exist; we will say that the total turnover (the sum of each line of turnover) has become 8.

  • 1C settlement registers

    Table of movements by calculation types and periods. Used in payroll (called Complex periodic calculations).

Where are the 1C registers located?

The execution of a document in code (in a program) is prescribed by the programmer. To do this, open . Find a line like “Procedure ProcessingProcessing(”. Open the cross and you will see the program for processing this document.

Setting up and developing 1C Registers

Main features of 1C Registers, by tab:

In any really working 1C database, a situation may arise when a document, while being processed, makes a large number of movements - several thousand or even several tens of thousands. This article is devoted to the peculiarities of writing such large sets of records to the database.

During one of the performance analysis works carried out by our technology experts, they were faced with the problem of canceling the posting of a document that made several thousand movements in one of the accounting registers. The problem manifested itself in the unpredictability of the time when the document was canceled. This time varied from normal (about a minute) to obviously inadequate (half an hour or more) for the same document. In some cases, our experts were unable to cancel the process altogether - the process did not end until the end of the working day and was canceled by rebooting the 1C server.

The problem of recording large sets is especially acute for canceling documents. This is due to the fact that when carrying out the sets can be added in portions:

A small study conducted on this topic showed that when using the current (at the time of writing) release of the 1C:Enterprise platform 8.1.15.41, the time for recording sets linearly depends on the number of records in the set, that is, the time for recording 6 portions of 3,000 transactions and one in 18,000 transactions is the same. However, we also had information that recording in several portions can be more effective in some cases, and in the course of the work described in this article below, we received a theoretical explanation of why this could be.

Unfortunately, when canceling the execution, it is not possible to record sets in portions - you can only delete the whole thing; the only predefined selection by the registrar leaves no options.

It is known that writing large sets of accumulation register records using a 32-bit 1C:Enterprise server can fail with a message about lack of memory, but in this case, although a 32-bit server was used, no messages were issued, and the work did not proceed with the accumulation register, and with the accounting register.

We initiated a discussion of this problem in the 1C partner conference http://partners.v8.1c.ru/forum/thread.jsp?id=856332 (requires registration).

Colleagues reassured me, confirming that there were no fundamental restrictions in this case, and the problem must have a solution. As an example, data was given on real documents making 250,000 transactions.

One of the interesting ideas (Sergey Doronin, VDGB-Soft, Yoshkar-Ola http://www.vdgb-soft.ru/) was to cancel posting a document outside of a transaction:

The solution was found by a specialist from the customer company, who canceled the posting of the problematic document, switching the database to exclusive mode (code fragment from the Syntax Assistant):

We received clarification on this fact from 1C (also in the conference):

“In exclusive mode, there is no call to the managed lock manager. Since you have a fairly large number of movements, the lock manager spends a significant amount of time locking resources one by one in a split mode. In your situation, it may be advisable to place a controlled lock on the entire accounting register before starting to record movements instead of setting an exclusive mode.”

The answer received made it possible not only to substantiate the experimentally found method of solving the problem, but also clarified two more points:

  • Why writing a set of records in several portions in some cases can be more effective than in one, as discussed above.
  • Why in standard 1C solutions, for example, in the configuration “1C: Manufacturing Enterprise Management 8” in the module of the document “Revaluation of Currency Funds” is such an obviously redundant blocking installed.

After the problem was solved, information was received about an alternative way to solve the problem (Pigolkin Stanislav, Axelot, Moscow http://www.axelot.ru/). For this purpose, it is recommended to disable the use of totals:

About the SetUseTotals method(<Признак>) in the Syntax Assistant it says:

“Sets the flag for using totals. If the use of totals is disabled, then when writing a set of register records, the totals will not be recalculated, but virtual tables for calculating balances and turnover will not be available.
This mode of register operation allows you to increase the speed of writing a set of register records. It can be useful for bulk data downloads.
When you set the flag to use totals, all totals are recalculated.”

Writing large sets of records into 1C registers does have some peculiarities, but it is quite feasible. In difficult cases, the methods outlined above, such as:

  • recording in several portions;
  • record outside of transaction;
  • transferring the database to exclusive mode;
  • setting a controlled exclusive lock on the entire register;
  • disabling the use of totals

will help solve the problem. The use of each method should be consistent with the existing realities of the specific base and organization of work of the complex using the 1C:Enterprise 8 platform.

GC Trade Soft, Moscow

The task of any accounting system is to store and promptly display information for the user, i.e. The goal of any system design is to promptly provide the user with a report. With the help of the data obtained, as a rule, management decisions are made at enterprises.

Let's assume that we have 1000 different documents: receipt of goods, write-off, return, sale, etc. And each of the documents changes the quantity of a certain product in the warehouse. To get information about the current quantity in the warehouse, you need to go through everything: some increase the quantity of goods, some decrease, some can increase or decrease. And if it is also necessary to take into account the warehouse, the organization?.. Such a system is very resource-intensive.

To simplify this process, 1C developers came up with special configuration objects. They are used for the convenience of storing and retrieving information; in 1C 8.3 and 8.2 all kinds of registers are used; in this article we will talk specifically about Accumulation registers.

The accumulation register itself is a table with information that collects all movements (receipts/write-offs or turnover) of certain documents. Let's look at what the movement table looks like using the example of a typical accumulation register “Goods in warehouses” in the “Trade Management 10.3” configuration:

Here we see that 1C “Sales” documents reduce the quantity of a certain product in a certain storage location, and receipt documents, on the contrary, increase the quantity. As a result, we get an overall picture in which we can clearly see what, when and in what quantity was received (written off) according to accounting. It is much more convenient to build a report using such a table.

Accumulation register in the configurator

What is an accumulation register from the point of view of configuration development? Let's start by looking at the fields of the accumulation register in:

Get 267 video lessons on 1C for free:

The accumulation register has Dimensions, Resources, Details and Standard details.

Let's first consider the standard details of the accumulation register:

  • period— the date of movement does not have to coincide with the date of the document;
  • registrar- a document that makes an entry in the register;
  • line number— serial number of the line in the record set, unique within the registrar;
  • activity— is responsible for getting records into virtual tables (more about them below);
  • viewmovement- income or expense.

Accumulation register measurements

A dimension is a section in which records are kept. In the above example, the accounting section is: warehouse, nomenclature, product characteristics, product series, quality. That is, by specifying the measurements we are interested in, we can obtain the quantity—resource—at any time. In the context of different dimensions, in the future, for example, you can obtain balances for a specific date.

Accumulation register resource

A resource is a numeric field in which information is stored in the context of the dimensions described above.

Otherwise, the interactions of dimensions/resources can be schematically depicted as a coordinate system:

Two dimensions - abscissa and ordinate of the coordinate system, i.e. in this example, the dimensions are warehouse and item. At the intersection of dimensions we can get a quantity - a resource. For example, at the “main” warehouse of the product “pencil” there is 1 piece in stock.

Details of the accumulation register 1C

Accumulation register details serve as a “comment” or additional information; in terms of measurements, balances/turnovers cannot be obtained. Used quite rarely.

Types of accumulation register

There are two types of accumulation register − turnovers and balances.

If the purpose of the accumulation register is not to obtain balances, it is necessary to use the type of accumulation register - rpm. A typical example of using a turnover register is recording sales volumes. In this case, we only need to know what sales were over a certain period of time; balances in this case do not make sense.

If the purpose of using the accumulation register is to obtain balances for a certain period, we need a register with the form leftovers. This type allows you to receive both balances and turnover. For such a register, the system automatically calculates balances. An example of a “residual” register is goods in warehouses, money in the cash register.

Using a register type leftovers where you can get by rpm, is considered a blunder in the design of the accumulation register from a system performance perspective.

Depending on the type of register, the system will create different virtual tables for the accumulation register. A virtual table is a quick way to obtain profile information from registers.

For the accumulation register it is:

  • Leftovers;
  • Revolutions;
  • Remains and turnovers.

For the solution developer, the data is taken from one (virtual) table, but in fact the 1C platform takes it from many tables, transforming them into the required form.

Proper design of accumulation registers

Accumulation registers must be designed from the required reports. The most difficult thing in the 1C 8.3 system is storing information correctly so that it can be easily retrieved at any time.

Among the features of register design, it should be noted the need to correctly arrange the dimensions in the register. Above all, you need to put the measurements that will be requested most often in the system.

Indexing accumulation register dimensions

Accumulation register measurements have the property of “indexing”. This property must be set to measurements in cases where it is planned to frequently apply selections to the measurement when receiving data and this measurement can have a large number of value options.

For example, the register is “ProductsInWarehouses”, the dimensions are “Warehouse, Nomenclature”, the resource is “Quantity”.

It is more correct to index the “Nomenclature”, but the “Warehouse” field should not be indexed, because the number of warehouses in the system, as a rule, is not significant.