Создание временной таблицы 1с

Обновлено: 04.07.2024

Использование временных таблиц

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

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

2. Есть ситуации, когда временные таблицы не следует создавать или создание временных таблиц необходимо минимизировать.

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

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

2.3. Не следует помещать во временную таблицу поля, которые не используются в последующих запросах, т.к. время и место для их размещения тратится впустую.

2.4. Не следует создавать и удалять временные таблицы в цикле, если можно создать одну временную таблицу до выполнения цикла.

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

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

3.1. Индекс следует строить если:

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

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

3.2. Маленькие временные таблицы индексировать не нужно (менее 1000 записей).

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

Язык запросов 1С позволяет использовать в запросах временные таблицы , с помощью которых можно:

  • повысить производительность запросов;
  • в некоторых случаях снизить количество блокировок;
  • сделать текст запроса более легким для восприятия.

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


Запрос, использующий временную таблицу, будет иметь вид:


Время "жизни" временной таблицы:

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

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

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

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

Время "жизни" временной таблицы

Программная обработка временных таблиц в 1С

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

ВАЖНО! В случае использования менеджера временная таблица продолжает жить все время исполнения процедуры; поэтому, для оптимизации производительности , в данном случае ее желательно уничтожать в запросе, либо методом менеджера временных таблиц Закрыть().

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

Создать описание временной таблицы

В окне "Временная таблица" можно определить её наименование и поля, а далее - работать с ней, как с обычной таблицей данных.

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