A1sQ.ExecuteByQT
Назначение: собрать текст запроса (SELECT‑FROM‑WHERE) и безопасно вернуть ВыборкаИзРезультатаЗапроса (курсор).
Фишка: ошибки обрабатываются в Попытка/Исключение; при сбое функция возвращает Неопределено и пишет в лог.
Фишка: ошибки обрабатываются в Попытка/Исключение; при сбое функция возвращает Неопределено и пишет в лог.
Сигнатура
Function ExecuteByQT(
Fields,
FromWhere,
Condition = "",
Value1 = Undefined, Value2 = Undefined, Value3 = Undefined, Value4 = Undefined,
Value5 = Undefined, Value6 = Undefined, Value7 = Undefined, Value8 = Undefined
) Export
Как работает
// По исходному коду A1sQ
Функция ExecuteByQT(Fields, FromWhere, Condition = "", V1..V8) Экспорт
Попытка
Query = BuildByQT(Fields, FromWhere, Condition, V1, V2, V3, V4, V5, V6, V7, V8);
Возврат Query.Выполнить().Выбрать();
Исключение
A1sS.Print("ExecuteByQT error: " + ОписаниеОшибки(), "Ошибка", ":");
Возврат Неопределено;
КонецПопытки;
КонецФункции
Разница с ExecuteQ: здесь вы передаёте не весь текст, а раздельно Fields / FromWhere / Condition. Сборку и позиционную подстановку параметров делает BuildByQT.
Параметры
- Fields — список выбираемых полей (строка).
- FromWhere — источник данных: таблица/регистр/подзапрос + псевдонимы (строка).
- Condition — условие отбора (строка, опционально). Пустая строка — без WHERE.
- Value1..Value8 — значения для первых уникальных параметров по порядку появления в собранном тексте (позиционно, как в BuildQ).
Возвращает
ВыборкаИзРезультатаЗапроса — курсор, либо Неопределено при ошибке.
Примеры
1) Классический селект
S = A1sQ.ExecuteByQT(
"Ссылка, Наименование",
"Справочник.Номенклатура КАК Ном",
"НЕ Ном.ПометкаУдаления"
);
Пока S <> Неопределено И S.Следующий() Цикл
Сообщить(S.Наименование);
КонецЦикла;
2) С параметрами периода и организации
S = A1sQ.ExecuteByQT(
"Ссылка, Дата, Номер",
"Документ.ПоступлениеТоваровУслуг",
"Дата МЕЖДУ &D1 И &D2 И Организация = &Орг",
НачалоПериода, КонецПериода, ТекОрганизация
);
3) Получить только первую строку — FirstRowQ
Row = A1sQ.FirstRowQ("
|ВЫБРАТЬ ПЕРВЫЕ 1 Ссылка, Номер, Дата
|ИЗ Документ.РеализацияТоваровУслуг
|ГДЕ Организация = &Орг
|УПОРЯДОЧИТЬ ПО Дата УБЫВ", ТекОрг);
Сравнение
| Функция | Что делает | Когда выбрать |
|---|---|---|
| ExecuteByQT | QT + BuildByQT + Select + Try/Except | Нужен безопасный курсор и удобный конструктор |
| ExecuteQ | BuildQ + Select (без Try/Except) | Есть готовый текст и вы сами ловите ошибки |
| UnloadByQT | QT + BuildQ + Unload + Try/Except | Нужна ТаблицаЗначений с защитой от ошибок |
| Unload | BuildQ + Unload (без Try/Except) | Готовый текст, полная выгрузка |
Нюансы и ограничения
✅ Удобное разделение полей/источника/условий
✅ Безопасно: ошибки логируются и возвращается Неопределено
✅ Позиционная подстановка до 8 значений
❗ При Неопределено проверяйте результат перед использованием
❗ Порядок Value1..Value8 должен соответствовать порядку появления уникальных &Парам
❗ Нет TempTablesManager в сигнатуре — для ВТ используйте CreateQ/CreateQEnhanced вручную
Связанные функции
- BuildByQT — собрать Query через QT и позиционно проставить параметры.
- UnloadByQT — аналог, но с полной выгрузкой.
- FirstRowQ / ValueQ / ExistsQ — быстрые кейсы.