A1sQ.UnloadBatch
Назначение: выполнить пакет операторов языка запросов 1С и получить массив ТаблицаЗначений (по одной на каждую выборку из пакета).
Отличие от ExecuteBatch: сразу выгружает курсоры в память — удобно для последующей офлайн‑обработки/серилизации.
Отличие от ExecuteBatch: сразу выгружает курсоры в память — удобно для последующей офлайн‑обработки/серилизации.
Сигнатура
Function UnloadBatch(QueryText, TempManager = Undefined, Params = Неопределено) Export
Как работает (по исходному коду)
// 1) Выполняем пакет и получаем массив выборок
BatchResult = A1sQ.ExecuteBatch(QueryText, TempManager, Params);
// 2) Выгружаем каждую выборку в ТаблицаЗначений
ValueTables = Новый Массив;
Для Каждого Sel Из BatchResult Цикл
Если ЗначениеЗаполнено(Sel) Тогда
ValueTables.Добавить(Sel.Выгрузить());
КонецЕсли;
КонецЦикла;
Возврат ValueTables;
Параметры
- QueryText — пакетный текст (операторы через ;). Возвращаемые выборки будут выгружены в массив таблиц.
- TempManager — TempTablesManager. Если не передать, внутри 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)
Связанные функции
- ExecuteBatch — курсоры вместо таблиц.
- CreateQWithTemps — запрос в контексте TempTablesManager.
- DestroyAllTemps / ResetTempManager — уборка ВТ.