1с в чем отличие между регистром накопления остатков и оборотным регистром накопления

Обновлено: 07.07.2024

В нескольких статьях представлены основные сведения о внутреннем устройстве регистров накопления, о SQL-запросах платформы при работе с ними и их изменение в зависимости от настроек регистра. Подробно описана работа платформы с разными типами регистров (остатков и накопления), а также принцип действия агрегатов.

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

Больше года назад сайт был закрыт. Некоторые из его материалов будут реанимированы на Инфостарт.

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

Предисловие

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

Сегодня в статье рассмотрим действия платформы при работе с виртуальными таблицами "Остатки" и "Остатки и обороты" регистра накопления с видом "Остатки".

Общие сведения

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


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


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


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


Теперь рассмотрим формируемые платформой SQL-запросы к базе данных для получения остатков через названную виртуальную таблицу. Проанализируем изменение запроса для включенных/отключенных текущих итогов.

За кулисами

Выполним в нашей тестовой базе следующий запрос на языке платформы:

Для регистра "ОстаткиНоменклатуры" установим дату рассчитанных итогов на конец февраля (28.02.2013). Первый запрос выполним с включенными текущими итогами регистра накопления.


Первым делом платформа обратится к настройкам регистра накопления. Этот запрос был рассмотрен в предыдущей статье. Перейдем непосредственно к SQL-запросу платформы при использовании виртуальной таблицы "Остатки".

Получим следующий SQL-запрос платформы:

Обратите внимание на параметр "Период", переданный в виртуальную таблицу. Напомню, в нашем случае включены текущие итоги. Поскольку граница рассчитанных итогов регистра установлена на 28.02.2013, платформа не может получить итоги по остаткам на предыдущий месяц, а использовать последние рассчитанные итоги на конец февраля 2013 года и затем корректировать остаток в соответствии с движениями за последующие 3 месяца было бы не оптимально.

Поэтому программа получает текущие остатки (остатки на текущую дату, которые хранятся с периодом 01.11.5999 00:00:00) и корректирует их в соответствии с движениями в период с значения параметра "Период" вирт. таблицы и по дату текущий остатков. Если мы отключим текущие итоги, то тот же запрос на языке платформы будет преобразован в следующий SQL-запрос, имеющий незначительные изменения:

То есть, если параметр "Период" виртуальной таблицы больше периода последних рассчитанных итогов, то тогда платформа получает текущие остатки и корректирует их по движениям в диапазоне с [ПараметрПериодВиртуальнойТаблицы] по [ПериодТекущихИтогов]. В случае, если для регистра отключены текущие итоги, то платформа получает последние рассчитанные итоги и корректирует их по движениям с периода этих итогов по период, установленный в параметрах виртуальной таблицы.

Прежде чем перейти к выводам, отмечу, что во всех вариантах SQL-запроса при наложении условия на период получаемых движений, условие верхней границы диапазона всегда представляет собой:

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

Делаем выводы

Подведем небольшой итог. На следующей схеме представлены действия платформы для получения остатков при различных настройках регистра накопления и параметра периода виртуальной таблицы "Остатки".


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

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

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

Все эксперименты проводил на платформе 1С:Предприятие 8.2.17.169.

Далее рассмотрим самую "тяжелую" виртуальную таблицу регистров накопления "ОстаткиИОбороты".

"Тяжелая" таблица

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

Выполним следующий запрос на языке запросов платформы:

Параметрам запроса присвоим следующие значения:


Такие параметры как "Периодичность" и "МетодДополнения" мы оставили без заполнения. Сначала платформа выполнить запрос для получения настроек регистра накопления. Его мы подробно рассмотрели в статье по виртуальной таблице "Обороты", поэтому сейчас останавливаться на нем не будем.

При таких настройках платформа сформирует следующий SQL-запрос для рассматриваемой виртуальной таблицы:

