регістри відомостей

Про що мова

Сьогодні ми поговоримо про регістрах відомостей. Але не про на настройках і їх правильному використанні, а про приховану від розробників стороні СУБД.

Розглянемо як регістри відомостей зберігаються в базі даних, які SQL-запити виконує платформа і як змінюється взаємодія платформи і СУБД з виходом платформи 8.3.

структура зберігання

Структура таблиць, використовувана для зберігання даних і налаштувань регістру відомостей, змінюється в залежності від налаштувань об'єкту метаданих в конфігураторі. Наступні настройки впливають на те, як буде платформ 1С: Підприємство 8.x зберігати дані в базі:

регістри відомостей

регістри відомостей

Розглянемо вплив цих налаштувань з простого прикладу. У тестовій базі у нас є неперіодична регістр відомостей "Налаштування":

Єдине вимір "СтаутсТовара" посилається на перерахування, всі ресурси мають примітивні типи. Структура зберігання такого регістра обмежується тільки однією таблицею в базі даних:

Як видно з малюнка, структура зберігання такого регістра досить примітивна. Кожному полю регістра в дереві метаданих конфігурації відповідає поле таблиці на стороні СУБД.

Розглянемо ще один простий приклад.

Структура метаданих цього регістра також досить проста: вимір "Товар", що посилається на довідник "Товари", і ресурс "Статус", що посилається на перерахування "СтатусиТоваров". Відмінність налаштувань цього регістра від попереднього криється в параметрі "Періодичність", яка тепер встановлена ​​в значення "В межах дня". Структура таблиці в базі для цього регістра буде наступною:

Крім полів вимірювань і ресурсів в таблицю додано поле "Period", в якому зберігається значення дати і часу запису. Незалежно від значення періодичності структура таблиці регістра не зміниться. Якщо ж назад поміняти періодичність в значення "Неперіодичний", то зі структури таблиці буде видалено поле "Period".

Регістр з такими настройками використовує дві таблиці в базі даних. Перша - це основна таблиця регістру:

регістри відомостей

Друга таблиця - це таблиця підсумків зрізу останніх записів:

У ній зберігаються останні записи регістру в розрізі періодів. У структуру таблиці входять вимірювання і ресурси регістра, період, реєстратор (якщо регістр підпорядкований реєстратору) і реквізити регістру (в нашому прикладі їх немає).

Також б виглядала і таблиця разом зрізу перше, тільки зберігала б вона зріз перших записів в розрізі періодів. Про плюси використання таблиць разом регістрів відомостей ми поговоримо пізніше.

Окремо варто згадати про таблиці налаштувань зберігання підсумків регістра відомостей. Для останнього прикладу ця таблиця виглядає так (див. Слід. Скріншот).

У таблиці тільки одне поле, що зберігає прапор включення підсумків. Змінити цю настройку можна в режимі підприємства в управлінні підсумками:

Таблиця налаштувань зберігання підсумків додається для регістра відомостей, якщо значення періодичності регістра відрізняється від значення "Неперіодичний".

Розглянемо приклад формування платформою таблиць підсумків зрізу перших і зрізу останніх.

Приклад формування таблиць підсумків

Наприклад, таблиця рухів регістра "Ціни номенклатури", який ми розглядали в попередньому прикладі, містить такі записи:

регістри відомостей

Тоді таблиця підсумків зрізу останніх записів буде виглядати так:

Тобто в таблицю потрапили останні по періоду записи в розрізі вимірювань регістра. За таким же принципом формується таблиця підсумків зрізу перше, тільки беруться найперші записи в таблиці рухів:

замість висновку

У статті ми розглянули варіанти зберігання регістрів відомостей на стороні СУБД в залежності від їх налаштувань, а також познайомилися зі службовими таблицями регістра для зберігання підсумків і налаштувань зберігання підсумків. Варто зазначити, що можливість зберігання підсумків для регістрів відомостей з'явилася тільки у версії 8.3.

У наступній статті ми відловимо SQL Profiler'ом запити, які формує платформа 1С: Підприємство до СУБД при роботі з регістрами відомостей.

Схожі статті