1. Руководство по встроенному языку
2

Массив 1с. Описание и примеры использования

Массив — это программная коллекция (объект встроенного языка), содержащая пронумерованную последовательность значений произвольного типа. Каждому элементу присваивается последовательный целочисленный номер — индекс, начинающийся с нуля. По индексу можно получить или установить значение элемента массива.

В 1С:Предприятие 8 существует два типа массивов:

  • фиксированный массив — такой массив имеет фиксированный размер, заданный при его создании. Для фиксированного массива недоступно программное изменение размера, количества и последовательности элементов;
  • обычный массив — такой массив имеет динамический размер и его верхний предел практически неограничен. Таким массивом можно произвольно оперировать из встроенного языка;

Сейчас мы рассмотрим обычные массивы.

Создание и инициализация элементов массива

Создание пустого массива выполняется с помощью оператора Новый:

Массив = Новый Массив;

Чтобы создать массив с заданным размером, можно воспользоваться конструктором массива. Например, так:

Массив = Новый Массив(3);

Для добавления элементов в массив используется одноименный метод Массив.Добавить():

Массив.Добавить(10);
Массив.Добавить(Дата(2018, 1, 1));
Массив.Добавить("Просто строка");

Каждый новый элемент помещается в конец массива.

Для доступа к отдельным элементам массива применяется операция разыменования: указывается имя переменной, объявленной как массив, а затем, в квадратных скобках, указывается индекс элемента: ИмяМассива[Индекс]. Такие конструкции можно указывать как слева от оператора присваивания:

Массив[0] = 10;
Массив[1] = Дата(2018, 1, 1);
Массив[2] = "Просто строка";

Так и справа: в выражениях и в качестве параметров процедур и функций:

Сообщить("Массив[0] = " + Массив[0]);

Границы массивов

Как было сказано выше, левая граница массива постоянна и всегда равно нулю (0). Верхняя граница напрямую связана с количеством элементов в массиве. Получить ее можно двумя способами:

Давайте рассмотрим распространенные операции с массивами

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

Для перебора (обхода) всех элементов массива обычно используется оператор цикла Для:

Для Инд = 0 По Массив.ВГраница() Цикл
    Сообщить("Массив[" + Инд + "] = " + Массив[Инд]);
КонецЦикла;

Либо оператор цикла Для Каждого:

Для Каждого Элт Из Массив Цикл
    Сообщить("Массив[" + Массив.Найти(Элт) + "] = " + Элт);
КонецЦикла;

Первый способ лучше использовать, если Вам необходимо получить одновременно и индекс, и значение массива. Второй способ больше подходит для ситуации, когда нужно только последовательно перебрать все значения массива. Использование второго способа повышает «читабельность кода».

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

Для поиска значений в массиве можно воспользоваться одноименным методом Массив.Найти(). Он возвращает индекс найденного элемента или Неопределено, если таковой не был найден:

НайдЭлт = Массив.Найти(10);
Если НЕ НайдЭлт = Неопределено Тогда
    Сообщить("Массив[" + НайдЭлт + "] = " + Массив[НайдЭлт])
КонецЕсли;

Методы объекта Массив

ВГраница() Возвращает старший индекс массива
Вставить() Добавляет значение в произвольное место массива
Добавить() Добавляет значение в конец массива
Количество() Возвращает количество элементов в массиве
Найти() Возвращает индекс значения в массиве
Очистить() Удаляет все элементы массива
Получить() Возвращает значение элемента массива по его индексу
Удалить() Удаляет значение из массива по его индексу
Установить() Устанавливает значение элемента массива

Читайте также:

  1. Как создавать двумерные и многомерные массивы?
  2. Как скопировать массив?
  3. Как отсортировать элементы массива?
  4. Как свернуть массив в строку?
  5. Как создать массив структур?

Поделиться страницей в соц.сетях

2 комментария к записи “Массив 1с. Описание и примеры использования

  1. В вашем коде:
    Для Каждого Элт Из Массив Цикл
    Сообщить(«Массив[» + Массив.Индекс(Элт) + «] = » + Элт);
    КонецЦикла;
    Вроде нет такого метода Индекс() у массива. Не отрабатывает код.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *