1с как проверить наличие поля в структуре

от admin

Как проверить есть-ли поле в структуре?

Структура (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; //теперь можно менять значения

Похожие статьи