|
Как побороть "не правильный" XSD | ☑ | ||
---|---|---|---|---|
0
pozdeev-artem
11.02.17
✎
07:55
|
Доброго дня!
Есть, по моему разумению, не правильный файл XSD. Его генерирует некий web-сервис (не 1С). Я получаю схему и создаю объекты по описанию из XSD. При попытке заполнить свойства одного из элементов получаю ошибку. Точнее разные варианты попыток вызывают разные ошибки. Вопрос к знатокам: чего не хватает файлу XSD? Нижайший поклон и благодарность за попытку дать конструктивный совет. СХЕМА: <?xml version="1.0" encoding="UTF-8"?> <xs:schema targetNamespace="http://www.myuniqnamespace.com/XMLSchema" xmlns:statf="http://www.myuniqnamespace.com/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="document_container"> <xs:complexType> <xs:sequence> <xs:element ref="acts" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="acts"> <xs:complexType> <xs:sequence> <xs:element ref="act"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="act"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="act_date"/> <xs:element ref="act_number"/> </xs:choice> </xs:complexType> </xs:element> <xs:element name="act_number" type="xs:NCName"/> <xs:element name="act_date" type="xs:NMTOKEN"/> </xs:schema> КОД 1С: // ПОЛУЧЕНИЕ СХЕМЫ ИмяФайлаСхемы = КаталогДокументов + "\testschema.xsd"; ФайлыXSD = Новый Массив(); ФайлыXSD.Добавить(ИмяФайлаСхемы); ЛокальнаяФабрикаXDTO = СоздатьФабрикуXDTO(ФайлыXSD); ПакетMUNS = ЛокальнаяФабрикаXDTO.Пакеты[1]; // ТИПЫ Тип_document_container = ПакетMUNS.КорневыеСвойства.Получить("document_container").Тип; Тип_acts = ПакетMUNS.КорневыеСвойства.Получить("acts").Тип; Тип_act = ПакетMUNS.КорневыеСвойства.Получить("act").Тип; Тип_act_number = ПакетMUNS.КорневыеСвойства.Получить("act_number").Тип; Тип_act_date = ПакетMUNS.КорневыеСвойства.Получить("act_date").Тип; // СОЗДАВАЕМЫЕ ОБЪЕКТЫ document_container = ЛокальнаяФабрикаXDTO.Создать(Тип_document_container); acts = ЛокальнаяФабрикаXDTO.Создать(Тип_acts); act = ЛокальнаяФабрикаXDTO.Создать(Тип_act); act_number = ЛокальнаяФабрикаXDTO.Создать(Тип_act_number, "N12345"); act_date = ЛокальнаяФабрикаXDTO.Создать(Тип_act_date, Дата(2015,1,1)); // А ВОТ И ОШИБКИ act.act_number = act_number;// Поле объекта не обнаружено (act_number) act.Установить("act_number",act_number);// Свойство 'act_number' не обнаружено // метод act.свойства().Количество() возвращает 0 |
|||
1
Fram
11.02.17
✎
10:53
|
дык, а что отладчик то говорит?
|
|||
2
Fram
11.02.17
✎
10:54
|
а тут .Пакеты[1] не 0 случайно нужен?
|
|||
3
Злопчинский
11.02.17
✎
11:03
|
(0) я совсем не спец
Но как-то мнеиксжется что act_number это не атрибут |
|||
4
pozdeev-artem
11.02.17
✎
16:01
|
(1) Объект act создается, но свойств никаких не имеет
(2) Пакеты[1] содержит типы данных из пространства имен http://www.myuniqnamespace.com/XMLSchema (3) Логика поставщиков web-сервиса говорит, что это атрибут/свойство объекта act. Там сервис по обмену документами между контрагентами. И номер акта выполненных работ интуитивно тянет сохранить в атрибуте "act_number". Может я Ваш коммент не правильно понял. |
|||
5
Неверный Параметр И
12.02.17
✎
11:39
|
(4) maxOccurs="unbounded" прямо кричит в полный голос о том, что это список.
Но тебя "интуитивно тянет" к выдумыванию "логики поставщиков web-сервиса", ок. |
|||
6
pozdeev-artem
13.02.17
✎
10:04
|
(4) Спасибо за подсказку. Если не затруднит, пожалуйста поясните коротко, Должна ли в этом случае работать
конструкция act["act_number"].Добавить(act_number)? Я вижу в отладке что объект act не содержит никаких свойств, поэтому не ясно, как добавить в act одно или несколько свойств act_number. Извините, если громоздко объясняюсь. |
|||
7
DrShad
13.02.17
✎
10:16
|
если это вся схема, не проще вообще с ней не заморачиваться и просто собрать необходимый файл?
|
|||
8
Cyberhawk
13.02.17
✎
10:20
|
act - это список / массив
|
|||
9
pozdeev-artem
13.02.17
✎
18:01
|
(7) Конечно не вся. Привел уменьшенный экземпляр чтобы ускорить чтение.
Меня смущает отсутствие имен у типов. Предполагаю, что это является причиной проблемы с заполнением объектов созданным по этой схеме. (8) Спасибо. Пытался его заполнять, но эффект тот же. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |