Умное управление данными. Автоопределение типов, Fluent пайплайны, группировка, пагинация и эффективная фильтрация.
A1sVT поддерживает как статические утилиты для быстрых операций, так и мощный Fluent интерфейс для обработки данных.
// ✨ Fluent API — построение пайплайна данных // Аналитический отчёт: Топ-5 товаров по продажам Топ5 = A1sVT.On(ВсеПродажи) .Filter(A1sDS.Of("Активен", Истина)) // Фильтр .GroupBy("Товар", "Количество,Сумма") // Группировка .Sort("Сумма Убыв") // Сортировка .Take(5) // Пагинация .Value(); // ↩ ТаблицаЗначений // Пагинация страницы данных Страница = A1sVT.On(БольшаяТаблица) .Skip((НомерСтраницы - 1) * РазмерСтраницы) .Take(РазмерСтраницы) .Value();
// 📦 Static API — Утилиты и Создание // 1. Умное создание из массива структур (JSON -> ТЗ) // Типы колонок определяются автоматически! МассивДанных = Новый Массив; МассивДанных.Добавить(Новый Структура("Имя,Возраст", "Иван", 30)); Таблица = A1sVT.OfStructArray(МассивДанных); // 2. Создание вручную (если нужно жестко задать типы) Таблица = A1sVT.Of("Код:Строка, Наименование:Строка, Цена:Число"); // 3. Группировка (Static) Итоги = A1sVT.GroupBy( Продажи, "Товар", // Поля группировки "Количество,Сумма" // Поля суммирования );
| Задача | ❌ Было (Классика) | ✅ Стало (A1sVT) |
|---|---|---|
| Создание из JSON |
// Цикл разбора массива структур
|
Таблица = A1sVT.OfStructArray(Массив);
|
| Пагинация |
// Сложная математика индексов
|
Страница = A1sVT.Page(Таблица, Номер, Размер);
|
| Группировка | // Нужно писать СКД запрос
|
A1sVT.GroupBy(Таблица, "Категория", "Сумма");
|
Анализирует первую структуру и автоматически создает колонки с правильными типами. Проверяет отрицательные числа.
Группировка по полям с суммированием других. Идеально для построения отчетов без СКД.
Фильтрация и поиск работают на встроенных механизмах платформы, оптимизированных для ТЗ.
Удобный метод пагинации. `Page(VT, PageNum, PageSize)` возвращает готовую страницу данных.
Управление колонками: `KeepColumns` (оставить только нужные), `AddColumn`, `RemoveColumn`.
Метод `UpdateRows` позволяет обновить множество строк одним вызовом по условию.
Разбор ключевых особенностей работы с таблицами.
// ══════════════════════════════════════════════════════════════════════════ // СЦЕНАРИЙ 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 (с дробной частью).
// ══════════════════════════════════════════════════════════════════════════ // СЦЕНАРИЙ 2: Пагинация (Page) // ══════════════════════════════════════════════════════════════════════════ // Статический метод (удобно использовать параметры формы) СтраницаДанных = A1sVT.Page( ИсходнаяТаблица, НомерСтраницы, // (например, 1) РазмерСтраницы // (например, 20) ); // Метод Page автоматически: // 1. Пропускает (N-1)*PageSize строк // 2. Выгружает PageSize строк в новую ТЗ // 3. Если N некорректен — вернет пустую ТЗ // Возвращаемая структура {Result, Total, Page, Size} доступна в расширенной версии (через 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 | Проверка на пустоту. |
| Функция | Описание |
|---|---|
.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, Колонки) |
Копия таблицы. |