Проект 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 По Струк.РазмерСтруктуры() Цикл

       Сообщить(Струк.НайтиНомерИдентификатора(Струк.ИдентификаторПоНомеру(Сч))); //возвращает значение Сч

КонецЦикла;