Найти в Дзене
CORS Academy

Общие сведения о регистрах накопления в 1С

В системе 1С:Предприятие есть специальные объекты для реализации
механизма оперативного учета, такие как регистры накопления,
предназначенные для сохранения показателей оперативного учета, и
документы обладающие способностью оперативного проведения. Регистр накопления — это прикладной объект
конфигурации, который позволяет «накапливать» числовые данные в разрезе
нескольких измерений, при этом записи всегда привязаны к оси времени.
Например, в регистре накопления можно накапливать информацию об остатках
товаров в разрезе номенклатуры и склада, или информацию об объемах
продаж в разрезе номенклатуры и сотрудника компании. В состав регистра накопления входят: Стандартные реквизиты: Регистры накопления подразделяются на два вида: регистры остатков и регистры оборотов. Помимо основной физической таблицы регистра накопления, создаются
виртуальные таблицы для более быстрого извлечения итоговой информации. В
зависимости от вида регистра («Остатки» или «Обороты») создается разное кол
Оглавление

В системе 1С:Предприятие есть специальные объекты для реализации
механизма оперативного учета, такие как регистры накопления,
предназначенные для сохранения показателей оперативного учета, и
документы обладающие способностью оперативного проведения.

Регистр накопления — это прикладной объект
конфигурации, который позволяет «накапливать» числовые данные в разрезе
нескольких измерений, при этом записи всегда привязаны к оси времени.
Например, в регистре накопления можно накапливать информацию об остатках
товаров в разрезе номенклатуры и склада, или информацию об объемах
продаж в разрезе номенклатуры и сотрудника компании.

В состав регистра накопления входят:

  • Измерения – описывают разрезы, в которых
    хранится информация. Количество измерений для регистра остатков и
    оборотов не ограничено, но если у регистра оборотов используются
    агрегаты, то разрешено не более 30 измерений. Для необязательных
    измерений нужно убрать флаг в свойстве «
    Запрет незаполненных значений».
  • Ресурсы – содержат хранимую информацию в
    разрезе измерений. Тип ресурса может быть только числовой. У регистра
    обязательно должен присутствовать хотя бы один ресурс.
  • Реквизиты – несут дополнительную информацию (как комментарий), которую нельзя использовать в виртуальных таблицах.
Структура регистра накопления
Структура регистра накопления

Стандартные реквизиты:

  • Период – дата и время записи. При этом в качестве значения может выступать произвольная дата, не обязательно «Дата» из документа-регистратора. Данный реквизит относится к измерениям.
  • Регистратор – ссылка на документ, которому подчинена запись. С одной стороны, является измерением, так как совместно с «Периодом» определяет момент времени движения, с другой стороны характеризует конкретную запись являясь таким образом реквизитом.
  • НомерСтроки – уникальный номер записи в наборе записей, подчиненных документу-регистратору, указанному в реквизите «Регистратор». С одной стороны, является измерением, так как совместно с «Периодом»
    определяет момент времени движения, с другой стороны характеризует
    конкретную запись являясь таким образом реквизитом. Получается,
    уникальность записи в регистре определяется реквизитами «
    Регистратор» и «НомерСтроки».
  • ВидДвижения – значение системного перечисления ВидДвиженияНакопления, обозначающее направление приращения указанных записей: Приход или Расход. Относятся к реквизитам, так как характеризует конкретную запись.
  • Активность – истина или ложь. Содержит
    признак влияния записи на итоги регистра. Неактивные записи не влияют на
    итоги, активные влияют. Устанавливается на все записи, подчиненные
    одному регистратору, отдельно для каждой записи не устанавливается.
    Относится к реквизитам, так как характеризует конкретную запись.
Стандартные поля
Стандартные поля

Регистры накопления подразделяются на два вида: регистры остатков и регистры оборотов.

  • Регистр остатков позволяет получить остатки на
    заданный момент времени, при этом, его виртуальные таблицы содержат
    остатки и обороты. Для указания операции увеличения количества
    используется вид движения «
    Приход», для уменьшения – «Расход».
    В данном виде регистра предполагается возможность ухода остатков в ноль
    и перехода значений показателей из одного периода в другой. Яркий
    пример такого вида регистра, это регистр накопления для хранения
    остатков товаров в разрезе номенклатуры и склада на определенный момент
    времени.
  • Регистр оборотов позволяет получить обороты за
    указанный период, его виртуальная таблица содержит только обороты. В
    данном регистре используется накопительный механизм по значениям
    показателей. В основном используется в тех случаях, когда информация по
    остаткам не требуется, для расширения возможностей анализа оборотных
    данных, а также для ускорения процесса получения оборотных данных. Яркий
    пример такого вида регистра, это регистр накопления для хранения сумм
    продаж в разрезе покупателей за определенный период.
Виды регистра
Виды регистра
Виды регистра
Виды регистра

Виртуальные таблицы регистра накопления

Помимо основной физической таблицы регистра накопления, создаются
виртуальные таблицы для более быстрого извлечения итоговой информации. В
зависимости от вида регистра («
Остатки» или «Обороты») создается разное количество виртуальных таблиц.

«Регистр остатков» содержит три виртуальные таблицы:

  • Остатки
  • Обороты
  • ОстаткиИОбороты

«Регистр оборотов» содержит одну виртуальную таблицу:

  • Обороты
Основные и виртуальные таблицы регистров накопления
Основные и виртуальные таблицы регистров накопления

Системные таблицы регистра накопления

Основная таблица регистра накопления представлена в виде отдельной таблицы в базе данных – «Таблица движений».
Виртуальные таблицы в базе данных физически не существуют, данные для
виртуальных таблиц формируются в момент обращения к ним из специальных
таблиц в базе данных, таких как: «
Таблица движений», «Таблица итогов» и «Таблицы агрегатов».

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

  • Таблица движений – хранит записи движений. Регистр остатков в СУБД выглядит как показано на рисунке.
Таблица движений в БД
Таблица движений в БД
Таблица движений в 1С:Предприятие
Таблица движений в 1С:Предприятие
  • Таблица итогов – хранит рассчитанные итоги на основе записей из «Таблицы движений».
Таблица итогов
Таблица итогов
  • Таблицы агрегатов – хранят рассчитанные итоги на основе записей из «Таблицы движений». При этом для каждого «Агрегата» в базе данных создается отельная таблица «Итогов».
Таблица агрегатов в БД
Таблица агрегатов в БД
Список агрегатов
Список агрегатов

Управление итогами. Закладка «Итоги»

Для управления итогами используется специальная стандартная обработка «Управление итогами» доступная в окне «Функции для технического специалиста».

Обработка «Управление итогами»
Обработка «Управление итогами»

Для управления итогами регистра накопления используется закладка «Итоги», для управления агрегатами – «Агрегаты».

Итоги – при включении «Использование итогов», становятся доступны виртуальные таблицы, которые получают данные из «Таблицы движения» и «Таблицы итогов». Если итоги выключены, виртуальные таблицы разработчику видны, но данные из них получить не получится, система выводит ошибку.

Сообщение о выключенных итогах
Сообщение о выключенных итогах

Текущие итоги – при включении «Использование текущих итогов», в системную «Таблицу итогов»
добавляются итоговые записи на 01 ноября 3999 года. На эту дату
хранятся актуальные итоги, которые используются для получения
оперативных остатков.

Текущие итоги на 01 ноября 3999 год
Текущие итоги на 01 ноября 3999 год

Разделение итогов – включает или выключает режим
параллельной записи в регистр накопления. Тем самым обеспечивает более
высокий уровень параллельности. При включении данного режима в «
Таблице итогов» будет использоваться столбец «Разделитель». Во время параллельной работы с одной и той же записью, данная запись дублируется, но с разным значением в столбце «Разделитель».
Не следует использовать данный режим, если регистр используется для
контроля остатков, так как системе приходится сворачивать разделенные
данные, что увеличивает время получения остатков.

Установить период итогов – при установке «Периодов рассчитанных итогов» в «Таблицу итогов»
добавляются промежуточные записи итогов на начало каждого месяца. При
этом нужно учитывать, если существуют проведенные документы после
максимальной даты расчета итогов, максимальный период расчета итогов
сами не передвигается и итоги не пересчитываются, поэтому пользователю
необходимо самостоятельно указывать новый период расчета.

Установка нового периода расчета итогов
Установка нового периода расчета итогов
-15

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

Кнопка «Пересчет» содержит три пункта:

  • «Пересчитать итоги» – пересчитывает разом оперативные итоги на 30.10.3999 год и разделенные итоги по месяцам.
  • «Пересчитать текущие итоги» – пересчитывает оперативные итоги на 30.10.3999 год.
  • «Пересчитать итоги за период» – пересчитывает распределенные итоги по месяцам.

Пересчитанные итоги никак не привязываются к пользователю или сеансу.

В обработке можно выбрать определенные регистры и для них пересчитать итоги.

-16

Структура таблиц в базе данных для «Регистра остатков»

Регистр остатков состоит из нескольких специальных таблиц в базе данных, в нашем мастер-классе рассмотрим только основные.

«Таблица движений» хранит записи движений. Имеет следующую структуру:

  1. Период – дата записи. Совместно с полями Регистратор и НомерСтроки определяет положение данной записи на временной оси.
  2. Регистратор – ссылка на документ, которому подчинена данная запись.
  3. НомерСтроки – уникальный номер данной записи в наборе записей регистра, подчиненных документу, указанному в поле Регистратор.
  4. ВидДвижения – значение системного перечисления ВидДвиженияНакопления, обозначающее направление приращения указанных записей: Приход или Расход.
  5. Активность – тип Булево. Содержит признак влияния записи на итоги регистра.
  6. <Измерение> – значение измерения. Количество равно количеству измерений, определенных в данных регистра как объекта конфигурации.
  7. <Ресурс> – значение ресурса.
    Количество таких полей равно количеству ресурсов, определенных в данных
    регистра как объекта конфигурации.
  8. <Реквизит> – значение реквизита.
    Количество таких полей равно количеству реквизитов, определенных в
    данных регистра как объекта конфигурации.
-17

«Таблица итогов» может хранить текущие (оперативные) итоги на 01 ноября 3999 год, а также промежуточные накопленные итоги по месяцам.

Структура таблицы:

  1. Период – дата, на которую актуально состояние хранимого в таблице итога.
  2. <Измерение> – значение измерения –
    разреза учета хранимых итогов. Количество таких полей равно количеству
    измерений, определенных в данных регистра как объекта конфигурации.
  3. <Ресурс> – значение итога ресурса.
    Количество таких полей равно количеству ресурсов, определенных в данных
    регистра как объекта конфигурации.
  4. Разделитель – поле, позволяющее
    распараллелить обновление записей итогов. Добавляется в структуру
    таблицы итогов для регистров накопления, у которых установлено свойство «
    Разрешить разделение итогов».
-18

Получение итогов на определенную дату из «Регистра остатков»

При получении итогов на определенную дату система строит запрос, состоящий из нескольких действий:

  • Получение данных из «Таблицы итогов»:«Текущие итоги» – включены.

«Рассчитанные итоги» – включены.

– Остатки на определенную дату – итоги будут получены на начало
следующего месяца. Например, если получаем итоги на 05.06.2024 00:00:00,
то итоги будут получены на 01.07.2024 00:00:00.

– Оперативные остатки – итоги будут получены на 01.11.3999 00:00:00.

-19
  1. «Текущие итоги» – включены.

«Рассчитанные итоги» – выключены.

– Остатки на определенную дату – итоги будут получены на 01.11.3999
00:00:00. Например, если получаем итоги на 05.06.2024 00:00:00, то итоги
будут получены на 01.11.3999 00:00:00.

– Оперативные остатки – итоги будут получены на 01.11.3999 00:00:00.

-20
  1. «Текущие итоги» – выключены.

«Рассчитанные итоги» – включены.

– Остатки на определенную дату – итоги будут получены на начало
следующего месяца. Например, если получаем итоги на 05.06.2024 00:00:00,
то итоги будут получены на 01.07.2024 00:00:00.

– Оперативные остатки – итоги будут получены на последний рассчитанный месяц.

-21
  1. «Текущие итоги» – выключены.

«Рассчитанные итоги» – выключены.

В таблице итогов будут отсутствовать записи, но система все равно подготовит запрос на получение данных.

– Остатки на определенную дату – система попытается получить итоги на «Минимальный период итогов» указанный в обработке «Управление итогами»,
если период не указан по умолчанию используется пустая дата равная
01.01.0001 00:00:00. Например, если получаем итоги на 05.06.2024
00:00:00, то система будет пытаться получить итоги на 01.01.0001
00:00:00.

– Оперативные остатки – система попытается получить итоги на «Минимальный период итогов» указанный в обработке «Управление итогами», если период не указан по умолчанию используется пустая дата равная 01.01.0001 00:00:00.

-22
  • Получение данных из «Таблицы движений»:«Текущие итоги» – включены.

«Рассчитанные итоги» – включены.

– Остатки на определенную дату – перебираются все записи с даты
получения итогов до начала следующего месяца. В нашем примере будут
получены записи с 05.06.2024  00:00:00 до 01.07.2024  00:00:00.

– Оперативные остатки – не участвует.

-23
  1. «Текущие итоги» – включены.

«Рассчитанные итоги» – выключены.

– Остатки на определенную дату – перебираются все записи с даты
получения итогов до 01.11.3999 00:00:00. В нашем примере будут получены
записи с 05.06.2024  00:00:00 до 01.11.3999 00:00:00.

– Оперативные остатки – не участвует.

-24
  1. «Текущие итоги» – выключены.

«Рассчитанные итоги» – включены.

– Остатки на определенную дату – перебираются все записи с даты
получения итогов до начала следующего месяца. В нашем примере будут
получены записи с 05.06.2024  00:00:00 до 01.07.2024  00:00:00.

– Оперативные остатки – перебираются все записи с даты последних
рассчитанных итогов до последней записи. Например, записи будут получены
с 01.07.2024 00:00:00.

-25
  1. «Текущие итоги» – выключены.

«Рассчитанные итоги» – выключены.

В таблице итогов будут отсутствовать записи, поэтому в «Таблице движений» перебираются все записи с первой записи до даты получения итогов.

– Остатки на определенную дату – перебираются все записи с первой
записи до даты получения итогов. В нашем примере будут получены записи с
01.01.0001  00:00:00 до 05.06.2024 00:00:00.

– Оперативные остатки – перебираются все записи с первой записи до
последней записи. В нашем примере будут получены записи с 01.01.0001 
00:00:00 до 30.10.3999 00:00:00.

-26
  • Готовая таблица получается за счет записей из «Таблицы итогов» и записей из «Таблицы движений», которые группируются по измерениям с применением агрегатной функции Сумма() по ресурсам.
-27
-28

1

Можно сделать вывод:

  • Режим «Текущие итоги» влияет только на производительность
    при получении текущих (актуальных, оперативных) итогов; если он
    установлен, итоги будут получены быстрее, в противные случаи для
    получения итогов система будет перебирать записи из «
    Таблицы движений».
  • Режим «Период рассчитанных итогов» влияет только на
    производительность при получении итогов на некоторую промежуточную дату;
    если он установлен, итоги будут получены быстрее, в противные случаи
    для получения итогов система будет перебирать записи из «
    Таблицы движений».

Получение оборотов за определенный период из «Регистра остатков»

При получении оборотов за определенный период из регистра остатков система строит запрос на основе «Таблицы движений» перебирая все записи. Поэтому получать обороты из регистра накопления с видом «Остатки»
не эффективно. Зачем тогда использовать механизм получения оборотных
данных в регистре остатков, все очень просто, для получения оборотов
совместно с остатками.

-29

Ваганов Сергей, эксперт в области разработки прикладных решений на платформе 1С:Предприятие, преподаватель-методист CORS Academy и автор курса «Разработчик 1С с нуля до профессионала».

-30

Подписывайтесь:

CORS Клуб – сообщество и образовательная среда для специалистов из IT-сферы https://cors.su/klub/

АБП -Сообщество специалистов по автоматизации бизнес-процессов и по использованию ИТ технологий в бизнесе https://t.me/analitiki_1c

Канал руководителей IT компаний и подразделений, CIO, СDO, CDTO https://t.me/cio_channel

CIO. Сообщество IT руководителей https://vk.com/cio_club

-31