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

A1sQ.UnloadColumn

Назначение: выполнить запрос и получить Массив значений одной колонки по имени.
Экономит: вместо Unload(...).ВыгрузитьКолонку("Имя") — один вызов.

Сигнатура

Function UnloadColumn(
    QueryText,
    ColumnName,
    Value1 = Undefined, Value2 = Undefined, Value3 = Undefined, Value4 = Undefined,
    Value5 = Undefined, Value6 = Undefined, Value7 = Undefined, Value8 = Undefined
) Export

Как работает

// По коду A1sQ
Функция UnloadColumn(Текст, ColumnName, V1..V8) Экспорт
    ТЗ = Unload(Текст, V1, V2, V3, V4, V5, V6, V7, V8);
    Возврат ТЗ.ВыгрузитьКолонку(ColumnName); // Массив
КонецФункции
Исключения не перехватываются: если колонки с именем ColumnName нет в результате, платформа бросит ошибку «колонка не найдена». Используйте корректные имена или проверяйте заранее состав колонок.

Параметры

  • QueryText — текст запроса 1С.
  • ColumnName — имя колонки в результате (учитывает алиасы в SELECT).
  • Value1..Value8 — значения для первых уникальных параметров (позиционно, как в BuildQ).

Возвращает

Массив — значения указанной колонки, в порядке строк результата. Если строк нет — пустой массив.

Примеры

1) Список ссылок пользователей

IDList = A1sQ.UnloadColumn("
|ВЫБРАТЬ Ссылка КАК ID
|ИЗ Справочник.Пользователи
|ГДЕ НЕ Заблокирован", "ID");

2) Параметры периода

Документы = A1sQ.UnloadColumn("
|ВЫБРАТЬ Ссылка
|ИЗ Документ.ПоступлениеТоваровУслуг
|ГДЕ Дата МЕЖДУ &D1 И &D2", "Ссылка",
    НачалоПериода, КонецПериода);

3) Только уникальные значения — делайте это в запросе

// Идеально — сразу в запросе, чтобы не фильтровать массив вручную
Коды = A1sQ.UnloadColumn("
|ВЫБРАТЬ
|   РАЗЛИЧНЫЕ Код
|ИЗ Справочник.Номенклатура", "Код");

4) Отфильтровать пустые значения после выгрузки

Значения = A1sQ.UnloadColumn("ВЫБРАТЬ Наименование ИЗ Справочник.Номенклатура", "Наименование");
Непустые = Новый Массив;
Для Каждого V Из Значения Цикл
    Если ЗначениеЗаполнено(V) Тогда Непустые.Добавить(V); КонецЕсли;
КонецЦикла;

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

✅ Быстрый способ получить список значений из результата
✅ Учитывает алиасы — можно выбирать "Колонка КАК Имя" и использовать Имя
❗ Полная выгрузка (через Unload) → держите в уме расход памяти
❗ Ошибки не ловятся (нет Try/Except) — используйте корректное имя колонки
❗ Для уникальности/сортировки/фильтрации лучше использовать SQL: РАЗЛИЧНЫЕ, СГРУППИРОВАТЬ, УПОРЯДОЧИТЬ
  • Unload — вернуть всю таблицу.
  • ExecuteQ — курсор, если не нужна полная выгрузка.
  • ValueQ — если нужна первая ячейка.