Проект gpl-2C |
Документация\Уровень 0\Описание встроенного языка |
Пред. | След. | |
1.4.10 Функции среды исполнения |
1.5.1. Объект Массив (Array, Структура) |
1.5.2 Дерево значений |
1.5.1. Объект Массив (Array, Структура)
Массивы есть во многих языках программирования, но в 2С их реализация имеет свои особенности.
1.5.1.1. Объявление массива.
Объявление массива в программном модуле возможно разными способами.
1 Перем Мас[]; //Объявление переменной типа "Массив"
2 Мас[2]=4; //Объявление массива в операторе присвоения значения.
//Если переменной Мас не существовало, то неявно создается массив из 2х элементов
//и элементу с индексом 2 присваивается значение 4.
3 Мас=СоздатьОбъект("Массив"); //Объявление массива функцией СоздатьОбъект()
1.5.1.2. Численные и строковые индексы.
В языке 2С массивы могут иметь как численные, так и строковые индексы. При этом возможны многоразмерные массивы.
Мас[2]["Второй"]=4; //Такая запись допустима.
В случае объявления строковых индексов создается хэш-таблица. Для улучшения читаемости кода для массива со строковыми индексами возможна также следующая запись:
Мас[2].Второй=4; //Это выражение эквивалентно предыдущему.
Замечание: Для улучшения читаемости кода рекомендуется массивы со строковыми индексами объявлять с помощью функции СоздатьОбъект("Структура")
1.5.1.3. Методы
РазмерМассива(), SizeArray
Назначение: определяет размер численно-индексной части объекта массив
Параметры: нет
Возвращаемое значение: возвращает количество элементов численно-индексной части массива
РазмерСтруктуры(), SizeStruct
Назначение: определяет размер строчно-индексной части объекта массив (структура)
Параметры: нет
Возвращаемое значение: возвращает количество элементов строчно-индексной части массива (структуры
ИдентификаторПоНомеру(НомерПоПорядку), IdentifierByNumber
Назначение: определяет строковый идентификатор элемента структуры по относительному номеру.
Параметры: номер по порядку при последовательном переборе строчных индексов
Возвращаемое значение: возвращает строковый идентификатор элемента структуры.
Пример:
Для Сч=1 По Струк.РазмерСтруктуры() Цикл
Сообщить(Струк.ИдентификаторПоНомеру(Сч));
КонецЦикла;
Сортировать(ИдентификаторИлиНомерПодчМассива="",НаправлениеСортировки), Sort
Назначение: производит РАЗДЕЛЬНУЮ! сортировку значений элементов численно-индексной и строчно-индексной части объекта массив(структура). Сортировка значений происходит по строковому представлению элемента
Параметры:
Пар1 - идентификатор или номер по порядку подчиненного массива (элемента, имеющего тип массив)
Пар2 - направление сортировки 0 - возрастание, 1 - убывание
Возвращаемое значение: нет.
Пример:
Мас[1]=2;
Мас[2]=5;
Мас[3]="F";
Мас[4]=1;
Мас.Сорт();
Для Сч=1 По Мас.РазмерМассива() Цикл
Сообщить(Строка(Сч)+" "+Мас[Сч]);
КонецЦикла;
Вывод:
1 1
2 2
3 5
4 F
СортироватьИД(ИдентификаторИлиНомерПодчМассива,НаправлениеСортировки), SortId
Назначение: Имеет смысл только для массивов со строчно-индексной частью. Сортирует порядок последовательной выборки элементов
Параметры:
Пар1 - идентификатор или номер по порядку подчиненного массива (элемента, имеющего тип массив)
Пар2 - направление сортировки 0 - возрастание, 1 - убывание
Возвращаемое значение: нет.
Пример:
Мас["B"]=2; //В - латинская буква
Мас["K"]=5; //K - латинская буква
Мас["A"]="F"; //A - латинская буква
Мас["Г"]=1; //Г - буква кириллицы
Мас.СортИД();
Для Сч=1 По Мас.РазмерСтруктуры() Цикл
Сообщить(Мас.ИдентификаторПоНомеру(Сч)+" "+Мас.ЗначениеПоНомеру(Сч));
КонецЦикла;
Вывод:
A F
B 2
K 5
Г 1
УдалитьВсе(), RemoveAll
Назначение: удаляет все элементы массива(структуры)
Параметры: нет
Возвращаемое значение: нет
Загрузить(МассивИсточник, КолвоВложенныхМассивовЗагрузки=0, ФлОчистки=1), Load
Назначение: Загружает элементы массива-источника в массив-приемник.
Параметры:
Пар1 - переменная, которая содержит объект-массив(структура)
Пар2 - количество вложенных массивов загрузки (позволяет загружать многомерные массивы, если их размерность заранее известна
Пар3 - флаг очистки. если 1, то массив-приемник предварительно очищается
Возвращаемое значение: нет.
НайтиЗначение(Значение, ИдентификаторИлиИндексПодчМассива=""), FindValue
Назначение: Производит в массиве поиск элемента с заданным значением.
Параметры:
Пар1 - переменная, которая содержит заданное значение для поиска
Пар2 - идентификатор или индекс подчиненного массива (если задан, то поиск происходит только в подчиненном массиве)
Возвращаемое значение: индекс или строчный идентификатор элемента, содержащего заданное значение. Если значение не найдено, то возвращается пустое значение.
Замечание: К сожалению, метод возвращает индекс только первого найденного значения. Нет метода, позволяющего продолжить поиск в оставшейся части массива. Возможно это будет исправлено в будущих релизах.
НайтиИдентификатор(СтрИдентификатор), FindId
Назначение: Производит в массиве поиск строкового индекса с заданным значением.
Параметры:
Пар1 - переменная, которая содержит заданное значение для поиска
Возвращаемое значение: 1, если найден, 0 - не найден.
Удалить(СтрИдентификатор), Remove
Назначение: удаляет из массива(структуры) элемент с указанным строковым индексом.
Параметры:
Пар1 - переменная, которая содержит строковый индекс удаляемого элемента
Возвращаемое значение: нет.
ЗначениеПоНомеру(НомерПоПорядку), ValueByNumber
Назначение: определяет значение элемента структуры по относительному номеру.
Параметры: номер по порядку при последовательном переборе строчных индексов
Возвращаемое значение: возвращает строковый идентификатор элемента структуры.
Пример:
Для Сч=1 По Струк.РазмерСтруктуры() Цикл
Сообщить(Струк.ЗначениеПоНомеру(Сч));
КонецЦикла;
НайтиНомерИдентификатора(СтрИдентификатор), FindNumberID
Назначение: определяет относительный номер элемента в структуре по строковому идентификатору.
Параметры: строчный идентификатор
Возвращаемое значение: возвращает относительный номер элемента структуры с заданным идентификатором или 0.
Пример:
Для Сч=1 По Струк.РазмерСтруктуры() Цикл
Сообщить(Струк.НайтиНомерИдентификатора(Струк.ИдентификаторПоНомеру(Сч))); //возвращает значение Сч
КонецЦикла;