Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

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).

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

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

Полезные материалы
Рекомендуем