Прокомментировал основные моменты в запросе. Общая схема работы запроса такая:

  1. Получаем обороты регистра по таблице движений за установленный период.
  2. Получаем остатки на значение даты параметра "Начало периода".
  3. Объединяем предыдущие два результата, при этом поле "НачальныйОстаток" - это остаток по данным таблицы остатков, а "КонечныйОстаток" вычисляется как : "НачальныйОстаток" + "Оборот"
  4. Полученные данные группируются по выбранным в запросе измерениям и проверяются на наличие хотя бы одного заполненного ресурса (не равного 0).

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

Сам SQL-запрос может изменяться в зависимости от значений параметров виртуальной таблицы. Например, если мы добавим периодичность, то в запрос будет добавлено дополнительное поле "Период", по которому результат будет группироваться. При установке параметра "МетодДополнения" в запрос будут попадать границы периода, если установлено значение "ДвиженияИГраницыПериода" (именно с таким значением параметра мы анализировали SQL-запрос), иначе в результате запроса будут только движения.

Что дальше

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

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

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

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

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

Регистр накопления остатков состоит из двух таблиц: таблицы движения и таблицы итогов. В таблице движений хранятся записи, которые либо вводятся пользователем вручную, либо генерируются в процессе проведения документа или исполнения обработки. Таблица движений имеет следующую структуру:
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 включительно будут посчитаны по таблице движений. В третьем случае данные за весь указанный период будут посчитаны по таблице движений.

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

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

Во-вторых - все регистры, независимо от их вида, имеют ресурсы, измерения и реквизиты. То есть определяется что (ресурс) в каких разрезах (измерения) нужно учесть. Применимо к библиотеке — мы учитываем книги в разрезе авторов, жанров и издательств. А с помощью реквизитов можно дополнить информацию, например, годом издания. И здесь есть один важный момент — структура регистра должна быть определена очень тщательно в зависимости от того, какую информацию мы собираемся из него извлекать. Например, если в нашей библиотеке поиск чаще всего производится по фамилии автора — в карточке сначала должен стоять автор (первое измерение), а ужа после него — жанр (второе измерение).

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

В-четвертых, данные в регистры записываеются в виде наборов записей. Каждый набор состоит из одной или нескольких записей. При этом на запись в наборе нельзя сослаться или обратиться к ней. А также ни набор записей, ни запись в наборе не могут иметь состояния «пометка на удаление».

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

Терперь поговорим об особенностях каждого вида регистров:

1. Регистры сведений

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

Имеет особое свойство, не используемое в других видах регистров — периодичность.

Может не иметь регистратора, то есть быть независимым, в этом случае записи производятся непосредственно в регистр, минуя регистрирующий документ (то самое исключение из общей схемы использования регистров в 1с). Тогда как остальные виды регистров должны иметь хотя бы один документ-регистратор.

Кроме того, данный вид регистра имеет автоматический контроль уникальности записей по периоду (периодичность, указанная в свойствах регистра) и измерениям. То есть среди записей регистра не может быть более одной записи с одинаковыми показателями период+измерение+регистратор(если он есть). Уникальность записей в других видах регистров осуществляется по регистратору.

2. Регистры накоплений

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

Данные регистра накопления хранятся в БД в виде двух таблиц — таблица движений и таблица итогов. Обращение напрямую возможно только к таблице движений.

3. Регистры бухгалтерии

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

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

4. Регистры расчета

Этот вид регистра предназначен не только для хранения, накопления и систематизации данных, но и для реализации сложных механизмов периодческих расчетов. Для этого в свойствах регистра расчета необходимо определить еще один объект 1с — план видов расчета. То есть работа регистра этого вида невозможна без определения для него конкретного плана видов расчета.

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

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

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

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

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

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

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

02

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

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

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

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

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

03

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

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

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

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

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

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

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

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

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

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

04

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

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


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

Выборка из регистра бухгалтерии

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

РегистрБухгалтерии.РегистрБухгалтерии1 КАК РегистрБухгалтерии1


Выборка значений субконто:

РегистрБухгалтерии1Субконто.Регистратор КАК Регистратор , РегистрБухгалтерии1Субконто.МоментВремени КАК МоментВремени , РегистрБухгалтерии1Субконто.НомерСтроки КАК НомерСтроки , РегистрБухгалтерии1Субконто.ВидДвижения КАК ВидДвижения , РегистрБухгалтерии.РегистрБухгалтерии1.Субконто КАК РегистрБухгалтерии1Субконто


Виртуальные таблицы регистра бухгалтерии

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

При этом у регистра бухгалтерии без поддержки корреспонденции не будет виртуальной таблицы ОборотыДтКт.

ДвиженияССубконто

Виртуальная таблица ДвиженияССубконто содержит в себе поля как основной таблицы регистра бухгалтерии, так и таблицы значений субконто:


Данная таблица получается соединением основной таблицы и таблицы значений субконто. Из всех виртуальных таблиц только данная таблица может содержать неактивные записи (поле Активность = Ложь), но при этом в самой таблице есть поле Активность, поэтому неактивные записи можно будет исключить в запросе.

Таблица ДвиженияССубконто имеет следующие параметры:

  • С помощью параметров НачалоПериода и КонецПериода можно ограничить выборку записей по периоду. Тип может быть Дата, МоментВремени, Граница.
  • Параметр Условие позволяет наложить отбор на любые поля таблицы.
  • Параметр Упорядочивание позволяет задать поле по которому нужно отсортировать таблицу. После имени поля можно указать ВОЗР или УБЫВ для определения порядка сортировки (по возрастанию или по убыванию).
  • Параметр Первые позволяет ограничить количество выбираемых записей.
РегистрБухгалтерии1ДвиженияССубконто.СчетДт КАК СчетДт , РегистрБухгалтерии1ДвиженияССубконто.СубконтоДт1 КАК СубконтоДт1 , РегистрБухгалтерии1ДвиженияССубконто.СубконтоДт2 КАК СубконтоДт2 , РегистрБухгалтерии1ДвиженияССубконто.СчетКт КАК СчетКт , РегистрБухгалтерии1ДвиженияССубконто.СубконтоКт1 КАК СубконтоКт1 , РегистрБухгалтерии1ДвиженияССубконто.СубконтоКт2 КАК СубконтоКт2 , РегистрБухгалтерии1ДвиженияССубконто.Сумма КАК Сумма РегистрБухгалтерии.РегистрБухгалтерии1.ДвиженияССубконто ( &НачДата , &КонДата , СчетДт = &СчетДт , Организация , 10 ) КАК РегистрБухгалтерии1ДвиженияССубконто

Данный запрос выберет первые 10 записей за период между &НачДата и &КонДата, с отбором по счету дебета = &СчетДт, выборка будет отсортирована по полю Организация.

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

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

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

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

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

Во-первых помимо измерений регистра бухгалтерии в таблице остатков присутствуют поля Счет и субконто. Количество субконто равно максимальному количеству субконто в плане счетов.


В нашем примере в настройках плана счетов было указано максимум два субконто, поэтому в таблице есть два поля для субконто: Субконто1 и Субконто2. Если на каком-то счете присутствует только одно субконто, то в поле Субконто2 будет NULL.

Во-вторых, для каждого ресурса создается по пять полей:

  • Остаток
  • ОстатокДт
  • ОстатокКт
  • РазвернутыйОстатокДт
  • РазвернутыйОстатокКт

В поле Остаток будет остаток, как он хранится в таблице итогов. Дебетовый остаток будет больше нуля, кредитовый меньше.

Поля ОстатокДт и ОстатокКт рассчитываются по разному, в зависимости от вида счета:

  • Для активного счета ОстатокКт всегда равен нулю, а ОстатокДт = Остаток.
  • Для пассивного счета ОстатокДт всегда равен нулю, а ОстатокКт = -Остаток.
  • Для активно-пассивного счета, если Остаток > 0, то ОстатокДт = Остаток, а ОстатокКт = 0. Если Остаток < 0, то ОстатокДт = 0, а ОстатокКт = -Остаток.

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


Признак Балансовый у измерений и ресурсов никак не влияет на количество полей.

В-четвертых, есть два новых параметра: УсловиеСчета и Субконто:


УсловиеСчета позволяет задать отбор по счетам учета, можно указать несколько счетов.

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

Читайте также: