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