📦 Core Module v1.2

A1sVT — Таблицы значений

Умное управление данными. Автоопределение типов, Fluent пайплайны, группировка, пагинация и эффективная фильтрация.

35+
Методов
2
Зависимостей
100%
Fluent
0
SQL
🚀 Быстрый старт

Два подхода

A1sVT поддерживает как статические утилиты для быстрых операций, так и мощный Fluent интерфейс для обработки данных.

FluentPipeline.bsl
// ✨ Fluent API — построение пайплайна данных

// Аналитический отчёт: Топ-5 товаров по продажам
Топ5 = A1sVT.On(ВсеПродажи)
    .Filter(A1sDS.Of("Активен", Истина))  // Фильтр
    .GroupBy("Товар", "Количество,Сумма")   // Группировка
    .Sort("Сумма Убыв")                     // Сортировка
    .Take(5)                                // Пагинация
    .Value();                                   // ↩ ТаблицаЗначений

// Пагинация страницы данных
Страница = A1sVT.On(БольшаяТаблица)
    .Skip((НомерСтраницы - 1) * РазмерСтраницы)
    .Take(РазмерСтраницы)
    .Value();
StaticAPI.bsl
// 📦 Static API — Утилиты и Создание

// 1. Умное создание из массива структур (JSON -> ТЗ)
// Типы колонок определяются автоматически!
МассивДанных = Новый Массив;
МассивДанных.Добавить(Новый Структура("Имя,Возраст", "Иван", 30));

Таблица = A1sVT.OfStructArray(МассивДанных);

// 2. Создание вручную (если нужно жестко задать типы)
Таблица = A1sVT.Of("Код:Строка, Наименование:Строка, Цена:Число");

// 3. Группировка (Static)
Итоги = A1sVT.GroupBy(
    Продажи, 
    "Товар",   // Поля группировки
    "Количество,Сумма" // Поля суммирования
);
Задача ❌ Было (Классика) ✅ Стало (A1sVT)
Создание из JSON // Цикл разбора массива структур
// Проверка типа
// НоваяТЗ.Колонки.Добавить()
// Для Каждого Стр Из Массив Цикл
// НоваяТЗ.Добавить(Стр.Имя, Стр.Возраст);
Таблица = A1sVT.OfStructArray(Массив);
// Типы определены автоматически
Пагинация // Сложная математика индексов
// Копирование строки за строкой
Страница = A1sVT.Page(Таблица, Номер, Размер);
Группировка // Нужно писать СКД запрос A1sVT.GroupBy(Таблица, "Категория", "Сумма");
✨ Возможности

Почему A1sVT?

🧠

Smart Create (OfStructArray)

Анализирует первую структуру и автоматически создает колонки с правильными типами. Проверяет отрицательные числа.

📊

GroupBy (Агрегация)

Группировка по полям с суммированием других. Идеально для построения отчетов без СКД.

High Performance

Фильтрация и поиск работают на встроенных механизмах платформы, оптимизированных для ТЗ.

🔀

Pagination (Page)

Удобный метод пагинации. `Page(VT, PageNum, PageSize)` возвращает готовую страницу данных.

📝

Column Ops

Управление колонками: `KeepColumns` (оставить только нужные), `AddColumn`, `RemoveColumn`.

⚙️

Batch Updates

Метод `UpdateRows` позволяет обновить множество строк одним вызовом по условию.

🧠 Deep Dive

OfStructArray & Pagination

Разбор ключевых особенностей работы с таблицами.

SmartCreate.bsl
// ══════════════════════════════════════════════════════════════════════════
// СЦЕНАРИЙ 1: Умное создание (OfStructArray)
// ══════════════════════════════════════════════════════════════════════════

// Допустим, данные пришли из JSON или внешнего API
// Это массив структур, где ключи — имена колонок
ДанныеИзJSON = Новый Массив;
ДанныеИзJSON.Добавить(Новый Структура("id", 1, "name", "Товар1", "price", 500));
ДанныеИзJSON.Добавить(Новый Структура("id", 2, "name", "Товар2", "price", 1000));

// ✅ A1sVT сама создаст ТЗ с колонками: id (Число), name (Строка), price (Число)
Таблица = A1sVT.OfStructArray(ДанныеИзJSON);

// Если встретится отрицательное число в числовой колонке — тип автоматически станет Число, Разрядность 10.0 (с дробной частью).
Pagination.bsl
// ══════════════════════════════════════════════════════════════════════════
// СЦЕНАРИЙ 2: Пагинация (Page)
// ══════════════════════════════════════════════════════════════════════════

// Статический метод (удобно использовать параметры формы)
СтраницаДанных = A1sVT.Page(
    ИсходнаяТаблица, 
    НомерСтраницы,   // (например, 1)
    РазмерСтраницы   // (например, 20)
);

// Метод Page автоматически:
// 1. Пропускает (N-1)*PageSize строк
// 2. Выгружает PageSize строк в новую ТЗ
// 3. Если N некорректен — вернет пустую ТЗ

// Возвращаемая структура {Result, Total, Page, Size} доступна в расширенной версии (через A1sDP_VT)
🔗 Fluent API

A1sDP_VT — Методы цепочек

Точка входа: A1sVT.On()

🔧 Трансформаторы (возвращают ЭтотОбъект)

Метод Описание
.AddRow(Стр) Добавить строку (структура или массив).
.AddRows(МассивСтрок) Добавить несколько строк.
.Filter(Фильтр) Фильтрация (структура условий или строка).
.FindRows(Фильтр) Найти строки (внутренний контекст).
.Sort(Колонки) Сортировка (например, "Цена Убыв, Код Убыв").
.GroupBy(Группы, Суммы) Группировка с суммированием.
.UpdateRows(Фильтр, НовыеЗначения) Обновить строки по условию.
.DeleteRows(Фильтр) Удалить строки по условию.
.Take(N) / Skip(N) Окно данных (пагинация).
.AddColumn(Имя, Тип) Добавить колонку.
.KeepColumns(Строка) Оставить только указанные колонки ("A,B,C").
.Union(Исход) Добавить строки из другой ТЗ.

✅ Терминаторы (возвращают результат)

Метод Возвращает Описание
.Value() ValueTable Результирующая ТЗ.
.Copy(Колонки) ValueTable Копия ТЗ (опционально только указанные колонки).
.ToArray(Колонки) Array Массив структур (или массив значений одной колонки).
.Column(Имя) Array Массив значений колонки.
.FindRow(Фильтр) Structure Первая строка или Неопределено.
.First() / .Last() Structure Первая / последняя строка.
.Count() Number Количество строк.
.Total(Колонка) Number Сумма значений в колонке.
.Avg(Колонка) Number Среднее значение в колонке.
.IsEmpty() Boolean Проверка на пустоту.
📦 Static API

A1sVT — Статические функции

🔹 Создание

Функция Описание
.Of(Колонки, Строки) Создает ТЗ из строки имен колонок и массива строк.
.OfColumns(Колонки) Пустая ТЗ с указанными колонками.
.OfStructArray(Массив) Умное создание из массива структур (автотипы).

🔹 Манипуляция данными

Функция Описание
.AddRow(VT, Строка) Добавляет строку в ТЗ.
.AddRows(VT, МассивСтрок) Добавляет массив строк.
.FindRow(VT, Фильтр) Находит первую строку по условию.
.Filter(VT, Фильтр) Фильтрует ТЗ, возвращает новую ТЗ.
.Sort(VT, Колонки) Сортирует ТЗ (по возрастанию по умолчанию).
.DeleteRows(VT, Фильтр) Удаляет строки по условию.
.Clear(VT) Удаляет все строки.
.Union(Target, Sources) Добавляет строки из других ТЗ в целевую.

🔹 Агрегация и Пагинация

Функция Описание
.GroupBy(VT, Группы, Суммы) Группировка с суммированием полей.
.Total(VT, Колонка) Сумма колонки.
.Avg(VT, Колонка) Среднее значение.
.Minimum/Maximum(VT, Колонка) Мин/Макс.
.Page(VT, PageNum, PageSize) Возвращает страницу данных.
.First(VT) / .Last(VT) Первая / последняя строка.
.Take(VT, N) Первые N строк.
.Skip(VT, N) Пропустить N строк.

🔹 Конвертация

Функция Описание
.ToArray(VT, Колонки) Массив структур (или массив значений, если указана одна колонка).
.Column(VT, Колонка) Массив значений колонки.
.Copy(VT, Колонки) Копия таблицы.