Структура регистра накопления

Все поля регистра накопления можно разделить на три категории: измерения, ресурсы, реквизиты. К этим категориям относятся и все системные поля регистра. Период является измерением. Регистратор и НомерСтроки, с одной стороны, являются измерениями, так как вместе периодом определяют момент времени в которое произошло движение; с другой стороны, они характеризуют конкретную запись и могут быть отнесены к категории реквизитов. Вид движения является реквизитом так как является только характеристикой конкретной записи.

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

Регистр накопления остатков состоит из двух таблиц: таблицы движения и таблицы итогов. В таблице движений хранятся записи, которые либо вводятся пользователем вручную, либо генерируются в процессе проведения документа или исполнения обработки. Таблица движений имеет следующую структуру:
1. Период
2. Регистратор
3. Номер строки
4. Вид движения
5.
6.
7.
В таблице итогов хранятся остатки в разрезе всех измерений с периодичностью месяц, на начало месяца. Временной интервал, за который хранятся остатки, ограничивается установкой периода рассчитанных итогов. Период рассчитанных итогов указывается как последний день месяца, по который рассчитаны итоги. То есть если период рассчитанных итогов равен 31.07.2004, то итоги будут рассчитаны по 01.08.2004 включительно. Кроме того, в таблице итогов отдельно хранятся актуальные итоги. Таблица итогов имеет следующую структуру:
1. Период
2.
3.
Если период рассчитанных итогов равен 31.07.2004, а самое раннее движение было сделано 02.05.2004, то итоги будут хранится за следующие периоды: 01.06.2004, 01.07.2004, 01.08.2004 и актуальные итоги.

Виртуальная таблица остатков

Виртуальная таблица остатков для расчета данных всегда использует таблицу итогов и иногда таблицу движений. Использование таблицы движений зависит от момента времени, на который считаются остатки, и периода рассчитанных итогов. При расчете остатков используются довольно простая стратегия.
1. Подбирается ближайший больший или равный момент времени, на который рассчитаны остатки.
2. На этот момент получаются остатки из таблицы итогов.
3. Если момент времени, на который считаются остатки, не совпадает с моментом времени итогов, то остатки досчитываются по движениям за период с момента запроса остатков по момент итогов.

Рассмотрим несколько примеров. Пусть период рассчитанных итогов равен 31.07.2004. Мы хотим получить остатки на 01.07.2004, 15.07.2004, 01.08.2004, 15.08.2004 и актуальные остатки.
Для случаев получения остатков на 01.07.2004, 01.08.2004 и актуальных остатков данные будут получены непосредственно из таблицы итогов. В случае получения остатков на 15.07.2004 сначала будут получены данные из таблицы итогов на момент времени 01.08.2004, так как это ближайший больший момент времени, на который посчитаны остатки, а затем будут обработаны данные из таблицы движений за период с 15.07.2004 по 31.07.2004 включительно. В случае получения остатков на 15.08.2004, ближайшим большим моментом времени, на который посчитаны остатки является момент актуальных остатков. Таким образом, для расчета остатков на 15.08.2004, будут получены актуальные итоги и обработаны данные таблицы движений начиная с 15.08.2004.

Виртуальная таблица оборотов

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

Виртуальная таблица остатков и оборотов

Виртуальная таблица остатков и оборотов рассчитывает одновременно и остатки, и обороты. В зависимости от того, указана периодичность или нет, изменяется способ работы данной таблицы. Если периодичность не указана, то расчет данных производится единым запросом, который в свою очередь содержит подзапросы. Один из них вычисляет остатки на начальный момент периода, как это описано для виртуальной таблицы остатков, второй -обороты за заданный период, как это описано для виртуальной таблицы оборотов. Результаты подзапросов объединяются и выдаются как единый результат.

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

Отличие оборотного регистра от регистра остатков

В отличие от регистра остатков, оборотный регистр накапливает обороты. По данному регистру нельзя посчитать остатки, и поэтому для него существуют только одна виртуальная таблица оборотов. Структура таблицы движений оборотного регистра не сильно отличается от таблицы движений регистра остатков. Она имеет следующую структуру:
1. Период
2. Регистратор
3. Номер строки
4.
5.
6.

