A1sCode библиотека 1С

A1sQ.DestroyAllTemps

Назначение: гарантированно уничтожить все временные таблицы, зарегистрированные в переданном TempTablesManager.
Как делает: формирует список имён и выполняет пакет УНИЧТОЖИТЬ name1, name2, …;

Сигнатура

Function DestroyAllTemps(TempManager) Export

Как работает (по исходному коду)

Если ТипЗнч(TempManager) <> Тип("TempTablesManager") Тогда
    Возврат Ложь;
КонецЕсли;

// Собираем все имена ВТ через запятую
Список = "";
Для Каждого ИмяТаблицы Из TempManager.TemporaryTables Цикл
    Если Список = "" Тогда
        Список = ИмяТаблицы;
    Иначе
        Список = Список + ", " + ИмяТаблицы;
    КонецЕсли;
КонецЦикла;

Если Список = "" Тогда
    Возврат Ложь; // нечего уничтожать
КонецЕсли;

// Уничтожаем все за один пакет
Текст   = "УНИЧТОЖИТЬ " + Список + ";";
Запрос  = A1sQ.CreateQWithTemps(Текст, TempManager);
Запрос.ВыполнитьПакет();
Возврат Истина;
Важно: функция не ловит исключения. Если ВыполнитьПакет() вернёт ошибку, она всплывёт вызывающему коду. Вызывайте из Попытка/Исключение, если нужна «тихая» очистка.

Возвращает

БулевоИстина, если пакет выполнен; Ложь, если TempManager не того типа или в нём не оказалось таблиц.

Примеры

1) Очистить все ВТ после сложной процедуры

Попытка
    // ... работа с несколькими ВТ ...
Наконец
    A1sQ.DestroyAllTemps(TempManager);
КонецПопытки;

2) Безопасный сброс менеджера

Процедура ResetTempManager(Знач TempManager) Экспорт
    Если ТипЗнч(TempManager) = Тип("TempTablesManager") Тогда
        A1sQ.DestroyAllTemps(TempManager);
    КонецЕсли;
    TempManager = Неопределено;
КонецПроцедуры

3) Уничтожить одну ВТ — используйте DestroyTemp

Успех = A1sQ.DestroyTemp(TempManager, "ВТ_Ссылки");

Нюансы и ограничения

✅ Работает по всем зарегистрированным в менеджере временным таблицам
✅ Делает это одним пакетом (быстрее, чем по одной)
❗ Исключения не ловятся — оборачивайте в Попытка/Исключение при необходимости
❗ Возвращает Ложь, если менеджер — не TempTablesManager, либо нет таблиц
❗ Не удаляет «настоящие» объекты БД: только временные таблицы менеджера
  • DestroyTemp — уничтожить одну временную таблицу.
  • CreateTempTable — создать ВТ.
  • CreateQWithTemps — создать Запрос c TempTablesManager.
  • ResetTempManager — очистить и сбросить менеджер (включает DestroyAllTemps).