Массив — это программная коллекция (объект встроенного языка), содержащая пронумерованную последовательность значений произвольного типа. Каждому элементу присваивается последовательный целочисленный номер — индекс, начинающийся с нуля. По индексу можно получить или установить значение элемента массива.
В 1С:Предприятие 8 существует два типа массивов:
- фиксированный массив — такой массив имеет фиксированный размер, заданный при его создании. Для фиксированного массива недоступно программное изменение размера, количества и последовательности элементов;
- обычный массив — такой массив имеет динамический размер и его верхний предел практически неограничен. Таким массивом можно произвольно оперировать из встроенного языка;
Сейчас мы рассмотрим обычные массивы.
Создание и инициализация элементов массива
Создание пустого массива выполняется с помощью оператора Новый
:
Массив = Новый Массив;
Для добавления элементов в массив используется одноименный метод Массив.Добавить():
Массив.Добавить(10); Массив.Добавить(Дата(2018, 1, 1)); Массив.Добавить("Просто строка");
Каждый новый элемент помещается в конец массива. Чтобы создать массив с заданным размером, можно воспользоваться конструктором массива. Например, так:
Массив = Новый Массив(3);
Для доступа к отдельным элементам массива применяется операция разыменования: указывается имя переменной, объявленной как массив, а затем, в квадратных скобках, указывается индекс элемента: ИмяМассива[Индекс]
. Такие конструкции можно указывать как слева от оператора присваивания:
Массив[0] = 10; Массив[1] = Дата(2018, 1, 1); Массив[2] = "Просто строка";
Так и справа: в выражениях и в качестве параметров процедур и функций:
Сообщить("Массив[0] = " + Массив[0]);
Границы массивов
Как было сказано выше, левая граница массива постоянна и всегда равно нулю (0). Верхняя граница напрямую связана с количеством элементов в массиве. Получить ее можно двумя способами:
- С использованием метода Массив.Количество() с последующим вычитанием 1;
- С использованием одноименного метода Массив.ВГраница();
Давайте рассмотрим распространенные операции с массивами
Перебор элементов массива
Для перебора (обхода) всех элементов массива обычно используется оператор цикла Для
:
Для Инд = 0 По Массив.ВГраница() Цикл Сообщить("Массив[" + Инд + "] = " + Массив[Инд]); КонецЦикла;
Либо оператор цикла Для Каждого
:
Для Каждого Элт Из Массив Цикл Сообщить("Массив[" + Массив.Найти(Элт) + "] = " + Элт); КонецЦикла;
Первый способ лучше использовать, если Вам необходимо получить одновременно и индекс, и значение массива. Второй способ больше подходит для ситуации, когда нужно только последовательно перебрать все значения массива. Использование второго способа повышает «читабельность кода».
Поиск в массиве
Для поиска значений в массиве можно воспользоваться одноименным методом Массив.Найти(). Он возвращает индекс найденного элемента или Неопределено
, если таковой не был найден:
НайдЭлт = Массив.Найти(10); Если НЕ НайдЭлт = Неопределено Тогда Сообщить("Массив[" + НайдЭлт + "] = " + Массив[НайдЭлт]) КонецЕсли;
Методы объекта Массив
ВГраница() | Возвращает старший индекс массива |
Вставить() | Добавляет значение в произвольное место массива |
Добавить() | Добавляет значение в конец массива |
Количество() | Возвращает количество элементов в массиве |
Найти() | Возвращает индекс значения в массиве |
Очистить() | Удаляет все элементы массива |
Получить() | Возвращает значение элемента массива по его индексу |
Удалить() | Удаляет значение из массива по его индексу |
Установить() | Устанавливает значение элемента массива |
Читайте также:
- Как создавать двумерные и многомерные массивы?
- Как скопировать массив?
- Как отсортировать элементы массива?
- Как свернуть массив в строку?
- Как создать массив структур?
В вашем коде:
Для Каждого Элт Из Массив Цикл
Сообщить(«Массив[» + Массив.Индекс(Элт) + «] = » + Элт);
КонецЦикла;
Вроде нет такого метода Индекс() у массива. Не отрабатывает код.
Да, Александр, Вы правы!
Поправил код примера