Как проверить есть-ли поле в структуре?
Структура (Structure)
Свойство (Property)
Синтаксис:
Свойство(<Ключ>, <НайденноеЗначение>)
Параметры:
Тип: Строка. Ключ для поиска свойства.
<НайденноеЗначение> (необязательный)
Тип: Произвольный. В данный параметр возвращается найденное значение. Если ключа нет в структуре, то возвращается Неопределено.
Возвращаемое значение:
Тип: Булево. Истина — ключ найден; Ложь — в противном случае.
Описание:
Получает значение элемента по указанному имени, а также проверяет, имеется ли указанное свойство.
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:
(5)
Если ключа нет в структуре, то возвращается Неопределено.
Если такой ключ есть в структуре (значение неопределено), то возвращается Неопределено.
Получли Неопределено. Ну и чё? Есть ключ или нет?
(5) Возвращает Либо истина либо ложь
Если СТруктура(ИмяКлюча, ПеременнаяДляЗначение) Тогда
//Есть ключ хоть и значение Неопределено
Иначе
//Нет ничерта с этим ключом.
КонецЕсли
(6) Тебе шашечки или ехать?
Получил значение Неопределено. И какая разница из структуры оно взялось или нет?
Логику алгоритмов надо закладывать на значения элементов структуры, а не на факт их отсутствия или наличия. ИМХО.
Структура
Как удалить повторяющиеся элементы массива? 6
Функция УдалитьПовторяющиесяЭлементыМассива(Массив) Экспорт ТекущийИндекс = 0; ВсегоЭлементов = Массив.Количество(); Пока ТекущийИндекс ВсегоЭлементов Цикл Индекс2 = ТекущийИндекс + 1; Пока Индекс2 ВсегоЭлементов Цикл Если Массив = Структура
Создать структуру и добавить элементы 4
// Создание структуры СозданнаяСтруктура = Новый Структура; // Создание структуры и добавление элементов СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить(» Качество» , Качество); СтруктураОтбора.Вставить(» Номенклатура» , Номенкла Структура
Преобразовании Структуры в Таблицу Значений 4
//Струтура в ТЗ Функция СтруктураВТЗ(Структр) ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить(» Значение» ); ТЗ.Колонки.Добавить(» Описание» ); Для Каждого ТекЭлем из Структр Цикл НовСтр=ТЗ.Добавить(); НовСтр.Значение = ТекЭлем.Ключ; НовСтр Массив
Как получить последний элемент массива 3
Массив = Новый Массив(); Массив.Добавить(» ЭлементОдин» ); Массив.Добавить(» ЭлементДва» ); Массив.Добавить(» ЭлементТри» ); Массив.Добавить(» ЭлементЧетыре» ); ПроследнийЭлементМассива = Массив ; // ПроследнийЭлементМассива = ЭлементЧетыре Посмотреть все в категории Работа с Массивом, Структурой, Соответствием
Работа со структурой в 1С
Структура — это особый тип данных в 1С, который можно представить в виде таблицы из двух колонок. Первая колонка называется Ключ, вторая — Значение. Ключ всегда является строкой и должен удовлетворять требованиям, предъявляемым к именованию переменных встроенного языка, значение может быть разных типов.
| КЛЮЧ | ЗНАЧЕНИЕ |
| «Имя» | «Иван» |
| «Фамилия» | «Иванов» |
| «Возраст» | 25 |
Как создать переменную с типом Структура
Создать переменную с типом Структура можно двумя способами. Рассмотрим создание структуры, описанной в таблице выше.
Как добавить новый элемент в структуру
Для добавления нового элемента в структуру используется функция Вставить(Ключ, Значение). Пример использования этой функции смотрите в предыдущем разделе.
Как получить значение элемента структуры по имени ключа
Как изменить значение элемента структуры по имени ключа
Если известно имя ключа структуры, то изменить значение можно двумя способами.
Структура в 1С 8.3
Можно сразу в конструкторе указать ключи и значения:
В этом случае будет создана структура с двумя ключами КлючСтруктуры1 и КлючСтруктуры2. При этом значение ключа КлючСтруктуры1 будет равно 25, а значение ключа КлючСтруктуры2 будет равно строке «значение». В дальнейшем можно изменять значения каждого ключа, можно добавлять новые ключи или удалять существующие. Если для какого-то ключа не указать значение, то оно будет равно Неопределено.
Добавление нового ключа в структуру
Чтобы добавить новый ключ в структуру после ее создания можно использовать метод Вставить. Если в структуре уже был такой ключ, то значение будет заменено.
Если попытаться добавить в структуру ключ, который начинается с цифры, то будет вызвано исключение «Задано неправильное имя атрибута структуры»:
Обращение к свойствам структуры
К свойствам (ключам) структуры можно обращаться через точку «.» после имени структуры:
Можно через оператор индексации []:
Перебор структуры
Перебрать элементы структуры можно с помощью цикла Для Каждого. На каждой итерации цикла будет переменная типа КлючИЗначение. Через свойства Ключ и Значение данной переменной можно только читать значения, изменить нельзя:
Как удалить ключ из структуры
Удалить ключ из структуры можно методом Удалить. Данный метод удалит только один ключ. Если нужно удалить все ключи из структуры, то нужно использовать метод Очистить:
Как проверить есть ли в структуре ключ
Метод Свойство позволяет проверить наличие в структуре указанного ключа. Если ключ присутствует в структуре, то метод вернет Истина. Если такого ключа нет, то метод вернет Ложь.
Также с помощью данного метода можно получить значение по ключу:
Если в структуре нет такого ключа, то в переменной Значение будет Неопределено.
Поиск в структуре
Чтобы найти какой-то ключ в структуре можно использовать все тот же самый метод Свойство:
Но если поиск в структуре нужно выполнить по значению, то придется перебрать всю структуру:
Количество элементов структуры
Узнать количество элементов (ключей, свойств) структуры можно с помощью метода Количество:
Как скопировать структуру
Фиксированная Структура
Фиксированная структура — это та же самая структура, но после создания нельзя изменить состав ключей и значения. Можно создать на основании обычной структуры (будет создана полная копия), по ключам и значениям или пустую структуру:
//пустая структура
ФиксСтр = Новый ФиксированнаяСтруктура;
//по ключам и значениям
ФиксСтр = Новый ФиксированнаяСтруктура(«Ключ1, Ключ2», 1, 2);
//на основании обычной структуры
ОбычнаяСтруктура = Новый Структура(«Ключ1, Ключ2», 1, 2);
ФиксСтр = Новый ФиксированнаяСтруктура(ОбычнаяСтруктура) ;
У фиксированной структуры есть только 2 метода:
— Количество()
— Свойство(<Ключ>, <НайденноеЗначение>)
К ключам структуры можно обращаться как к свойству: ФиксСтр.Ключ1, но нельзя менять значение свойства.
На основании фиксированной структуры можно создать обычную структуру:
ФиксСтр = Новый ФиксированнаяСтруктура(«Ключ1, Ключ2», 1, 2);
ОбычнаяСтруктура = Новый Структура(ФиксСтр);
ОбычнаяСтруктура.Ключ1 = 11; //теперь можно менять значения