Массивы в языке 1С 8.3, 8.2

Автор: | Ноябрь 8, 2019
/// Как создать массив (сразу нужного размера) в 1с 8.3, 8.2

&НаКлиенте
Процедура Пример1(Команда)

// в массиве сразу 3 элемента
Массив = Новый Массив(3);

// инициализируем их значениями
Массив[0] = 5;
Массив[1] = Массив[0] * 2; // 10
Массив[2] = Массив[1] * 2; // 20

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

КонецПроцедуры

/// Как создать пустой массив (с последующим добавлением
/// элементов) в 1с 8.3, 8.2

&НаКлиенте
Процедура Пример2(Команда)

// в массиве 0 элементов
Массив = Новый Массив;

// добавляем последовательно три элемента
Массив.Добавить(100); // (100)
Массив.Добавить(300); // (100, 300)
Массив.Добавить(500); // (100, 300, 500)

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

КонецПроцедуры

/// Как обойти все элементы массива по индексу в 1с 8.3, 8.2

&НаКлиенте
Процедура Пример3(Команда)

// инициализируем массив: (100, 300, 500)
Массив = Новый Массив;
Массив.Добавить(100);
Массив.Добавить(300);
Массив.Добавить(500);

// пробегаемся от первого (с индексом 0) до последнего
// элемента (с индексом Количество — 1).
Для Индекс = 0 По Массив.Количество() 1 Цикл
Сообщить(Массив[Индекс]);
КонецЦикла;

КонецПроцедуры

/// Массив может содержать элементы различных типов: числа,
/// строки и т.д.

&НаКлиенте
Процедура Пример4(Команда)

Массив = Новый Массив(4);
Массив[0] = «HELP»; // («HELP»)
Массив[1] = «ME»; // («HELP», «ME»)
Массив[2] = «1C»; // («HELP», «ME», «1C»)
Массив[3] = Формат(2013, «ЧГ=0»); // («HELP», «ME», «1C», 2013)

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

КонецПроцедуры

/// Как передать массив в качестве параметра функции в 1с 8.3, 8.2

&НаКлиенте
Функция Метод5(массивПереданныйПоСсылке)

массивПереданныйПоСсылке[0] = 10;
Возврат массивПереданныйПоСсылке[0] * 2;

КонецФункции

&НаКлиенте
Процедура Пример5(Команда)

// инициализация массива из одного элемента: (13)
Массив = Новый Массив(1);
Массив[0] = 13;

// значение первого элемента до вызова функции
Сообщить(Массив[0]); // 13

// массив ВСЕГДА передается в функцию ПО ССЫЛКЕ, значит,
// изменяя массив внутри функции, мы меняем его снаружи
Сообщить(Метод5(Массив)); // 20

// значение первого элемента после вызова функции изменилось
Сообщить(Массив[0]); // 10

КонецПроцедуры

/// Как вернуть массив в качестве результата работы функции
/// в 1с 8.3, 8.2

&НаКлиенте
Функция Метод6()

// инициализация массива (СПАСИБО, ВАМ)
массив = Новый Массив(2);
массив[0] = «СПАСИБО»;
массив[1] = «ВАМ»;

Возврат массив;

КонецФункции

&НаКлиенте
Процедура Пример6(Команда)

// инициализация переменной массивом, который возвращает и формирует
// функция Метод6
Массив = Метод6();

// вывод на печать
Для Каждого ЭлементМассива из Массив Цикл
Сообщить(ЭлементМассива); // СПАСИБО ВАМ
КонецЦикла;

КонецПроцедуры

/// Ещё пример на передачу массива в качестве параметра процедуры
/// в 1с 8.3, 8.2

&НаКлиенте
Процедура Метод7(Массив)

Если Массив <> Неопределено И Массив.Количество() > 0 Тогда
Сообщить(Массив[0]);
КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура Пример7(Команда)

// инициализация массива: (10, 20)
Массив = Новый Массив(2);
Массив[0] = 10;
Массив[1] = 20;

// печать первого элемента, переданного массива
Метод7(Массив); // 10
Метод7(Неопределено); // ничего
Метод7(Новый Массив); // ничего

КонецПроцедуры

/// Как получить последний элемент массива в 1с 8.3, 8.2

&НаКлиенте
Процедура Пример8(Команда)

// инициализация массива: («Кошка», «Собака», «Пантера», «Тигр»)
Массив = Новый Массив;
Массив.Добавить(«Кошка»);
Массив.Добавить(«Собака»);
Массив.Добавить(«Пантера»);
Массив.Добавить(«Тигр»);

Сообщить(Массив[Массив.Количество() 1]); // Тигр

КонецПроцедуры

/// Использование многомерных массивов в 1с 8.3, 8.2

&НаКлиенте
Процедура Пример9(Команда)

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

// ( ( «Юрий», «Гагарин» ), ( (), () ), ( (), () ) )
Массив[0][0] = «Юрий»;
Массив[0][1] = «Гагарин»;

// ( ( «Юрий», «Гагарин» ), ( «Герман», «Титов» ), ( (), () ) )
Массив[1][0] = «Герман»;
Массив[1][1] = «Титов»;

// ( ( «Юрий», «Гагарин» ), ( «Герман», «Титов» ),
// ( «Валентина», «Терешкова» ) )
Массив[2][0] = «Валентина»;
Массив[2][1] = «Терешкова»;

// обход всех элементов через конструкцию Для Каждого

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

Сообщить(» «);

// обход всех элементов через индекс

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

КонецПроцедуры

/// Вставка, удаление и очистка массива в 1с 8.3, 8.2

&НаКлиенте
Процедура Пример10(Команда)

// инициализация пустого массива
Массив = Новый Массив;

// вставка трёх элементов; каждый элемент вставляется в начало
Массив.Вставить(0, 10); // (10)
Массив.Вставить(0, 100); // (100, 10)
Массив.Вставить(0, 1000); // (1000, 100, 10)

// определение последнего индекса
Сообщить(Массив.ВГраница()); // 2

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

// удаление элемента со значением 100
// для этого сначала находим индекс элемента
// если не находим возвращаем Неопределено
Индекс = Массив.Найти(100); // 1
// и удаляем элемент по найденному индексу
Массив.Удалить(Индекс); // (1000, 10)

Сообщить(Массив.ВГраница()); // 1

// удаление всех элементов из массива
Массив.Очистить();

КонецПроцедуры

/// Как из обычного получить фиксированный (неизменяемый)
/// массив в 1с 8.3, 8.2

&НаКлиенте
Процедура Пример(Команда)

Числа = Новый Массив;
Числа.Добавить(1);
Числа.Добавить(2);
Числа.Добавить(3);

ФиксированныеЧисла = Новый ФиксированныйМассив(Числа);
// Получился константный массив на основе обычного:
// нельзя менять значения имеющихся элементов
// нельзя добавлять новые элементы
// нельзя удалять имеющиеся элементы

КонецПроцедуры

/// Сумма в массиве

&НаКлиенте

Процедура Пример(Команда)

Числа = Новый Массив;
Числа.Добавить(1);
Числа.Добавить(2);
Числа.Добавить(3);

Сумма = 0;

Для каждого ЗначениеМассива из Числа Цикл
Сумма = Сумма ЗначениеМассива;
КонецЦикла;

КонецПроцедуры


											

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

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