1С 8.3 Массив - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Массив

Данные > Примеры кода 1С > 1С 8.3 Массив
Массив в 1С 8.3 - это набор значений, которые могут быть разных типов. Значения массива можно добавлять, получать, вставлять, удалять и очищать. Массивы бывают одномерными и двумерными. В 1С 8.3 используются для отборов или для сохранения списка значений, чтобы потом передать как параметр в функцию/процедуру.

Массив можно получить из списка значений с помощью метода ВыгрузитьЗначения() и из таблицы значений с помощью метода ВыгрузитьКолонку(). В виде массива также можно получить выделенные строки динамического списка. Можно создать массив и программно.
Создание массива (определенного размера) в 1С 8.3:
&НаКлиенте
Процедура СозданиеМассиваОпределенногоРазмера(Команда)

   
// Массив состоит из 3-х элементов
   
МассивОпрРазмера = Новый Массив(3);

   
// Определяем значения элементов
   
МассивОпрРазмера[0] = 3;
   
МассивОпрРазмера[1] = МассивОпрРазмера[0] * 2; // 6
   
МассивОпрРазмера[2] = МассивОпрРазмера[1] * 3; // 18

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

КонецПроцедуры
Создание массива (без размера) с последующим добавлением элементов в 1С 8.3:
&НаКлиенте
Процедура СозданиеМассиваБезРазмера(Команда)

   
// В массиве пока нет элементов
   
МассивБезРазмера = Новый Массив;

   
// Добавляем последовательно 3 элемента
   
МассивБезРазмера.Добавить(20); // Массив: (20)
   
МассивБезРазмера.Добавить(40); // Массив: (20, 40)
   
МассивБезРазмера.Добавить(70); // Массив: (20, 40, 70)

   
Для Каждого ЭлементМассива из МассивБезРазмера Цикл
       
Сообщить(ЭлементМассива); // 20 40 70
   
КонецЦикла;

КонецПроцедуры
Создание массива с элементами разных типов: числа, даты, строки и т.д. в 1С 8.3:
&НаКлиенте
Процедура СозданиеМассиваСЭлементамиРазныхТипов(Команда)

   
Массив = Новый Массив(5);
   
Массив[0] = "1Cnik.BY"; // ("1Cnik.BY")
   
Массив[1] = 36; // ("1Cnik.BY", 36)
   
Массив[2] = "@"; // ("1Cnik.BY", 36, "@")
   
Массив[3] = Формат(2007, "ЧГ=0"); // ("1Cnik.BY", 36, "@", 2007)
   
Массив[4] = Дата("20200330"); // ("1Cnik.BY", 36, "@", 2007, 30.03.2020)

   
Для Каждого ЭлементМассива из Массив Цикл
       
Сообщить(ЭлементМассива); // 1Cnik.BY 36 @ 2007 30.03.2020
   
КонецЦикла;

КонецПроцедуры
Обход всех элементов массива по индексу в 1С 8.3:
&НаКлиенте
Процедура ОбходВсехЭлементовМассиваПоИндексу(Команда)

   
// Инициализируем массив: (20, 40, 70)
   
МассивИндекс = Новый Массив;
   
МассивИндекс.Добавить(20);
   
МассивИндекс.Добавить(40);
   
МассивИндекс.Добавить(70);

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

КонецПроцедуры
Вставка, удаление одного элемента и очистка всего массива в 1С 8.3:
&НаКлиенте
Процедура РаботаСМассивом(Команда)

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

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

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

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

   
// Находим индекс элемента
   
Индекс = Массив.Найти("А"); // 1
    // Удаляем элемент по найденному индексу
   
Массив.Удалить(Индекс); // Остаётся массив (Г, В, Б)

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

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

КонецПроцедуры
Передача массива в качестве параметра функции в 1С 8.3:
&НаКлиенте
Функция ПередачаМассиваВКачествеПараметраФункции(СсылкаНаМассив)

   
СсылкаНаМассив[0] = 50;
    Возврат
СсылкаНаМассив[0] * 5;

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

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

   
Массив = Новый Массив(1); // Инициализация массива из одного элемента
   
Массив[0] = 70// Значение элемента до вызова функции = 70

    // Передача массива в функцию для изменения
   
Сообщить(ПередачаМассиваВКачествеПараметраФункции(Массив)); // 250

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

КонецПроцедуры
Возврат массива в результате выполнения функции в 1С 8.3:
&НаКлиенте
Функция СозданиеМассива()

   
Массив = Новый Массив(3);
   
Массив[0] = "Добро";
   
Массив[1] = "пожаловать";
   
Массив[2] = "в Беларусь!";

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

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

&НаКлиенте
Процедура МассивВРезультатеВыполненияФункции(Команда)

   
// Возврат массива из функции
   
МассивИзФункции = СозданиеМассива();

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

КонецПроцедуры
Передача массива в качестве параметра процедуры в 1С 8.3:
&НаКлиенте
Процедура ПроверкаМассива(СсылкаНаМассив)

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

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

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

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

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

КонецПроцедуры
Работа с многомерным массивом в 1С 8.3:
&НаКлиенте
Процедура РаботаСМногомернымМассивом(Команда)

   
// <<>,<>,<>>   <<>,<>,<>>
   
Массив = Новый Массив(2, 3);// два столбца, три строки

    // <<А>,<Б>,<В>>   <<>,<>,<>>
   
Массив[0][0] = "А";
   
Массив[0][1] = "Б";
   
Массив[0][2] = "В";

   
// <<А>,<Б>,<В>>   <<1>,<2>,<3>>
   
Массив[1][0] = "1";
   
Массив[1][1] = "2";
   
Массив[1][2] = "3";

   
// Обход элементов многомерного массива через простой цикл
   
Для Каждого СтрокаМассива Из Массив Цикл
        Для Каждого
ЭлементМассива Из СтрокаМассива Цикл
           
Сообщить(ЭлементМассива);
        КонецЦикла;
    КонецЦикла;

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

КонецПроцедуры
Получение фиксированного массива из обычного в 1С 8.3:
&НаКлиенте
Процедура ПолучениеФиксированногоМассиваИзОбычного(Команда)

   
Алфавит = Новый Массив;
   
Алфавит.Добавить("А");
   
Алфавит.Добавить("Б");
   
Алфавит.Добавить("В");
   
Алфавит.Добавить("Г");
   
Алфавит.Добавить("Д");

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

КонецПроцедуры
Получение последнего элемента массива в 1С 8.3:
&НаКлиенте
Процедура ПолучениеПоследнегоЭлементаМассива(Команда)

   
// Инициализация массива: ("Москва", "Санкт-Петербург", "Новосибирск", "Екатеринбург", "Казань")
   
МассивСтран = Новый Массив;
   
МассивСтран.Добавить("Москва");// 0
   
МассивСтран.Добавить("Санкт-Петербург");
   
МассивСтран.Добавить("Новосибирск");
   
МассивСтран.Добавить("Екатеринбург");
   
МассивСтран.Добавить("Казань");

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

КонецПроцедуры
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 30.03.2020
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому