Свойството е базовото измерение на регистъра за изчисление. Комплексни периодични изчисления Ще приема изчислението на езика 1s

При работа с изчислителни регистри е възможно да се получат основни данни. Това е своеобразен начин за изчисляване на оборота на регистъра, при който функцията за изчисляване на оборота не е проста функция на сумиране на ресурсите на регистъра чрез измервания за определен период, а е повече сложна функция. Тази функция зависи от състоянието на плана за тип изчисление, присвоен на книгата за изчисления, и по този начин се контролира от потребителя.

В този раздел ще разгледаме два метода за получаване на основни данни, които съществуват в системата - използване на езика на заявките и използване на функционална нотация, по метода GetBase(). В този случай ще наречем "основен" изчислителен регистър регистърът, за който е необходимо да се получат основни данни, а "базовите" регистри (от които може да има няколко в общия случай) ще бъдат тези регистри, за които се извършва сумиране на ресурсите.

Няма да разглеждаме подробно тези методи, ще разгледаме само техните различия и обхват.

Метод GetBase().

Метод GetBase()определени за обекти RegisterCalculationManager.<Имя регистра расчета> и RegisterCalculationRecord.<Имя регистра расчета> . Методът ви позволява да зададете ресурсите на базовите регистри, за които трябва да получите оборотите, да зададете полетата, в контекста на които трябва да получите оборотите, и да зададете правилата за сравняване на измерванията на основните и базовите изчислителни регистри .

Правилата за съпоставяне на записите на изчислителните регистри се определят от структурата, всеки елемент от която определя за едно или друго измерение на главния регистър списък от измервания на базовите регистри на изчислението. Имената на елементите на структурата трябва да съвпадат с имената на измерванията на главния регистър, а стойностите на елементите на структурата трябва да бъдат низове, като списъкът с измервания на базовите регистри е разделен със запетаи. Ако структурен елемент с името на едно или друго измерение не е посочен, това означава, че не се налага условие за съответното измерение.

Имената на измеренията и ресурсите на базовите регистри са посочени във формата<ИмяРегистраРасчета>.<ИмяПоля>.

Пример за използване на метода:
Код 1C v 8.x Ресурси = Нов масив(1);
Ресурси = "Основни начисления. Резултат, Допълнителни начисления. Резултат";

Измерения = Нова структура ("Индивид, организация");
Dimensions.Individual = "Основни начисления.Индивидуални,Допълнителни начисления.Служител";
Dimensions.Organization = "BasicAccruals.Organization,AdditionalAccruals.Organization";

Срезове = Нов масив (1);
Раздели = "Основни начисления. Метод, Допълнителни начисления. Метод";
// Изчисляване на baseBaseDataTable = Calculation.Retention Register.GetBase(Selection,
// Ресурси, размери, секции);

В примера по-горе измерението „Индивидуално“ на основния регистър при получаване на обороти ще бъде сравнено с измерението „Индивидуално“ на основния регистър „Основни начисления“ и измерението „Служител“ на основния регистър „Допълнителни начисления“ .

Таблица на езика на заявката за получаване на основни данни
За да получите основните данни в езика на заявките, се дефинират виртуални таблици „Изчислителен регистър.<Имя регистра расчета>.База<Имя базового регистра расчета>" . Параметрите на виртуалната таблица са размерите на основния регистър, размерите на основния регистър и полетата, в контекста на които трябва да получите основните данни. Размерите и разрезите са посочени като масив (или списък със стойности) от низове с имена на размери.

Пример за писане на заявка с помощта на виртуални таблици с основни данни:
Код 1C v 8.x
Размери1 = масив(2);
Dimensions1 = "Индивидуално";
Dimensions1 = "Организация";

Размери2 = масив(2);
Dimensions2 = "Служител";
Dimensions2 = "Организация";

Срезове = Нов масив (1);
Slices = "Режим";

Текст на заявка = "ИЗБЕРЕТЕ Индивидуално, тип изчисление, SUM(ResultBase)
| ОТ
|ИЗБЕРЕТЕ Индивидуално, Тип изчисление, База резултати
| ОТ Регистър на изчисленията. Удръжки. Основни основни натрупвания (&Размери1,&Размери1,&Аспекти)
|WHERE " + ConditionBasic + "
| ПРИСЪЕДИНЕТЕ СЕ ВСИЧКИ
|ИЗБЕРЕТЕ служител, тип изчисление, база резултати
| ОТ регистър на изчисленията. Задържане. BaseAdditionalAccruals (&Размери1,&Размери2,&Секции)
|WHERE " + ConditionAdditional + "
|) AS база
|ГРУПИРАНЕ ПО
| Индивидуален,
| Вид изчисление
|";

Заявка = Нова заявка(RequestText);
Query.SetParameter("Размери1", Размери1);
Query.SetParameter("Размери2", Размери2);
Query.SetParameter("Секции", Секции);

// ...задаване на допълнителни параметри на заявката, използвани в условията в WHERE// ,..
// получаване на селекция от заявката resultSelection = Query.Execute().Select();

Горният пример предполага същата структура от данни и същата задача за решаване като примера за метода GetBase(). В същото време виждаме забележимо увеличение на изходния код и неговата очевидна сложност.

Сравнение
Забележителна разлика между функционалния метод за получаване на основни данни и получаването с помощта на заявка е, че при функционален метод едно извикване на метода може да получи основните данни за всички основни регистри, а когато се използват заявки, получаването на основни данни се извършва чрез заявка няколко таблици - по броя на базовите регистри. Препоръчителният начин за получаване на данни обаче е да получите данните със заявка. Това ще позволи например да се получат не само данните за основните видове изчисления, но и допълнителна информация, необходима за изчислението.

Обърнете внимание, че производителността на получаване на данни чрез функционален метод и използване на заявка е една и съща въпреки очевидното усложняване на изпълнимия код в случай на заявки.

Кратка функционална нотация с помощта на метода GetBase() е разрешена само ако няма нужда от други данни освен базовите данни и в същото време искате да „спестите“ на кодови редове. От съображения за производителност на кода е абсолютно неприемливо да използвате метода GetBase(), ако след използването му все още трябва да получите допълнителни данни за изчисление чрез заявка.

Друго съображение се отнася до условията за избор на основните данни. За метода GetBase() всъщност няма начин да получите основните данни по друг начин освен чрез един запис или от конкретен регистратор (с избор по определени измерения). В случай на заявка, разработчикът разполага с всички възможности на езика на заявката за избор на записи.

Както знаете, когато четете данни, платформата 1C има достъп до таблици на база данни. Но за регистрите може да се формира платформата 1C, базирана на реални таблици виртуални маси, които не се съхраняват физически в базата данни. Това позволява на разработчика, вместо да прави сложна заявка към реална таблица, незабавно да получи данни от виртуална таблица с проста заявка. Освен това елиминира възможните грешки. Следователно виртуалните таблици трябва да се използват винаги, когато е възможно. Особено при полагане на изпита 1C: Специалист. Обмисли различни видоверегистри и вижте какви виртуални таблици предлага платформата за всеки тип регистър.

Информационни регистри

Платформата генерира виртуални таблици само за периодични информационни регистри. Налични са следните видове

  • SliceFirst
  • SliceRecent

Регистри за натрупване

За регистрите за натрупване наборът от предоставени виртуални таблици също зависи от вида на регистъра. Както знаете, има два вида регистри за натрупване: останкии Обороти

Регистър за натрупване на баланс

Налични са следните виртуални маси

  • останки
  • Обороти
  • Остатъци и обороти

Оборотен регистър

Налична е само една виртуална маса

  • Обороти

Изчислителни регистри

Тук в зависимост от настройките са налични и следните виртуални маси

Счетоводни регистри

Счетоводните регистри имат най-голям набор от виртуални таблици

  • останки
  • Обороти
  • RPMDtKt
  • Остатъци и обороти
  • Подконто
  • MovementsSubconto

Но скоростта на достъп до счетоводните регистри е най-ниска. Следователно, ако е възможно да се получат същите салда или обороти с помощта на регистри за натрупване, тогава те трябва да се използват.

Изчислителни регистриса обекти за конфигурация на приложението. Те се използват в механизма на сложни периодични изчисления и служат за съхраняване на записи на определени видове изчисления, които трябва да бъдат извършени, както и за съхраняване на междинни данни и резултатите от самите изчисления.

