Структура в 1С

Структура является универсальной коллекцией значений. Она представляет собой набор пар ключ и значение. Ключ структуры может быть только строкой и должен удовлетворять требованиям названия переменных в 1С. Структуру можно передавать с клиента на сервер и обратно. Структуру часто используют для передачи параметров между процедурами и функциями.

Создание структуры

Структура создается с помощью конструктора:

ПеременнаяТипаСтруктура = Новый Структура;

Можно сразу в конструкторе указать ключи и значения:

ПеременнаяТипаСтруктура = Новый Структура("КлючСтруктуры1, КлючСтруктуры2", 
											25, "значение");

Будет создана структура с двумя ключами КлючСтруктуры1 и КлючСтруктуры2. При этом значение ключа КлючСтруктуры1 будет равно 25, а значение ключа КлючСтруктуры2 будет равно строке «значение». В дальнейшем можно изменять значения каждого ключа, можно добавлять новые ключи или удалять существующие. Если для какого-то ключа не указать значение, то оно будет равно Неопределено.

//оба значения будут равны Неопределено
ПеременнаяТипаСтруктура = Новый Структура("КлючСтруктуры1, КлючСтруктуры2");

Методы для работы со структурой

  • Вставить(<Ключ>, <Значение>) — добавляет новое значение в структуру, если уже есть значение с таким ключом, то оно будет заменено.
  • Удалить(<Ключ>) — удаляет значение по ключу.
  • Количество() — количество элементов структуры.
  • Очистить() — удаляет все элементы структуры.
  • Свойство(<Ключ>, <НайденноеЗначение>) — получает значение по ключу в переменную <НайденноеЗначение> (если ключа нет, то <НайденноеЗначение> будет равно Неопределено), а также проверяет есть ли такой ключ. Если есть, то вернет Истина, иначе Ложь.

Обращение к свойствам структуры

К свойствам (ключам) структуры можно обращаться через точку «.» после имени переменной типа структура:

ПеременнаяТипаСтруктура = Новый Структура("КлючСтруктуры1, КлючСтруктуры2", 
											25, "значение");
ПеременнаяТипаСтруктура.КлючСтруктуры1 = "новое значение";

Можно через оператор индексации []:

ПеременнаяТипаСтруктура = Новый Структура("КлючСтруктуры1, КлючСтруктуры2", 
											25, "значение");
ПеременнаяТипаСтруктура["КлючСтруктуры1"] = "новое значение";

Перебор структуры

Перебрать элементы структуры можно с помощью цикла Для Каждого. На каждой итерации цикла будет переменная типа КлючИЗначение. Через свойства Ключ и Значение данной переменной можно только читать значения, изменить нельзя:

Для Каждого КлючИЗначение Из ПеременнаяТипаСтруктура Цикл
	//метод Сообщить выводит значение на экран
	Сообщить(КлючИЗначение.Ключ);
	Сообщить(КлючИЗначение.Значение);
КонецЦикла;

Примеры работы со структурой

Как вставить новый ключ в структуру

СтруктураСвойств = Новый Структура;
СтруктураСвойств.Вставить("НовыйКлюч", 2);

Как получить значение по ключу структуры

Значение = СтруктураСвойств.НовыйКлюч;
//или так
Значение = СтруктураСвойств["НовыйКлюч"];

Как удалить ключ из структуры

СтруктураСвойств.Удалить("НовыйКлюч");

Как проверить есть ли в структуре ключ

ЗначениеКлюча = Неопределено;
ЕстьКлюч = СтруктураСвойств.Свойство("НовыйКлюч");
Если ЕстьКлюч Тогда
	Сообщить(ЗначениеКлюча); 
КонецЕсли;

Как узнать количество элементов структуры

Колво = СтруктураСвойств.Количество();

Как удалить все элементы из структуры

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

Как скопировать структуру

Стр = Новый Структура("Ключ1", 1);
ВложеннаяСтр = Новый Структура("Ключ2", 2);
Стр.Вставить("ВложеннаяСтр", ВложеннаяСтр);
 
Копия = Новый Структура;
Для Каждого КлючИЗначение Из Стр Цикл
	Копия.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);	
КонецЦикла;
//в этом случае в структуре Копия в ключе ВложеннаяСтр
//будет та же самая структура, что и в переменной 
//ВложеннаяСтр и в структуре Стр
 
//для создания полной копии можно сделать так:
ПолнаяКопия = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(Стр));

Фиксированная Структура

Фиксированная структура — это та же самая структура, но после создания нельзя изменить состав ключей и значения ключей. Можно создать на основании обычной структуры (будет создана полная копия), по ключам и значениям или пустую структуру:

//пустая структура
ФиксСтр = Новый ФиксированнаяСтруктура;
 
//по ключам и значениям
ФиксСтр = Новый ФиксированнаяСтруктура("Ключ1, Ключ2", 1, 2);
 
//на основании обычной структуры
ОбычнаяСтруктура = Новый Структура("Ключ1, Ключ2", 1, 2);
ФиксСтр = Новый ФиксированнаяСтруктура(ОбычнаяСтруктура);

У фиксированной структуры есть только 2 метода:

  • Количество()
  • Свойство(<Ключ>, <НайденноеЗначение>)

К ключам структуры можно обращаться как к свойству: ФиксСтр.Ключ1, но нельзя менять значение свойства.

На основании фиксированной структуры можно создать обычную структуру:

ФиксСтр = Новый ФиксированнаяСтруктура("Ключ1, Ключ2", 1, 2);
 
ОбычнаяСтруктура = Новый Структура(ФиксСтр);
ОбычнаяСтруктура.Ключ1 = 11; //теперь можно менять значения

Рейтинг
( 1 оценка, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями: