Пары ключ-значение? → A1sDS (структуры)
Список элементов? → A1sAR (массивы)
| Задача | Модуль | Функция |
|---|---|---|
| Создать массив | A1sAR | A1sAR.Of(val1, val2, ...) |
| Создать структуру | A1sDS | A1sDS.Of(key1, val1, key2, val2, ...) |
| Объединить массивы | A1sAR | A1sAR.Union(arr1, arr2, ...) |
| Объединить структуры | A1sDS | A1sDS.Concatenate(s1, s2, ...) |
| Найти общие элементы массивов | A1sAR | A1sAR.Intersection(arr1, arr2) |
| Найти общие ключи структур | A1sDS | A1sDS.Intersection(s1, s2) |
// До 40 элементов
Товары = A1sAR.Of("товар1", "товар2", "товар3");
// Фиксированный размер
Буфер = A1sAR.OfN(100, 0); // 100 нулей
// До 20 пар ключ-значение
Пользователь = A1sDS.Of(
"Имя", "Иван",
"Возраст", 30,
"Email", "ivan@example.com"
);
// Избыточно!
Стр = A1sDS.Struct(A1sAR.Of("key", "val"));
// ✅ Правильно:
Стр = A1sDS.Of("key", "val");
Массив1 = A1sAR.Of(1, 2, 3);
Массив2 = A1sAR.Of(2, 3, 4);
// Объединение (уникальные)
Union = A1sAR.Union(Массив1, Массив2);
// [1, 2, 3, 4]
// Пересечение (общие)
Intersection = A1sAR.Intersection(Массив1, Массив2);
// [2, 3]
// Разность (уникальные первого)
Difference = A1sAR.Difference(Массив1, Массив2);
// [1]
Стр1 = A1sDS.Of("a", 1, "b", 2);
Стр2 = A1sDS.Of("b", 3, "c", 4);
// Объединение (последнее побеждает)
Union = A1sDS.Concatenate(Стр1, Стр2);
// {a: 1, b: 3, c: 4}
// Пересечение (общие ключи)
Intersection = A1sDS.Intersection(Стр1, Стр2);
// {b: 3}
// Разность (уникальные ключи первого)
Difference = A1sDS.Difference(Стр1, Стр2);
// {a: 1}
Числа = A1sAR.Of(1, 2, 2, 3, 3, 3, 4);
// Удалить дубликаты
Уникальные = A1sAR.RemoveDuplicates(Числа);
// [1, 2, 3, 4]
// Проверка вхождения
Есть = A1sAR.Contains(Числа, 2);
// Истина
Пользователь = A1sDS.Of(
"Имя", "Иван",
"Возраст", 30,
"Пароль", "secret",
"Email", "ivan@example.com"
);
// Выбрать только нужные поля
Публичные = A1sDS.OfPick(
Пользователь,
"Имя,Возраст,Email"
);
// Исключить приватные поля
Безопасные = A1sDS.OfOmit(
Пользователь,
"Пароль"
);
// Пользовательская конфигурация
Конфиг = A1sDS.Of("host", "prod.com");
// Значения по умолчанию
Дефолты = A1sDS.Of(
"host", "localhost",
"port", 8080,
"timeout", 30
);
// Применить дефолты (пользовательские приоритетнее)
Итог = A1sDS.OfDefaults(Конфиг, Дефолты);
// {host: "prod.com", port: 8080, timeout: 30}
Настройки = Новый Структура();
// Создаст путь автоматически: ui.theme.dark
A1sDS.GetOrInsertPath(Настройки, "ui.theme.dark", Истина);
A1sDS.GetOrInsertPath(Настройки, "ui.font.size", 14);
// Настройки:
// {
// ui: {
// theme: {dark: Истина},
// font: {size: 14}
// }
// }
// Массив пользователей с приватными данными
Пользователи = Новый Массив();
Пользователи.Добавить(A1sDS.Of("Имя", "Иван", "Возраст", 30, "Пароль", "secret1"));
Пользователи.Добавить(A1sDS.Of("Имя", "Мария", "Возраст", 25, "Пароль", "secret2"));
// Убрать пароли из всех пользователей
Публичные = Новый Массив();
Для Каждого Пользователь Из Пользователи Цикл
Публичные.Добавить(A1sDS.OfOmit(Пользователь, "Пароль"));
КонецЦикла;
// Публичные:
// [
// {Имя: "Иван", Возраст: 30},
// {Имя: "Мария", Возраст: 25}
// ]
| Задача | A1sAR | A1sDS |
|---|---|---|
| Создание | Of(val, val, ...) | Of(key, val, key, val, ...) |
| Фикс. размер | OfN(10, defaultVal) | — |
| Объединение | Union(arr1, arr2, ...) | Concatenate(s1, s2, ...) |
| Пересечение | Intersection(...) | Intersection(...) |
| Разность | Difference(...) | Difference(...) |
| Проверка вхождения | Contains(arr, val) | HasKey(struct, "key") |
| Первый/последний | First(arr) / Last(arr) | — |
| Удалить дубликаты | RemoveDuplicates(arr) | — |
| Выборка полей | — | OfPick(s, "key1,key2") |
| Исключить поля | — | OfOmit(s, "key1,key2") |
| Дефолты | — | OfDefaults(s, defaults) |
| Вложенный путь | — | GetOrInsertPath(s, "a.b.c", val) |
A1sAR — для работы с массивами значений
A1sDS — для работы со структурами (пары ключ-значение)
🤝 Оба модуля работают вместе идеально!