|
Как прочитать в XML тег Документ.ТегКоторыйМожетОтсутствовать через ФабрикаХДТО? | ☑ | ||
---|---|---|---|---|
0
totparen
29.06.17
✎
15:02
|
Ребята, подскажите как правильно читать значение тега, если он не обязательный?
Например: ХМЛ = Новый ЧтениеXML(); ХМЛ.ОткрытьФайл(ДанныеПредзаказа.Файл.ПолноеИмя); ФайлХДТО = ФабрикаXDTO.ПрочитатьXML(ХМЛ); лЗначение = ФайлХДТО.Документ.ТегКоторыйМожетОтсутсовать; // Здесь возникает исключение. Создание фабрики на основе XSD схемы не помогает. |
|||
1
totparen
29.06.17
✎
15:04
|
Ищется не способ, как это обойти, а как по фен-шую значение получать.
|
|||
2
totparen
29.06.17
✎
15:05
|
Обойти я могу так:
лЗначение = СвойствоХДТО(ФайлХДТО.Документ,"ТегКоторыйМожетОтсутсовать"); Функция СвойствоХДТО(ОбъектХДТО,ИмяСвойства,ЗначениеПоУмолчанию = Неопределено) КоллекцияСвойств = ОбъектХДТО.Свойства(); СвойствоХДТО = КоллекцияСвойств.Получить(ИмяСвойства); Если СвойствоХДТО = Неопределено Тогда Возврат ЗначениеПоУмолчанию; Иначе Возврат ОбъектХДТО.Получить(СвойствоХДТО); КонецЕсли; КонецФункции |
|||
3
Имитация работы
29.06.17
✎
15:31
|
емнип ПолучитьXDTO(), если там неопределено, то идти в тип этого свойства и брать оттуда ЗначениеПоУмолчанию
|
|||
4
Имитация работы
29.06.17
✎
15:32
|
возможно в тип ходить и не придется, надо проверить
|
|||
5
Вафель
29.06.17
✎
15:40
|
а чем попытка не по феншую?
|
|||
6
totparen
29.06.17
✎
15:46
|
(3) Нифига. Если свойства нет, то исключение.
|
|||
7
totparen
29.06.17
✎
15:47
|
(5) Если у меня в ХМЛ будет 20 не обязательных реквизитов, то, нутром чую, что 20 попыток лепить - это через чур.
|
|||
8
тарам пам пам
29.06.17
✎
16:01
|
В (2) у тебя все "по фэншую", разве что можно сразу написать
СвойствоХДТО = ОбъектХДТО.Получить(ИмяСвойства); а не через коллекцию свойств |
|||
9
тарам пам пам
29.06.17
✎
16:06
|
+(8) вот так:
Функция СвойствоХДТО(ОбъектХДТО,ИмяСвойства,ЗначениеПоУмолчанию = Неопределено) ЗначениеСвойства = ОбъектХДТО.Получить(ИмяСвойства); Если ЗначениеСвойства = Неопределено Тогда Возврат ЗначениеПоУмолчанию; Иначе Возврат ЗначениеСвойства; КонецЕсли; КонецФункции |
|||
10
totparen
29.06.17
✎
16:15
|
(9)
Враки. ОбъектХДТО.Получить("ТраЛяЛя) - будет исключение. |
|||
11
тарам пам пам
29.06.17
✎
16:18
|
(10) если в схеме свойство описано (пусть даже как не обязательное) - то не будет
|
|||
12
totparen
29.06.17
✎
16:21
|
(11) Допустим. Не проверял ещё.
Тогда придется всегда всегда значения из ХМЛ дёргать через "СвойствоХДТО" ? |
|||
13
тарам пам пам
29.06.17
✎
16:23
|
(12) да. Ну или можно напрямую, если поле обязательное.
|
|||
14
totparen
29.06.17
✎
16:24
|
Может как-то можно сгенерировать структуру на основе ХМЛ, и дополнить её недостающими ключами на основе ХСД? (Хотя мне кажется где-то тут собачка зарыта...)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |