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

A1sQ.Unload

Назначение: создать Запрос по тексту и позиционным параметрам и сразу вернуть ТаблицаЗначений (полная выгрузка результата).
Экономит: вместо 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
|   Ссылка, Наименование, Код
|ИЗ Справочник.Номенклатура
|ГДЕ Наименование ПОДОБНО &Текст
|УПОРЯДОЧИТЬ ПО Наименование", "%кабель%");

Сравнение с соседями

ФункцияЧто делаетКогда выбирать
UnloadBuildQ + Execute.Unload → ТаблицаЗначенийНужен весь результат в памяти
ExecuteQBuildQ + Execute.Select → ВыборкаБольшие объёмы, потоковая обработка
UnloadByQTQT + BuildQ + Try/ExceptХотите SELECT‑FROM‑WHERE и безопасный возврат
ValueQВозвращает первую ячейкуНужен скаляр без лишней перегонки
ExistsQОптимизированная проверка существованияНужен Boolean

Нюансы и ограничения

✅ Позиционная подстановка до 8 параметров (как в BuildQ)
✅ Возвращает ТаблицаЗначений с именованными колонками
❗ Не ловит исключения — SQL/типовые ошибки всплывут вызывающему коду
❗ Нет TempTablesManager в сигнатуре — для ВТ выполните вручную через CreateQ/CreateQEnhanced
❗ Помните про память: УПОРЯДОЧИТЬ, ПЕРВЫЕ N, фильтры — ваши друзья
  • BuildQ — позиционная установка параметров.
  • UnloadByQT — собрать QT и безопасно выгрузить.
  • ExecuteQ — курсор для потоковой обработки.
  • ValueQ / FirstRowQ / ExistsQ — быстрые кейсы.