Параметры виртуальной таблицы периодичность 1с

Обновлено: 30.06.2024

Как известно при чтении данных платформа 1С обращается к таблицам базы данных. Но для регистров платформа 1С на основе реальных таблиц умеет формировать виртуальные таблицы, которые физически в базе данных не храняться. Это позволяет разработчику вместо того, чтобы делать сложный запрос к реальной таблице, сразу получить данные из виртуальной простейшим запросом. А также исключает возможные ошибки. Поэтому использовать виртуальные таблицы нужно всегда, когда есть такая возможность. Особенно при сдаче экзамена 1С:Специалист. Рассмотрим разные типы регистров и посмотрим какие виртуальные таблицы предоставляет платформа для каждого типа регистров.

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

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

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

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

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

Доступны следующие виртуальные таблицы

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

Доступна только одна виртуальная таблица

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

Здесь также в зависимости от настроек доступны следующие виртуальные таблицы


  • ДанныеГрафика
  • ФактическийПериодДействия
  • База
    Здесь на самом деле может быть несколько виртуальных таблиц в зависимости от настроек планов видов расчета и количества регистров расчета входящих в тот или иной план видов расчета.
    Допустим, что у нас есть два плана видов расчета: Начисления и Удержания. И для Удержаний в качестве базового плана видов расчета указан ПВР Начисления


В свою очередь есть три регистра расчета: Начисления, НачисленияДополнительные и Удержания. И регистры Начисления и НачисленияДополнительные включены в план видов расчета Начисления, а регистр Удержания соответственно в план видов расчета Удержания.

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

Самым большим набором виртуальных таблиц обладают регистры бухгалтерии

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


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

Если используются агрегаты, то при использовании виртуальной таблицы оборотов с периодичностью, совпадающей с периодичностью агрегатов, данные будут получены из таблицы агрегатов.

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

Агрегаты поддерживают следующие виды периодичности:

  • День
  • Месяц
  • Квартал
  • Полугодие
  • Год
  • Непериодический
  • Для регистра накопления с видом Остатки нельзя использовать агрегаты.
  • Если у оборотного регистра больше 30 измерений, то для него нельзя использовать агрегаты.

Работа с агрегатами отличается для клиент-серверного и файлового режима работы.

Агрегаты в клиент-серверном режиме

Алгоритм создания агрегатов:

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

В правом нижнем углу включить полные возможности (если они еще не включены) и перейти на закладку Агрегаты:

Агрегаты

Сейчас для регистра используется режим Итоги. Чтобы переключить его на использование агрегатов нужно в подменю Режим выбрать Включить режим агрегатов:

Включить режим агрегатов

Теперь для регистра включено использование агрегатов, однако в нижней части окна все еще нет ни одного агрегата.

Здесь можно просто нажать ОК. После этого платформа выполнит перестроение сети агрегатов и создаст те агрегаты, которые посчитает нужным. Для этого платформа анализирует статистику выполнения запросов к регистру.

В моем случае были созданы два агрегата:

Данные из таблицы движений будут перенесены в таблицу агрегатов.

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

Агрегаты в файловом режиме

Алгоритм создания агрегатов:

  1. Рассчитать список оптимальных агрегатов
  2. На основании списка оптимальных агрегатов создать необходимые агрегаты в конфигураторе
  3. Включить для регистра режим использования агрегатов
  4. Выполнить перестроение агрегатов
  5. Периодическое обновление агрегатов
  1. Для расчета оптимальных агрегатов в обработке Управление итогами нужно нажать на кнопку Оптимальные:

Можно указать ограничение на размер таблицы агрегатов в процентах от таблицы движений:

Параметры оптимальных агрегатов

Будет открыт конструктор агрегатов регистра. Здесь есть кнопка Открыть оптимальные агрегаты:

Открыть оптимальные агрегаты

Нажимаем и выбираем XML-файл с именем нашего регистра из каталога, который сохранили ранее.

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

Список оптимальных агрегатов

Нажав на кнопку с двумя стрелками влево перенесем оптимальные агрегаты в список агрегатов регистра.

Список оптимальных агрегатов

Нажмем ОК и сохраним конфигурацию базы данных.

  1. Использование агрегатов включается аналогично клиент-серверному режиму.
  1. Перестроение и периодическое обновление агрегатов выполняется аналогично клиент-серверному режиму.

Конструктор агрегатов

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

Периодичность = Авто означает, что периодичность будет определять система при перестроении сети агрегатов.

Нужные измерения отмечаются флажками.

Конструктор агрегатов

Выключение и очистка агрегатов

В обработке Управление итогами есть подменю Использование, где можно включить/выключить использование агрегатов:


Удалить все данные из таблицы агрегатов можно по нажатию на кнопку Очистить:

Очистить агрегаты

Программная работа с агрегатами

Для включения режима агрегатов используется метод УстановитьРежимАгрегатов. Если передать параметром Истина, то будут выключены итоги и включены агрегаты. Если передать Ложь, то наоборот.

Узнать текущий режим можно методом ПолучитьРежимАгрегатов. Данный метод вернет Истина, если используются агрегаты и Ложь в противном случае.


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

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

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

РегистрБухгалтерии.РегистрБухгалтерии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, а ОстатокКт = -Остаток.

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


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

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


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

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

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