Очевидно, что в таблице движений оборотного регистра отсутствует только поле ВидДвижения. Таблица же итогов оборотного регистра по своей структуре идентична структуре таблицы регистра остатков:
1. Период
2.
3.

Но сходство этих таблиц на этом и заканчивается. В таблице итогов оборотного регистра хранятся обороты с периодичностью месяц. Итоги хранятся за все периоды, за которые были движения и не ограничиваются периодом рассчитанных итогов. В таблице итогов оборотного регистра не хранятся актуальные данные, так как для оборотов такого понятия не существует.

Виртуальная таблица оборотов

Виртуальная таблица оборотов в своей работе может использовать как таблицу итогов, так и таблицу движений. Зависит это от заданного периода и периодичности. Если периодичность задана, и она меньше месяца, то используется только таблица движений. Если периодичность не задана или задана большей или равной месяцу, то использование таблицы итогов или движений зависит от заданного периода. Если в заданный период попадают целые месяцы, то данные за них считаются по таблице итогов, остальное считается по таблице движений. Например считаются данные с периодичностью месяц за периоды:
1. с 01.03.2004 по 31.03.2004
2. с 02.03.2004 по 03.05.2004
3. с 02.03.2004 по 03.04.2004

В первом случае все данные будут посчитаны по таблице итогов. Во втором случае данные за период с 01.04.2004 по 30.04.2004 включительно будут посчитаны по таблице итогов, а за периоды с 02.03.2004 по 31.03.2004 включительно и с 01.05.2004 по 03.05.2004 включительно будут посчитаны по таблице движений. В третьем случае данные за весь указанный период будут посчитаны по таблице движений.

рубрики: Виртуальные таблицы | Дата: 11 Июнь, 2017

Регистры накопления в системе 1С:Предприятие делятся на два вида: регистры накопления остатков и регистры накопления оборотов.

Вид регистра выбирается при его создании в конфигураторе

Как следует из названия одни предназначены для получения остатков на какую-либо дату, а вторые для получения оборотов за выбранный период. В зависимости от вида регистра накопления платформа 1С:Предприятия формирует разный набор виртуальных таблиц. В этой статье и рассмотрим работу с виртуальными таблицами регистров накопления. Для этого создадим регистр накопления остатков — ТоварыОстатки и регистр накопления оборотов — ТоварыОбороты.

Теперь рассмотрим какие виртуальные таблицы предоставляет платформа для каждого из этих регистров.

Регистр накопления оборотов

Для наглядности откроем конструктор запросов и посмотрим какие таблицы доступны для регистра ТоварыОбороты. Это таблица самого регистра — ТоварыОбороты, которая существует физически в базе данных, и одна виртуальная таблица — ТоварыОбороты.Обороты

Со стандартной таблицей все понятно. Рассмотрим подробнее виртуальную.

Виртуальная таблица Обороты

Эта таблица позволяет получать оброты ресурсов в разрезе измерений. В нашем случае у нас два измерения: Склад и Товар. И один ресурс — Количество

Пусть в нашем регистре есть следующие записи

Вернемся в конструктор запросов и для начала просто выберем из таблицы ТоварыОбороты.Обороты все поля

Соответственно запрос будет выглядеть следующим образом:

Результат выполнения запроса выглядить вот так:

СкладТоварКоличествоОборот
ЦентральныйРучка3
ОфисРучка7
ЦентральныйКарандаш21
ОфисКарандаш4

То есть мы получили обороты в разрезе товаров и складов за все время. Предположим, что нас не интересуют склады и мы хотим получить обороты только в разрезе товаров.

Для этого исключим из запроса измерение Склад

и в результате у нас останется только две строки

ТоварКоличествоОборот
Ручка10
Карандаш25

Но как правило за все время существования регистра обороты получать не требуется. В основном они нужны за какой-то конкретный период: месяц, квартал, год и т.д. Плюс еще обычно нужны отборы по измерениям (Товар, Склад). Это достигается использованием параметров виртуальной таблицы. Заполнять параметры удобно из конструктора. По кнопке Параметры виртуальной таблицы открывается диалоговое окно в котором можно прописать все что нам нужно:

После этого наш исходный запрос примет следующий вид

Как видим отличие в том, что в скобках после имени виртуальной таблицы появились параметры, которые необходимо заполнить перед выполнением запроса.

У тех кто только начинает работать с виртуальными таблицам зачастую возникает соблазн вместо использования параметров установить отбор привычным способом:

Делать так категорически нельзя. Это отрицательно скажется на производительности и на вашей оценке при сдаче экзамена 1С:Специалист.

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

После этого наблюдаем, что в полях таблицы появилось поле Период.

Добавив и его в выбранные поля, получим вот такой текст запроса:

ПериодСкладТоварКоличествоОборот
01.06.2017 0:00:00ЦентральныйРучка3
01.06.2017 0:00:00ЦентральныйКарандаш-5
01.06.2017 0:00:00ОфисКарандаш4
01.05.2017 0:00:00ОфисРучка7
01.05.2017 0:00:00ЦентральныйКарандаш26

Таким образом внутри выбранного временного интервала мы можем разбить обороты на более мелкие промежутки в соответствии с выбранной периодичностью.

Регистр накопления остатков

Так же как и с оборотным регистром посмотрим в конструкторе запросов какие же виртуальные таблицы доступны для регистра накопления остатков

Как видим для регистра накопления остатков доступны три виртуальные таблицы: Обороты, Остатки, ОстаткиИОбороты. Рассмотрим каждую из них в отдельности.

Виртуальная таблица Обороты

Несмотря на то, что вид регистра — Остатки, мы тем не менее можем получать по нему и обороты. Плюс у нас здесь есть два дополнительных ресурса: Приход и Расход

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

Виртуальная таблица Остатки

Эта таблица используется для получения остатков ресурсов в разрезе измерений. В параметрах таблицы мы можем указать дату на которую получаем остатки и установить отборы:

Рассмотрим небольшой пример. Имеем следующие записи регистра:

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

А после его выполнения получим вот такой результат

СкладТоварКоличествоОстаток
ЦентральныйРучка3
ЦентральныйКарандаш21
ОфисРучка7
ОфисКарандаш4

Виртуальная таблица ОстаткиИОбороты

Эта таблица объединяет в себе две ранее рассмотренные и позволяет получить обороты за выбранный период времени, а также остатки на начало и на конец периода. Также можно установить отбор.

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

Обучение программированию на 1С

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

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

Вид, тип, структура

Все данные хранятся в узлах системы. Оси системы представляют собой измерения регистра, а сами совокупные данные в узлах – это ресурсы конкретного регистра. Визуально регистр накопления — таблица, количество колонок которой соответствует сумме его измерений. Кроме параметров измерений и ресурсов регистр накоплений характеризуется набором реквизитов. Они позволяют подключать данные дополнительной информации. Сами реквизиты не оказывают влияния на значение ресурса, но могут быть частью анализа движения регистра.

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

  • Регистры остатков
  • Регистры оборотов

Методом встроенного языка 1С можно сформировать Остатки, выборка будет сделана на указанную временную позицию. Можно фильтровать данные в разрезе значений измерений. Можно получить Остатки в разрезе других указанных измерений. Обороты и регистры оборотов предназначены, чтобы хранить информацию, для которой само понятие «Остатки» лишено смысловой нагрузки.

Три категории полей Регистра накопления:

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

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

Составные части Регистра накопления Остатков:

  • Таблицы движения
  • Таблицы итогов

Информация в таблицы движения вводится пользователем вручную или генерируется в процессе проведения определённых документов в системе, возможна специальная обработка для заполнения таблиц движения.

Структура таблиц движения:

Период ?Регистратор ? Номер строки ? Вид движения ? ‹Измерения› ? ‹Ресурсы› ? ‹Реквизиты›

Итоговые таблицы содержат остатки в аналитике измерений с периодом месяц, с данными на начало периода.

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

Период ? ‹Измерения› ?‹Ресурсы›

Остатки в виртуальной таблице используют всегда таблицы итогов, реже таблицы движений.

Стратегия расчёта остатков:

  1. Проводится отбор ближайшего большего или равного момента, на который Остатки рассчитаны.
  2. Закрепляются имеющиеся Остатки из таблицы итогов.
  3. При несовпадении моментов времени, Остатки досчитываются по таблицам движений к данным таблицы итогов.

Обороты формируют виртуальную таблицу только из данных таблиц движений. Если нужны Обороты, то будут обрабатываться все данные о движении, независимо от наличия данных в итоговых таблицах.

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

Регистры Оборотов и Остатков, отличия

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