Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1C_ПрикладноеПрограммирование8.doc
Скачиваний:
45
Добавлен:
22.09.2019
Размер:
51.67 Mб
Скачать

1.4.5.3 Структура

Структура является универсальной коллекцией, т.е. объектом, предназначенным для работы с не хранящимися в базе данных совокупностями значений. Необходимость в ее использовании возникает, когда требуется работать с временным набором данных с чуть более сложной природой, нежели в массиве. Если элемент массива можно было характеризовать только числовым индексом и значением произвольного типа, то элемент структуры характеризуется строковым ключом и значением произвольного типа.

Чаще всего структуры применяют в ситуациях, когда необходимо узнать или использовать имена реквизитов, свойств, полей, подчиненных объектов для тех или иных объектов; узнать или использовать значения реквизитов, свойств, полей, подчиненных объектов по их именам для тех или иных объектов.

Кроме того, структуры удобно использовать для передачи параметров при работе с различными объектами.

Структуры могут создаваться конструктором «НОВЫЙ» или получаться в результате применения методов некоторых объектов. Ввод элементов в структуру можно осуществлять как посредством параметров конструктора, так и посредством метода «Вставить()».

Структура представляет собой динамический набор данных - коллекцию значений, каждый элемент которой состоит из пар (Ключ, Значение). Ключи структуры уникальны, и поэтому ими можно идентифицировать значения. Ключ может быть только строковым и должен удовлетворять требованиям, предъявляемым к именованию переменных встроенного языка. К значениям структуры можно обращаться как к свойствам объекта. При этом ключ используется как имя свойства. Для объекта доступен обход коллекции посредством оператора «Для каждого ... из ... Цикл». При обходе выбираются элементы коллекции. Структура используется обычно для хранения небольшого количества значений, каждое из которых имеет некоторое имя.

«КлючИЗначение» – объект является элементом коллекции «Структура», представляя собой пару из ключа и соответствующего ключу значения. Объект содержит значение элемента структуры и используется только для чтения.

«Ключ» – объект строкового типа, используется только для чтения. Содержит ключ элемента структуры. Он должен соответствовать требованиям, предъявляемым к именованию переменных встроенного языка. Регистр символов при обращении к ключу не имеет значения.

<Имя ключа> – объект произвольного типа, используемый только для чтения. Набор свойств содержит значения, соответствующие ключам. Имена свойств совпадают со значениями ключей.

Создание структуры чаще всего происходит посредством конструктора «Новый»:

СозданнаяСтруктура=Новый Структура;

где «СозданнаяСтруктура» – имя переменной, которая будет содержать созданный объект типа Структура.

После вышеприведенного создания в структуру можно вставлять произвольное количество элементов.

Если же мы хотим создать структуру с заранее определенными элементами – это можно сделать, например, так:

Оппонент=Новый Структура («Фамилия,Имя,Отчество,Возраст»,

«Иванов», «Иван», «Иванович», 70);

Первым параметром передается строка, в которой через запятую перечисляются ключи элементов структуры. Остальные параметры содержат значения для элементов структуры в том же порядке, в котором были перечислены ключи.

Для такой структуры впоследствии можно обращаться к любому из элементов для записи или для чтения значения. В случае необходимости к этой структуре можно еще добавлять новые элементы.

Для добавления элементов в структуру используется метод «Вставить()». Первым параметром указывается ключ, вторым – значение нового элемента.

Замечание: если в составе структуры уже был элемент с подобным ключом – то старый элемент будет замещен новым.

Например:

Оппонент=Новый Структура («Фамилия,Имя,Отчество,Возраст»,

«Иванов», «Иван», «Иванович», 70);

Оппонент.Вставить(«Обращение», «Господин»);

Оппонент.Вставить(«Возраст», 65);

Для чтения значений элементов структуры можно использовать несколько вариантов написания кода.

Для структуры «Оппонент», в составе которой есть элемент с ключом «Возраст» можно использовать явное указание значения ключа:

ТекущийВозраст=Оппонент.Возраст;

или передачу ключа в переменной:

КлючСтруктуры= «Возраст»;

ТекущийВозраст=Оппонент[КлючСтруктуры];

Также можно использовать метод «Свойство()», который получает значение элемента структуры по указанному ключу:

ТекущийВозраст=Неопределено;

Оппонент.Свойство(«Возраст»,ТекущийВозраст);

Для записи значений элементов структуры также можно использовать несколько вариантов написания кода.

Если мы хотим изменить значение возраста в структуре из вышеописанного примера – можно это сделать так:

Оппонент.Возраст=32;

или так:

Оппонент[«Возраст»]=32;

или так:

Оппонент.Вставить(«Возраст»,32);

Поскольку структура является коллекцией – перебрать элементы структуры можно посредством цикла перебора коллекции.

Например, чтобы сообщить обо всех ключах и значениях элементов структуры «СтруктураПараметров», можно сделать следующее:

Для Каждого Элемент из СтруктураПараметров Цикл

Сообщить(Элемент.Ключ+ «:»+Элемент.Значение);

КонецЦикла;

Чтобы удалить элемент структуры – необходимо знать его ключ.

Например, чтобы удалить из структуры «СтруктураПараметров» элемент с ключом «Номенклатура», достаточно сделать следующее:

СтруктураПараметров.Удалить(«Номенклатура»);

Если же нужно удалить все элементы структуры – применяется метод «Очистить()»:

СтруктураПараметров.Очистить();

Все ключи элементов структуры – уникальны. Поэтому добавление новых элементов и замена (установка) значений для «старых» элементов выполняется одним и тем же методом «Вставить()»:

Структура=Новый Структура;

// Добавить новый элемент

Структура.Вставить(«Цвет»,WebЦвета.Белый);

// Установить значение для элемента с ключом «Цвет»

Структура.Вставить(«Цвет», WebЦвета.Синий);

Результатом работы представленного примера будет структура, состоящая только из одного элемента: ключ у него – «Цвет», значение – «Синий» из системного набора значений «WebЦвета».