Массив - это структура данных, которая позволяет последовательно хранить несколько значений. Элементами массива могут быть значения разного типа. Массив можно передавать с клиента на сервер и обратно. Массив не сохраняется в базе данных, в основном используется для временного хранения набора данных в памяти.
Как создать массив
Для создания массива в 1С используется ключевое слово Новый после которого указывается имя класса.
МассивЗначений = Новый Массив;
В переменной МассивЗначений будет находиться массив.
В конструкторе массива можно указать количество элементов:
МассивЗначений = Новый Массив(8); //в массиве 8 элементов
Сразу после создания все элементы массива будут равны Неопределено. При этом размер массива может быть изменен, при добавлении в него новых элементов.
Для добавления элементов используется метод Добавить:
МассивЗначений = Новый Массив;
МассивЗначений.Добавить("Строка");
МассивЗначений.Добавить(2);
МассивЗначений.Добавить(Истина);
Можно добавлять новые элементы в массив через метод Вставить, с указанием индекса, куда нужно вставить новый элемент. Если указать индекс больше чем количество элементов в массиве, то в массив будет добавлено нужное количество элементов со значением Неопределено:
МассивЗначений = Новый Массив;
МассивЗначений.Вставить(0, "Первый");
//в массиве [Первый]
МассивЗначений.Вставить(1, "Второй");
МассивЗначений.Вставить(2, "Третий");
//в массиве [Первый, Второй, Третий]
МассивЗначений.Вставить(5, "Шестой");
//в массиве [Первый, Второй, Третий, Неопределено, Неопределено, Шестой]
Количество элементов в массиве
При добавлении каждого нового элемента в массив, количество элементов увеличивается на единицу. Получить общее количество элементов в массиве можно с помощью метода Количество:
МассивЗначений = Новый Массив;
МассивЗначений.Количество(); //0
МассивЗначений.Добавить(8956);
МассивЗначений.Добавить(4631);
МассивЗначений.Количество(); //2
Индекс массива
Чтобы обратиться к элементам массива можно использовать индексы. Индекс - это номер элемента в массиве. Нумерация элементов начинается с 0. Чтобы обратиться к первому элементу нужно использовать индекс 0, а чтобы обратиться к пятому элементу - индекс 4. При этом, если мы обратимся к несуществующему элементу массива, то будет ошибка «Индекс находится за границами массива».
МассивЗначений = Новый Массив;
МассивЗначений.Добавить("Строка");
МассивЗначений.Добавить(2);
МассивЗначений.Добавить(Истина);
МассивЗначений[0] = "НоваяСтрока";
МассивЗначений[2] = 12;
МассивЗначений[5] = 10; //так нельзя,
//будет ошибка Индекс находится за границами массива
Граница массива
Граница массива - это максимальный индекс в массиве. Границу можно получить методом ВГраница. Если в массиве еще нет элементов, то данный метод вернет -1.
МассивЗначений = Новый Массив;
МассивЗначений.ВГраница(); //-1
МассивЗначений.Добавить(8956);
МассивЗначений.Добавить(4631);
МассивЗначений.ВГраница(); //1
Получить элемент массива
Получить элемент массива можно через квадратные скобки или методом Получить:
МассивЗначений = Новый Массив;
МассивЗначений.Добавить(8956);
МассивЗначений.Добавить(4631);
//1 элемент массива
ПервыйЭл = МассивЗначений[0]; //8956
ПервыйЭл = МассивЗначений.Получить(0); //8956
//2 элемент массива
ВторойЭл = МассивЗначений[1]; //4631
ВторойЭл = МассивЗначений.Получить(1); //4631
Перебор массива
С помощью цикла Для Каждого:
МассивЗначений = Новый Массив;
МассивЗначений.Добавить("Строка");
МассивЗначений.Добавить(2);
МассивЗначений.Добавить(Истина);
Для Каждого ЭлементМассива Из МассивЗначений Цикл
//метод Сообщить() выводит сообщение на экран
Сообщить(ЭлементМассива);
КонецЦикла;
Через цикл Для Каждого нельзя изменить значения массива, меняться будет переменная ЭлементМассива.
Перебрать массив можно и через цикл Для. В этом случае через индекс можно изменять значения массива:
МассивЗначений = Новый Массив;
МассивЗначений.Добавить("Строка");
МассивЗначений.Добавить(2);
МассивЗначений.Добавить(Истина);
//метод ВГраница() возвращает максимальный индекс массива
Для Сч = 0 По МассивЗначений.ВГраница() Цикл
ЭлементМассива[Сч] = 1;
КонецЦикла;
Поиск в массиве
Для поиска значений в массиве предназначен метод Найти. Параметром нужно передать значение, которое нужно найти в массиве. А вернет метод индекс элемента в массиве, если он найден, и Неопределено, если такого значения нет в массиве. Нужно учитывать, что чем больше массив, тем медленнее будет выполняться поиск в нем, так как поиск в массиве выполняется перебором всех элементов.
Удаление из массива
Можно удалить конкретный элемент по его индексу через метод Удалить. Можно удалить все элементы массива методом Очистить.
МассивЗначений = Новый Массив;
МассивЗначений.Добавить(8956);
МассивЗначений.Добавить(4631);
//удаление первого элемента массива
МассивЗначений.Удалить(0);
//удаление всех элементов массива
МассивЗначений.Очистить();
Правильное удаление элементов из середины массива
При удалении элемента из середины массива, массив как бы «смыкается». Если перебирать все элементы массива в цикле и удалять по какому-то условию, то после удаления элемента, следующий элемент будет пропущен. Поэтому правильно перебирать массив с конца:
Инд = МассивЗначений.ВГраница();
Пока Инд >= 0 Цикл
Если МассивЗначений[Инд]) = 5 Тогда
МассивЗначений.Удалить(Инд);
КонецЕсли;
Инд = Инд - 1;
КонецЦикла;
Данный код удаляет из массива все элементы, которые равны 5.
Как изменить значение элемента массива
Изменить значение элемента массива можно через квадратные скобки, указав индекс изменяемого элемента. Или через метод Установить.
МассивЗначений = Новый Массив;
МассивЗначений.Добавить(8956);
МассивЗначений.Добавить(4631);
МассивЗначений[0] = 6598;
//редко используемый вариант
МассивЗначений.Установить(1, 1364);
Многомерные массивы
Многомерный массив в 1С - это массив массивов:
МногомерныйМассив = Новый Массив();
ОдномерныйМассив = Новый Массив;
ОдномерныйМассив.Добавить(1);
ОдномерныйМассив.Добавить(2);
МногомерныйМассив.Добавить(ОдномерныйМассив);
ОдномерныйМассив2 = Новый Массив;
ОдномерныйМассив2.Добавить(3);
ОдномерныйМассив2.Добавить(4);
МногомерныйМассив.Добавить(ОдномерныйМассив2);
В переменной МногомерныйМассив будет 2 элемента типа массив, каждый из которых содержит по 2 элемента типа число.
Через индексы можно изменять и читать значения многомерного массива:
МногомерныйМассив[0][0] = 1;
МногомерныйМассив[0][1] = 2;
Сообщить(МногомерныйМассив[0][0]);
Через конструктор можно сразу создать многомерный массив:
ДвумерныйМассив = Новый Массив(2,2);
ТрехмерныйМассив = Новый Массив(3,3,3);
Фиксированный массив
Фиксированный массив - это тот же самый массив, но у которого нельзя изменить ни количество элементов, ни значения массива. Создается 1 раз и больше не может быть изменен. Может быть создан на основании обычного массива:
ОбычныйМассив = Новый Массив;
ОбычныйМассив.Добавить(1);
ОбычныйМассив.Добавить(2);
ФиксМассив = Новый ФиксированныйМассив(ОбычныйМассив);
Если попытаться изменить элемент фиксированного массива, то будет ошибка «Индексированное значение доступно только для чтения».
На основании фиксированного массива можно создать обычный массив:
ОбычныйМассив = Новый Массив;
ОбычныйМассив.Добавить(1);
ОбычныйМассив.Добавить(2);
ФиксМассив = Новый ФиксированныйМассив(ОбычныйМассив);
СноваОбычныйМассив = Новый Массив(ФиксМассив);
СноваОбычныйМассив[0] = 11; //теперь можно менять значения
У фиксированного массива есть следующие методы:
- Количество()
- ВГраница()
- Получить(<Индекс>), можно так: Значение = Массив[0];
- Найти(<Значение>)
которые выполняют те же действия, что и у обычного массива.
Смотрите также:
Электронный учебник по по программированию в 1С Рекомендации по изучению программирования 1С с нуля Программное решение для сдачи и подготовки к экзаменам Программирование в 1С 8.3 с нуля - краткий самоучитель Комплексная подготовка программистов 1С:Предприятие 8.2 Сайты с уроками программирования и со справочниками Youtube-каналы с уроками программирования Сайты для обучения программированию Лекции и уроки