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

A1sQ.CreateAndLoad

Назначение: создать новый Запрос по QueryText и привязать к нему тот же TempTablesManager, что и у SourceQuery.
Зачем: чтобы несколько запросов работали с одними и теми же временными таблицами (ПОМЕСТИТЬ ВТ_...).
Важно: функция не копирует значения параметров — только менеджер ВТ.

Сигнатура

Function CreateAndLoad(QueryText, SourceQuery) Export

Пошаговая логика

// По исходному коду A1sQ
Функция CreateAndLoad(QueryText, SourceQuery) Экспорт
    Если SourceQuery = Неопределено ИЛИ ТипЗнч(SourceQuery) <> Тип("Запрос") Тогда
        Возврат CreateQ(QueryText);
    КонецЕсли;
    Возврат CreateQ(QueryText, SourceQuery.МенеджерВременныхТаблиц);
КонецФункции
Фоллбэк: если SourceQuery не передан или это не объект Запрос, будет вызван обычный CreateQ(QueryText) — без менеджера ВТ.

Параметры

  • QueryText — текст нового запроса.
  • SourceQueryЗапрос, от которого забираем TempTablesManager.

Возвращает

Запрос — с текстом QueryText, привязанный к тому же TempTablesManager, что и SourceQuery (если это возможно).

Примеры

1) Делиться временными таблицами между запросами

// Первый запрос создаёт ВТ
Q1 = A1sQ.CreateQWithTemps("
|ВЫБРАТЬ Ссылка КАК ID
|ИЗ Справочник.Номенклатура
|ПОМЕСТИТЬ ВТ_IDs");
Q1.Выполнить();

// Второй запрос читает из той же ВТ — менеджер перенимается у Q1
Q2 = A1sQ.CreateAndLoad("ВЫБРАТЬ * ИЗ ВТ_IDs", Q1);
ТЗ = Q2.Выполнить().Выгрузить();

2) SourceQuery не задан — обычный CreateQ

Q = A1sQ.CreateAndLoad("ВЫБРАТЬ 1"); // SourceQuery = Неопределено
ТЗ = Q.Выполнить().Выгрузить();

3) Хочется ещё и значения параметров — добавьте вручную

// CreateAndLoad НЕ копирует параметры, только TTM. Задайте параметры отдельно:
Q2 = A1sQ.CreateAndLoad("ВЫБРАТЬ * ИЗ Документ.РеализацияТоваровУслуг ГДЕ Дата МЕЖДУ &D1 И &D2", Q1);
Q2.УстановитьПараметр("D1", НачалоПериода);
Q2.УстановитьПараметр("D2", КонецПериода);

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

✅ Быстро разделяет менеджер ВТ между несколькими запросами
✅ Безопасный фоллбэк на CreateQ, если SourceQuery невалиден
❗ Не переносит значения параметров — задайте их вручную или через BuildQ/BuildQByParams/SetQParams
❗ Жизненный цикл ВТ — в пределах соединения/сессии
❗ QueryText не валидируется — ошибки всплывут на Выполнить()
  • CreateQ — базовый конструктор (можно передать TTM вручную).
  • CreateQWithTemps — создать новый Query и новый TempTablesManager.
  • CreateQEnhanced — с логированием и авто‑созданием TTM.
  • SetQParams — установить параметры из структуры ключ→значение.
  • BuildQ / BuildQByParams — быстрая установка параметров.