Примеры работы с массивом

Материал содержит примеры создания и работы с массивами в 1С: создание пустого и инициализированного массива, основные операции (добавление, удаление, поиск, сортировка), многомерные массивы, фильтрация и преобразование элементов.

Создание массива

// Создание пустого массива
Массив = Новый Массив;

// Создание массива с определенным количеством элементов
Массив = Новый Массив(5); // Массив из 5 элементов

// Создание и инициализация массива
Массив = Новый Массив;
Массив.Добавить(1);
Массив.Добавить(2);
Массив.Добавить(3);

// Альтернативный способ инициализации
Массив = Новый Массив;
Массив = {1, 2, 3, 4, 5};

Основные операции с массивом

// Добавление элементов
Массив = Новый Массив;
Массив.Добавить("Элемент 1");
Массив.Добавить("Элемент 2");

// Вставка элемента по индексу
Массив.Вставить(1, "Новый элемент"); // Вставит на позицию 1

// Получение количества элементов
Количество = Массив.Количество(); // Вернет 3

// Получение элемента по индексу
Элемент = Массив[0]; // Первый элемент
Элемент = Массив.Получить(0); // Альтернативный способ

// Изменение элемента по индексу
Массив[0] = "Измененный элемент";
Массив.Установить(0, "Измененный элемент"); // Альтернативный способ

// Удаление элемента по индексу
Массив.Удалить(1); // Удалит элемент с индексом 1

// Очистка массива
Массив.Очистить();

Поиск в массиве

Массив = Новый Массив;
Массив.Добавить("Яблоко");
Массив.Добавить("Банан");
Массив.Добавить("Апельсин");

// Поиск элемента
Индекс = Массив.Найти("Банан"); // Вернет 1, если найден, иначе Неопределено

// Проверка наличия элемента
Найден = Массив.Найти("Апельсин")  Неопределено; // Вернет Истина

// Поиск по условию (в версиях 8.3.11 и выше)
Индекс = Массив.НайтиПоУсловию(Элемент => Элемент = "Банан");

Сортировка массива

Массив = {5, 3, 8, 1, 4};

// Сортировка по возрастанию
Массив.Сортировать();

// Сортировка по убыванию
Массив.Сортировать(НаправлениеСортировки.Убыв);

// Сортировка строк
МассивСтрок = {"Яблоко", "Банан", "Апельсин"};
МассивСтрок.Сортировать();

Многомерные массивы

// Создание двумерного массива
Матрица = Новый Массив(3, 2);

// Заполнение двумерного массива
Матрица[0][0] = 1;
Матрица[0][1] = 2;
Матрица[1][0] = 3;
Матрица[1][1] = 4;
Матрица[2][0] = 5;
Матрица[2][1] = 6;

// Альтернативный способ создания
Матрица = Новый Массив;
Матрица.Добавить(Новый Массив);
Матрица[0].Добавить(1);
Матрица[0].Добавить(2);
Матрица.Добавить(Новый Массив);
Матрица[1].Добавить(3);
Матрица[1].Добавить(4);

Перебор элементов массива

Массив = {10, 20, 30, 40, 50};

// Перебор с помощью цикла Для
Для Каждого Элемент Из Массив Цикл
    Сообщить(Элемент);
КонецЦикла;

// Перебор с помощью цикла Для по индексам
Для Индекс = 0 По Массив.Количество() - 1 Цикл
    Сообщить(Массив[Индекс]);
КонецЦикла;

Копирование массива

ИсходныйМассив = {1, 2, 3, 4, 5};

// Поверхностное копирование
КопияМассива = Новый Массив;
Для Каждого Элемент Из ИсходныйМассив Цикл
    КопияМассива.Добавить(Элемент);
КонецЦикла;

// Альтернативный способ (в новых версиях)
КопияМассива = Новый Массив(ИсходныйМассив);

Фильтрация массива

// В версиях 8.3.11 и выше можно использовать Фильтр
ИсходныйМассив = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
ОтфильтрованныйМассив = ИсходныйМассив.Фильтр(Элемент => Элемент % 2 = 0); // Только четные

// В более старых версиях
ОтфильтрованныйМассив = Новый Массив;
Для Каждого Элемент Из ИсходныйМассив Цикл
    Если Элемент % 2 = 0 Тогда
        ОтфильтрованныйМассив.Добавить(Элемент);
    КонецЕсли;
КонецЦикла;

Преобразование массива

// Преобразование с помощью метода Преобразовать (8.3.11+)
ИсходныйМассив = {1, 2, 3, 4, 5};
НовыйМассив = ИсходныйМассив.Преобразовать(Элемент => Элемент * 2); // Умножаем каждый элемент на 2

// В старых версиях
НовыйМассив = Новый Массив;
Для Каждого Элемент Из ИсходныйМассив Цикл
    НовыйМассив.Добавить(Элемент * 2);
КонецЦикла;

Работа с массивом как стеком или очередью

// Стек (LIFO)
Стек = Новый Массив;
Стек.Добавить(1); // Push
Стек.Добавить(2);
Значение = Стек[Стек.Количество() - 1]; // Peek
Значение = Стек.Удалить(Стек.Количество() - 1); // Pop

// Очередь (FIFO)
Очередь = Новый Массив;
Очередь.Добавить(1); // Enqueue
Очередь.Добавить(2);
Значение = Очередь[0]; // Peek
Значение = Очередь.Удалить(0); // Dequeue

Это основные примеры работы с массивами в 1С. В зависимости от версии платформы могут быть доступны дополнительные методы.

Поделиться с друзьями
Smirnov code
Добавить комментарий