Инструменты пользователя

Инструменты сайта


1c:коллекции:массив

Массив

Массивы используются для неупорядоченного хранения наборов данных. Массив создается с помощью метода Новый() как уже отмечалось ранее.

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

Или можно сразу указать количество элементов в массиве Массив(4), или сделать двухмерный массив Массив(3, 2), или трехмерный, или … ну вообщем и тд. Если при создании массива указать количество элементов, то массив будет создан сразу заполненным данными с типом данных Неопределенно. В массиве могут храниться данные произвольного типа. После создания, с ним можно производить любые операции: добавлять, удалять или изменять элементы. Например:

Массив = Новый Массив(3);
Массив[1] = 100;       // до операции в Массив[1] было Неопределено,
                       // теперь это значение было заменено на число 100

Работа с многомерным массивом, происходит следующим образом:

Массив[ИндексПервогоИзмерения][ИндексВторогоИзмерения]

Массив может быть двух, трех мерным и ид. То есть в целом можно организовать и таблицу значений, строки это будет первое измерение, колонки второе. Для того, что бы самостоятельно определить структуру многомерного массива, необходим следующий код:

Массив  = Новый Массив;
НоваяСтрокаМассива = Новый Массив;
НоваяСтрокаМассива.Добавить(1);
НоваяСтрокаМассива.Добавить(2);
Массив.Добавить(НоваяСтрокаМассива);
НоваяСтрокаМассива = Новый Массив;
НоваяСтрокаМассива.Добавить(6);
НоваяСтрокаМассива.Добавить(7);
Массив.Добавить(НоваяСтрокаМассива);

В результате получится таблица из двух колонок.

Строка Колонка1 Колонка2
Строка1 1 2
Строка 2 6 7

Сложные объекты в массиве хранятся по ссылке:

Массив = Новый Массив;
СтрокаМассива = Новый Структура("ФИО, ДатаРождения");
СтрокаМассива.ФИО = "Иванов Иван Иванович";
СтрокаМассива.ДатаРождения = Дата(2000, 05, 07);
Массив.Добавить(СтрокаМассива);
СтрокаМассива.ФИО = "Петров Пётр Петрович";
СтрокаМассива.ДатаРождения = Дата(1990, 04, 06);
Массив.Добавить(СтрокаМассива);
 
Сообщить(Массив[1].ФИО);     // Выведет "Петров Пётр Петрович", как и ожидалось
Сообщить(Массив[0].ФИО);     // Тоже выведет "Петров Пётр Петрович" потому что
                             // элементы массива ссылаются на одну и ту же структуру
 
Массив[0].ФИО = "Сидоров Сидор Сидорович";
Сообщить(СтрокаМассива.ФИО); // Получаем "Сидоров Сидор Сидорович", ведь
                             // меняется сама структура
 
СтрокаМассива = Новый Структура("ФИО, ДатаРождения");
СтрокаМассива.ФИО = "Иванов Иван Иванович";
СтрокаМассива.ДатаРождения = Дата(2000, 05, 07);
Массив[0] = СтрокаМассива;
 
Сообщить(Массив[1].ФИО);     // По прежнему выведет "Сидоров Сидор Сидорович"
Сообщить(Массив[0].ФИО);     // А вот сейчас здесь "Иванов Иван Иванович".

Аналог таблицы значений можно получить не только с помощью двумерного массива, но и с помощью массива структур. Такая конструкция имеет практическое значение: Таблица значений доступна только на сервере. И, в случае необходимости передать табличные данные с сервера на клиент, наилучшим вариантом будет как раз массив структур.

Для обхода массива можно использовать следующий код:

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

В целом для массива справедливы все моменты, которые справедливы для коллекций.

Методы

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

см. также

Только авторизованные участники могут оставлять комментарии.
1c/коллекции/массив.txt · Последние изменения: 2016/11/18 10:01 — admin