Содержание:
1. Регистры накопления в 1С 8.3. Для чего это нужно?
2. Как устроены регистры накопления остатков и оборотный?
3. Как рационально использовать таблицы «регистры накопления»?
1. Регистры накопления в 1С 8.3. Для чего это нужно?
Для успешного управления каким-либо хозяйственным объектом необходимо обладать точными данными о его состоянии на текущий момент, а также за прошедшие периоды. Так как только на основе данной информации можно делать определенные выводы и прогнозировать дальнейшую деятельность.
То есть данные необходимо накапливать и обрабатывать. Собственно, для этих целей и служат регистры накопления в 1С 8.3.
К примеру, есть магазин, торгующий различными товарами. Продавец при реализации или оприходовании товара выписывает накладную, а также делает запись в специальном журнале, где указывает сумму, количество, дату и сведения о контрагенте. В конце каждого месяца вычисляется итоговые результаты.
В системе 1С накладной будет соответствовать документ и запись в регистр накопления. Причем, если в журнал записываются сведения только о проданных товарах, то это будет оборотный регистр. Если поступления и продажи – тогда регистр накопления остатков. Записи в журнале – аналог таблицы движений, вычисленные результаты за месяц таблицы итогов.
2. Как устроены регистры накопления остатков и оборотный?
Как упоминалось ранее, регистр накопления – это совокупность таблиц. В базе данных хранится таблица движений и таблица итогов. В момент обращения к БД формируются виртуальные таблицы.
Среди регистров накопления вид регистра может иметь значение остатки либо обороты. Между ними есть довольно существенные отличия. Рассмотрим их ниже.
Таблицы регистра накопления остатков.
Таблица движений.
Рис.1
Таблица движений записывается в БД. Она содержит записи, которые генерируются в проведения документа или исполнения обработки, либо вводятся пользователем вручную.
Для данной таблицы разберем назначение каждого поля (они же будут использоваться в остальных таблицах).
Период – дата. Определяет, с какого момента данное движение влияет на формирование итогов и виртуальных таблиц 1С.
Регистратор - ссылка на документ, к которому принадлежат записи в регистре. В большинстве случаев это тот же самый документ, который сформировал движение. Технически возможно сформировать движение одним документом, а принадлежать они будут другому.
Номер строки – порядковый номер строки начинается с 1. Уникальный в пределах регистратора. Совместно с регистратором образует ключ уникальности.
Активность – Булево, в случае значения «Истина» запись повлияет на формирование итогов и виртуальных таблиц 1С.
Вид движения – Системное перечисление ВидДвиженияНакопления, может принимать два значения «Приход» или «Расход». В случае прихода остаток увеличивается, расхода – уменьшается.
Измерения – тип определяется разработчиком. Определяет разрез ведения учета. Измерений может быть несколько, например, номенклатура, склад, контрагент и т.д. Порядок измерений тоже имеет значение. При создании регистра первым в списке должно стоять измерение с наивысшим приоритетом.
Ресурс - число, информация о том, что мы собираемся хранить в разрезе измерений. Ресурсов может быть несколько, например, количество, сумма, себестоимость и т.д.
Таблица итогов.
К данной таблице нельзя обратиться напрямую, она записана в базу данных и используется для расчета виртуальных таблиц 1С. Содержит следующие поля:
1. Период
2. Измерения
3. Ресурсы
Таблица итогов для регистра накопления хранит остатки в разрезе всех измерений с периодичностью месяц, на начало месяца. Есть возможность вводить ограничения временного интервала, за который хранятся остатки, путем установки периода рассчитанных итогов.
Рис.2
Для таблицы движений (Рис.1) период рассчитанных итогов равен 30.06.2019, а самое раннее движение было сделано 02.04.2019. Итоги будут храниться за следующие периоды: 01.05.2019, 01.06.2019, 01.07.2019 и актуальные итоги (рассчитываются на дату 30.11.3999).
Рис.3
Виртуальная таблица остатков.
Рис.4
Виртуальная таблица остатков не записана в БД (собственно говоря, поэтому она и виртуальная), она рассчитывается в момент обращения к базе. В расчетах используются таблицы итогов. Если данных не достаточно, идет обращение к движениям.
Алгоритм расчета остатков на заданный момент времени:
1. Подбирается ближайший больший или равный момент времени, на который рассчитаны остатки.
2. На этот момент получаются остатки из таблицы итогов.
3. Если момент времени, на который считаются остатки, не совпадает с моментом времени итогов, то остатки досчитываются по движениям за период с момента запроса остатков по момент итогов.
Рис.5
Виртуальная таблица оборотов.
Рис.6
Виртуальная таблица оборотов всегда использует данные из таблицы движений, независимо рассчитаны итоги или нет. Именно поэтому регистр остатков не оптимально использовать, если требуется частое получение оборотов за какой-либо период.
Виртуальная таблица 1С остатков и оборотов
Рис.7
При формировании таблицы 1С остатков и оборотов вычисляется таблица остатков и таблица оборотов по алгоритмам, описанным выше. Результаты вычислений объединяются.
Таблицы регистра накопления оборотов.
Таблица движений.
Рис.8
Таблица движений записана в БД, и формируется таким же образом, как и движения в регистре остатков. Отличается отсутствием поля ВидДвижения: в нем нет надобности, так как регистр предназначен для накапливания оборотов (например, количество продаж).
Таблица итогов.
Таблица итогов хранится в базе данных и содержит те же поля, что и в остаточном регистре:
1. Период
2. Измерения
3. Ресурсы
В таблице хранятся обороты с периодичностью в месяц. Итоги хранятся за все периоды, за которые были движения. Нет ограничения периодом рассчитанных итогов. Понятия актуальных итогов на данный момент времени не существует, так как итоги рассчитываются за период.
Рис.9
Виртуальная таблица оборотов.
Виртуальная таблица оборотов при вычислении использует таблицу итогов и таблицу движений (при необходимости).
Рис.10
Для наглядности рассмотрим, как рассчитываются обороты, если бы использовался регистр остатков.
Рис.11
Сравнивая Рис.10-11 можно еще раз убедиться в том, что использовать регистр накопления остатков для получения оборотов нерационально. Система затратит гораздо больше ресурсов, если для расчета будет использована только таблица движений без использования итоговых данных.
3. Как рационально использовать таблицы «регистры накопления»?
В первую очередь при проектировании учетной схемы необходимо определиться с видом регистра, остатки либо обороты.
Регистры в основном используются для построения отчетов, поэтому показатели регистра должны максимально соответствовать показателям, выводимым в отчете.
При написании запросов к базе необходимо максимально точно описывать условия получения данных из регистров. Подробнее об условиях при написании запросов будет изложено в следующей статье.
Специалист компании ООО «Кодерлайн»
Александр Гармышев.