23.11.2016

1С проверить поле в структуре

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

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


Свойство(<Ключ>, <НайденноеЗначение>)
Параметры:
<Ключ> (обязательный)
Тип: Строка.
Ключ для поиска свойства.
<НайденноеЗначение> (необязательный)
Тип: Произвольный. 
Возвращаемое значение:
Тип: Булево.
Истина - ключ найден; Ложь в противном случае. 


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

лВесБлока = Неопределено;
лОбъемБлока = Неопределено;  
Если мДанныеДляИзменения.Свойство("ОбъемБлока",лОбъемБлока) ИЛИ мДанныеДляИзменения.Свойство("ВесБлока",лВесБлока) Тогда
лОбъект = стр.Номенклатура.ЕдиницаДляОтчетов.ПолучитьОбъект();
Если лОбъемБлока<>Неопределено Тогда
лОбъект.Объем = лОбъемБлока;
КонецЕсли;
Если лВесБлока<>Неопределено Тогда
лОбъект.Вес = лВесБлока;
КонецЕсли;
лОбъект.Записать();
КонецЕсли;

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

Комментариев нет:

Отправить комментарий