Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
1C_ERR_TEMP_TABLE_EXISTS 1С:Предприятие и СУБД

1С Ошибка: Временная таблица с таким именем уже существует — Решение

Обновлено: 25.08.2026  ·  Официальная база знаний
  • Ошибка времени выполнения Временная таблица с таким именем уже существует при повторном выполнении алгоритма.
  • Сбой сложных отчетов СКД, использующих общий МенеджерВременныхТаблиц.
  • Аварийное завершение циклических пакетных запросов в обработках закрытия месяца и перерасчета итогов.
  • Ошибка при объединении пакетов запросов с одинаковыми именами конструкций ПОМЕСТИТЬ.

1. Причина возникновения ошибки

Ошибка возникает, когда в один и тот же объект МенеджерВременныхТаблиц повторно выполняется пакетный запрос с директивой ПОМЕСТИТЬ ВТ_ИмяТаблицы без предварительного удаления ранее созданной временной таблицы из оперативной памяти СУБД.

2. Корректное уничтожение временной таблицы в тексте запроса

Всегда явно уничтожайте временную таблицу в конце пакета запроса с помощью оператора УНИЧТОЖИТЬ (DROP):

ТекстЗапроса = "
|ВЫБРАТЬ
|   Товары.Ссылка КАК Номенклатура,
|   Товары.Количество КАК Количество
|ПОМЕСТИТЬ ВТ_ТоварыКОбработке
|ИЗ
|   Документ.РеализацияТоваровУслуг.Товары КАК Товары
|;
|////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|   ВТ.Номенклатура,
|   СУММА(ВТ.Количество) КАК ВсегоКоличество
|ИЗ
|   ВТ_ТоварыКОбработке КАК ВТ
|СГРУППИРОВАТЬ ПО
|   ВТ.Номенклатура
|;
|////////////////////////////////////////////////////////////////
|УНИЧТОЖИТЬ ВТ_ТоварыКОбработке // Явное освобождение памяти
|";

3. Программная очистка Менеджера Временных Таблиц в цикле (BSL)

МенеджерВТ = Новый МенеджерВременныхТаблиц;

Для Каждого СсылкаДокумент Из МассивДокументов Цикл
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
    Запрос.Текст = ПолучитьТекстПакетаЗапросов();
    Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаДокумент);
    
    Результат = Запрос.Выполнить();
    
    // Закрытие и очистка всех таблиц менеджера перед следующей итерацией
    МенеджерВТ.Закрыть();
    МенеджерВТ = Новый МенеджерВременныхТаблиц;
КонецЦикла;
Практический опыт инженера: Если вы разрабатываете отчет в СКД (Системе Компоновки Данных) с несколькими наборами данных, никогда не используйте одинаковые имена временных таблиц в разных наборах, так как СКД инициализирует единый скрытый МенеджерВТ.

Частые вопросы (FAQ)

Где физически хранятся временные таблицы 1С?

В клиент-серверном варианте временные таблицы (с префиксом #tt*) создаются в системной базе данных СУБД: tempdb в Microsoft SQL Server или в оперативной памяти/дисковом кэше процессов PostgreSQL.

В чем опасность забытых неуничтоженных временных таблиц?

Они удерживают память СУБД (раздувают tempdb), блокируют параллельную работу и приводят к деградации оптимизатора запросов (Query Optimizer) из-за неактуальной статистики.

Можно ли поместить результат во временную таблицу внутри вложенного запроса?

Нет. Конструкция ПОМЕСТИТЬ допускается только на верхнем уровне пакета запросов 1С и не может использоваться во вложенных подзапросах (Subqueries).

Что делает метод МенеджерВТ.Закрыть()?

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