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