ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 08.11.2023
Просмотров: 20
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
-Универсальные коллекции значений
При решении различных задач могут возникать алгоритмы, в которых необходимо использовать множество различных данных, например: "Найти максимальное значение из следующего набора чисел: 3,7,12,1,8". При использовании известных нам механизмов переменных и встроенных функций, алгоритм будет следующим:
Данный способ не универсален, т.к. при добавлении нового значения потребуется определение новой переменной:
Чтобы при добавлении новых значений не требовалось добавления новых переменных, необходимо все множество значений определить как одну переменную с возможностью хранения набора (коллекции) значений и обеспечить работу с каждым значением в наборе. Различные способы работы с наборами определяют и разнообразие видов коллекций значений:
Универсальные коллекции значений называются объектами встроенного языка. Объект встроенного языка - сложная конструкция, это связано с тем, что объект содержит в себе множество примитивных значений. С объектами можно выполнять какие-то действия: добавить, удалить, заменить и т.д. Действия, которые можно выполнять над объектом, называются методы. У каждого сложного типа есть собственный набор методов. Но прежде, чем начать работу с данным объектом необходимо создать «заготовку», это действие называют – конструктор. Конструктор создает объект и всегда начинается с обязательного слова Новый, а далее пишут имя типа объекта.
-
Массив
Начнем практическое освоение универсальных коллекций с массивов, т.к. данный вид коллекции определяет самый простой способ хранения значений, как набора элементов и методы доступа к ним в наборе.
Для начала рассмотрим возможности использования массивов в 1С:Предприятие 8:
-
В системе 1С:Предприятие 8 есть возможность работы как с динамическими массивами (размерность может изменяться в процессе эксплуатации) так и с фиксированными (без возможности изменения размерности в момент использования).
-
Нет жестких ограничений на использование различных типов значений в рамках одного массива, т.е. массивы 1С:Предприятия являются гетерогенными:
0 | "1С:Предприятие" |
1 | 8 |
-
Поддерживаются разные по сложности структуры массивы:
-
Простые (одномерные, линейные) массивы можно представить в виде таблицы с двумя колонками "индекс элемента значения" и "значение":
Индекс элемента значения | Значение |
| |
-
Сложные массивы (многомерные) могут быть представлены как массивы, значения которых представлены другими массивами, т.е. как массивы массивов
Индекс элемента значения | Значение | ||||
|
| ||||
|
|
Определение значения переменной как массива в системе 1С:Предприятие 8 осуществляется с помощью конструктора встроенного языка "Новый" с указанием типа "Массив":
В данном случае будет создан пустой массив, т.е. без элементов. Элементы разными способами могут добавляться позже.
Если необходимо определить массив с начальным количеством элементов, можно указать их количество при использовании конструктора. Например, для массива с 6-ю элементами:
Все массивы данного вида в системе 1С:Предприятие 8 являются динамическими, т.е. с изменяемой размерностью. Для определения фиксированных массивов есть специальный тип "Фиксированный массив" (рассмотрим в конце данной темы).
Хранение значения в массиве осуществляется по индексу, представляющему собой целое число (первый элемент набора имеет индекс равный нулю):
0 | Иванов |
1 | Петров |
Работа с элементом массива осуществляется по индексу:
Для работы с данными массива необходимо использовать методы, которые представлены в Синтакс-помощнике:
Для использования методов работы с массивом в тексте алгоритма указываем сначала имя переменной, содержащей массив, затем через точку имя метода:
<ИмяПеременной>.<ИмяМетода>
Точка между именем переменной и именем метода определяет, что указанный метод применяется к значению, хранящемуся в данной переменной.
Например, при работе с массивом, можно использовать методы получения количества элементов в массиве:
Для поиска элемента массива по значению можно воспользоваться методом найти, возвращающем (в нашем примере) индекс элемента массива:
-
Наполнение массива и доступ к значениям массива может происходить разными способами:
записью и чтением значений, как через оператор [], так и методами Установить и Получить:
добавление элемента значения в конец набора с расширением размерности массива:
вставкой элемента значения по определенному индексу с расширением размерности массива:
-
Очистка массива может осуществляться:
выборочно по элементам, через указание индекса элемента с уменьшением размерности:
полностью - все элементы удаляются с уменьшением размерности массива до нуля (получаем пустой массив):
Если требуется ограничить возможности по изменению размерности массива, можно создать фиксированный массив (на основании динамического массива, как копию):
Для обхода элементов массива (и других коллекций значений) часто используется цикл Для Каждого:
Для Каждого <Элемент> Из <Коллекция> Цикл
// Операторы
КонецЦикла;
Цикл будет закончен, когда будут перебраны все элементы коллекции. Использование такого цикла рассмотрим на примере последовательного перебора всех элементов одномерного массива, с последующим выводом значений элементов в окно сообщений. В приведенном ниже примере цикл для каждого работает 3 раза (ровно столько, сколько элементов в массиве Массив), каждый раз сохраняя очередной рассматриваемый элемент массива в переменную Элемент и выводя значение этой переменной.
Пример решения задачи с использованием массива.
Имеется строка входных данных «Бендер,Балаганов,Воробьянинов».
Требуется перевести все данные в массив. Вывести все значения массива.
Для решения задачи воспользуемся встроенными функциями работы со значениями типа Строка:
У этой функции есть три параметра: Строка, Разделитель и ВключатьПустые.
Строка – это исходные данные, разделяемая строка. Разделитель – это строка символов, каждый из которых является индивидуальным разделителем. ВключатьПустые указывает необходимость включать в результат пустые строки. Возвращаемое значение: массив со строками, которые получились в результате разделения исходной строки. В результате должен получиться Массив, в каждой ячейке которого будет храниться Тип Строка.
Для решения задачи – заводим исходные данные:
Применить метод СтрРазделить к исходной строке: первый параметр – ИсходныеДанные, второй параметр «,» - запятая, третий пока не ставим.
Чтобы вывести все значения используйте Цикл Для Каждого
То, что требовалось в задаче.
Если исходная строка будет записана следующим образом (вместо запятой будет стоять пробел), то результат будет другой. Пробел не является символом разделителем, чтобы исправить данную ситуацию, после запятой добавьте пробел.
Теперь функция СтрРазделить будет делить данные и по запятой, и по пробелу. Каждый символ в строке является самостоятельным разделителем.
Теперь о параметре ВключатьПустые. Если в конце строки поставить пробел, то программа выведет пустое сообщение: