для чего нужен регистр накопления в 1с
Регистры накопления 1С и их использование

Предположим, что у нас есть 1000 разных документов: поступление товаров, списание, возврат, продажа и т.д. И каждый из документов изменяет количество определенного товара на складе. Чтобы получить информацию о текущем количестве на складе, необходимо перебрать все документы: какие-то увеличивают количество товара, какие-то уменьшают, какие-то могут и увеличивать, и уменьшать. А если необходимо учитывать еще и склад, организацию. Такая система очень ресурсоёмкая.
Для упрощения данного процесса разработчики 1С придумали особые объекты конфигурации. Используются они для удобства хранения и получения информации, в 1С 8.3 используются всевозможные регистры, в данной статье речь пойдет именно про Регистры накопления.
Что же такое регистр накопления в 1С 8?
Сам регистр накопления представляет собой таблицу с информацией, в которой собраны все движения (поступления/списания или обороты) определенных документов. Рассмотрим, как выглядит таблица движения, на примере типового регистра накопления «Товары на складах» в конфигурации «Управление торговлей 10.3»:
Здесь мы видим, что документы 1C «Реализации» уменьшают количество определенного товара в определенном месте хранения, а документы поступления, наоборот, увеличивают количество. В итоге мы получаем общую картину, в которой отчетливо видно, что, когда и в каком количестве поступило (было списано) по учету. По такой таблице уже гораздо удобнее строить отчет.
Регистр накопления в конфигураторе
Что же такое регистр накопления с точки зрения разработки конфигурации? Начнем, пожалуй, с рассмотрения полей регистра накопления в конфигураторе:
У регистра накопления есть Измерения, Ресурсы, Реквизиты и Стандартные реквизиты.
Рассмотрим сначала стандартные реквизиты регистра накопления:
Измерения регистра накопления
Измерение — это разрез, в котором ведется учёт. На вышеприведенном примере разрезом учета являются: склад, номенклатура, характеристика номенклатуры, серия номенклатуры, качество. Т.е задав интересующие нас измерения, мы можем в любой момент получить количество — ресурс. В разрезе разных измерений в дальнейшем, например, можно получать остатки на определенную дату.
Ресурс регистра накопления
Ресурс — это числовое поле, в котором хранится информация в разрезе измерений, о которых писали выше.
Иначе взаимодействия измерений/ресурсов можно схематично изобразить как систему координат:
Два измерения — абсцисса и ордината системы координат, т.е. на данном примере измерения это склад и номенклатура. На пересечении измерений мы можем получить количество — ресурс. Например, на «основном» складе товара «карандаш» в наличии 1 штука.
Реквизиты регистра накопления 1C
Реквизиты регистры накопления несут в себе роль «комментария» или дополнительной информации, в разрезе измерений нельзя получить остатки/обороты. Используются достаточно редко.
Виды регистра накопления
Существует два вида регистра накопления — обороты и остатки.
Если целью регистра накопления не является получение остатков, обязательно нужно использовать вид регистра накопления — обороты. Типичный пример использования оборотного регистра — регистрация объема продаж. В данном случае нам нужно знать только, какие продажи были за определенный период времени, остатки в данном случае не имеют смысла.
Если же среди целей использования регистра накопления — получение остатков на определенный период, нам необходим регистр с видом остатки. Такой тип позволяет получать как остатки, так и обороты. Для такого регистра система автоматически рассчитывает остатки. Пример «остаточного» регистра — товары на складах, деньги в кассе.
Использование вида регистра остатки, где можно обойтись оборотами, считается грубой ошибкой при проектировании регистра накопления с точки зрения производительности системы.
В зависимости от вида регистра система будет создавать разные виртуальные таблицы для регистра накопления. Виртуальная таблица – быстрый способ получения профильной информации из регистров.
Для регистра накопления это:
Для разработчика решения данные берутся из одной (виртуальной) таблицы, но на самом деле платформа 1С берёт из множества таблиц, преобразовывая их в нужных вид.
Правильное проектирование регистров накопления
Регистры накопления необходимо проектировать из необходимых отчетов. Самое трудное в системе 1С 8.3 — правильно хранить информацию, чтобы её в любой момент было легко получить.
Среди особенностей проектирования регистра следует отметить необходимость правильно расставлять по порядку измерения в регистре. Выше всего необходимо ставить измерения, которые будут чаще запрашиваться в системе.
Индексация измерений регистра накопления
У измерений регистра накопления имеется свойство — «индексировать». Это свойство необходимо устанавливать на измерения в тех случаях, когда по измерению планируется часто накладывать отборы при получении данных и данное измерение может иметь большое количество вариантов значения.
Например, регистр «ТоварыНаСкладах», измерения — «Склад, Номенклатура», ресурс — «Количество».
Правильнее проиндексировать «Номенклатуру», а поле»Склад» индексировать не стоит, потому как количество складов в системе, как правило, не существенное.
Другие статьи по 1С:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Регистры накопления в 1С: вкладки, особенноти
Обновим 1С с гарантией сохранности базы
Поможем с 1С 24/7, без выходных
Установим сервисы 1С бесплатно
Оперативно решим любые задачи по 1С
Регистр накопления – это прикладной объект конфигурации, предназначенный для хранения информации об операциях документов-регистраторов. Он служит для оперативного получения информации по операция «Поступления», «Списание» и т. д. Предлагаем рассмотреть подробнее регистр накопления в 1С и узнать все необходимые для работы подробности.
Рассмотрим основные вкладки регистра накопления «Движение товаров»:
Вкладка «Основные»
Как и для регистров сведений, в поле «Имя» вносится уникальное имя регистра, в поле «Синоним» — название, которое будет видно пользователям. Особое внимание следует обратить на поле «Вид регистра». Регистры накопления бывают нескольких видов:
При проектировании регистра требуется хорошо продумать какой вид мы укажем, т.к. регистр вида «Остатки» требует большее производительности.
Вкладка «Подсистемы»
На вкладке «Подсистемы» указываются подсистемы в которые может быть включен регистр сведений.
Вкладка «Данные»
Основная вкладка регистра, здесь добавляются измерения, ресурсы и реквизиты регистратора. Для корректной работы у регистра должен быть хотя бы один ресурс или измерение.
Измерения предназначены для определения «разреза» информации. Измерения могут иметь любой тип данных. По измерениям можно проводить отборы в записях регистра. В нашем регистре в качестве измерений указаны «Номенклатура», «Характеристика», «Склад», «Назначение», «Распоряжение». Так же важен порядок в котором указаны измерения, измерения которые чаще используются необходимо указывать первыми.
Ресурсы для регистра накопления всегда имеют только числовой тип данных. В нашем регистре это «Планируемые поступления», «Планируемые поступления под заказ» и т.д.
Реквизиты – дополняющая информация. Для регистра он не несёт никакой важно информации и никак не повлияет на его записи, но может быть полезен в качестве справочной информации. В нашем регистре это реквизиты «Корректировка» и «Дата распоряжения»
В нижней части окна расположена кнопка «Стандартные реквизиты», именно в ней мы можем увидеть «Период», «Регистратор», «Номер строки», «Активность».
Вкладка «Регистраторы»
На данной вкладке можно отметить документы, которые будет добавлять записи в наш регистр, ссылка на документ-регистратор будет записываться в реквизит «Регистратор». Для регистра накопления необходимо указывать хотя бы один документ регистратор, т.к. регистр не может быть независимым. При попытке создать регистр без указания документов-регистраторов система выдаст ошибку и запретит «Обновление конфигурации базы данных».
После указания документа – регистратора так же необходимо будет указать правила по которым добавляется запись в регистр, для этого необходимо воспользоваться «Конструктором движений»
Вкладка «Формы»
На данной вкладке можно создать «Форму записи» и «Форму списка» регистра. Создавать формы не обязательно, т.к. если форма не указана, но в режиме 1С.Предприятие открыть регистр, то программа самостоятельно сформирует для него стандартную форму.
Вкладка «Права»
На данной вкладке необходимо выбрать роли и установить для них права. Стоит учитывать, как необходимость «чтения» пользователями данных из регистра, так и возможность добавления записей в регистр. Не опытные программисты часто забывают назначать права при создании новых регистров сведений, что ведёт к ошибкам «Недостаточно прав» у пользователей.
Вкладка «Прочее»
На данной вкладке стандартно располагаются кнопки доступа к «Модулям». Так же здесь расположен флаг «Разрешить разделение итогов» — механизм позволяющий включить более высокую параллельность при работе с регистром (чтение, запись).
Наш регистр в режиме 1С. Предприятие имеет следующий вид:
По двойному щелчку мы проваливаемся в документ, который создал запись.
Как оптимизировать работу с программой?
У вас нет специалистов 1С в штате или вы не хотите отвлекать их от более стратегических задач? Тогда мы предлагаем оставить сопровождение или доработку 1С компании «ПРОГРАММЫ93»!
Почему клиенты обращаются именно к нам?
На вас работает не один человек, а целая команда. Вы не зависите от того, захочет ли специалист пойти в отпуск или взять больничный.
Вам не нужно оплачивать больничные, отпускные и готовить рабочее место для нового сотрудника.
Среди наших сотрудников не только специалисты 1С, но и опытные бухгалтера и юристы, поэтому мы подходим всесторонне к вопросу документооборота и отчетности.
Мы выстраиваем взаимодействие с клиентами так, чтобы вам удобно было оперативно обратиться по любому вопросу.
Позвоните по номеру телефона, указанному на сайте или заполните форму обратной связи, чтобы мы могли сориентировать по стоимости и рассказать, как начать сотрудничество.
Регистр накопления в 1С 8.3
Для чего нужен регистр накопления
Представим, что есть некое торговое предприятие, которое автоматизировано на платформе 1С. В конфигурации есть два документа: приход товара и расход товара. В каждом документе есть табличная часть с товарами, количеством и суммой. При поступлении товара оформляется приход товара, при продаже — расход товара.
После одного рабочего дня директору нужно узнать: сколько на оптовом складе стульев и на какую сумму были продажи за сегодня? Чтобы посчитать сколько стульев на складе нужно сложить все количество стульев из приходных документов на оптовый склад, потом сложить все количество стульев из расходных документов с оптового склада, а потом вычесть из общего прихода общий расход. Для получения оборота продаж за один день нужно сложить сумму всех расходных документов за этот день. Так как предприятие отработало всего один день, то такие расчеты будут выполняться не очень долго. Но что будет после недели, месяца, года? А если за один день создается по миллиону документов? Такие расчеты могут выполняться по несколько минут, а то и часов.
Также может увеличиться количество документов, влияющих на остаток. Например, добавится документ перемещения товара между складами или документ комплектации. Таких документов может быть еще штук двадцать и каждый раз придется переписывать алгоритм расчета остатков.
Для решения этой проблемы предназначен регистр накопления.
Во-первых все записи об изменении количества товара и суммы продаж будут храниться в таблицах регистра накопления. В итоге все алгоритмы будут основаны только на регистре и при увеличении количества документов, нужно будет только добавить для нового документа алгоритм формирования записей в регистре накопления.
Во-вторых, регистры накопления предоставляют рассчитанные итоги. При добавлении новой записи в регистр автоматически выполняется пересчет итогов. Что существенно снижает время для получения остатка товара или для получения суммы продаж за определенный период.
Виды регистров накопления:
Регистр накопления остатки
Создание регистра накопления
Добавим новый регистр накопления, назовем его Остатки товаров. На закладке Основные в поле Вид регистра нужно выбрать значение Остатки:
Это регистр накопления остатков.
Перейдем на закладку Данные. Здесь можно создать измерения и ресурсы регистра накопления. Ресурсы — это то что будет накапливаться в регистре. Для ресурса доступен только один тип данных — число. Измерения — это то, в разрезе чего нужно хранить ресурсы. Тут уже можно выбрать как примитивные, так и ссылочные типы данных.
В нашем примере измерениями регистра накопления будут Товар и Склад. А ресурс — Количество. Типы СправочникСсылка.Товары, СправочникСсылка.Склады и Количество (15, 3):
Если сейчас попробовать сохранить конфигурацию базы данных, то будет выдана ошибка «Ни один из документов не является регистратором для регистра». Все записи регистра накопления обязательно должны быть подчинены регистратору. Поэтому перейдем на закладку Регистраторы и отметим флажками те документы, которые будут выполнять запись в регистр:
В результате в базе данных будет создана следующая таблица:
| Период | Регистратор | Номер строки | Вид движения | Склад | Товар | Количество |
|---|
В колонке Период хранится дата записи. В колонке Регистратор — ссылка на документ-регистратор. В колонке Номер строки — уникальный номер записи в пределах одного регистратора, заполняется автоматически. В колонке Вид движения — значение системного перечисления ВидДвиженияНакопления, возможны два значения: приход или расход. В колонках Склад, Товар и Количество будут храниться значения измерений и ресурсов регистра накопления.
Это таблица движений регистра накопления. При проведении документы будут добавлять сюда записи.
Текущие итоги
Также в базе данных будет создана таблица итогов регистра накопления. Для регистра накопления остатков в ней будут храниться рассчитанные итоги каждого ресурса в разрезе всех измерений на дату 01.11.3999 г. Это текущие итоги регистра накопления остатков.
| Период | Склад | Товар | Количество |
|---|
Добавим в обработку проведения документов код для формирования движений в регистре накопления:
Проведем один документ Приход товара с двумя товарами. В результате в таблицу движений будут добавлены следующие строки:
Зеленый плюс в начале означает, что это вид движения Приход.
Сразу после записи таблицы движений будет пересчитана таблица итогов. Она будет выглядеть следующим образом:
| Период | Склад | Товар | Количество |
|---|---|---|---|
| 01.11.3999 | Основной | Кровать | 2 |
| 01.11.3999 | Основной | Шкаф | 3 |
Проведем еще один приход за июнь, будут добавлены следующие записи в таблицу движений:
Снова будет пересчитана таблица итогов, изменится колонка Количество:
| Период | Склад | Товар | Количество |
|---|---|---|---|
| 01.11.3999 | Основной | Кровать | 6 |
| 01.11.3999 | Основной | Шкаф | 9 |
Проведем еще один приход, за апрель:
| Период | Склад | Товар | Количество |
|---|---|---|---|
| 01.11.3999 | Основной | Кровать | 6 |
| 01.11.3999 | Основной | Шкаф | 9 |
| 01.11.3999 | Основной | Тумбочка | 5 |
Была добавлена новая строка с тумбочкой.
Теперь проведем расход товара от 1 июня:
В таблицу движений были добавлены три строки с типом Расход. А также была пересчитана таблица итогов, общее количество было уменьшено:
| Период | Склад | Товар | Количество |
|---|---|---|---|
| 01.11.3999 | Основной | Кровать | 5 |
| 01.11.3999 | Основной | Шкаф | 8 |
| 01.11.3999 | Основной | Тумбочка | 4 |
Если сейчас нам потребуется узнать сколько кроватей на основном складе, то можно обратиться к таблице итогов и сразу получить нужное количество.
Промежуточные итоги
Однако, сейчас в таблице итогов хранятся только текущие итоги, это самые актуальные итоги. Если потребуется узнать сколько было кроватей на 1 июня, то:
Если бы в июне было миллион записей, то такой расчет выполнялся бы очень долго и почти ни чем бы не отличался от получения итогов только из таблицы движений. Чтобы ускорить получение итогов на конкретную дату используются промежуточные итоги. Это итоги, которые хранятся на начало следующего месяца, они хранятся в одной таблице с текущими итогами.
Чтобы в таблице итогов появились промежуточные итоги нужно установить период итогов. Для этого в пользовательском режиме в функциях технического специалиста (во всех функциях для старых версий платформы) в группе Стандартные нужно выбрать обработку Управление итогами:
В открывшейся обработке внизу нужно переключиться на полные возможности:
Затем нужно выделить нужный регистр накопления, нажать кнопку Установить период итогов, в открывшемся окне в поле Максимальный хранимый период итогов для регистров накопления ввести 30.06.2021 и нажать ОК:
После этого таблица итогов примет следующий вид:
| Период | Склад | Товар | Количество |
|---|---|---|---|
| 01.05.2021 | Основной | Тумбочка | 5 |
| 01.06.2021 | Основной | Тумбочка | 5 |
| 01.06.2021 | Основной | Кровать | 2 |
| 01.06.2021 | Основной | Шкаф | 3 |
| 01.07.2021 | Основной | Тумбочка | 4 |
| 01.07.2021 | Основной | Кровать | 8 |
| 01.07.2021 | Основной | Шкаф | 5 |
| 01.11.3999 | Основной | Тумбочка | 4 |
| 01.11.3999 | Основной | Кровать | 5 |
| 01.11.3999 | Основной | Шкаф | 8 |
Если сейчас понадобится получить остаток на 01.06.2021, то платформа просто возьмет его из таблицы итогов. Если понадобится получить остаток на 25.06.2021, то платформа возьмет остаток на 01.07.2021, прибавит к нему все движения с типом расход между 25.06.2021 и 01.07.2021 и вычтет все движения с типом приход между 25.06.2021 и 01.07.2021.
Промежуточные и текущие итоги хранятся по всем измерениям и по всем ресурсам, если хотя бы один из ресурсов не равен нулю. Как только все ресурсы по определенному набору измерений становятся равными нулю, такая запись будет удалена из таблицы итогов. Если 01.06.2021 продать все тумбочки с основного склада, то на 01.07.2021 и на 01.11.3999 остаток будет равным нулю. Нет смысла хранить такие записи в таблице итогов и они будет удалены. Запись на 01.06.2021 останется в таблице итогов, потому что остаток был не нулевой.
Итоги хранятся помесячно. Итоги за май хранятся с датой 01.06.2021, итоги за июнь с датой 01.07.2021 и т.д.
Если сейчас добавить новую запись в таблицу движений за 10.06.2021, то в таблице итогов будут автоматически пересчитаны итоги за июнь и текущие итоги. Если добавить запись за 10.05.2021, то будут пересчитаны итоги за май, за июнь и текущие итоги. Если добавить новую запись за 01.01.2021, то в таблице итогов будут добавлены новые записи за январь, февраль и март. А также будут пересчитаны итоги за апрель, май, июнь и текущие итоги. Однако, если добавить запись за 01.08.2021, то будут пересчитаны только текущие итоги, потому что в обработке управления итогами мы установили максимальный период равным 30.06.2021. Запись с промежуточными итогами за август не будет добавлена.
Алгоритм заполнения таблицы итогов регистра остатков:
Регистр накопления обороты
Помимо получения остатка товара нам еще нужно быстро получить сумму продаж за определенный период. Желательно в разрезе покупателей. Первое что приходит в голову это добавить в регистр Остатки товаров изменение Контрагент, ресурс Сумма и заполнять их при проведении расхода товара.
Однако, это плохой вариант по следующей причине: записи с нулевыми ресурсами автоматически удаляются из таблицы итогов регистра остатков. При такой структуре регистра ресурс Сумма никогда не будет нулевым. Количество записей будет расти, таблица итогов будет разрастаться, что отрицательно скажется на производительности.
Регистры остатков следует создавать таким образом, чтобы по каждому измерения ресурсы как увеличивались, так и уменьшались.
Здесь подойдет регистр накопления оборотов. Добавим новый регистр Продажи, на закладке Основные в поле Вид регистра выберем Обороты:
Оборотный регистр накопления почти ничем не отличается от регистра остатков, за исключением нескольких отличий:
Если на закладке Данные создать измерение Контрагент и ресурс Сумма:
То таблица движений будет выглядеть следующим образом:
| Период | Регистратор | Номер строки | Контрагент | Сумма |
|---|
Формирование движений по регистру будет выглядеть следующим образом:
































