Структура является универсальной коллекцией значений. Она представляет собой набор пар ключ и значение. Ключ структуры может быть только строкой и должен удовлетворять требованиям названия переменных в 1С. Структуру можно передавать с клиента на сервер и обратно. Структуру часто используют для передачи параметров между процедурами и функциями.
- Создание структуры
- Методы для работы со структурой
- Обращение к свойствам структуры
- Перебор структуры
- Примеры работы со структурой
- Как вставить новый ключ в структуру
- Как получить значение по ключу структуры
- Как удалить ключ из структуры
- Как проверить есть ли в структуре ключ
- Как узнать количество элементов структуры
- Как удалить все элементы из структуры
- Как скопировать структуру
- Фиксированная Структура
Создание структуры
Структура создается с помощью конструктора:
1 |
СтруктураПараметров = Новый Структура; |
Можно сразу в конструкторе указать ключи и значения:
1 2 |
СтруктураПараметров = Новый Структура("КлючСтруктуры1, КлючСтруктуры2", 25, "значение"); |
Будет создана структура с двумя ключами КлючСтруктуры1 и КлючСтруктуры2. При этом значение ключа КлючСтруктуры1 будет равно 25, а значение ключа КлючСтруктуры2 будет равно строке «значение». В дальнейшем можно изменять значения каждого ключа, можно добавлять новые ключи или удалять существующие. Если для какого-то ключа не указать значение, то оно будет равно Неопределено.
1 2 |
//оба значения будут равны Неопределено СтруктураПараметров = Новый Структура("КлючСтруктуры1, КлючСтруктуры2"); |
Методы для работы со структурой
- Вставить(<Ключ>, <Значение>) — добавляет новое значение в структуру, если уже есть значение с таким ключом, то оно будет заменено.
- Удалить(<Ключ>) — удаляет значение по ключу.
- Количество() — количество элементов структуры.
- Очистить() — удаляет все элементы структуры.
- Свойство(<Ключ>, <НайденноеЗначение>) — получает значение по ключу в переменную <НайденноеЗначение> (если ключа нет, то <НайденноеЗначение> будет равно Неопределено), а также проверяет есть ли такой ключ. Если есть, то вернет Истина, иначе Ложь.
Обращение к свойствам структуры
К свойствам (ключам) структуры можно обращаться через точку «.» после имени переменной типа структура:
1 2 3 |
СтруктураПараметров = Новый Структура("КлючСтруктуры1, КлючСтруктуры2", 25, "значение"); СтруктураПараметров .КлючСтруктуры1 = "новое значение"; |
Можно через оператор индексации []:
1 2 3 |
СтруктураПараметров = Новый Структура("КлючСтруктуры1, КлючСтруктуры2", 25, "значение"); СтруктураПараметров ["КлючСтруктуры1"] = "новое значение"; |
Перебор структуры
Перебрать элементы структуры можно с помощью цикла Для Каждого. На каждой итерации цикла будет переменная типа КлючИЗначение. Через свойства Ключ и Значение данной переменной можно только читать значения, изменить нельзя:
1 2 3 4 5 |
Для Каждого КлючИЗначение Из СтруктураПараметров Цикл //метод Сообщить выводит значение на экран Сообщить(КлючИЗначение.Ключ); Сообщить(КлючИЗначение.Значение); КонецЦикла; |
Примеры работы со структурой
Как вставить новый ключ в структуру
1 2 |
СтруктураСвойств = Новый Структура; СтруктураСвойств.Вставить("НовыйКлюч", 2); |
Как получить значение по ключу структуры
1 2 3 |
Значение = СтруктураСвойств.НовыйКлюч; //или так Значение = СтруктураСвойств["НовыйКлюч"]; |
Как удалить ключ из структуры
1 |
СтруктураСвойств.Удалить("НовыйКлюч"); |
Как проверить есть ли в структуре ключ
1 2 3 4 5 |
ЗначениеКлюча = Неопределено; ЕстьКлюч = СтруктураСвойств.Свойство("НовыйКлюч"); Если ЕстьКлюч Тогда Сообщить(ЗначениеКлюча); КонецЕсли; |
Как узнать количество элементов структуры
1 |
Колво = СтруктураСвойств.Количество(); |
Как удалить все элементы из структуры
1 |
СтруктураСвойств.Очистить(); |
Как скопировать структуру
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Стр = Новый Структура("Ключ1", 1); ВложеннаяСтр = Новый Структура("Ключ2", 2); Стр.Вставить("ВложеннаяСтр", ВложеннаяСтр); Копия = Новый Структура; Для Каждого КлючИЗначение Из Стр Цикл Копия.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); КонецЦикла; //в этом случае в структуре Копия в ключе ВложеннаяСтр //будет та же самая структура, что и в переменной //ВложеннаяСтр и в структуре Стр //для создания полной копии можно сделать так: ПолнаяКопия = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(Стр)); |
Фиксированная Структура
Фиксированная структура — это та же самая структура, но после создания нельзя изменить состав ключей и значения ключей. Можно создать на основании обычной структуры (будет создана полная копия), по ключам и значениям или пустую структуру:
1 2 3 4 5 6 7 8 9 |
//пустая структура ФиксСтр = Новый ФиксированнаяСтруктура; //по ключам и значениям ФиксСтр = Новый ФиксированнаяСтруктура("Ключ1, Ключ2", 1, 2); //на основании обычной структуры ОбычнаяСтруктура = Новый Структура("Ключ1, Ключ2", 1, 2); ФиксСтр = Новый ФиксированнаяСтруктура(ОбычнаяСтруктура); |
У фиксированной структуры есть только 2 метода:
- Количество()
- Свойство(<Ключ>, <НайденноеЗначение>)
К ключам структуры можно обращаться как к свойству: ФиксСтр.Ключ1, но нельзя менять значение свойства.
На основании фиксированной структуры можно создать обычную структуру:
1 2 3 4 |
ФиксСтр = Новый ФиксированнаяСтруктура("Ключ1, Ключ2", 1, 2); ОбычнаяСтруктура = Новый Структура(ФиксСтр); ОбычнаяСтруктура.Ключ1 = 11; //теперь можно менять значения |