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

A1sQ.CreateQ

Назначение: быстро создать Запрос с опциональным текстом и, при наличии, привязать TempTablesManager.
Когда использовать: базовый «ничего лишнего» конструктор, когда не нужна авто‑валидация/автогенерация менеджера ВТ.
Поведение: текст просто присваивается; установка TempTablesManager выполняется в Попытка/Исключение и не бросает ошибку наружу.

Сигнатура

Function CreateQ(QueryText = Undefined, TempTablesManager = Undefined) Export

Как работает

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

Параметры

  • QueryText (опционально) — строка 1С‑запроса, попадает в Q.Текст.
  • TempTablesManager (опционально) — общий менеджер ВТ для разделения временных таблиц между запросами.

Возвращает

Запрос — пустой либо уже с заданным текстом и (если получилось) привязанным менеджером ВТ.

Примеры

1) Базовый случай

Q = A1sQ.CreateQ("ВЫБРАТЬ &X КАК Значение");
Q.УстановитьПараметр("X", 5);
ТЗ = Q.Выполнить().Выгрузить();

2) Совместное использование ВТ

Temps = A1sQ.GetTemps();
Q1 = A1sQ.CreateQ("ВЫБРАТЬ 1 КАК ID ПОМЕСТИТЬ ВТ_IDs", Temps);
Q1.Выполнить();

Q2 = A1sQ.CreateQ("ВЫБРАТЬ * ИЗ ВТ_IDs", Temps);
S = Q2.Выполнить().Выбрать();

3) Быстро создать новый запрос с теми же параметрами

Q1 = A1sQ.CreateQ("ВЫБРАТЬ 1 КАК X");
Q1.УстановитьПараметр("X", 10);
Q2 = A1sQ.CreateAndLoad("ВЫБРАТЬ &X КАК X", Q1); // перенесёт значения параметров
ТЗ = Q2.Выполнить().Выгрузить();

Нюансы

  • Валидации текста нет. Ошибки синтаксиса выявятся только на Выполнить(). Для предчека — CreateQSafe/Validate/IsValid.
  • Менеджер ВТ опционален. Если привязать не удалось, запрос всё равно будет создан и выполнится без ВТ.
  • Жизненный цикл ВТ. Чтобы одна ВТ была видна нескольким запросам — используйте один и тот же менеджер.

Сравнение

ФункцияКогда выбирать
CreateQМинимум действий, вы сами настраиваете параметры/валидацию.
CreateQEnhancedНужно логирование проблем с TTM и/или авто‑создание ВТ.
CreateAndLoadЕсть исходный запрос; хотите быстро перенести его параметры.
BuildQНужно сразу расставить позиционные параметры Value1..Value8.

До / После

Без A1sС A1s
Q = Новый Запрос;
Q.Текст = "ВЫБРАТЬ &X КАК Значение";
Q.УстановитьПараметр("X", 7);
Q = A1sQ.CreateQ("ВЫБРАТЬ &X КАК Значение");
Q.УстановитьПараметр("X", 7);