🚀 Руководство разработчика A1sCode
Полное руководство по модулям A1sAR (массивы), A1sDS (структуры) и A1sVT (таблицы значений)
📚 Содержание
Создание, модификация, поиск
Работа с данными, преобразования
Функциональная работа с ТЗ
📦 Модуль A1sAR Массивы
Утилиты для работы с массивами в функциональном стиле
Создание массивов
Of()
Создание из элементов (до 40)
OfN()
Массив размера N с одинаковыми значениями
// Создание массива из элементов
Цвета = A1sAR.Of("красный", "зеленый", "синий");
// Создание массива из 5 нулей
Нули = A1sAR.OfN(5, 0);
// Результат: [0, 0, 0, 0, 0]
// Создание массива строк
Заголовки = A1sAR.OfN(3, "test");
// Результат: ["test", "test", "test"]
Модификация массивов
Fill()
Заполнение массива значением
AddIf()
Добавление по условию
Insert()
Вставка по индексу
RemoveAt()
Удаление по индексу
// Заполнение массива
Массив = Новый Массив();
Массив.Добавить(1);
Массив.Добавить(2);
A1sAR.Fill(Массив, "новое");
// Результат: ["новое", "новое"]
// Добавление по условию
Результат = Новый Массив();
A1sAR.AddIf(Результат, "admin", ЕстьПрава, "guest");
// Вставка элемента
Числа = A1sAR.Of(1, 2, 4);
Числа = A1sAR.Insert(Числа, 2, 3);
// Результат: [1, 2, 3, 4]
Объединение и операции над множествами
Concatenate()
Объединение до 8 массивов
Union()
Объединение без дубликатов
Intersection()
Пересечение массивов
Difference()
Разность массивов
// Объединение массивов
М1 = A1sAR.Of(1, 2, 3);
М2 = A1sAR.Of(3, 4, 5);
Все = A1sAR.Concatenate(М1, М2);
// Результат: [1, 2, 3, 3, 4, 5]
УникальныеВсе = A1sAR.Union(М1, М2);
// Результат: [1, 2, 3, 4, 5]
Общие = A1sAR.Intersection(М1, М2);
// Результат: [3]
Только1 = A1sAR.Difference(М1, М2);
// Результат: [1, 2]
Поиск и проверки
Contains()
Проверка наличия элемента
IndexOf()
Поиск индекса элемента
IsEmpty()
Проверка на пустоту
// Проверка наличия
Числа = A1sAR.Of(1, 2, 3);
Есть = A1sAR.Contains(Числа, 2); // Истина
// Поиск индекса
Индекс = A1sAR.IndexOf(Числа, 3); // 2
// Проверка на пустоту
Пустой = A1sAR.IsEmpty(Новый Массив()); // Истина
🗂️ Модуль A1sDS Структуры
Утилиты для работы со структурами и соответствиями
Создание структур
Of()
Создание из пар ключ-значение (до 20 пар)
FromKeys()
Создание из массива ключей
// Создание структуры
Пользователь = A1sDS.Of(
"имя", "Иван",
"возраст", 30,
"email", "ivan@example.com"
);
// Из массива ключей
Ключи = A1sAR.Of("код", "наименование", "цена");
Товар = A1sDS.FromKeys(Ключи, Неопределено);
Работа со структурами
Get()
Безопасное получение значения
HasKey()
Проверка наличия ключа
Keys()
Получение массива ключей
Values()
Получение массива значений
// Безопасное получение
Данные = A1sDS.Of("имя", "Иван");
Имя = A1sDS.Get(Данные, "имя", "Неизвестно"); // "Иван"
Возраст = A1sDS.Get(Данные, "возраст", 0); // 0
// Проверка ключа
Если A1sDS.HasKey(Данные, "email") Тогда
// обработка
КонецЕсли;
// Получение ключей и значений
Ключи = A1sDS.Keys(Данные); // ["имя"]
Значения = A1sDS.Values(Данные); // ["Иван"]
Преобразования
Merge()
Объединение структур
Pick()
Выбор указанных ключей
Omit()
Исключение указанных ключей
// Объединение
Основные = A1sDS.Of("имя", "Иван", "возраст", 30);
Дополнительные = A1sDS.Of("email", "ivan@example.com");
Полные = A1sDS.Merge(Основные, Дополнительные);
// Выбор ключей
Только Имя = A1sDS.Pick(Полные, A1sAR.Of("имя", "email"));
// Исключение ключей
БезВозраста = A1sDS.Omit(Полные, A1sAR.Of("возраст"));
📊 Модуль A1sVT Таблицы значений
Функциональная работа с таблицами значений — сокращение кода до 95%
Создание таблиц
Of()
Создание с колонками и данными
WithColumns()
Создание только с колонками
// Создание таблицы с данными
Таблица = A1sVT.Of("Код,Наименование",
A1sAR.Of(
A1sDS.Of("Код", "001", "Наименование", "Товар 1"),
A1sDS.Of("Код", "002", "Наименование", "Товар 2")
)
);
// Только колонки
Пустая = A1sVT.WithColumns("Код,Наименование,Цена");
Поиск и фильтрация
FindRow()
Поиск строки по условию
Filter()
Фильтрация строк
// Поиск строки
Строка = A1sVT.FindRow(Таблица, A1sDS.Of("Код", "001"));
// Фильтрация
Активные = A1sVT.Filter(Таблица, A1sDS.Of("Активен", Истина));
Преобразования
ToArray()
Преобразование в массив
Column()
Получение колонки как массива
GroupBy()
Группировка данных
Sort()
Сортировка таблицы
// Преобразование в массив структур
МассивДанных = A1sVT.ToArray(Таблица);
// Получение колонки
Коды = A1sVT.Column(Таблица, "Код");
// Результат: ["001", "002"]
// Группировка
Сгруппированные = A1sVT.GroupBy(Таблица, "Категория");
// Сортировка
Отсортированные = A1sVT.Sort(Таблица, "Наименование");
Пример: было → стало
🦊 Типовой код (8 строк)
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Код",
Новый ОписаниеТипов("Строка"));
Таблица.Колонки.Добавить("Наименование",
Новый ОписаниеТипов("Строка"));
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Код = "001";
НоваяСтрока.Наименование = "Товар 1";
🐱 A1sVT (1 строка)
Таблица = A1sVT.Of("Код,Наименование",
A1sAR.Of(
A1sDS.Of("Код", "001",
"Наименование", "Товар 1")
)
);
✨ Лучшие практики
1. Используйте функциональный стиль
❌ Плохо (императивный)
Результат = Новый Массив();
Для Каждого Элемент Из Исходный Цикл
Если Элемент > 10 Тогда
Результат.Добавить(Элемент);
КонецЕсли;
КонецЦикла;
✅ Хорошо (функциональный)
Результат = A1sAR.Filter(
Исходный,
Функция(Эл) Возврат Эл > 10 КонецФункции
);
2. Цепочки преобразований
// Получаем активных клиентов с email
АктивныеEmail = A1sVT.Column(
A1sVT.Filter(Клиенты, A1sDS.Of("Активен", Истина)),
"Email"
);
// Группируем товары по категориям и сортируем
СгруппированныеТовары = A1sVT.Sort(
A1sVT.GroupBy(Товары, "Категория"),
"Категория"
);
3. Безопасная работа со структурами
❌ Плохо (может упасть)
Значение = Данные.Ключ;
// Ошибка если ключа нет
✅ Хорошо (безопасно)
Значение = A1sDS.Get(
Данные,
"Ключ",
"Значение по умолчанию"
);