Регистры накопления 1С

Регистры накопления (РН) используются для суммирования (вычисления итогов) информации о средствах и материалах. Ключевое отличие от регистров сведений – это наличие итогов.

При проектировании крайне важно понимать, какие индексы нам нужны, или другими словами, какие запросы мы будем выполнять к регистру накопления. А так же важно понимать, какой тип необходим: остатки или обороты.

Давайте рассмотрим, какие у регистров накопления есть физические таблицы в СУБД, и как они устроены.

Кластерный индекс РН

Кластерный индекс строится по Периоду, Регистратору и измерениям, собственно, так же как и у РС, подчиненного регистратору.

Курс 1С: Эксперт. Кластерный индекс регистра накопления
Кластерный индекс Регистра Накопления 1С.

Важно понимать, что любые запросы, которые мы делаем, будут оптимальными только в том случае, если задан Период. Поиск по измерениям в основной таблице — не оптимален!

«Остатки» (Totals)

Тип регистра накопления «Остатки» имеет дополнительную таблицу.

Totals хранит остаток на указанный период. Следовательно, в конечном счете данные должны стремиться к нулю, т.е. схлопываться. Иногда остатки могут быть 0, но запись присутствует, такие записи удаляются из таблицы после расчета итогов (средствами 1С).

Для регистра накопления с типом Остатки данные остатков должна уходить в 0!

Курс 1С: Эксперт. Таблица итогов регистра накопления
Totals РН Остатки.

Мы видим, что период имеет значение 3999.11.01 – это максимальная дата, и на нее хранятся значения ресурсов на самую последнюю дату. Если итоги для регистра накопления 1С ни разу не рассчитывались (средствами 1С), то в таблице хранятся данные только на эту (самую крайнюю дату).

Если рассчитать итоги, то появятся данные на начало каждого месяца (например, 2019.09.01, исключая эту дату), за последний год + на самый крайний период  3999.11.01.

Например, товары на складах – приходят и уходят. Многие делают ошибку, добавляя, например, данные о продажах в регистр накопления 1С с типом Остатки, думая, что  тип Остатки более универсальный и имеет, как Остатки, так и Обороты (вывод делается на основании наличия виртуальных таблиц). Но это огромная ошибка, потому что у типа Остатки Totals именно Остатки, если она не будет сворачиваться в ноль, то она будет вечно разрастаться!

«Обороты» (Turnover)

Тип регистра накопления 1С «Обороты» так же имеет дополнительную таблицу.

Курс 1С: Эксперт. Таблица итогов регистра накопления обороты
Turnover РН Обороты

Каждая строка Turnover регистра накопления 1С с типом обороты хранит обороты на указанный период, а именно за каждый месяц. Т.е. если нам нужны будут итоги за 2 месяца, то необходимо будет сложить 2 строки с итогами по каждому из месяцев.

Таблица Turnover регистра накопления 1С типа Обороты не сворачивается, таким образом, она постоянно растет.

Индексы измерений и реквизитов

Если проиндексировать произвольный реквизит или измерение, то будет дополнительный индекс, где сначала идет индексируемый реквизит, далее идут первые 3 поля кластерного (без ресурсов и реквизитов).

Курс 1С: Эксперт. Произвольный индекс регистра накопления

Курс 1С: Эксперт. Произвольный индекс регистра накопления СУБД
Произвольный индекс РН в СУБД

При этом в таблице Totals или Turnover будет индекс по Периоду и Измерению. Реквизит не попадает в дополнительную таблицу, даже если он проиндексирован.

Курс 1С: Эксперт. Произвольный индекс регистра накопления таблицы итогов СУБД
Произвольный индекс РН СУБД

Основные отличия от Регистра Сведений

Безусловно основным и главным отличием РС от РН является наличие дополнительной таблицы Итогов (Остатки или Обороты), в которой содержится суммированная информация по ресурсам в разрезе измерений.

Данная тема подробнее рассматривается в пакете видео-курса «Секреты 1С: Эксперта» Шаг 2. Занятие 06-01 Регистры накопления.

Фриланс, Бали. Константин Ефимов | 1С: Эксперт

КОНСТАНТИН ЕФИМОВ
Комментарии и вопросы