Структура

Информацията в регистъра на изчисленията се съхранява като записи, всеки от които съдържа стойности на измерение и съответните им стойности на ресурси.

измерваниярегистрите описват секции, в които се съхранява информация, и ресурсирегистрите директно съдържат съхранена информация. Например за регистъра за изчисления Основни начисления за служители на организации, който има следната структура:

записите, съхранени в базата данни, ще изглеждат така:

Връзка с плана на изчислителните видове

Регистърът за заплати е свързан с един от плановете за заплати, които съществуват в приложението. Тази връзка кара всеки запис в регистъра да има поле Тип изчисление, благодарение на което механизмите на регистъра могат да проследяват взаимното влияние на изчислителните записи един върху друг.

Периодичност

Изчислителният регистър съхранява данни не само в контекста на създадените измервания, но и в контекста на времето. Това е причината за съществуването на още едно задължително поле за всеки запис от калкулационния регистър - Валидност. Когато създава регистър за изчисления, разработчикът може да посочи минималната честота, с която записи ще бъдат въведени в регистъра:

Подаване до регистратора

Промяната в състоянието на регистъра за изчисление настъпва по правило при осчетоводяване на документа. Следователно всеки запис в регистъра е свързан с определен документ - регистратора и номера на реда на този документ. Добавянето на записи в регистъра, промяната и изтриването им е възможно само едновременно за всички записи, свързани с един документ.

Връзка с времевата линия

Регистърът на изчисленията може да бъде свързан с времева линия. Времевата линия е регистър от информация, който съдържа времева схема на първоначалните данни, включени в изчисленията. Размерите на този график могат да бъдат например работният график и датата, а ресурсът е броят на работните часове на тази дата. Тогава ще бъде възможно да се свърже записът на регистъра на изчисленията с всеки конкретен работен график и в бъдеще, използвайки вградения език, да се получи информация за броя на работните часове, необходими за извършване на изчисленията.

Например времева линия със следната структура:

Преизчисления

Изчислителният регистър може да включва специални обекти - Преизчисления:

В тези обекти системата ще съхранява информация за това кои записи от регистъра на изчисленията са загубили своята релевантност и подлежат на преизчисляване в резултат на механизмите на зависимост от базовия период и изключване от периода на валидност.

Уникалност на записите

Системата осигурява контрол върху уникалността на записите, съхранявани в изчислителния регистър. Следователно регистърът на изчисленията не може да съдържа два записа, свързани с един и същ ред на един и същи документ.

Механизми, въведени от регистъра на селищата

Механизмът за изключване по период на валидност ви позволява да изчислите действителния период на валидност на запис в регистъра за изчисление въз основа на анализ на други записи, съдържащи се в регистъра.

По принцип записът в регистъра на заплатите съдържа две дати, които определят периода, обхванат от записа. Този период се нарича период на валидност на записа. Въпреки това, ако типът фактуриране, към който принадлежи записът, може да бъде изместен от друг тип фактуриране, тогава периодът на валидност на записа е само "заявен" период, т.е. "ние искаме записът да бъде валиден в този период". В действителност, действителният период на валидност на този запис може да бъде определен само след анализ на всички записи на типове сетълмент, които изместват този тип изчисление с периода на валидност. Действителният период на валидност ще бъде набор от периоди, които са част от първоначалния период на валидност на записа. Ако не бъде намерен запис, който да изпреварва дадения по срок на валидност, тогава действителният период на валидност на този запис ще бъде равен на неговия период на валидност. Другият краен случай на изтичане по срок на валидност е, когато даден запис е напълно изгонен от други записи. В този случай няма да има действителен срок на валидност на записа.

Всеки запис в регистъра на заплатите съдържа типа заплати, към който принадлежи. За да определи кои записи трябва да заменят даден запис по период на валидност, регистърът на заплатите използва връзка към плана за типа заплати, който описва взаимното влияние на видовете заплати един върху друг. Използването на тази връзка позволява на счетоводната книга да определи действителния период на валидност на всеки запис.

Механизмът за зависимост на базовия период ви позволява да получите базовата стойност за запис в регистъра за сетълмент въз основа на анализ на други записи, съдържащи се в регистъра.

Основата е числова стойност, който трябва да се използва за изчисляване на резултата от този запис. Базата се изчислява чрез анализиране на резултатите от изчислението на други записи, от които този запис зависи от базовия период. По този начин в общия случай записът на регистъра на изчисленията съдържа две дати, които определят периода, в който е необходимо да се анализират записите на видовете изчисления, от които този вид изчисление зависи от основата - базисния период. Използването на връзката към плана за тип фактуриране позволява на счетоводната книга да определи типовете фактуриране, от които зависи типът на фактуриране за базовия период.

Регистърът на изчисленията поддържа два вида зависимости от базовия период:

  • зависимост от срока на валидност;
  • зависимост от периода на регистрация.

В случай на зависимост от периода на валидност, за да се получи базата, ще бъдат избрани онези записи, за които е намерена пресечната точка на техния действителен период на валидност с базовия период на този запис. Стойността на основата, която ще бъде получена от конкретен въздействащ запис, обикновено не е равна на резултата, който този запис съдържа. Базата ще бъде изчислена пропорционално на това каква част от действителния период на въздействащия запис е припокриващият се раздел с определения базов период. Това ще използва данните от диаграмата, свързана с този запис.

В случай на зависимост от периода на регистрация, за да се получи базата, ще бъдат избрани резултатите от изчислението на онези записи, които попадат в базовия период на този запис по стойността на тяхното поле „Период на регистрация“.

Най-сложната версия на зависимостта от базовия период е случаят, когато свойството "Периодът на валидност е базовият период" е зададено за вида на изчислението на този запис. Това свойство означава, че не основният период, посочен в съответните полета на записа, ще се използва като основен период на този запис, а действителният период на валидност на записа, който се получава в резултат на механизма за изключване по период на валидност и в общия случай е набор от някои периоди.

Механизмът за генериране на записи за преизчисляване проследява появата на записи в регистъра, които влияят на резултата от изчислението на съществуващи записи. В резултат на анализа се определя възможността за въздействие на нови записи върху съществуващи взаимно влияниевидове изчисление и въз основа на действието на механизмите на изместване от периода на валидност и зависимост от базисния период.

Резултатът от механизма за генериране на записи за преизчисляване е набор от записи за преизчисление, съдържащи информация за това кои записи в регистъра трябва да бъдат преизчислени (преизчислени).

Формуляри за регистър на изчисленията

За да може потребителят да види данните, съдържащи се в сетълмент регистъра, системата поддържа формата за представяне на сетълмент регистъра - списъчната форма. Тя ви позволява да сортирате и избирате показаната информация според няколко критерия:

Системата може автоматично да генерира този формуляр. Заедно с това, разработчикът има възможност да създава свои собствени формуляри, които системата ще използва вместо формуляра по подразбиране, включително формата за набор от записи, която ви позволява да добавяте, променяте и изтривате записи в регистъра на изчисленията.

Функционалност на регистъра на изчисленията

Основната функционалност, която регистърът за изчисления предоставя на разработчика, е:

  • избор на записи в даден интервал по зададени критерии;
  • подбор на записи от регистратор;
  • получаване на базовата стойност за записи в регистъра, които удовлетворяват зададения избор;
  • получаване на данни за график за записи в регистъра, които удовлетворяват определения избор;
  • получаване на данни за записи, подлежащи на преизчисляване;
  • четене, модифициране и запис на набор от записи в регистър.

Всички промени, направени в базата данни, се съхраняват в съответните таблици. За 1C това са таблици с документи, дневници на документи, директории и регистри. Видовете 1C регистри, характеристиките и тънкостите на тяхното използване ще бъдат обсъдени в нашата статия.

Оформяне на записи в регистри

Един от първите въпроси, свързани с регистрите, е: защо?

Защо трябва да създавате отделни таблици, често дублиращи съществуващи записи?

Отговорът тук е съвсем прост. Разбира се, възможно е да правите сложни и отнемащи време заявки към таблиците на изходните документи, като изброявате условията за избор, проверявате ги за знаци за изтриване и провеждане, но е много по-лесно и по-малко трудоемко да създадете определен отрязък от набора от записи директно при запазване на документа и го съхранява в отделна таблица, като достъпва до него при необходимост.

