A1sQ.Unload
Назначение: создать Запрос по тексту и позиционным параметрам и сразу вернуть ТаблицаЗначений (полная выгрузка результата).
Экономит: вместо BuildQ(...).Выполнить().Выгрузить() — один вызов.
Экономит: вместо BuildQ(...).Выполнить().Выгрузить() — один вызов.
Сигнатура
Function Unload(
QueryText,
Value1 = Undefined, Value2 = Undefined, Value3 = Undefined, Value4 = Undefined,
Value5 = Undefined, Value6 = Undefined, Value7 = Undefined, Value8 = Undefined
) Export
Как работает
// По коду A1sQ
Функция Unload(Текст, V1..V8) Экспорт
Query = BuildQ(Текст, V1, V2, V3, V4, V5, V6, V7, V8); // создать Запрос и позиционно установить параметры
Возврат Query.Выполнить().Выгрузить(); // ТаблицаЗначений
КонецФункции
Внимание по производительности: Выгрузка считывает все строки в память. Для больших наборов данных лучше использовать ExecuteQ (курсор) или ограничивать результат через ПЕРВЫЕ N и фильтры.
Параметры
- QueryText — текст запроса 1С.
- Value1..Value8 — значения для первых восьми уникальных параметров по порядку их появления в тексте (BuildQ).
Возвращает
ТаблицаЗначений — полностью загруженные данные. Имена колонок соответствуют именам/алиасам из SELECT.
Примеры
1) Простой селект
ТЗ = A1sQ.Unload("ВЫБРАТЬ 2+2 КАК S"); // Таблица c одной строкой: S = 4
2) С параметрами (позиционно)
ТЗ = A1sQ.Unload("
|ВЫБРАТЬ Ссылка, Наименование
|ИЗ Справочник.Номенклатура
|ГДЕ Родитель = &P И НЕ ПометкаУдаления", Родитель);
3) Первая ячейка — используйте ValueQ
// Чтобы не тянуть всю таблицу ради одной ячейки
Имя = A1sQ.ValueQ("ВЫБРАТЬ Наименование ИЗ Справочник.Пользователи ГДЕ Ссылка = &ID", "Не найдено", ПользовательID);
4) Минимизируйте объём данных
ТЗ = A1sQ.Unload("
|ВЫБРАТЬ ПЕРВЫЕ 100
| Ссылка, Наименование, Код
|ИЗ Справочник.Номенклатура
|ГДЕ Наименование ПОДОБНО &Текст
|УПОРЯДОЧИТЬ ПО Наименование", "%кабель%");
Сравнение с соседями
| Функция | Что делает | Когда выбирать |
|---|---|---|
| Unload | BuildQ + Execute.Unload → ТаблицаЗначений | Нужен весь результат в памяти |
| ExecuteQ | BuildQ + Execute.Select → Выборка | Большие объёмы, потоковая обработка |
| UnloadByQT | QT + BuildQ + Try/Except | Хотите SELECT‑FROM‑WHERE и безопасный возврат |
| ValueQ | Возвращает первую ячейку | Нужен скаляр без лишней перегонки |
| ExistsQ | Оптимизированная проверка существования | Нужен Boolean |
Нюансы и ограничения
✅ Позиционная подстановка до 8 параметров (как в BuildQ)
✅ Возвращает ТаблицаЗначений с именованными колонками
❗ Не ловит исключения — SQL/типовые ошибки всплывут вызывающему коду
❗ Нет TempTablesManager в сигнатуре — для ВТ выполните вручную через CreateQ/CreateQEnhanced
❗ Помните про память: УПОРЯДОЧИТЬ, ПЕРВЫЕ N, фильтры — ваши друзья