1С: Массивы и коллекции. Массивы
Описание
В статье рассмотрены основные методы работы с массивами в 1С
Оглавление (нажмите, чтобы раскрыть)
Динамические массивы
Количество = 15; Числа = Новый Массив(Количество); Числа[0] = 1;
Добавление и удаление элементов
Числа = Новый Массив(3); Числа[0] = 2; Числа[1] = 5; Числа[2] = 7; Числа.Добавить(11); //Числа = [2, 5, 7, 11] Числа.Вставить(1, 3); //Числа = [2, 3, 5, 7, 11] Числа.Удалить(2); //Числа = [2, 3, 7, 11] Числа.Очистить(); //Числа = []
Инициализация массивов
//пустой массив Массив1 = Новый Массив; //одномерный массив Массив2 = Новый Массив(3); Массив2[0] = 2; Массив2[1] = 3; Массив2[2] = 1; //двумерный массив Массив3 = Новый Массив(2); Массив3[0] = Новый Массив(2); Массив3[1] = Новый Массив(2); Массив3[0][1] = 5;
Копирование массива
Числа1 = Новый Массив(3); Числа1[0] = 1; Числа1[1] = 2; Числа1[2] = 3; //первый вариант Числа2 = Новый Массив( Новый ФиксированныйМассив(Числа1)); //второй вариант Список = Новый СписокЗначений; Список.ЗагрузитьЗначения(Числа1); Числа3 = Список.ВыгрузитьЗначения();
Обход массива
Числа = Новый Массив(3); Числа[0] = 2; Числа[1] = 3; Числа[2] = 5; Стр = ""; Для Каждого Число из Числа Цикл Стр = Стр + ?(Стр = "", "", "; ") + Число; КонецЦикла; //Стр = "2; 3; 5"
Обход массива с индексом
Числа = Новый Массив(3); Числа[0] = 2; Числа[1] = 3; Числа[2] = 5; Стр = ""; Для Н = 0 По Числа.Количество() - 1 Цикл Стр = Стр + ?(Стр = "", "", "; ") + Числа[Н]; КонецЦикла; //Стр = "2; 3; 5"
Объединение массивов
Числа1 = Новый Массив(3); Числа1[0] = 2; Числа1[1] = 3; Числа1[2] = 5; Числа2 = Новый Массив(3); Числа2[0] = 7; Числа2[1] = 11; Числа2[2] = 13; //вариант первый ВсеЧисла = Новый Массив; Для Каждого Число Из Числа1 Цикл ВсеЧисла.Добавить(Число); КонецЦикла; Для Каждого Число Из Числа2 Цикл ВсеЧисла.Добавить(Число); КонецЦикла; //ВсеЧисла = [2, 3, 5, 7, 11, 13] //вариант второй Список = Новый СписокЗначений; Список.ЗагрузитьЗначения(Числа1); Для Каждого Число Из Числа2 Цикл Список.Добавить(Число); КонецЦикла; ВсеЧисла = Список.ВыгрузитьЗначения(); //ВсеЧисла = [2, 3, 5, 7, 11, 13]
Получение уникальных значений
Числа1 = Новый Массив; Числа1.Добавить(1); Числа1.Добавить(3); Числа1.Добавить(2); Числа1.Добавить(1); Числа1.Добавить(3); //Числа1 = [1, 3, 2, 1, 3] Числа2 = Новый Массив; //первый вариант Соответствие = Новый Соответствие; Для каждого Число Из Числа1 Цикл Соответствие.Вставить(Число); КонецЦикла; Для каждого Элемент Из Соответствие Цикл Числа2.Добавить(Элемент.Ключ); КонецЦикла; //Числа2 = [1, 2, 3] Числа2.Очистить(); //второй вариант Для Каждого Число из Числа1 Цикл Если (Числа2.Найти(Число) = Неопределено) Тогда Числа2.Добавить(Число); КонецЕсли; КонецЦикла; //Числа2 = [1, 3, 2]
Преобразование массива
Числа = Новый Массив(3); Числа[0] = 2; Числа[1] = 3; Числа[2] = 5; Для Н = 0 По Числа.Количество() - 1 Цикл Числа[Н] = Числа[Н] * 3; КонецЦикла; //Числа = [6, 9, 15]
Проверка наличия элемента
Числа = Новый Массив(3); Числа[0] = 2; Числа[1] = 3; Числа[2] = 5; Содержит3 = Числа.Найти(3) <> Неопределено; //Содержит3 = Истина Индекс3 = Числа.Найти(3); //Индекс3 = 1 Содержит4 = Числа.Найти(4) <> Неопределено; //Содержит4 = Ложь
Проверка равенства массивов
Числа1 = Новый Массив(3); Числа1[0] = 1; Числа1[1] = 2; Числа1[2] = 3; Числа2 = Новый Массив(3); Числа2[0] = 1; Числа2[1] = 2; Числа2[2] = 3; //первый вариант МассивыРавны = СравнитьМассивы1(Числа1, Числа2); //МассивыРавны = Да //второй вариант МассивыРавны = СравнитьМассивы2(Числа1, Числа2); //МассивыРавны = Да Функция СравнитьМассивы1(Массив1, Массив2) Если Массив1.Количество() <> Массив2.Количество() Тогда Возврат Ложь; КонецЕсли; Для н = 0 По Массив1.Количество() - 1 Цикл Если (Массив1.Получить(н) <> Массив2.Получить(н)) Тогда Возврат Ложь; КонецЕсли; КонецЦикла; Возврат Истина; КонецФункции &НаСервере Функция СравнитьМассивы2(Массив1, Массив2) Возврат ЗначениеВСтрокуВнутр(Массив1) = ЗначениеВСтрокуВнутр(Массив2); КонецФункции
Сортировка элементов
Числа = Новый Массив(3); Числа[0] = 2; Числа[1] = 3; Числа[2] = 1; Список = Новый СписокЗначений; Список.ЗагрузитьЗначения(Числа); Список.СортироватьПоЗначению(НаправлениеСортировки.Возр) ; Числа = Список.ВыгрузитьЗначения(); //Числа = [1, 2, 3] Список.СортироватьПоЗначению(НаправлениеСортировки.Убыв) ; Числа = Список.ВыгрузитьЗначения(); //Числа = [3, 2, 1]
Фильтрация элементов
Числа = Новый Массив; Числа.Добавить(1); Числа.Добавить(2); Числа.Добавить(3); Числа.Добавить(4); //в 1С отсутствует функция фильтрации массива //поэтому использует обычный перебор значений Четные = Новый Массив; Для Каждого Число Из Числа Цикл Если (Число % 2 = 0) Тогда Четные.Добавить(Число); КонецЕсли; КонецЦикла;Заказать страховку