По този начин разбрахме, че един от начините за създаване на запис в регистъра е да пишете с помощта на регистратор (документ). Тази опция присъства във всички видове регистри.

Процесът на генериране на записи в регистъра въз основа на документ обикновено се нарича осчетоводяване на документ. Непубликуван регистрационен документ няма движение по регистър; той всъщност е чернова или празен документ.

Вторият вариант за генериране на запис е директно, без създаване на регистрационен документ. Можете да създавате записи по този начин само в информационни регистри, докато в свойствата на регистъра атрибутът "Режим на запис" трябва да има съответната стойност (фиг. 1).

Общ за всички регистри

Вътрешната структура на всеки регистър може да бъде показана на фиг.2

Фиг.2

Нека го разгледаме по-подробно:

  • Размери – свойства на записа, които определят в кои секции се съхраняват данните важна информация;
  • Ресурси – те съдържат информация, която трябва да бъде систематизирана;
  • Реквизити - полета за запис, които съдържат допълнителна информация;
  • Forms е свойство, което съдържа графична информация за външния вид на списък, елемент и др. и техните вътрешни модули;
  • Оформления - печатни форми на регистри.

Информационни регистри

Тъй като по-горе говорим за информационни регистри, нека поговорим за тях.

Това е може би най-простият и разбираем тип регистри. Редовна таблица, съдържаща колони и колони, които съхраняват информация.

Списъкът с важни свойства на информационния регистър е малък (фиг. 3), нека поговорим за основните:

Фиг.3

  1. Периодичност, показва степента, до която се контролира уникалността на записа (в рамките на минута, час, ден, година, в съответствие с избраната стойност, не може да има два записа с еднакви измервания), може също да вземе стойност „От регистратор“, но за това трябва да изберете подходящия режим на запис;
  2. Режимът на запис всъщност е избор от две стойности: "Независим" и "Подчинен на регистратора".
    1. Важно е да се разбере, че изборът на независим режим не означава, че записът не може да бъде формиран от документ, само изборът от регистратора и контролът на уникалността на записа от него ще бъдат невъзможни;
  3. Разрешаване на общия срез на първия и Разрешаване на общия срез на последния: (комбиниране на два елемента в един) - когато са избрани съответните квадратчета, може да се направи заявка към информационния регистър на допълнителни таблици (Срез на първия и Срез на последно), които съдържат съответните набори от данни, като един от параметрите на тези таблици са датата, на която е необходимо да се направи избор на данни.

Регистри за натрупване

Видяхме структурата на един от тях на фиг.2. Основното свойство, което силно влияе върху външния вид на регистъра, както и върху вътрешната му структура, е "Тип на регистъра" (фиг. 4)

В зависимост от изискванията към съхраняваната информация, тя може да приема следните стойности:

  • останки;
  • Обороти.

В първия случай базата данни ще съдържа информация не само за движението на ресурсите в контекста на измерванията, но и за вида на операцията (приход или разход). Освен това, когато създавате заявка, ще бъде налична допълнителна таблица, съдържаща общите суми.

Един от основните проблеми, с които се сблъскват начинаещите разработчици, когато използват таблиците Balances и BalancesAnd Turnovers в заявки, е, че когато дадена заявка получи салда за определена дата, данните в тези таблици може да се различават. И тук има един нюанс: когато зададете определена стойност като крайна дата на периода, платформата взема данни от таблицата Баланси, без да включва тази стойност в периода за избор.

Ако имате нужда от данни, които включват края на периода, можете:

  • Използвайте таблицата Салда и обороти;
  • Направете избор за дата с 1 секунда по-голяма от дадената (т.е. не на 31.12.16 23:59:59, а на 01.01.17 00:00:00);
  • Използвайте метода Boundary, който помага да конфигурирате опцията за включване на момент от време в разглеждания период (случай на използване: Boundary(EndDate,Included).

Счетоводни регистри

Достатъчно специализирани регистри, по своя дизайн наподобяват натрупващи регистри. Основната разлика от другите видове регистри на платформата 1C е наличието на параметъра „Сметкоплан“ в структурата на собствеността (фиг. 5).

Фиг.5

Сметкопланът е отделен обект на метаданни, който изисква отделно обсъждане. В зависимост от сметкоплана, съвременните типични 1C конфигурации съдържат 4 основни счетоводни регистъра:

  1. Бюджетиране;
  2. Международен;
  3. данък;
  4. Самоподдържащ се.

Вторият параметър, характерен за счетоводните регистри, е „Кореспонденция“.

Поставянето на отметка в това поле ви позволява да създавате двойни записи, съдържащи кредитната сметка AccountKt и дебитната сметка AccountDt и анализите (подконто), съответстващи на тези сметки. Ако полето за отметка не е отметнато, само един акаунт ще бъде въведен в записите в регистъра.

Изчислителни регистри

Това са може би най-трудните за разбиране регистри. Междувременно по своята същност те много приличат на натрупващи регистри от типа "Оборот".

Определящата разлика на изчислителния регистър от другите регистри е наличието в неговите свойства на параметъра "План на типа изчисление". Освен това калкулационният регистър, както и информационният регистър, са периодични.

Във всеки регистър за изчисления може да се активира възможността за свързване на записа с графика, посочен в съответния информационен регистър. Това позволява на кода да извлича данни за работното време.

В допълнение към измеренията, ресурсите и формулярите, намиращи се в други типове счетоводни книги, регистрите за изчисление могат да получат обект за преизчисляване, за да съхраняват информация за записи, които са остарели и трябва да бъдат преразгледани.

Основното им приложение е в типични конфигурации 1C - регистрация и улесняване на работата с начисления на служители на организацията.

Една от задачите, решени с помощта на изчислителните регистри, е получаването на обороти на регистъра чрез заявки към таблицата с виртуални базови данни или метода GetBase(). Регистърните обороти се получават въз основа на голям брой различни изходни данни, включително настройките и съдържанието на плана на видовете изчисления, настройките на изчислителния регистър, параметрите на виртуалната таблица с основни данни и др. Но една от съществените роли за получаване на основни данни играят измерванията на изчислителния регистър.

Ролята на измеренията при параметризирането на виртуалната таблица с основни данни

Един от важните параметри на виртуалната таблица с базови данни е списъкът с измерения, по които се сравняват записите в регистъра при обобщаване на данните. За да решите различни проблеми, може да се наложи да извършите сумиране на ресурсите на регистъра върху различни набори от измервания. Помислете за примера на регистър, предназначен за заплати и има три измерения:

  • организация,
  • Индивидуален,
  • Подразделение.
Представете си, че трябва да решите следните задачи:
  • Получаване за определени записи от регистъра на оборотите на регистъра за всички записи със същото подразделение като оригиналния запис. Това може да бъде например изчисляването на надбавката, която зависи от начисленията на цялото звено.
  • Получаване на обороти в записи с едно и също лице и отдел. Тези. получаване на сумата на начисленията на служителя, които са му начислени в същото подразделение (изключват се начисления за същия служител, които той е получил в други подразделения).
  • Получаване на оборот в записи с едно и също физическо лице и същата организация (всички начисления към физическо лице в рамките на същата организация).

Всички горепосочени задачи се решават с помощта на заявки към виртуалната таблица с основни данни. В този случай параметрите "Измервания на основния регистър" и "Измервания на основния регистър" ще бъдат различни и за трите задачи. В първия случай има само едно измерение - "Подразделение"; във втория - "Физическо лице" и "Подразделение"; в третата - "Организация" и "Физическо лице".

Основна оптимизация за получаване на данни

За случаите, изброени по-горе, при формиране на заявка към виртуалната базова таблица с данни, системата, по отношение на езика на заявката, ще извърши "ляво свързване" на таблицата на регистъра на изчисленията със същата таблица. В този случай едно от условията за свързване е равенството на стойностите в полетата, посочени като измервания на главния и базовия регистър. Разбира се, в допълнение към това условие има сравнение на периода на валидност или периода на регистрация с началото и края на базовия период, сравнение на видовете изчисления и т.н., но най-„твърдото“ ограничение, като правило, е ограничението за стойностите на измерване.

По този начин, за ефективната работа на получената заявка, е важно да има индекс на таблицата на регистъра на изчисленията, който да съдържа полетата на сравнените измервания като първи полета.

Възможността за индексиране на размерите на регистъра на изчисленията позволява решаването на такъв проблем, но само за случая, когато се сравнява едно измерение (в нашия пример задачата за получаване на данни по отдел). В случай, че има две или повече сравнявани измерения, е необходимо да се изгради индекс върху няколко измерения наведнъж.

Именно тази задача ви позволява да решите свойството Базово измерение на регистъра за изчисление. Като зададе това свойство на множество измерения, разработчикът на конфигурацията създава индекс на всички измерения, маркирани като "база" (за повече подробности вижте раздела "Индекси на таблици на база данни").

От казаното става ясно, че за калкулационния регистър може да се създаде само един такъв индекс, за да се оптимизира получаването на основни данни чрез избор на определени размери. По този начин при разработването е важно правилно да се прецени кои виртуални таблици ще се използват по-често и коя оптимизация е най-важна.

Да се ​​върнем към нашия пример. Представете си, че натрупванията, които изискват получаване на данни за физическо лице и подразделение, ще бъдат по-рядко срещани по време на работата на конфигурацията, отколкото натрупванията, които изискват получаване на данни за физическо лице и организация. След това, като основни измервания, трябва да се отбележат измерванията "Организация" и "Индивид". В същото време ще трябва да се примирим с факта, че получаването на основни данни за индивид и подразделение ще бъде относително бавно.

При избора на базови измервания трябва да се оцени и тяхната "селективност", т.е. представят колко стойности ще има в определено измерение по време на работата на конфигурацията. Представете си, че в нашия пример един индивид може да има много малко (една или две) организации и сравнително много подразделения. Тези. на дадено лице почти винаги се плаща заплата за една организация и в същото време често се изчислява заплата за различни отдели. При такива обстоятелства е по-разумно да се изберат измеренията "Индивидуално" и "Отдел" като базови.

Но в същото време е важно да запомните реда на измерванията на изчислителния регистър ...

Относно реда на измерванията в регистъра за изчисления

Факт е, че при създаване на индекс, който ще улесни получаването на основни данни, системата включва измерения в него в реда, в който са разположени в конфигурационното дърво. Това означава, че просто чрез "пренареждане" на измеренията "Лично лице" и "Отдел" ще променим реда на полетата в индекса.

В нашия пример, ако измерванията "Индивид" и "Отдел" са избрани като базови, тогава чрез пренареждането им няма да променим скоростта на получаване на основни данни за индивид и подразделение, но радикално ще влошим ситуацията с получаването данни за физическо лице и организация. При сравняване на стойностите в полетата "Организация" и "Индивид" системата няма да може да използва индекса Подразделение+Индивид, тъй като полето "Индивид" не е първото в него и условието не е наложено на подс. И в случай на индекс, Индивид + Отдел ще се възползва както от получаване на основни данни за отдел и физическо лице, така и от получаване на основни данни за организация и физическо лице, тъй като полето "Индивидуално" ще бъде първото в индекса , системата ще може да го използва "частично" (по едно поле) . В същото време полето "Индивид" има много по-голяма "селективност" от полето "Организация" и няма да отнеме много време, за да се изработят условията за организацията.

Ако базовото измерение е едно

Нека не забравяме за задачата на нашия пример, която включва получаване на основни данни само за отдела. Изглежда, че създаването на индекс Individual + Division за решаване на другите две задачи изключва ефективна работавиртуална таблица с основни данни по едно измерение "Отдел". Но тук трябва да запомните за възможността за индексиране на размерите на регистъра (свойство за индексиране). Възможността за индексиране на измерение ви позволява ефективно да разрешите проблема с получаването на база от едно основно измерение.

Така в нашия пример трябва да зададете свойството Base за измеренията „Индивидуално“ и „Отдел“, свойството Индексиране за измерението „Отдел“ и също така да се уверите, че измерението „Индивидуално“ е „по-високо“ от Измерение „Отдел“ (редът на измерението „Организация“ „няма значение).