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

Проверяет наличие свойства по идентификатору и получает его значение

Синтаксис

Метод Свойство() имеет следующий синтаксис:

Булево Свойство(Ключ, [Значение = Неопределено])

А также альтернативный англоязычный синтаксис:

boolean Property(Key, [Value = Undefined])

Параметры

Описание параметров метода Свойство():

Имя параметра* Тип Описание
Ключ Строка Идентификатор свойства
Значение Произвольный В данный параметр возвращается найденное значение.

Значение по умолчанию: Неопределено.

*Жирным шрифтом выделены обязательные параметры

Возвращаемое значение

Булево

Истина — ключ найден
Ложь — ключ не найден

Описание

Метод Свойство() проверяет наличие свойства по его ключу (идентификатору) и помещает его значение в параметр Значение

Доступность

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).

Пример использования

Пример кода с использованием метода Свойство():

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

Поделиться страницей в соц.сетях

17 правил для составления оптимального ЗАПРОСа к данным базы 1С 47
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ


1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш


COM-подключение к базе 7.7 из .NET, .NET Core 1
Инсталяция: dotnet add package sabatex.V1C77 или добавить через NUGET пакет sabatex.V1C77. Добавить пространство имен: using sabatex.V1C77; пример использованя: —C# static void Main(string args) { // создаем строку соединен


COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине.
Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)):
НаКлиенте
Процедура Загрузки()
ПутьКБазе=» D:ВашаБаза1с77″ ;
Пользователь=


QR код в 1С 21
Столкнулся с интересной задачей реализации генерации QR-кода в 1С 8.2 ( QR-код — матричный код (двухмерный штрихкод) ) Для генерации было использовано api от google (http://chart.apis.google.com/chart). Вот сайт , который работает с ним. После тог


Посмотреть все результаты поиска похожих

Здравствуйте, задача тривиальная, порой бывает удобно воспользоваться структурой. И порой в связи с этим всплывают какие-нибудь неожиданные косяки, связанные с неудачным заполнением. Чтобы исключить неудачное заполнение можно пользоваться терпением при заполнении. Или можно при обращении к полям структуры устроить проверку на наличие этих полей. Сделать это можно с помощью метода структуры Свойство.

На самом деле и тут писать нечего особо. Метод возвращает истину или ложь, по имени  поля в зависимости есть оно в структуре или нет.

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

Тип: Строка.
Ключ для поиска
свойства.

<НайденноеЗначение>
(необязательный)

Тип: Произвольный. 

Тип: Булево.
Истина
— ключ найден; Ложь
в противном случае. 

Еще метод заполняет <НайденноеЗначение>, если его предварительно определить.
Таким образом,  заполнять структуру можно черте как, а вот обращаться к полям уже с проверкой и будет все хорошо:

лВесБлока = Неопределено;

лОбъемБлока = Неопределено;  

Если мДанныеДляИзменения.Свойство(«ОбъемБлока»,лОбъемБлока) ИЛИ мДанныеДляИзменения.Свойство(«ВесБлока»,лВесБлока) Тогда

лОбъект = стр.Номенклатура.ЕдиницаДляОтчетов.ПолучитьОбъект();

Если лОбъемБлока<>Неопределено Тогда

лОбъект.Объем = лОбъемБлока;

КонецЕсли;

Если лВесБлока<>Неопределено Тогда

лОбъект.Вес = лВесБлока;

КонецЕсли;

лОбъект.Записать();

КонецЕсли;

В примере мы теоретически имеем в структуре мДанныеДляИзменения два свойства: ОбъемБлока и ВесБлока. Перед проверкой мы их определяем в Неопределено, и если этих свойств в структуре нет, то они так и останутся неопределенными. Если же есть то получим значения из структуры, которое можно обрабатывать или передавать как хочется, в данном случае заполнять объект.

Структура — это особый тип данных в 1С, который можно представить в виде таблицы из двух колонок. Первая колонка называется Ключ, вторая — Значение. Ключ всегда является строкой и должен удовлетворять требованиям, предъявляемым к именованию переменных встроенного языка, значение может быть разных типов.

КЛЮЧ ЗНАЧЕНИЕ
«Имя» «Иван»
«Фамилия» «Иванов»
«Возраст» 25

Как создать переменную с типом Структура

Создать переменную с типом Структура можно двумя способами. Рассмотрим создание структуры, описанной в таблице выше.

П1 = новый Структура («Имя, Фамилия, Возраст», «Иван», «Иванов», 25);

или

П1 = новый Структура;
П1.Вставить(«Имя», «Иван»);
П1.Вставить(«Фамилия», «Иванов»);
П1.Вставить(«Возраст», 25);

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

Для добавления нового элемента в структуру используется функция Вставить(Ключ, Значение). Пример использования этой функции смотрите в предыдущем разделе.

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

Фамилия = П1.Фамилия; //переменной Фамилия будет присвоено значение «Иванов»
Возраст = П1.Возраст; //переменной Возраст будет присвоено значение 25

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

Если известно имя ключа структуры, то изменить значение можно двумя способами.

П1.Возраст=26; // Значение изменено на 26

П1.Вставить(«Возраст»,26); // Значение изменено на 26

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

Колич = П1.Количество(); // 3

Как проверить, есть ли в структуре ключ с определенным именем

Для этого существует функция Свойство (Ключ, НайденноеЗначение). Первый параметр Ключ — обязательный. Сюда нужно передать имя искомого ключа структуры. Второй параметр — переменная, в которую нужно поместить значение, если ключ будет найден. Этот параметр не обязателен. А сама функция возвращает значение Истина, если ключ найден, или Ложь, если не найден.

Найдено = П1.Свойство(«Отчество»); // Найдено = Ложь

Перем Имя;
Найдено = П1.Свойство(«Имя», Имя);

//Имя = «Иван», Найдено = Истина

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

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

Как обойти в цикле все элементы структуры

Для обхода структуры используется цикл Для каждого.

Для каждого Элемент из П1 Цикл
Сообщить(Элемент.Ключ + » — « + Элемент.Значение);
КонецЦикла;

//Результат:
//Имя — Иван
//Фамилия — Иванов
//Возраст — 25

Структура представляет собой некий контейнер, который хранит пары ключ и значение. Ключ в структуре может быть только строкового типа и должен удовлетворять требованиям названия переменных в 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-каналы с уроками программирования
Сайты для обучения программированию
Лекции и уроки

Понравилась статья? Поделить с друзьями:
  • 1с проверить что есть реквизит в документе
  • 1с проверка заполнения реквизита документа
  • 1с проверка заполнения реквизита обработка
  • 1с программно заполнить составной реквизит
  • 1с регистр сведений измерение или реквизит