Структура представляет собой некий контейнер, который хранит пары ключ и значение. Ключ в структуре может быть только строкового типа и должен удовлетворять требованиям названия переменных в 1С. Для значения структуры нет ограничений. Структуру можно создать как на клиенте, так и на сервере. А также структуру можно передавать с клиента на сервер и обратно.
Создание структуры
Для создания структуры используется конструктор:
СтруктураПараметров = Новый Структура;
Можно сразу в конструкторе указать ключи и значения:
СтруктураПараметров = Новый Структура("КлючСтруктуры1, КлючСтруктуры2", 25, "значение");
В этом случае будет создана структура с двумя ключами КлючСтруктуры1 и КлючСтруктуры2. При этом значение ключа КлючСтруктуры1 будет равно 25, а значение ключа КлючСтруктуры2 будет равно строке «значение». В дальнейшем можно изменять значения каждого ключа, можно добавлять новые ключи или удалять существующие. Если для какого-то ключа не указать значение, то оно будет равно Неопределено.
//оба значения будут равны Неопределено
СтруктураПараметров = Новый Структура("КлючСтруктуры1, КлючСтруктуры2");
Добавление нового ключа в структуру
Чтобы добавить новый ключ в структуру после ее создания можно использовать метод Вставить. Если в структуре уже был такой ключ, то значение будет заменено.
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("НовыйКлюч", 2);
Если попытаться добавить в структуру ключ, который начинается с цифры, то будет вызвано исключение «Задано неправильное имя атрибута структуры»:
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("1", 2);
//при компиляции модуля будет ошибка:
//Задано неправильное имя атрибута структуры
Обращение к свойствам структуры
К свойствам (ключам) структуры можно обращаться через точку «.» после имени структуры:
СтруктураПараметров = Новый Структура("КлючСтруктуры1, КлючСтруктуры2", 25, "значение");
СтруктураПараметров.КлючСтруктуры1 = "новое значение";
Можно через оператор индексации []:
СтруктураПараметров = Новый Структура("КлючСтруктуры1, КлючСтруктуры2", 25, "значение");
СтруктураПараметров["КлючСтруктуры1"] = "новое значение";
Перебор структуры
Перебрать элементы структуры можно с помощью цикла Для Каждого. На каждой итерации цикла будет переменная типа КлючИЗначение. Через свойства Ключ и Значение данной переменной можно только читать значения, изменить нельзя:
Для Каждого КлючИЗначение Из СтруктураПараметров Цикл
//метод Сообщить выводит значение на экран
Сообщить(КлючИЗначение.Ключ);
Сообщить(КлючИЗначение.Значение);
КонецЦикла;
Как удалить ключ из структуры
Удалить ключ из структуры можно методом Удалить. Данный метод удалит только один ключ. Если нужно удалить все ключи из структуры, то нужно использовать метод Очистить:
СтруктураПараметров.Удалить("НовыйКлюч"); //удалит только один ключ
СтруктураПараметров.Очистить(); //удалит все ключи из структуры
Как проверить есть ли в структуре ключ
Метод Свойство позволяет проверить наличие в структуре указанного ключа. Если ключ присутствует в структуре, то метод вернет Истина. Если такого ключа нет, то метод вернет Ложь.
ЕстьКлюч = СтруктураПараметров.Свойство("НовыйКлюч");
Если ЕстьКлюч Тогда
Сообщить("Ключ найден!");
КонецЕсли;
Также с помощью данного метода можно получить значение по ключу:
Перем Значение;
//вторым параметром передаем переменную, в которую будет помещено значение
ЕстьКлюч = СтруктураПараметров.Свойство("НовыйКлюч", Значение);
Если ЕстьКлюч Тогда
Сообщить(Значение);
КонецЕсли;
Если в структуре нет такого ключа, то в переменной Значение будет Неопределено.
Поиск в структуре
Чтобы найти какой-то ключ в структуре можно использовать все тот же самый метод Свойство:
Перем НайденноеЗначение;
Если СтруктураПараметров.Свойство("НовыйКлюч", НайденноеЗначение) Тогда
Сообщить("Значение найдено: " + НайденноеЗначение);
Иначе
Сообщить("Значение не найдено");
КонецЕсли;
Но если поиск в структуре нужно выполнить по значению, то придется перебрать всю структуру:
//поищем в структуре значение "Поиск"
НашлиЗначение = Ложь;
Для Каждого КлИЗнач Из СтруктураПараметров Цикл
Если КлИЗнач.Значение = "Поиск" Тогда
//нашли
НашлиЗначение = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не НашлиЗначение Тогда
//не нашли
КонецЕсли;
Количество элементов структуры
Узнать количество элементов (ключей, свойств) структуры можно с помощью метода Количество:
Колво = СтруктураПараметров.Количество();
Как скопировать структуру
Стр = Новый Структура("Ключ1", 1);
ВложеннаяСтр = Новый Структура("Ключ2", 2);
Стр.Вставить("ВложеннаяСтр", ВложеннаяСтр);
Копия = Новый Структура;
Для Каждого КлючИЗначение Из Стр Цикл
Копия.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;
//в этом случае в структуре Копия в ключе ВложеннаяСтр
//будет та же самая структура, что и в переменной
//ВложеннаяСтр и в структуре Стр
//для создания полной копии можно сделать так:
ПолнаяКопия = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(Стр));
Фиксированная Структура
Фиксированная структура - это та же самая структура, но после создания нельзя изменить состав ключей и значения. Можно создать на основании обычной структуры (будет создана полная копия), по ключам и значениям или пустую структуру:
//пустая структура
ФиксСтр = Новый ФиксированнаяСтруктура;
//по ключам и значениям
ФиксСтр = Новый ФиксированнаяСтруктура("Ключ1, Ключ2", 1, 2);
//на основании обычной структуры
ОбычнаяСтруктура = Новый Структура("Ключ1, Ключ2", 1, 2);
ФиксСтр = Новый ФиксированнаяСтруктура(ОбычнаяСтруктура);
У фиксированной структуры есть только 2 метода:
- Количество()
- Свойство(<Ключ>, <НайденноеЗначение>)
К ключам структуры можно обращаться как к свойству: ФиксСтр.Ключ1, но нельзя менять значение свойства.
На основании фиксированной структуры можно создать обычную структуру:
ФиксСтр = Новый ФиксированнаяСтруктура("Ключ1, Ключ2", 1, 2);
ОбычнаяСтруктура = Новый Структура(ФиксСтр);
ОбычнаяСтруктура.Ключ1 = 11; //теперь можно менять значения
Смотрите также:
Электронный учебник по по программированию в 1С Рекомендации по изучению программирования 1С с нуля Программное решение для сдачи и подготовки к экзаменам Программирование в 1С 8.3 с нуля - краткий самоучитель Комплексная подготовка программистов 1С:Предприятие 8.2 Сайты с уроками программирования и со справочниками Youtube-каналы с уроками программирования Сайты для обучения программированию Лекции и уроки