Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

Работа с массивом в 1С 8.3 на примерах

Объекты типа массив в 1С 8.3 представляют собой совокупность упорядоченных значений любого типа, в том числе и типа «массив», что в свою очередь позволяет организовывать многомерные массивы. Идентификация значений осуществляется по индексам, нумерация которых начинается с «0».

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

Синтаксис:

Новый Массив(<КоличествоЭлементов1>,…,<КоличествоЭлементовN>) 

Примеры:

//Одномерный массив
ПустойМассив = Новый Массив();//Пустой массив

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

//Двумерный массив в 1С 8.3
ДвумерныйМассив = Новый Массив(2,3);//Каждый из двух элементов                      
// двумерного массива является массивом
// из трёх элементов

//Фиксированный (неизменный) массив
ФиксМассив = Новый ФиксированныйМассив(Массив2);                              

Добавление элементов в массив

Примеры:

Массив = Новый Массив();//Создадим массив для примера
//Метод Добавить().Добавляет элемент в конец массива
Массив.Добавить("знач1");//Добавили элемент с типом строка
Массив.Добавить();//Добавили пустой элемент в массив

Результат:

//Метод Вставить().Вставляет значение в массив по индексу.
Массив.Вставить(0);//Вставили пустой элемент в начало массива. Тем самым
//произошла переиндексация всего массива. Элемент с индексом
//[0] стал [1], [1] стал [2]

Результат:

Массив.Вставить(5,"знач6");//Вставили элемент со значением "знач6" по индексу [5].
//По недостающим индексам [3] и [4], произошло добавление
//пустых элементов

Результат:

Получение значения элемента по индексу

Массив.Получить(5);//В скобках указываем индекс (число) желаемого элемента
ДвумерныйМассив.Получить(0).Получить(0);

Поиск в массиве 1С

Массив.Найти("знач6");//В скобках указываем значение искомого элемента

Присвоение значений элементам массива

Примеры:

Массив.Установить(0,10);//Присвоили ранее созданному элементу с
// индексом [0] значение "10", тип число

Массив[2] = "знач3";//Присвоили ранее созданному элементу с индексом [2]
//значение "знач3", тип строка

ДвумерныйМассив[0][0] = "ЗНАЧ";//Присвоили ранее созданному элементу
//с индексом [0][0] значение "ЗНАЧ", тип строка

Как узнать количество элементов массива (размер массива)

Массив.ВГраница();//Получаем наибольший индекс элемента массива (число)
Массив.Количество();//Получаем количество элементов в массиве (число)

Перебор массива 1С

Примеры:

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

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

Перебор всех элементов двумерного массива

Примеры:

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

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

Удаление элементов из массива

Примеры:

Получите 267 видеоуроков по 1С бесплатно:

//Удаление элемента из массива по индексу
Массив.Удалить(3);//В скобках указываем индекс (число) удаляемого элемента

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

Как разложить строку в массив

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

МассивСтрок = Новый Массив;
Строка = "Строку в массив";
МассивСтрок = СтрРазделить(Строка, " ");

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

Результат:

Пример преобразования массива в список значений

&НаКлиенте
Процедура МассивВ_СписокЗначений(Команда)

Массив = Новый Массив();
Массив.Добавить("знач1");
Массив.Добавить("знач2");
Массив.Добавить("знач3");

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

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

Результат:

Пример преобразования массива в таблицу значений

&НаКлиенте

Процедура МассивВ_ТЗ(Команда)

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

МассивВ_ТЗ_Сервер (Массив);

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


&НаСервере
Процедура МассивВ_ТЗ_Сервер (Массив)

ТЗ = Новый ТаблицаЗначений;//Создаём таблицу значений
ТЗ.Колонки.Добавить("НаборЧисел");

//Добавляем строки в ТЗ
Для Индекс = 0 по Массив.ВГраница() Цикл
НовСтрока = ТЗ.Добавить();
КонецЦикла;

ТЗ.ЗагрузитьКолонку(Массив,"НаборЧисел");//преобразуем в таблицу значений
ТЗизМассива = ТЗ;//результат

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

Результат:

Сортировка массива 1С разными способами

Примеры:

//Через список значений
&НаКлиенте
Процедура СортироватьМассивЧерезСЗ(Команда)

Массив = Новый Массив();
Массив.Добавить("знач1");
Массив.Добавить("знач2");
Массив.Добавить("знач3");

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

Массив = СЗ.ВыгрузитьЗначения();//В массив

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

//Через таблицу значений
&НаКлиенте
Процедура СортироватьМассивЧерезТЗ(Команда)

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

ОтсортированныйМассив = СортироватьМассивЧерезТЗ_Сервер(Массив);

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


&НаСервере
Функция СортироватьМассивЧерезТЗ_Сервер(Массив)

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("НаборЧисел");

//Добавляем строки в ТЗ
Для Индекс = 0 по Массив.ВГраница() Цикл
НовСтрока = ТЗ.Добавить();
КонецЦикла;


ТЗ.ЗагрузитьКолонку(Массив,"НаборЧисел");//Преобразуем в таблицу значений
ТЗ.Сортировать("НаборЧисел Убыв");//Сортируем по убыванию
ТЗ.Сортировать("НаборЧисел Возр");//Сортируем по возрастанию
Массив = ТЗ.ВыгрузитьКолонку("НаборЧисел");//В массив

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

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

Как свернуть массив в 1С

Пример:

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

Массив = Новый Массив();
Массив.Добавить("Яблоко");
Массив.Добавить("Яблоко");
Массив.Добавить("Банан");

Соответствие = Новый Соответствие;
Для каждого Элемент Из Массив Цикл
Соответствие.Вставить(Элемент);
КонецЦикла;


Массив.Очистить();

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

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

Результат:

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Остались вопросы?

СПРОСИТЕ в комментариях!

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

Ваш адрес email не будет опубликован.