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

A1sQ.UnloadBatch

Назначение: выполнить пакет операторов языка запросов 1С и получить массив ТаблицаЗначений (по одной на каждую выборку из пакета).
Отличие от ExecuteBatch: сразу выгружает курсоры в память — удобно для последующей офлайн‑обработки/серилизации.

Сигнатура

Function UnloadBatch(QueryText, TempManager = Undefined, Params = Неопределено) Export

Как работает (по исходному коду)

// 1) Выполняем пакет и получаем массив выборок
BatchResult = A1sQ.ExecuteBatch(QueryText, TempManager, Params);

// 2) Выгружаем каждую выборку в ТаблицаЗначений
ValueTables = Новый Массив;
Для Каждого Sel Из BatchResult Цикл
    Если ЗначениеЗаполнено(Sel) Тогда
        ValueTables.Добавить(Sel.Выгрузить());
    КонецЕсли;
КонецЦикла;

Возврат ValueTables;

Параметры

  • QueryText — пакетный текст (операторы через ;). Возвращаемые выборки будут выгружены в массив таблиц.
  • TempManagerTempTablesManager. Если не передать, внутри ExecuteBatch создаст новый автоматически.
  • ParamsСтруктура именованных параметров для запроса (передаются в SetQParams).

Возвращает

Массив элементов типа ТаблицаЗначений в том же порядке, что и соответствующие операторы, вернувшие выборку.

Примеры

1) Снимок нескольких шагов расчёта

QT = "
|ПОМЕСТИТЬ ВТ_A КАК ВЫБРАТЬ ...;
|ПОМЕСТИТЬ ВТ_B КАК ВЫБРАТЬ ... ИЗ ВТ_A;
|ВЫБРАТЬ ... ИЗ ВТ_B;";
Tables = A1sQ.UnloadBatch(QT);
Итог = Tables[Tables.Количество()-1]; // последняя таблица из последнего SELECT

2) С параметрами и повторным менеджером ВТ

TM = Новый TempTablesManager;
QT = "... &D1 ... &D2 ...; ВЫБРАТЬ ...";
Params = Новый Структура("D1, D2", Начало, Конец);
Tables = A1sQ.UnloadBatch(QT, TM, Params);
// ...
A1sQ.DestroyAllTemps(TM); TM = Неопределено;

3) Сохранить все результаты в файлы CSV

Tables = A1sQ.UnloadBatch(QT);
Для Ном=0 По Tables.Количество()-1 Цикл
    A1sS.SaveVTAsCSV("c:\tmp\batch_"+Строка(Ном)+".csv", Tables[Ном]);
КонецЦикла;

Сравнение

ФункцияЧто возвращаетПамятьПодходит для
ExecuteBatchМассив SelectionНизкаяПострочная/потоковая обработка
UnloadBatchМассив ТаблицаЗначенийВышеАналитика, экспорт, офлайн‑обработка

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

✅ Удобно получать все промежуточные результаты пакета «в память»
✅ Параметры передаются именованно через Структура
❗ Исключения не перехватываются — оборачивайте в Попытка/Исключение при необходимости
❗ Память: большие выборки → большие ТаблицаЗначений
❗ Порядок элементов соответствует порядку операторов, вернувших данные
❗ Жизненный цикл временных таблиц — на вашей стороне (DestroyAllTemps/Reset)