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 — быстрая установка параметров.