Встроенный язык платформы 1С:Предприятие 8.3 позволяет создавать двумерные и многомерные массивы. По своей сути — это массивы массивов (ведь никто не запрещал задавать в качестве элементов массива другие массивы). Давайте на примерах разберемся, как создавать и работать с такими многомерными массивами.
Двумерный массив
Ниже приведен пример программного создания двумерного массива размером M строк на N столбцов:
М = 2;//количество строк N = 3;//количество столбцов //создаем основной массив ММ = Новый Массив(M); //элементы массива тоже массивы ММ[0] = Новый Массив(N); ММ[1] = Новый Массив(N);
Такой массив может хранить M * N
элементов. В нашем случае это 6. Для программного обращения к элементам двумерного массива необходимо указывать имя массива, а также два индекса: первый — индекс строки, второй — индекс колонки:
ММ[0][0] = 0; ММ[0][1] = 1; ММ[0][2] = 2; ММ[1][0] = 10; ММ[1][1] = 11; ММ[1][2] = 12;
Для программного перебора элементов двумерного массива нам понадобится двойной цикл: первый по элементам основного массива и второй цикл по элементам вложенного массива:
Для ИндМ = 0 По ММ.ВГраница() Цикл МассивМ = ММ[ИндМ]; Для ИндН = 0 По МассивМ.ВГраница() Цикл Сообщить("ММ[" + ИндМ + "][" + ИндН + "] = " + ММ[ИндМ][ИндН]); КонецЦикла; КонецЦикла;
Многомерный массив
На практике мне еще не приходилось сталкиваться с задачами, которые решаются с использованием многомерного массива. Хотя в теории программирования это одна из распространенных задач. Давайте рассмотрим работу с многомерными массивами на базе трехмерного массива. Итак, создание и инициализация массива:
M = 2;//количество строк N = 3;//количество столбцов L = 5;//глубина ячейки //инициализация основного массива MNL = Новый Массив(M); Для ИндM = 0 По MNL.ВГраница() Цикл //иницаилизация вложенного массива уровня N MNL[ИндM] = Новый Массив(N); Для ИндN = 0 По MNL[ИндM].ВГраница() Цикл //инициализация вложенного массива уровня L MNL[ИндM][ИндN] = Новый Массив(L); Для ИндL = 0 По MNL[ИндM][ИндN].ВГраница() Цикл MNL[ИндM][ИндN][ИндL] = "" + ИндM + ИндN + ИндL; КонецЦикла;//ИндL КонецЦикла;//ИндN КонецЦикла;//ИндM
Такой массив может хранить M * N * L
элементов. В нашем случае это 30. Для программного обращения к элементам трехмерного массива необходимо указывать имя массива, а также три индекса: первый — индекс строки, второй — индекс колонки, третий — индекс глубины:
MNL[0][0][0] = 000 MNL[0][0][1] = 001 MNL[0][0][2] = 002 MNL[0][0][3] = 003 MNL[0][0][4] = 004 MNL[0][1][0] = 010 MNL[0][1][1] = 011 MNL[0][1][2] = 012 MNL[0][1][3] = 013 MNL[0][1][4] = 014 ...
Для программного перебора элементов трехмерного массива нам понадобится тройной цикл: первый по элементам основного массива, второй — по элементам вложенного массива уровня N и третий — по элементам вложенного массива уровня L:
//вывод элементов массива Для ИндM = 0 По MNL.ВГраница() Цикл Для ИндN = 0 По MNL[ИндM].ВГраница() Цикл Для ИндL = 0 По MNL[ИндM][ИндN].ВГраница() Цикл Сообщить("MNL[" + ИндM + "][" + ИндN + "][" + ИндL + "] = " + MNL[ИндM][ИндN][ИндL]); КонецЦикла;//ИндL КонецЦикла;//ИндN КонецЦикла;//ИндM
Думаю, изучив эти примеры вы сможете самостоятельно построить более сложные многомерные массивы. Желаю удачи!
Читайте также:
Поделиться страницей в соц.сетях