Работа с массивами в 1С 8

Массив в 1С — это набор некоторых значений. Значения в одном массиве могут быть различных типов.

Массив может быть получен в результате выполнения различных функций, например, ВыгрузитьКолонку() таблицы значений; в виде массива можно получить выделенные строки динамического списка и т.д. Можно создать массив и «вручную».

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

1. Как создать массив нужного размера
пМассив = новый Массив(4); //создали массив из 4 элементов

//Внесем значения элементов массива

пМассив[0] = "Мы";
пМассив[1] = "создали";
пМассив[2] = "новый";
пМассив[3] = "массив";
2. Как создать пустой массив и добавить в него элементы

пМассив = новый Массив; //создали пустой массив

//Внесем значения элементов массива

пМассив.Добавить("Мы");
пМассив.Добавить("создали");
пМассив.Добавить("новый");
пМассив.Добавить("массив");
3. Как создать многомерный массив.

Рассмотрим этот вопрос на примере двумерного массива, так как массивы больших размерностей используются значительно реже, а механизм их работы не отличается от двумерного.

пМассив = новый Массив (4, 2); //создали  массив 4х2

//Внесем значения элементов массива, пронумеровав каждое слово

пМассив[0][0] = "1. ";
пМассив[0][1] = "Мы";
пМассив[1][0] = "2. ";
пМассив[1][1] = "создали";
пМассив[2][0] = "3. ";
пМассив[2][1] = "многомерный";
пМассив[3][0] = "4. ";
пМассив[3][1] = "массив";
4. Как создать фиксированный массив

Фиксированный массив отличается от обычного тем, что его нельзя изменять. Нельзя добавлять, удалять или менять значения элементов такого массива.

Фиксированный массив может быть получен из обычного:

пМассив = новый Массив;

пМассив.Добавить("Мы");
пМассив.Добавить("создали");
пМассив.Добавить("новый");
пМассив.Добавить("массив");

фМассив = новый ФиксированныйМассив(пМассив); // создали фиксированный массив

Функции работы с массивами

Работу функций будем рассматривать на примере одномерного массива пМассив, созданного выше и состоящего из 4 элементов:

  1. «Мы»
  2. «создали»
  3. «новый»
  4. «массив».
Функция ВГраница()

Получает наибольший индекс элемента массива. Он всегда на единицу меньше количества элементов массива.

Индекс = пМассив.ВГраница() // 3;
Функция Вставить()

Вставляет какое-то значение в элемент массива с указанным индексом. Последующие элементы массива сдвигаются

пМассив.Вставить(3, "новое значение") //Теперь массив состоит из 5 элементов
Функция Добавить()

Создает новый элемент в конце массива и вставляет туда заданное значение

пМассив.Добавить(".") // добавили точку пятым элементов массива;
Функция Количество()

Возвращает количество элементов массива.

пМассив.Количество(); // 4
Функция Найти()

Ищет в массиве заданный элемент. Если находит, возвращает его индекс. Если не находит, возвращает Неопределено.

Индекс = пМассив.Найти("массив"); // 3
Индекс = пМассив.Найти("строка, которой не было"); // Неопределено
Функция Очистить()

Удаляет все значения из массива.

пМассив.Очистить();
Функция Получить()

Получает значение массива по индексу. Эту же задачу можно решить через [].

Значение=пМассив.Получить(3) // "массив"
Значение=пМассив[3]; // "массив"
Функция Удалить()

Удаляет элемент массива по индексу

пМассив.Удалить(3);
Функция Установить()

Устанавливает значение элемента массива по индексу. Работает аналогично [].

пМассив.Установить(3, "массив!");
пМассив[3]="массив!";

Как обойти массив

Можно обойти все элементы массива без указания индекса:

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

Можно при обходе использовать индекс:

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

Как обойти многомерный массив

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

мМассив=новый массив(3,4);

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

Или с применением индексов.

мМассив=новый массив(3,4);

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

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

Для сортировки массива нам потребуется вспомогательный объект с типом СписокЗначений.

СписокЗнач = новый СписокЗначений; // создаем список значений
СписокЗнач.ЗагрузитьЗначения(пМассив); // загружаем в список значения из массива
СписокЗнач.СортироватьПоЗначению(НаправлениеСортировки.Возр); //сортируем по возрастанию
СписокЗнач.СортироватьПоЗначению(НаправлениеСортировки.Убыв); //или по убыванию
пМассив=СписокЗнач.Выгрузить(); // выгружаем отсортированные значения обратно в массив

Сравнение двух массивов

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

Функция СравнитьМассивы(Массив1, Массив2)

Если Массив1.Количество()<>Массив2.Количество() Тогда
Возврат ЛОЖЬ; // Массивы не равны, сравнивать элементы нет смысла.
КонецЕсли;

Для Индекс=0 по Массив1.ВГраница() Цикл
Если Массив1[Индекс]<>Массив2[Индекс] Тогда
Возврат Ложь; //эти элементы не равны, значит и массивы не равны
КонецЕсли;
КонецЦикла;

Возврат Истина; // Если дошли до сюда, то массивы равны
КонецФункции

В функцию нужно передать 2 сравниваемых массива. Функция возвращает значение Истина, если массивы равны, и Ложь, если не равны.

 

 

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

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